Add setup-maven action (#2)

*Motivation*

Move the `setup-maven` action to https://github.com/aahmed-se/setup-maven/tree/v3
diff --git a/README.md b/README.md
index d560eba..953e2d3 100644
--- a/README.md
+++ b/README.md
@@ -4,4 +4,5 @@
 
 ## Github Actions
 
-- [diff-only](diff-only/README.md) action
\ No newline at end of file
+- [diff-only](diff-only/README.md) action
+- [setup-maven](setup-maven/README.md)
diff --git a/setup-maven/.prettierrc.json b/setup-maven/.prettierrc.json
new file mode 100644
index 0000000..f6736bc
--- /dev/null
+++ b/setup-maven/.prettierrc.json
@@ -0,0 +1,11 @@
+{
+    "printWidth": 80,
+    "tabWidth": 2,
+    "useTabs": false,
+    "semi": true,
+    "singleQuote": true,
+    "trailingComma": "none",
+    "bracketSpacing": false,
+    "arrowParens": "avoid",
+    "parser": "typescript"
+  }
\ No newline at end of file
diff --git a/setup-maven/README.md b/setup-maven/README.md
new file mode 100644
index 0000000..72aee00
--- /dev/null
+++ b/setup-maven/README.md
@@ -0,0 +1,10 @@
+### How To Use
+
+Add this step into workflow
+
+```
+    - name: Set up Maven
+      uses: aahmed-se/setup-maven@v3
+      with:
+        maven-version: 3.6.1
+```
diff --git a/setup-maven/action.yml b/setup-maven/action.yml
new file mode 100644
index 0000000..8864fc7
--- /dev/null
+++ b/setup-maven/action.yml
@@ -0,0 +1,10 @@
+name: 'Setup Maven 3'
+description: 'Install a specific version of Apache Maven and add it to the PATH'
+author: 'aahmed-se'
+inputs:
+  maven-version:
+    description: 'Version Spec of the version to use.  Examples: 10.x, 10.15.1, >=10.15.0'
+    default: '3.6.1'
+runs:
+  using: 'node12'
+  main: 'lib/setup-maven.js'
diff --git a/setup-maven/lib/installer.js b/setup-maven/lib/installer.js
new file mode 100644
index 0000000..d8688ad
--- /dev/null
+++ b/setup-maven/lib/installer.js
@@ -0,0 +1,66 @@
+"use strict";
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+    return new (P || (P = Promise))(function (resolve, reject) {
+        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+        step((generator = generator.apply(thisArg, _arguments || [])).next());
+    });
+};
+var __importStar = (this && this.__importStar) || function (mod) {
+    if (mod && mod.__esModule) return mod;
+    var result = {};
+    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
+    result["default"] = mod;
+    return result;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+// Load tempDirectory before it gets wiped by tool-cache
+let tempDirectory = process.env['RUNNER_TEMPDIRECTORY'] || '';
+const core = __importStar(require("@actions/core"));
+const tc = __importStar(require("@actions/tool-cache"));
+const path = __importStar(require("path"));
+if (!tempDirectory) {
+    let baseLocation;
+    if (process.platform === 'win32') {
+        baseLocation = process.env['USERPROFILE'] || 'C:\\';
+    }
+    else {
+        if (process.platform === 'darwin') {
+            baseLocation = '/Users';
+        }
+        else {
+            baseLocation = '/home';
+        }
+    }
+    tempDirectory = path.join(baseLocation, 'actions', 'temp');
+}
+function getMaven(version) {
+    return __awaiter(this, void 0, void 0, function* () {
+        let toolPath;
+        toolPath = tc.find('maven', version);
+        if (!toolPath) {
+            toolPath = yield downloadMaven(version);
+        }
+        toolPath = path.join(toolPath, 'bin');
+        core.addPath(toolPath);
+    });
+}
+exports.getMaven = getMaven;
+function downloadMaven(version) {
+    return __awaiter(this, void 0, void 0, function* () {
+        const toolDirectoryName = `apache-maven-${version}`;
+        const downloadUrl = `https://archive.apache.org/dist/maven/maven-3/${version}/binaries/${toolDirectoryName}-bin.tar.gz`;
+        console.log(`downloading ${downloadUrl}`);
+        try {
+            const downloadPath = yield tc.downloadTool(downloadUrl);
+            const extractedPath = yield tc.extractTar(downloadPath);
+            let toolRoot = path.join(extractedPath, toolDirectoryName);
+            return yield tc.cacheDir(toolRoot, 'maven', version);
+        }
+        catch (err) {
+            throw err;
+        }
+    });
+}
diff --git a/setup-maven/lib/setup-maven.js b/setup-maven/lib/setup-maven.js
new file mode 100644
index 0000000..48148b7
--- /dev/null
+++ b/setup-maven/lib/setup-maven.js
@@ -0,0 +1,34 @@
+"use strict";
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+    return new (P || (P = Promise))(function (resolve, reject) {
+        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+        step((generator = generator.apply(thisArg, _arguments || [])).next());
+    });
+};
+var __importStar = (this && this.__importStar) || function (mod) {
+    if (mod && mod.__esModule) return mod;
+    var result = {};
+    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
+    result["default"] = mod;
+    return result;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const core = __importStar(require("@actions/core"));
+const installer = __importStar(require("./installer"));
+function run() {
+    return __awaiter(this, void 0, void 0, function* () {
+        try {
+            let version = core.getInput('maven-version');
+            if (version) {
+                yield installer.getMaven(version);
+            }
+        }
+        catch (error) {
+            core.setFailed(error.message);
+        }
+    });
+}
+run();
diff --git a/setup-maven/node_modules/.bin/semver b/setup-maven/node_modules/.bin/semver
new file mode 100755
index 0000000..666034a
--- /dev/null
+++ b/setup-maven/node_modules/.bin/semver
@@ -0,0 +1,174 @@
+#!/usr/bin/env node
+// Standalone semver comparison program.
+// Exits successfully and prints matching version(s) if
+// any supplied version is valid and passes all tests.
+
+var argv = process.argv.slice(2)
+
+var versions = []
+
+var range = []
+
+var inc = null
+
+var version = require('../package.json').version
+
+var loose = false
+
+var includePrerelease = false
+
+var coerce = false
+
+var rtl = false
+
+var identifier
+
+var semver = require('../semver')
+
+var reverse = false
+
+var options = {}
+
+main()
+
+function main () {
+  if (!argv.length) return help()
+  while (argv.length) {
+    var a = argv.shift()
+    var indexOfEqualSign = a.indexOf('=')
+    if (indexOfEqualSign !== -1) {
+      a = a.slice(0, indexOfEqualSign)
+      argv.unshift(a.slice(indexOfEqualSign + 1))
+    }
+    switch (a) {
+      case '-rv': case '-rev': case '--rev': case '--reverse':
+        reverse = true
+        break
+      case '-l': case '--loose':
+        loose = true
+        break
+      case '-p': case '--include-prerelease':
+        includePrerelease = true
+        break
+      case '-v': case '--version':
+        versions.push(argv.shift())
+        break
+      case '-i': case '--inc': case '--increment':
+        switch (argv[0]) {
+          case 'major': case 'minor': case 'patch': case 'prerelease':
+          case 'premajor': case 'preminor': case 'prepatch':
+            inc = argv.shift()
+            break
+          default:
+            inc = 'patch'
+            break
+        }
+        break
+      case '--preid':
+        identifier = argv.shift()
+        break
+      case '-r': case '--range':
+        range.push(argv.shift())
+        break
+      case '-c': case '--coerce':
+        coerce = true
+        break
+      case '--rtl':
+        rtl = true
+        break
+      case '--ltr':
+        rtl = false
+        break
+      case '-h': case '--help': case '-?':
+        return help()
+      default:
+        versions.push(a)
+        break
+    }
+  }
+
+  var options = { loose: loose, includePrerelease: includePrerelease, rtl: rtl }
+
+  versions = versions.map(function (v) {
+    return coerce ? (semver.coerce(v, options) || { version: v }).version : v
+  }).filter(function (v) {
+    return semver.valid(v)
+  })
+  if (!versions.length) return fail()
+  if (inc && (versions.length !== 1 || range.length)) { return failInc() }
+
+  for (var i = 0, l = range.length; i < l; i++) {
+    versions = versions.filter(function (v) {
+      return semver.satisfies(v, range[i], options)
+    })
+    if (!versions.length) return fail()
+  }
+  return success(versions)
+}
+
+function failInc () {
+  console.error('--inc can only be used on a single version with no range')
+  fail()
+}
+
+function fail () { process.exit(1) }
+
+function success () {
+  var compare = reverse ? 'rcompare' : 'compare'
+  versions.sort(function (a, b) {
+    return semver[compare](a, b, options)
+  }).map(function (v) {
+    return semver.clean(v, options)
+  }).map(function (v) {
+    return inc ? semver.inc(v, inc, options, identifier) : v
+  }).forEach(function (v, i, _) { console.log(v) })
+}
+
+function help () {
+  console.log(['SemVer ' + version,
+    '',
+    'A JavaScript implementation of the https://semver.org/ specification',
+    'Copyright Isaac Z. Schlueter',
+    '',
+    'Usage: semver [options] <version> [<version> [...]]',
+    'Prints valid versions sorted by SemVer precedence',
+    '',
+    'Options:',
+    '-r --range <range>',
+    '        Print versions that match the specified range.',
+    '',
+    '-i --increment [<level>]',
+    '        Increment a version by the specified level.  Level can',
+    '        be one of: major, minor, patch, premajor, preminor,',
+    "        prepatch, or prerelease.  Default level is 'patch'.",
+    '        Only one version may be specified.',
+    '',
+    '--preid <identifier>',
+    '        Identifier to be used to prefix premajor, preminor,',
+    '        prepatch or prerelease version increments.',
+    '',
+    '-l --loose',
+    '        Interpret versions and ranges loosely',
+    '',
+    '-p --include-prerelease',
+    '        Always include prerelease versions in range matching',
+    '',
+    '-c --coerce',
+    '        Coerce a string into SemVer if possible',
+    '        (does not imply --loose)',
+    '',
+    '--rtl',
+    '        Coerce version strings right to left',
+    '',
+    '--ltr',
+    '        Coerce version strings left to right (default)',
+    '',
+    'Program exits successfully if any valid version satisfies',
+    'all supplied ranges, and prints all satisfying versions.',
+    '',
+    'If no satisfying versions are found, then exits failure.',
+    '',
+    'Versions are printed in ascending order, so supplying',
+    'multiple versions to the utility will just sort them.'
+  ].join('\n'))
+}
diff --git a/setup-maven/node_modules/.bin/uuid b/setup-maven/node_modules/.bin/uuid
new file mode 100755
index 0000000..502626e
--- /dev/null
+++ b/setup-maven/node_modules/.bin/uuid
@@ -0,0 +1,65 @@
+#!/usr/bin/env node
+var assert = require('assert');
+
+function usage() {
+  console.log('Usage:');
+  console.log('  uuid');
+  console.log('  uuid v1');
+  console.log('  uuid v3 <name> <namespace uuid>');
+  console.log('  uuid v4');
+  console.log('  uuid v5 <name> <namespace uuid>');
+  console.log('  uuid --help');
+  console.log('\nNote: <namespace uuid> may be "URL" or "DNS" to use the corresponding UUIDs defined by RFC4122');
+}
+
+var args = process.argv.slice(2);
+
+if (args.indexOf('--help') >= 0) {
+  usage();
+  process.exit(0);
+}
+var version = args.shift() || 'v4';
+
+switch (version) {
+  case 'v1':
+    var uuidV1 = require('../v1');
+    console.log(uuidV1());
+    break;
+
+  case 'v3':
+    var uuidV3 = require('../v3');
+
+    var name = args.shift();
+    var namespace = args.shift();
+    assert(name != null, 'v3 name not specified');
+    assert(namespace != null, 'v3 namespace not specified');
+
+    if (namespace == 'URL') namespace = uuidV3.URL;
+    if (namespace == 'DNS') namespace = uuidV3.DNS;
+
+    console.log(uuidV3(name, namespace));
+    break;
+
+  case 'v4':
+    var uuidV4 = require('../v4');
+    console.log(uuidV4());
+    break;
+
+  case 'v5':
+    var uuidV5 = require('../v5');
+
+    var name = args.shift();
+    var namespace = args.shift();
+    assert(name != null, 'v5 name not specified');
+    assert(namespace != null, 'v5 namespace not specified');
+
+    if (namespace == 'URL') namespace = uuidV5.URL;
+    if (namespace == 'DNS') namespace = uuidV5.DNS;
+
+    console.log(uuidV5(name, namespace));
+    break;
+
+  default:
+    usage();
+    process.exit(1);
+}
diff --git a/setup-maven/node_modules/.bin/which b/setup-maven/node_modules/.bin/which
new file mode 100755
index 0000000..7cee372
--- /dev/null
+++ b/setup-maven/node_modules/.bin/which
@@ -0,0 +1,52 @@
+#!/usr/bin/env node
+var which = require("../")
+if (process.argv.length < 3)
+  usage()
+
+function usage () {
+  console.error('usage: which [-as] program ...')
+  process.exit(1)
+}
+
+var all = false
+var silent = false
+var dashdash = false
+var args = process.argv.slice(2).filter(function (arg) {
+  if (dashdash || !/^-/.test(arg))
+    return true
+
+  if (arg === '--') {
+    dashdash = true
+    return false
+  }
+
+  var flags = arg.substr(1).split('')
+  for (var f = 0; f < flags.length; f++) {
+    var flag = flags[f]
+    switch (flag) {
+      case 's':
+        silent = true
+        break
+      case 'a':
+        all = true
+        break
+      default:
+        console.error('which: illegal option -- ' + flag)
+        usage()
+    }
+  }
+  return false
+})
+
+process.exit(args.reduce(function (pv, current) {
+  try {
+    var f = which.sync(current, { all: all })
+    if (all)
+      f = f.join('\n')
+    if (!silent)
+      console.log(f)
+    return pv;
+  } catch (e) {
+    return 1;
+  }
+}, 0))
diff --git a/setup-maven/node_modules/@actions/core/README.md b/setup-maven/node_modules/@actions/core/README.md
new file mode 100644
index 0000000..457f73c
--- /dev/null
+++ b/setup-maven/node_modules/@actions/core/README.md
@@ -0,0 +1,140 @@
+# `@actions/core`
+
+> Core functions for setting results, logging, registering secrets and exporting variables across actions
+
+## Usage
+
+### Import the package
+
+```js
+// javascript
+const core = require('@actions/core');
+
+// typescript
+import * as core from '@actions/core';
+```
+
+#### Inputs/Outputs
+
+Action inputs can be read with `getInput`.  Outputs can be set with `setOutput` which makes them available to be mapped into inputs of other actions to ensure they are decoupled.
+
+```js
+const myInput = core.getInput('inputName', { required: true });
+
+core.setOutput('outputKey', 'outputVal');
+```
+
+#### Exporting variables
+
+Since each step runs in a separate process, you can use `exportVariable` to add it to this step and future steps environment blocks.
+
+```js
+core.exportVariable('envVar', 'Val');
+```
+
+#### Setting a secret
+
+Setting a secret registers the secret with the runner to ensure it is masked in logs.
+
+```js
+core.setSecret('myPassword');
+```
+
+#### PATH Manipulation
+
+To make a tool's path available in the path for the remainder of the job (without altering the machine or containers state), use `addPath`.  The runner will prepend the path given to the jobs PATH.
+
+```js
+core.addPath('/path/to/mytool');
+```
+
+#### Exit codes
+
+You should use this library to set the failing exit code for your action.  If status is not set and the script runs to completion, that will lead to a success.
+
+```js
+const core = require('@actions/core');
+
+try {
+  // Do stuff
+}
+catch (err) {
+  // setFailed logs the message and sets a failing exit code
+  core.setFailed(`Action failed with error ${err}`);
+}
+
+Note that `setNeutral` is not yet implemented in actions V2 but equivalent functionality is being planned.
+
+```
+
+#### Logging
+
+Finally, this library provides some utilities for logging. Note that debug logging is hidden from the logs by default. This behavior can be toggled by enabling the [Step Debug Logs](../../docs/action-debugging.md#step-debug-logs).
+
+```js
+const core = require('@actions/core');
+
+const myInput = core.getInput('input');
+try {
+  core.debug('Inside try block');
+  
+  if (!myInput) {
+    core.warning('myInput was not set');
+  }
+  
+  // Do stuff
+}
+catch (err) {
+  core.error(`Error ${err}, action may still succeed though`);
+}
+```
+
+This library can also wrap chunks of output in foldable groups.
+
+```js
+const core = require('@actions/core')
+
+// Manually wrap output
+core.startGroup('Do some function')
+doSomeFunction()
+core.endGroup()
+
+// Wrap an asynchronous function call
+const result = await core.group('Do something async', async () => {
+  const response = await doSomeHTTPRequest()
+  return response
+})
+```
+
+#### Action state
+
+You can use this library to save state and get state for sharing information between a given wrapper action: 
+
+**action.yml**
+```yaml
+name: 'Wrapper action sample'
+inputs:
+  name:
+    default: 'GitHub'
+runs:
+  using: 'node12'
+  main: 'main.js'
+  post: 'cleanup.js'
+```
+
+In action's `main.js`:
+
+```js
+const core = require('@actions/core');
+
+core.saveState("pidToKill", 12345);
+```
+
+In action's `cleanup.js`:
+```js
+const core = require('@actions/core');
+
+var pid = core.getState("pidToKill");
+
+process.kill(pid);
+```
\ No newline at end of file
diff --git a/setup-maven/node_modules/@actions/core/lib/command.d.ts b/setup-maven/node_modules/@actions/core/lib/command.d.ts
new file mode 100644
index 0000000..7f6fecb
--- /dev/null
+++ b/setup-maven/node_modules/@actions/core/lib/command.d.ts
@@ -0,0 +1,16 @@
+interface CommandProperties {
+    [key: string]: string;
+}
+/**
+ * Commands
+ *
+ * Command Format:
+ *   ##[name key=value;key=value]message
+ *
+ * Examples:
+ *   ##[warning]This is the user warning message
+ *   ##[set-secret name=mypassword]definitelyNotAPassword!
+ */
+export declare function issueCommand(command: string, properties: CommandProperties, message: string): void;
+export declare function issue(name: string, message?: string): void;
+export {};
diff --git a/setup-maven/node_modules/@actions/core/lib/command.js b/setup-maven/node_modules/@actions/core/lib/command.js
new file mode 100644
index 0000000..b0ea009
--- /dev/null
+++ b/setup-maven/node_modules/@actions/core/lib/command.js
@@ -0,0 +1,66 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const os = require("os");
+/**
+ * Commands
+ *
+ * Command Format:
+ *   ##[name key=value;key=value]message
+ *
+ * Examples:
+ *   ##[warning]This is the user warning message
+ *   ##[set-secret name=mypassword]definitelyNotAPassword!
+ */
+function issueCommand(command, properties, message) {
+    const cmd = new Command(command, properties, message);
+    process.stdout.write(cmd.toString() + os.EOL);
+}
+exports.issueCommand = issueCommand;
+function issue(name, message = '') {
+    issueCommand(name, {}, message);
+}
+exports.issue = issue;
+const CMD_STRING = '::';
+class Command {
+    constructor(command, properties, message) {
+        if (!command) {
+            command = 'missing.command';
+        }
+        this.command = command;
+        this.properties = properties;
+        this.message = message;
+    }
+    toString() {
+        let cmdStr = CMD_STRING + this.command;
+        if (this.properties && Object.keys(this.properties).length > 0) {
+            cmdStr += ' ';
+            for (const key in this.properties) {
+                if (this.properties.hasOwnProperty(key)) {
+                    const val = this.properties[key];
+                    if (val) {
+                        // safely append the val - avoid blowing up when attempting to
+                        // call .replace() if message is not a string for some reason
+                        cmdStr += `${key}=${escape(`${val || ''}`)},`;
+                    }
+                }
+            }
+        }
+        cmdStr += CMD_STRING;
+        // safely append the message - avoid blowing up when attempting to
+        // call .replace() if message is not a string for some reason
+        const message = `${this.message || ''}`;
+        cmdStr += escapeData(message);
+        return cmdStr;
+    }
+}
+function escapeData(s) {
+    return s.replace(/\r/g, '%0D').replace(/\n/g, '%0A');
+}
+function escape(s) {
+    return s
+        .replace(/\r/g, '%0D')
+        .replace(/\n/g, '%0A')
+        .replace(/]/g, '%5D')
+        .replace(/;/g, '%3B');
+}
+//# sourceMappingURL=command.js.map
\ No newline at end of file
diff --git a/setup-maven/node_modules/@actions/core/lib/command.js.map b/setup-maven/node_modules/@actions/core/lib/command.js.map
new file mode 100644
index 0000000..918ab25
--- /dev/null
+++ b/setup-maven/node_modules/@actions/core/lib/command.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"command.js","sourceRoot":"","sources":["../src/command.ts"],"names":[],"mappings":";;AAAA,yBAAwB;AAQxB;;;;;;;;;GASG;AACH,SAAgB,YAAY,CAC1B,OAAe,EACf,UAA6B,EAC7B,OAAe;IAEf,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;IACrD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAA;AAC/C,CAAC;AAPD,oCAOC;AAED,SAAgB,KAAK,CAAC,IAAY,EAAE,UAAkB,EAAE;IACtD,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,CAAA;AACjC,CAAC;AAFD,sBAEC;AAED,MAAM,UAAU,GAAG,IAAI,CAAA;AAEvB,MAAM,OAAO;IAKX,YAAY,OAAe,EAAE,UAA6B,EAAE,OAAe;QACzE,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,GAAG,iBAAiB,CAAA;SAC5B;QAED,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAED,QAAQ;QACN,IAAI,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,OAAO,CAAA;QAEtC,IAAI,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9D,MAAM,IAAI,GAAG,CAAA;YACb,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE;gBACjC,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;oBACvC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;oBAChC,IAAI,GAAG,EAAE;wBACP,8DAA8D;wBAC9D,6DAA6D;wBAC7D,MAAM,IAAI,GAAG,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,IAAI,EAAE,EAAE,CAAC,GAAG,CAAA;qBAC9C;iBACF;aACF;SACF;QAED,MAAM,IAAI,UAAU,CAAA;QAEpB,kEAAkE;QAClE,6DAA6D;QAC7D,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,CAAA;QACvC,MAAM,IAAI,UAAU,CAAC,OAAO,CAAC,CAAA;QAE7B,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AACtD,CAAC;AAED,SAAS,MAAM,CAAC,CAAS;IACvB,OAAO,CAAC;SACL,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;AACzB,CAAC"}
\ No newline at end of file
diff --git a/setup-maven/node_modules/@actions/core/lib/core.d.ts b/setup-maven/node_modules/@actions/core/lib/core.d.ts
new file mode 100644
index 0000000..6483c3c
--- /dev/null
+++ b/setup-maven/node_modules/@actions/core/lib/core.d.ts
@@ -0,0 +1,112 @@
+/**
+ * Interface for getInput options
+ */
+export interface InputOptions {
+    /** Optional. Whether the input is required. If required and not present, will throw. Defaults to false */
+    required?: boolean;
+}
+/**
+ * The code to exit an action
+ */
+export declare enum ExitCode {
+    /**
+     * A code indicating that the action was successful
+     */
+    Success = 0,
+    /**
+     * A code indicating that the action was a failure
+     */
+    Failure = 1
+}
+/**
+ * Sets env variable for this action and future actions in the job
+ * @param name the name of the variable to set
+ * @param val the value of the variable
+ */
+export declare function exportVariable(name: string, val: string): void;
+/**
+ * Registers a secret which will get masked from logs
+ * @param secret value of the secret
+ */
+export declare function setSecret(secret: string): void;
+/**
+ * Prepends inputPath to the PATH (for this action and future actions)
+ * @param inputPath
+ */
+export declare function addPath(inputPath: string): void;
+/**
+ * Gets the value of an input.  The value is also trimmed.
+ *
+ * @param     name     name of the input to get
+ * @param     options  optional. See InputOptions.
+ * @returns   string
+ */
+export declare function getInput(name: string, options?: InputOptions): string;
+/**
+ * Sets the value of an output.
+ *
+ * @param     name     name of the output to set
+ * @param     value    value to store
+ */
+export declare function setOutput(name: string, value: string): void;
+/**
+ * Sets the action status to failed.
+ * When the action exits it will be with an exit code of 1
+ * @param message add error issue message
+ */
+export declare function setFailed(message: string): void;
+/**
+ * Writes debug message to user log
+ * @param message debug message
+ */
+export declare function debug(message: string): void;
+/**
+ * Adds an error issue
+ * @param message error issue message
+ */
+export declare function error(message: string): void;
+/**
+ * Adds an warning issue
+ * @param message warning issue message
+ */
+export declare function warning(message: string): void;
+/**
+ * Writes info to log with console.log.
+ * @param message info message
+ */
+export declare function info(message: string): void;
+/**
+ * Begin an output group.
+ *
+ * Output until the next `groupEnd` will be foldable in this group
+ *
+ * @param name The name of the output group
+ */
+export declare function startGroup(name: string): void;
+/**
+ * End an output group.
+ */
+export declare function endGroup(): void;
+/**
+ * Wrap an asynchronous function call in a group.
+ *
+ * Returns the same type as the function itself.
+ *
+ * @param name The name of the group
+ * @param fn The function to wrap in the group
+ */
+export declare function group<T>(name: string, fn: () => Promise<T>): Promise<T>;
+/**
+ * Saves state for current action, the state can only be retrieved by this action's post job execution.
+ *
+ * @param     name     name of the state to store
+ * @param     value    value to store
+ */
+export declare function saveState(name: string, value: string): void;
+/**
+ * Gets the value of an state set by this action's main execution.
+ *
+ * @param     name     name of the state to get
+ * @returns   string
+ */
+export declare function getState(name: string): string;
diff --git a/setup-maven/node_modules/@actions/core/lib/core.js b/setup-maven/node_modules/@actions/core/lib/core.js
new file mode 100644
index 0000000..f43d507
--- /dev/null
+++ b/setup-maven/node_modules/@actions/core/lib/core.js
@@ -0,0 +1,195 @@
+"use strict";
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+    return new (P || (P = Promise))(function (resolve, reject) {
+        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+        step((generator = generator.apply(thisArg, _arguments || [])).next());
+    });
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const command_1 = require("./command");
+const os = require("os");
+const path = require("path");
+/**
+ * The code to exit an action
+ */
+var ExitCode;
+(function (ExitCode) {
+    /**
+     * A code indicating that the action was successful
+     */
+    ExitCode[ExitCode["Success"] = 0] = "Success";
+    /**
+     * A code indicating that the action was a failure
+     */
+    ExitCode[ExitCode["Failure"] = 1] = "Failure";
+})(ExitCode = exports.ExitCode || (exports.ExitCode = {}));
+//-----------------------------------------------------------------------
+// Variables
+//-----------------------------------------------------------------------
+/**
+ * Sets env variable for this action and future actions in the job
+ * @param name the name of the variable to set
+ * @param val the value of the variable
+ */
+function exportVariable(name, val) {
+    process.env[name] = val;
+    command_1.issueCommand('set-env', { name }, val);
+}
+exports.exportVariable = exportVariable;
+/**
+ * Registers a secret which will get masked from logs
+ * @param secret value of the secret
+ */
+function setSecret(secret) {
+    command_1.issueCommand('add-mask', {}, secret);
+}
+exports.setSecret = setSecret;
+/**
+ * Prepends inputPath to the PATH (for this action and future actions)
+ * @param inputPath
+ */
+function addPath(inputPath) {
+    command_1.issueCommand('add-path', {}, inputPath);
+    process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`;
+}
+exports.addPath = addPath;
+/**
+ * Gets the value of an input.  The value is also trimmed.
+ *
+ * @param     name     name of the input to get
+ * @param     options  optional. See InputOptions.
+ * @returns   string
+ */
+function getInput(name, options) {
+    const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || '';
+    if (options && options.required && !val) {
+        throw new Error(`Input required and not supplied: ${name}`);
+    }
+    return val.trim();
+}
+exports.getInput = getInput;
+/**
+ * Sets the value of an output.
+ *
+ * @param     name     name of the output to set
+ * @param     value    value to store
+ */
+function setOutput(name, value) {
+    command_1.issueCommand('set-output', { name }, value);
+}
+exports.setOutput = setOutput;
+//-----------------------------------------------------------------------
+// Results
+//-----------------------------------------------------------------------
+/**
+ * Sets the action status to failed.
+ * When the action exits it will be with an exit code of 1
+ * @param message add error issue message
+ */
+function setFailed(message) {
+    process.exitCode = ExitCode.Failure;
+    error(message);
+}
+exports.setFailed = setFailed;
+//-----------------------------------------------------------------------
+// Logging Commands
+//-----------------------------------------------------------------------
+/**
+ * Writes debug message to user log
+ * @param message debug message
+ */
+function debug(message) {
+    command_1.issueCommand('debug', {}, message);
+}
+exports.debug = debug;
+/**
+ * Adds an error issue
+ * @param message error issue message
+ */
+function error(message) {
+    command_1.issue('error', message);
+}
+exports.error = error;
+/**
+ * Adds an warning issue
+ * @param message warning issue message
+ */
+function warning(message) {
+    command_1.issue('warning', message);
+}
+exports.warning = warning;
+/**
+ * Writes info to log with console.log.
+ * @param message info message
+ */
+function info(message) {
+    process.stdout.write(message + os.EOL);
+}
+exports.info = info;
+/**
+ * Begin an output group.
+ *
+ * Output until the next `groupEnd` will be foldable in this group
+ *
+ * @param name The name of the output group
+ */
+function startGroup(name) {
+    command_1.issue('group', name);
+}
+exports.startGroup = startGroup;
+/**
+ * End an output group.
+ */
+function endGroup() {
+    command_1.issue('endgroup');
+}
+exports.endGroup = endGroup;
+/**
+ * Wrap an asynchronous function call in a group.
+ *
+ * Returns the same type as the function itself.
+ *
+ * @param name The name of the group
+ * @param fn The function to wrap in the group
+ */
+function group(name, fn) {
+    return __awaiter(this, void 0, void 0, function* () {
+        startGroup(name);
+        let result;
+        try {
+            result = yield fn();
+        }
+        finally {
+            endGroup();
+        }
+        return result;
+    });
+}
+exports.group = group;
+//-----------------------------------------------------------------------
+// Wrapper action state
+//-----------------------------------------------------------------------
+/**
+ * Saves state for current action, the state can only be retrieved by this action's post job execution.
+ *
+ * @param     name     name of the state to store
+ * @param     value    value to store
+ */
+function saveState(name, value) {
+    command_1.issueCommand('save-state', { name }, value);
+}
+exports.saveState = saveState;
+/**
+ * Gets the value of an state set by this action's main execution.
+ *
+ * @param     name     name of the state to get
+ * @returns   string
+ */
+function getState(name) {
+    return process.env[`STATE_${name}`] || '';
+}
+exports.getState = getState;
+//# sourceMappingURL=core.js.map
\ No newline at end of file
diff --git a/setup-maven/node_modules/@actions/core/lib/core.js.map b/setup-maven/node_modules/@actions/core/lib/core.js.map
new file mode 100644
index 0000000..6eda8da
--- /dev/null
+++ b/setup-maven/node_modules/@actions/core/lib/core.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,uCAA6C;AAE7C,yBAAwB;AACxB,6BAA4B;AAU5B;;GAEG;AACH,IAAY,QAUX;AAVD,WAAY,QAAQ;IAClB;;OAEG;IACH,6CAAW,CAAA;IAEX;;OAEG;IACH,6CAAW,CAAA;AACb,CAAC,EAVW,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAUnB;AAED,yEAAyE;AACzE,YAAY;AACZ,yEAAyE;AAEzE;;;;GAIG;AACH,SAAgB,cAAc,CAAC,IAAY,EAAE,GAAW;IACtD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAA;IACvB,sBAAY,CAAC,SAAS,EAAE,EAAC,IAAI,EAAC,EAAE,GAAG,CAAC,CAAA;AACtC,CAAC;AAHD,wCAGC;AAED;;;GAGG;AACH,SAAgB,SAAS,CAAC,MAAc;IACtC,sBAAY,CAAC,UAAU,EAAE,EAAE,EAAE,MAAM,CAAC,CAAA;AACtC,CAAC;AAFD,8BAEC;AAED;;;GAGG;AACH,SAAgB,OAAO,CAAC,SAAiB;IACvC,sBAAY,CAAC,UAAU,EAAE,EAAE,EAAE,SAAS,CAAC,CAAA;IACvC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAA;AAC7E,CAAC;AAHD,0BAGC;AAED;;;;;;GAMG;AACH,SAAgB,QAAQ,CAAC,IAAY,EAAE,OAAsB;IAC3D,MAAM,GAAG,GACP,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,EAAE,CAAA;IACrE,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE;QACvC,MAAM,IAAI,KAAK,CAAC,oCAAoC,IAAI,EAAE,CAAC,CAAA;KAC5D;IAED,OAAO,GAAG,CAAC,IAAI,EAAE,CAAA;AACnB,CAAC;AARD,4BAQC;AAED;;;;;GAKG;AACH,SAAgB,SAAS,CAAC,IAAY,EAAE,KAAa;IACnD,sBAAY,CAAC,YAAY,EAAE,EAAC,IAAI,EAAC,EAAE,KAAK,CAAC,CAAA;AAC3C,CAAC;AAFD,8BAEC;AAED,yEAAyE;AACzE,UAAU;AACV,yEAAyE;AAEzE;;;;GAIG;AACH,SAAgB,SAAS,CAAC,OAAe;IACvC,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAA;IACnC,KAAK,CAAC,OAAO,CAAC,CAAA;AAChB,CAAC;AAHD,8BAGC;AAED,yEAAyE;AACzE,mBAAmB;AACnB,yEAAyE;AAEzE;;;GAGG;AACH,SAAgB,KAAK,CAAC,OAAe;IACnC,sBAAY,CAAC,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,CAAA;AACpC,CAAC;AAFD,sBAEC;AAED;;;GAGG;AACH,SAAgB,KAAK,CAAC,OAAe;IACnC,eAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;AACzB,CAAC;AAFD,sBAEC;AAED;;;GAGG;AACH,SAAgB,OAAO,CAAC,OAAe;IACrC,eAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;AAC3B,CAAC;AAFD,0BAEC;AAED;;;GAGG;AACH,SAAgB,IAAI,CAAC,OAAe;IAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,CAAA;AACxC,CAAC;AAFD,oBAEC;AAED;;;;;;GAMG;AACH,SAAgB,UAAU,CAAC,IAAY;IACrC,eAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;AACtB,CAAC;AAFD,gCAEC;AAED;;GAEG;AACH,SAAgB,QAAQ;IACtB,eAAK,CAAC,UAAU,CAAC,CAAA;AACnB,CAAC;AAFD,4BAEC;AAED;;;;;;;GAOG;AACH,SAAsB,KAAK,CAAI,IAAY,EAAE,EAAoB;;QAC/D,UAAU,CAAC,IAAI,CAAC,CAAA;QAEhB,IAAI,MAAS,CAAA;QAEb,IAAI;YACF,MAAM,GAAG,MAAM,EAAE,EAAE,CAAA;SACpB;gBAAS;YACR,QAAQ,EAAE,CAAA;SACX;QAED,OAAO,MAAM,CAAA;IACf,CAAC;CAAA;AAZD,sBAYC;AAED,yEAAyE;AACzE,uBAAuB;AACvB,yEAAyE;AAEzE;;;;;GAKG;AACH,SAAgB,SAAS,CAAC,IAAY,EAAE,KAAa;IACnD,sBAAY,CAAC,YAAY,EAAE,EAAC,IAAI,EAAC,EAAE,KAAK,CAAC,CAAA;AAC3C,CAAC;AAFD,8BAEC;AAED;;;;;GAKG;AACH,SAAgB,QAAQ,CAAC,IAAY;IACnC,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,IAAI,EAAE,CAAA;AAC3C,CAAC;AAFD,4BAEC"}
\ No newline at end of file
diff --git a/setup-maven/node_modules/@actions/core/package.json b/setup-maven/node_modules/@actions/core/package.json
new file mode 100644
index 0000000..f267deb
--- /dev/null
+++ b/setup-maven/node_modules/@actions/core/package.json
@@ -0,0 +1,65 @@
+{
+  "_from": "@actions/core@^1.0.0",
+  "_id": "@actions/core@1.2.0",
+  "_inBundle": false,
+  "_integrity": "sha512-ZKdyhlSlyz38S6YFfPnyNgCDZuAF2T0Qv5eHflNWytPS8Qjvz39bZFMry9Bb/dpSnqWcNeav5yM2CTYpJeY+Dw==",
+  "_location": "/@actions/core",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "@actions/core@^1.0.0",
+    "name": "@actions/core",
+    "escapedName": "@actions%2fcore",
+    "scope": "@actions",
+    "rawSpec": "^1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^1.0.0"
+  },
+  "_requiredBy": [
+    "/",
+    "/@actions/tool-cache"
+  ],
+  "_resolved": "https://registry.npmjs.org/@actions/core/-/core-1.2.0.tgz",
+  "_shasum": "aa5f52b26c362c821d41557e599371a42f6c0b3d",
+  "_spec": "@actions/core@^1.0.0",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven",
+  "bugs": {
+    "url": "https://github.com/actions/toolkit/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "Actions core lib",
+  "devDependencies": {
+    "@types/node": "^12.0.2"
+  },
+  "directories": {
+    "lib": "lib",
+    "test": "__tests__"
+  },
+  "files": [
+    "lib"
+  ],
+  "homepage": "https://github.com/actions/toolkit/tree/master/packages/core",
+  "keywords": [
+    "github",
+    "actions",
+    "core"
+  ],
+  "license": "MIT",
+  "main": "lib/core.js",
+  "name": "@actions/core",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/actions/toolkit.git",
+    "directory": "packages/core"
+  },
+  "scripts": {
+    "test": "echo \"Error: run tests from root\" && exit 1",
+    "tsc": "tsc"
+  },
+  "version": "1.2.0"
+}
diff --git a/setup-maven/node_modules/@actions/exec/LICENSE.md b/setup-maven/node_modules/@actions/exec/LICENSE.md
new file mode 100644
index 0000000..e5a73f4
--- /dev/null
+++ b/setup-maven/node_modules/@actions/exec/LICENSE.md
@@ -0,0 +1,7 @@
+Copyright 2019 GitHub
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/setup-maven/node_modules/@actions/exec/README.md b/setup-maven/node_modules/@actions/exec/README.md
new file mode 100644
index 0000000..e3eff74
--- /dev/null
+++ b/setup-maven/node_modules/@actions/exec/README.md
@@ -0,0 +1,60 @@
+# `@actions/exec`
+
+## Usage
+
+#### Basic
+
+You can use this package to execute your tools on the command line in a cross platform way:
+
+```js
+const exec = require('@actions/exec');
+
+await exec.exec('node index.js');
+```
+
+#### Args
+
+You can also pass in arg arrays:
+
+```js
+const exec = require('@actions/exec');
+
+await exec.exec('node', ['index.js', 'foo=bar']);
+```
+
+#### Output/options
+
+Capture output or specify [other options](https://github.com/actions/toolkit/blob/d9347d4ab99fd507c0b9104b2cf79fb44fcc827d/packages/exec/src/interfaces.ts#L5):
+
+```js
+const exec = require('@actions/exec');
+
+let myOutput = '';
+let myError = '';
+
+const options = {};
+options.listeners = {
+  stdout: (data: Buffer) => {
+    myOutput += data.toString();
+  },
+  stderr: (data: Buffer) => {
+    myError += data.toString();
+  }
+};
+options.cwd = './lib';
+
+await exec.exec('node', ['index.js', 'foo=bar'], options);
+```
+
+#### Exec tools not in the PATH
+
+You can use it in conjunction with the `which` function from `@actions/io` to execute tools that are not in the PATH:
+
+```js
+const exec = require('@actions/exec');
+const io = require('@actions/io');
+
+const pythonPath: string = await io.which('python', true)
+
+await exec.exec(`"${pythonPath}"`, ['main.py']);
+```
diff --git a/setup-maven/node_modules/@actions/exec/lib/exec.d.ts b/setup-maven/node_modules/@actions/exec/lib/exec.d.ts
new file mode 100644
index 0000000..8c64aae
--- /dev/null
+++ b/setup-maven/node_modules/@actions/exec/lib/exec.d.ts
@@ -0,0 +1,12 @@
+import * as im from './interfaces';
+/**
+ * Exec a command.
+ * Output will be streamed to the live console.
+ * Returns promise with return code
+ *
+ * @param     commandLine        command to execute (can include additional args). Must be correctly escaped.
+ * @param     args               optional arguments for tool. Escaping is handled by the lib.
+ * @param     options            optional exec options.  See ExecOptions
+ * @returns   Promise<number>    exit code
+ */
+export declare function exec(commandLine: string, args?: string[], options?: im.ExecOptions): Promise<number>;
diff --git a/setup-maven/node_modules/@actions/exec/lib/exec.js b/setup-maven/node_modules/@actions/exec/lib/exec.js
new file mode 100644
index 0000000..2748deb
--- /dev/null
+++ b/setup-maven/node_modules/@actions/exec/lib/exec.js
@@ -0,0 +1,37 @@
+"use strict";
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+    return new (P || (P = Promise))(function (resolve, reject) {
+        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+        step((generator = generator.apply(thisArg, _arguments || [])).next());
+    });
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const tr = require("./toolrunner");
+/**
+ * Exec a command.
+ * Output will be streamed to the live console.
+ * Returns promise with return code
+ *
+ * @param     commandLine        command to execute (can include additional args). Must be correctly escaped.
+ * @param     args               optional arguments for tool. Escaping is handled by the lib.
+ * @param     options            optional exec options.  See ExecOptions
+ * @returns   Promise<number>    exit code
+ */
+function exec(commandLine, args, options) {
+    return __awaiter(this, void 0, void 0, function* () {
+        const commandArgs = tr.argStringToArray(commandLine);
+        if (commandArgs.length === 0) {
+            throw new Error(`Parameter 'commandLine' cannot be null or empty.`);
+        }
+        // Path to tool to execute should be first arg
+        const toolPath = commandArgs[0];
+        args = commandArgs.slice(1).concat(args || []);
+        const runner = new tr.ToolRunner(toolPath, args, options);
+        return runner.exec();
+    });
+}
+exports.exec = exec;
+//# sourceMappingURL=exec.js.map
\ No newline at end of file
diff --git a/setup-maven/node_modules/@actions/exec/lib/exec.js.map b/setup-maven/node_modules/@actions/exec/lib/exec.js.map
new file mode 100644
index 0000000..0789521
--- /dev/null
+++ b/setup-maven/node_modules/@actions/exec/lib/exec.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"exec.js","sourceRoot":"","sources":["../src/exec.ts"],"names":[],"mappings":";;;;;;;;;;;AACA,mCAAkC;AAElC;;;;;;;;;GASG;AACH,SAAsB,IAAI,CACxB,WAAmB,EACnB,IAAe,EACf,OAAwB;;QAExB,MAAM,WAAW,GAAG,EAAE,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAA;QACpD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;YAC5B,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAA;SACpE;QACD,8CAA8C;QAC9C,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;QAC/B,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;QAC9C,MAAM,MAAM,GAAkB,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;QACxE,OAAO,MAAM,CAAC,IAAI,EAAE,CAAA;IACtB,CAAC;CAAA;AAdD,oBAcC"}
\ No newline at end of file
diff --git a/setup-maven/node_modules/@actions/exec/lib/interfaces.d.ts b/setup-maven/node_modules/@actions/exec/lib/interfaces.d.ts
new file mode 100644
index 0000000..1861823
--- /dev/null
+++ b/setup-maven/node_modules/@actions/exec/lib/interfaces.d.ts
@@ -0,0 +1,35 @@
+/// <reference types="node" />
+import * as stream from 'stream';
+/**
+ * Interface for exec options
+ */
+export interface ExecOptions {
+    /** optional working directory.  defaults to current */
+    cwd?: string;
+    /** optional envvar dictionary.  defaults to current process's env */
+    env?: {
+        [key: string]: string;
+    };
+    /** optional.  defaults to false */
+    silent?: boolean;
+    /** optional out stream to use. Defaults to process.stdout */
+    outStream?: stream.Writable;
+    /** optional err stream to use. Defaults to process.stderr */
+    errStream?: stream.Writable;
+    /** optional. whether to skip quoting/escaping arguments if needed.  defaults to false. */
+    windowsVerbatimArguments?: boolean;
+    /** optional.  whether to fail if output to stderr.  defaults to false */
+    failOnStdErr?: boolean;
+    /** optional.  defaults to failing on non zero.  ignore will not fail leaving it up to the caller */
+    ignoreReturnCode?: boolean;
+    /** optional. How long in ms to wait for STDIO streams to close after the exit event of the process before terminating. defaults to 10000 */
+    delay?: number;
+    /** optional. Listeners for output. Callback functions that will be called on these events */
+    listeners?: {
+        stdout?: (data: Buffer) => void;
+        stderr?: (data: Buffer) => void;
+        stdline?: (data: string) => void;
+        errline?: (data: string) => void;
+        debug?: (data: string) => void;
+    };
+}
diff --git a/setup-maven/node_modules/@actions/exec/lib/interfaces.js b/setup-maven/node_modules/@actions/exec/lib/interfaces.js
new file mode 100644
index 0000000..db91911
--- /dev/null
+++ b/setup-maven/node_modules/@actions/exec/lib/interfaces.js
@@ -0,0 +1,3 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+//# sourceMappingURL=interfaces.js.map
\ No newline at end of file
diff --git a/setup-maven/node_modules/@actions/exec/lib/interfaces.js.map b/setup-maven/node_modules/@actions/exec/lib/interfaces.js.map
new file mode 100644
index 0000000..8fb5f7d
--- /dev/null
+++ b/setup-maven/node_modules/@actions/exec/lib/interfaces.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":""}
\ No newline at end of file
diff --git a/setup-maven/node_modules/@actions/exec/lib/toolrunner.d.ts b/setup-maven/node_modules/@actions/exec/lib/toolrunner.d.ts
new file mode 100644
index 0000000..9bbbb1e
--- /dev/null
+++ b/setup-maven/node_modules/@actions/exec/lib/toolrunner.d.ts
@@ -0,0 +1,37 @@
+/// <reference types="node" />
+import * as events from 'events';
+import * as im from './interfaces';
+export declare class ToolRunner extends events.EventEmitter {
+    constructor(toolPath: string, args?: string[], options?: im.ExecOptions);
+    private toolPath;
+    private args;
+    private options;
+    private _debug;
+    private _getCommandString;
+    private _processLineBuffer;
+    private _getSpawnFileName;
+    private _getSpawnArgs;
+    private _endsWith;
+    private _isCmdFile;
+    private _windowsQuoteCmdArg;
+    private _uvQuoteCmdArg;
+    private _cloneExecOptions;
+    private _getSpawnOptions;
+    /**
+     * Exec a tool.
+     * Output will be streamed to the live console.
+     * Returns promise with return code
+     *
+     * @param     tool     path to tool to exec
+     * @param     options  optional exec options.  See ExecOptions
+     * @returns   number
+     */
+    exec(): Promise<number>;
+}
+/**
+ * Convert an arg string to an array of args. Handles escaping
+ *
+ * @param    argString   string of arguments
+ * @returns  string[]    array of arguments
+ */
+export declare function argStringToArray(argString: string): string[];
diff --git a/setup-maven/node_modules/@actions/exec/lib/toolrunner.js b/setup-maven/node_modules/@actions/exec/lib/toolrunner.js
new file mode 100644
index 0000000..17d78f3
--- /dev/null
+++ b/setup-maven/node_modules/@actions/exec/lib/toolrunner.js
@@ -0,0 +1,574 @@
+"use strict";
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+    return new (P || (P = Promise))(function (resolve, reject) {
+        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+        step((generator = generator.apply(thisArg, _arguments || [])).next());
+    });
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const os = require("os");
+const events = require("events");
+const child = require("child_process");
+/* eslint-disable @typescript-eslint/unbound-method */
+const IS_WINDOWS = process.platform === 'win32';
+/*
+ * Class for running command line tools. Handles quoting and arg parsing in a platform agnostic way.
+ */
+class ToolRunner extends events.EventEmitter {
+    constructor(toolPath, args, options) {
+        super();
+        if (!toolPath) {
+            throw new Error("Parameter 'toolPath' cannot be null or empty.");
+        }
+        this.toolPath = toolPath;
+        this.args = args || [];
+        this.options = options || {};
+    }
+    _debug(message) {
+        if (this.options.listeners && this.options.listeners.debug) {
+            this.options.listeners.debug(message);
+        }
+    }
+    _getCommandString(options, noPrefix) {
+        const toolPath = this._getSpawnFileName();
+        const args = this._getSpawnArgs(options);
+        let cmd = noPrefix ? '' : '[command]'; // omit prefix when piped to a second tool
+        if (IS_WINDOWS) {
+            // Windows + cmd file
+            if (this._isCmdFile()) {
+                cmd += toolPath;
+                for (const a of args) {
+                    cmd += ` ${a}`;
+                }
+            }
+            // Windows + verbatim
+            else if (options.windowsVerbatimArguments) {
+                cmd += `"${toolPath}"`;
+                for (const a of args) {
+                    cmd += ` ${a}`;
+                }
+            }
+            // Windows (regular)
+            else {
+                cmd += this._windowsQuoteCmdArg(toolPath);
+                for (const a of args) {
+                    cmd += ` ${this._windowsQuoteCmdArg(a)}`;
+                }
+            }
+        }
+        else {
+            // OSX/Linux - this can likely be improved with some form of quoting.
+            // creating processes on Unix is fundamentally different than Windows.
+            // on Unix, execvp() takes an arg array.
+            cmd += toolPath;
+            for (const a of args) {
+                cmd += ` ${a}`;
+            }
+        }
+        return cmd;
+    }
+    _processLineBuffer(data, strBuffer, onLine) {
+        try {
+            let s = strBuffer + data.toString();
+            let n = s.indexOf(os.EOL);
+            while (n > -1) {
+                const line = s.substring(0, n);
+                onLine(line);
+                // the rest of the string ...
+                s = s.substring(n + os.EOL.length);
+                n = s.indexOf(os.EOL);
+            }
+            strBuffer = s;
+        }
+        catch (err) {
+            // streaming lines to console is best effort.  Don't fail a build.
+            this._debug(`error processing line. Failed with error ${err}`);
+        }
+    }
+    _getSpawnFileName() {
+        if (IS_WINDOWS) {
+            if (this._isCmdFile()) {
+                return process.env['COMSPEC'] || 'cmd.exe';
+            }
+        }
+        return this.toolPath;
+    }
+    _getSpawnArgs(options) {
+        if (IS_WINDOWS) {
+            if (this._isCmdFile()) {
+                let argline = `/D /S /C "${this._windowsQuoteCmdArg(this.toolPath)}`;
+                for (const a of this.args) {
+                    argline += ' ';
+                    argline += options.windowsVerbatimArguments
+                        ? a
+                        : this._windowsQuoteCmdArg(a);
+                }
+                argline += '"';
+                return [argline];
+            }
+        }
+        return this.args;
+    }
+    _endsWith(str, end) {
+        return str.endsWith(end);
+    }
+    _isCmdFile() {
+        const upperToolPath = this.toolPath.toUpperCase();
+        return (this._endsWith(upperToolPath, '.CMD') ||
+            this._endsWith(upperToolPath, '.BAT'));
+    }
+    _windowsQuoteCmdArg(arg) {
+        // for .exe, apply the normal quoting rules that libuv applies
+        if (!this._isCmdFile()) {
+            return this._uvQuoteCmdArg(arg);
+        }
+        // otherwise apply quoting rules specific to the cmd.exe command line parser.
+        // the libuv rules are generic and are not designed specifically for cmd.exe
+        // command line parser.
+        //
+        // for a detailed description of the cmd.exe command line parser, refer to
+        // http://stackoverflow.com/questions/4094699/how-does-the-windows-command-interpreter-cmd-exe-parse-scripts/7970912#7970912
+        // need quotes for empty arg
+        if (!arg) {
+            return '""';
+        }
+        // determine whether the arg needs to be quoted
+        const cmdSpecialChars = [
+            ' ',
+            '\t',
+            '&',
+            '(',
+            ')',
+            '[',
+            ']',
+            '{',
+            '}',
+            '^',
+            '=',
+            ';',
+            '!',
+            "'",
+            '+',
+            ',',
+            '`',
+            '~',
+            '|',
+            '<',
+            '>',
+            '"'
+        ];
+        let needsQuotes = false;
+        for (const char of arg) {
+            if (cmdSpecialChars.some(x => x === char)) {
+                needsQuotes = true;
+                break;
+            }
+        }
+        // short-circuit if quotes not needed
+        if (!needsQuotes) {
+            return arg;
+        }
+        // the following quoting rules are very similar to the rules that by libuv applies.
+        //
+        // 1) wrap the string in quotes
+        //
+        // 2) double-up quotes - i.e. " => ""
+        //
+        //    this is different from the libuv quoting rules. libuv replaces " with \", which unfortunately
+        //    doesn't work well with a cmd.exe command line.
+        //
+        //    note, replacing " with "" also works well if the arg is passed to a downstream .NET console app.
+        //    for example, the command line:
+        //          foo.exe "myarg:""my val"""
+        //    is parsed by a .NET console app into an arg array:
+        //          [ "myarg:\"my val\"" ]
+        //    which is the same end result when applying libuv quoting rules. although the actual
+        //    command line from libuv quoting rules would look like:
+        //          foo.exe "myarg:\"my val\""
+        //
+        // 3) double-up slashes that precede a quote,
+        //    e.g.  hello \world    => "hello \world"
+        //          hello\"world    => "hello\\""world"
+        //          hello\\"world   => "hello\\\\""world"
+        //          hello world\    => "hello world\\"
+        //
+        //    technically this is not required for a cmd.exe command line, or the batch argument parser.
+        //    the reasons for including this as a .cmd quoting rule are:
+        //
+        //    a) this is optimized for the scenario where the argument is passed from the .cmd file to an
+        //       external program. many programs (e.g. .NET console apps) rely on the slash-doubling rule.
+        //
+        //    b) it's what we've been doing previously (by deferring to node default behavior) and we
+        //       haven't heard any complaints about that aspect.
+        //
+        // note, a weakness of the quoting rules chosen here, is that % is not escaped. in fact, % cannot be
+        // escaped when used on the command line directly - even though within a .cmd file % can be escaped
+        // by using %%.
+        //
+        // the saving grace is, on the command line, %var% is left as-is if var is not defined. this contrasts
+        // the line parsing rules within a .cmd file, where if var is not defined it is replaced with nothing.
+        //
+        // one option that was explored was replacing % with ^% - i.e. %var% => ^%var^%. this hack would
+        // often work, since it is unlikely that var^ would exist, and the ^ character is removed when the
+        // variable is used. the problem, however, is that ^ is not removed when %* is used to pass the args
+        // to an external program.
+        //
+        // an unexplored potential solution for the % escaping problem, is to create a wrapper .cmd file.
+        // % can be escaped within a .cmd file.
+        let reverse = '"';
+        let quoteHit = true;
+        for (let i = arg.length; i > 0; i--) {
+            // walk the string in reverse
+            reverse += arg[i - 1];
+            if (quoteHit && arg[i - 1] === '\\') {
+                reverse += '\\'; // double the slash
+            }
+            else if (arg[i - 1] === '"') {
+                quoteHit = true;
+                reverse += '"'; // double the quote
+            }
+            else {
+                quoteHit = false;
+            }
+        }
+        reverse += '"';
+        return reverse
+            .split('')
+            .reverse()
+            .join('');
+    }
+    _uvQuoteCmdArg(arg) {
+        // Tool runner wraps child_process.spawn() and needs to apply the same quoting as
+        // Node in certain cases where the undocumented spawn option windowsVerbatimArguments
+        // is used.
+        //
+        // Since this function is a port of quote_cmd_arg from Node 4.x (technically, lib UV,
+        // see https://github.com/nodejs/node/blob/v4.x/deps/uv/src/win/process.c for details),
+        // pasting copyright notice from Node within this function:
+        //
+        //      Copyright Joyent, Inc. and other Node contributors. All rights reserved.
+        //
+        //      Permission is hereby granted, free of charge, to any person obtaining a copy
+        //      of this software and associated documentation files (the "Software"), to
+        //      deal in the Software without restriction, including without limitation the
+        //      rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+        //      sell copies of the Software, and to permit persons to whom the Software is
+        //      furnished to do so, subject to the following conditions:
+        //
+        //      The above copyright notice and this permission notice shall be included in
+        //      all copies or substantial portions of the Software.
+        //
+        //      THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+        //      IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+        //      FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+        //      AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+        //      LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+        //      FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+        //      IN THE SOFTWARE.
+        if (!arg) {
+            // Need double quotation for empty argument
+            return '""';
+        }
+        if (!arg.includes(' ') && !arg.includes('\t') && !arg.includes('"')) {
+            // No quotation needed
+            return arg;
+        }
+        if (!arg.includes('"') && !arg.includes('\\')) {
+            // No embedded double quotes or backslashes, so I can just wrap
+            // quote marks around the whole thing.
+            return `"${arg}"`;
+        }
+        // Expected input/output:
+        //   input : hello"world
+        //   output: "hello\"world"
+        //   input : hello""world
+        //   output: "hello\"\"world"
+        //   input : hello\world
+        //   output: hello\world
+        //   input : hello\\world
+        //   output: hello\\world
+        //   input : hello\"world
+        //   output: "hello\\\"world"
+        //   input : hello\\"world
+        //   output: "hello\\\\\"world"
+        //   input : hello world\
+        //   output: "hello world\\" - note the comment in libuv actually reads "hello world\"
+        //                             but it appears the comment is wrong, it should be "hello world\\"
+        let reverse = '"';
+        let quoteHit = true;
+        for (let i = arg.length; i > 0; i--) {
+            // walk the string in reverse
+            reverse += arg[i - 1];
+            if (quoteHit && arg[i - 1] === '\\') {
+                reverse += '\\';
+            }
+            else if (arg[i - 1] === '"') {
+                quoteHit = true;
+                reverse += '\\';
+            }
+            else {
+                quoteHit = false;
+            }
+        }
+        reverse += '"';
+        return reverse
+            .split('')
+            .reverse()
+            .join('');
+    }
+    _cloneExecOptions(options) {
+        options = options || {};
+        const result = {
+            cwd: options.cwd || process.cwd(),
+            env: options.env || process.env,
+            silent: options.silent || false,
+            windowsVerbatimArguments: options.windowsVerbatimArguments || false,
+            failOnStdErr: options.failOnStdErr || false,
+            ignoreReturnCode: options.ignoreReturnCode || false,
+            delay: options.delay || 10000
+        };
+        result.outStream = options.outStream || process.stdout;
+        result.errStream = options.errStream || process.stderr;
+        return result;
+    }
+    _getSpawnOptions(options, toolPath) {
+        options = options || {};
+        const result = {};
+        result.cwd = options.cwd;
+        result.env = options.env;
+        result['windowsVerbatimArguments'] =
+            options.windowsVerbatimArguments || this._isCmdFile();
+        if (options.windowsVerbatimArguments) {
+            result.argv0 = `"${toolPath}"`;
+        }
+        return result;
+    }
+    /**
+     * Exec a tool.
+     * Output will be streamed to the live console.
+     * Returns promise with return code
+     *
+     * @param     tool     path to tool to exec
+     * @param     options  optional exec options.  See ExecOptions
+     * @returns   number
+     */
+    exec() {
+        return __awaiter(this, void 0, void 0, function* () {
+            return new Promise((resolve, reject) => {
+                this._debug(`exec tool: ${this.toolPath}`);
+                this._debug('arguments:');
+                for (const arg of this.args) {
+                    this._debug(`   ${arg}`);
+                }
+                const optionsNonNull = this._cloneExecOptions(this.options);
+                if (!optionsNonNull.silent && optionsNonNull.outStream) {
+                    optionsNonNull.outStream.write(this._getCommandString(optionsNonNull) + os.EOL);
+                }
+                const state = new ExecState(optionsNonNull, this.toolPath);
+                state.on('debug', (message) => {
+                    this._debug(message);
+                });
+                const fileName = this._getSpawnFileName();
+                const cp = child.spawn(fileName, this._getSpawnArgs(optionsNonNull), this._getSpawnOptions(this.options, fileName));
+                const stdbuffer = '';
+                if (cp.stdout) {
+                    cp.stdout.on('data', (data) => {
+                        if (this.options.listeners && this.options.listeners.stdout) {
+                            this.options.listeners.stdout(data);
+                        }
+                        if (!optionsNonNull.silent && optionsNonNull.outStream) {
+                            optionsNonNull.outStream.write(data);
+                        }
+                        this._processLineBuffer(data, stdbuffer, (line) => {
+                            if (this.options.listeners && this.options.listeners.stdline) {
+                                this.options.listeners.stdline(line);
+                            }
+                        });
+                    });
+                }
+                const errbuffer = '';
+                if (cp.stderr) {
+                    cp.stderr.on('data', (data) => {
+                        state.processStderr = true;
+                        if (this.options.listeners && this.options.listeners.stderr) {
+                            this.options.listeners.stderr(data);
+                        }
+                        if (!optionsNonNull.silent &&
+                            optionsNonNull.errStream &&
+                            optionsNonNull.outStream) {
+                            const s = optionsNonNull.failOnStdErr
+                                ? optionsNonNull.errStream
+                                : optionsNonNull.outStream;
+                            s.write(data);
+                        }
+                        this._processLineBuffer(data, errbuffer, (line) => {
+                            if (this.options.listeners && this.options.listeners.errline) {
+                                this.options.listeners.errline(line);
+                            }
+                        });
+                    });
+                }
+                cp.on('error', (err) => {
+                    state.processError = err.message;
+                    state.processExited = true;
+                    state.processClosed = true;
+                    state.CheckComplete();
+                });
+                cp.on('exit', (code) => {
+                    state.processExitCode = code;
+                    state.processExited = true;
+                    this._debug(`Exit code ${code} received from tool '${this.toolPath}'`);
+                    state.CheckComplete();
+                });
+                cp.on('close', (code) => {
+                    state.processExitCode = code;
+                    state.processExited = true;
+                    state.processClosed = true;
+                    this._debug(`STDIO streams have closed for tool '${this.toolPath}'`);
+                    state.CheckComplete();
+                });
+                state.on('done', (error, exitCode) => {
+                    if (stdbuffer.length > 0) {
+                        this.emit('stdline', stdbuffer);
+                    }
+                    if (errbuffer.length > 0) {
+                        this.emit('errline', errbuffer);
+                    }
+                    cp.removeAllListeners();
+                    if (error) {
+                        reject(error);
+                    }
+                    else {
+                        resolve(exitCode);
+                    }
+                });
+            });
+        });
+    }
+}
+exports.ToolRunner = ToolRunner;
+/**
+ * Convert an arg string to an array of args. Handles escaping
+ *
+ * @param    argString   string of arguments
+ * @returns  string[]    array of arguments
+ */
+function argStringToArray(argString) {
+    const args = [];
+    let inQuotes = false;
+    let escaped = false;
+    let arg = '';
+    function append(c) {
+        // we only escape double quotes.
+        if (escaped && c !== '"') {
+            arg += '\\';
+        }
+        arg += c;
+        escaped = false;
+    }
+    for (let i = 0; i < argString.length; i++) {
+        const c = argString.charAt(i);
+        if (c === '"') {
+            if (!escaped) {
+                inQuotes = !inQuotes;
+            }
+            else {
+                append(c);
+            }
+            continue;
+        }
+        if (c === '\\' && escaped) {
+            append(c);
+            continue;
+        }
+        if (c === '\\' && inQuotes) {
+            escaped = true;
+            continue;
+        }
+        if (c === ' ' && !inQuotes) {
+            if (arg.length > 0) {
+                args.push(arg);
+                arg = '';
+            }
+            continue;
+        }
+        append(c);
+    }
+    if (arg.length > 0) {
+        args.push(arg.trim());
+    }
+    return args;
+}
+exports.argStringToArray = argStringToArray;
+class ExecState extends events.EventEmitter {
+    constructor(options, toolPath) {
+        super();
+        this.processClosed = false; // tracks whether the process has exited and stdio is closed
+        this.processError = '';
+        this.processExitCode = 0;
+        this.processExited = false; // tracks whether the process has exited
+        this.processStderr = false; // tracks whether stderr was written to
+        this.delay = 10000; // 10 seconds
+        this.done = false;
+        this.timeout = null;
+        if (!toolPath) {
+            throw new Error('toolPath must not be empty');
+        }
+        this.options = options;
+        this.toolPath = toolPath;
+        if (options.delay) {
+            this.delay = options.delay;
+        }
+    }
+    CheckComplete() {
+        if (this.done) {
+            return;
+        }
+        if (this.processClosed) {
+            this._setResult();
+        }
+        else if (this.processExited) {
+            this.timeout = setTimeout(ExecState.HandleTimeout, this.delay, this);
+        }
+    }
+    _debug(message) {
+        this.emit('debug', message);
+    }
+    _setResult() {
+        // determine whether there is an error
+        let error;
+        if (this.processExited) {
+            if (this.processError) {
+                error = new Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`);
+            }
+            else if (this.processExitCode !== 0 && !this.options.ignoreReturnCode) {
+                error = new Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`);
+            }
+            else if (this.processStderr && this.options.failOnStdErr) {
+                error = new Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`);
+            }
+        }
+        // clear the timeout
+        if (this.timeout) {
+            clearTimeout(this.timeout);
+            this.timeout = null;
+        }
+        this.done = true;
+        this.emit('done', error, this.processExitCode);
+    }
+    static HandleTimeout(state) {
+        if (state.done) {
+            return;
+        }
+        if (!state.processClosed && state.processExited) {
+            const message = `The STDIO streams did not close within ${state.delay /
+                1000} seconds of the exit event from process '${state.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`;
+            state._debug(message);
+        }
+        state._setResult();
+    }
+}
+//# sourceMappingURL=toolrunner.js.map
\ No newline at end of file
diff --git a/setup-maven/node_modules/@actions/exec/lib/toolrunner.js.map b/setup-maven/node_modules/@actions/exec/lib/toolrunner.js.map
new file mode 100644
index 0000000..de911cc
--- /dev/null
+++ b/setup-maven/node_modules/@actions/exec/lib/toolrunner.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"toolrunner.js","sourceRoot":"","sources":["../src/toolrunner.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,yBAAwB;AACxB,iCAAgC;AAChC,uCAAsC;AAItC,sDAAsD;AAEtD,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAA;AAE/C;;GAEG;AACH,MAAa,UAAW,SAAQ,MAAM,CAAC,YAAY;IACjD,YAAY,QAAgB,EAAE,IAAe,EAAE,OAAwB;QACrE,KAAK,EAAE,CAAA;QAEP,IAAI,CAAC,QAAQ,EAAE;YACb,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;SACjE;QAED,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAA;QACtB,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAA;IAC9B,CAAC;IAMO,MAAM,CAAC,OAAe;QAC5B,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE;YAC1D,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;SACtC;IACH,CAAC;IAEO,iBAAiB,CACvB,OAAuB,EACvB,QAAkB;QAElB,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAA;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QACxC,IAAI,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAA,CAAC,0CAA0C;QAChF,IAAI,UAAU,EAAE;YACd,qBAAqB;YACrB,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;gBACrB,GAAG,IAAI,QAAQ,CAAA;gBACf,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;oBACpB,GAAG,IAAI,IAAI,CAAC,EAAE,CAAA;iBACf;aACF;YACD,qBAAqB;iBAChB,IAAI,OAAO,CAAC,wBAAwB,EAAE;gBACzC,GAAG,IAAI,IAAI,QAAQ,GAAG,CAAA;gBACtB,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;oBACpB,GAAG,IAAI,IAAI,CAAC,EAAE,CAAA;iBACf;aACF;YACD,oBAAoB;iBACf;gBACH,GAAG,IAAI,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAA;gBACzC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;oBACpB,GAAG,IAAI,IAAI,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAA;iBACzC;aACF;SACF;aAAM;YACL,qEAAqE;YACrE,sEAAsE;YACtE,wCAAwC;YACxC,GAAG,IAAI,QAAQ,CAAA;YACf,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;gBACpB,GAAG,IAAI,IAAI,CAAC,EAAE,CAAA;aACf;SACF;QAED,OAAO,GAAG,CAAA;IACZ,CAAC;IAEO,kBAAkB,CACxB,IAAY,EACZ,SAAiB,EACjB,MAA8B;QAE9B,IAAI;YACF,IAAI,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;YACnC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;YAEzB,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE;gBACb,MAAM,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;gBAC9B,MAAM,CAAC,IAAI,CAAC,CAAA;gBAEZ,6BAA6B;gBAC7B,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;gBAClC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;aACtB;YAED,SAAS,GAAG,CAAC,CAAA;SACd;QAAC,OAAO,GAAG,EAAE;YACZ,kEAAkE;YAClE,IAAI,CAAC,MAAM,CAAC,4CAA4C,GAAG,EAAE,CAAC,CAAA;SAC/D;IACH,CAAC;IAEO,iBAAiB;QACvB,IAAI,UAAU,EAAE;YACd,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;gBACrB,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS,CAAA;aAC3C;SACF;QAED,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAEO,aAAa,CAAC,OAAuB;QAC3C,IAAI,UAAU,EAAE;YACd,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;gBACrB,IAAI,OAAO,GAAG,aAAa,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAA;gBACpE,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE;oBACzB,OAAO,IAAI,GAAG,CAAA;oBACd,OAAO,IAAI,OAAO,CAAC,wBAAwB;wBACzC,CAAC,CAAC,CAAC;wBACH,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAA;iBAChC;gBAED,OAAO,IAAI,GAAG,CAAA;gBACd,OAAO,CAAC,OAAO,CAAC,CAAA;aACjB;SACF;QAED,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;IAEO,SAAS,CAAC,GAAW,EAAE,GAAW;QACxC,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;IAC1B,CAAC;IAEO,UAAU;QAChB,MAAM,aAAa,GAAW,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAA;QACzD,OAAO,CACL,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,CACtC,CAAA;IACH,CAAC;IAEO,mBAAmB,CAAC,GAAW;QACrC,8DAA8D;QAC9D,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;YACtB,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;SAChC;QAED,6EAA6E;QAC7E,4EAA4E;QAC5E,uBAAuB;QACvB,EAAE;QACF,0EAA0E;QAC1E,4HAA4H;QAE5H,4BAA4B;QAC5B,IAAI,CAAC,GAAG,EAAE;YACR,OAAO,IAAI,CAAA;SACZ;QAED,+CAA+C;QAC/C,MAAM,eAAe,GAAG;YACtB,GAAG;YACH,IAAI;YACJ,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;YACH,GAAG;SACJ,CAAA;QACD,IAAI,WAAW,GAAG,KAAK,CAAA;QACvB,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE;YACtB,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE;gBACzC,WAAW,GAAG,IAAI,CAAA;gBAClB,MAAK;aACN;SACF;QAED,qCAAqC;QACrC,IAAI,CAAC,WAAW,EAAE;YAChB,OAAO,GAAG,CAAA;SACX;QAED,mFAAmF;QACnF,EAAE;QACF,+BAA+B;QAC/B,EAAE;QACF,qCAAqC;QACrC,EAAE;QACF,mGAAmG;QACnG,oDAAoD;QACpD,EAAE;QACF,sGAAsG;QACtG,oCAAoC;QACpC,sCAAsC;QACtC,wDAAwD;QACxD,kCAAkC;QAClC,yFAAyF;QACzF,4DAA4D;QAC5D,sCAAsC;QACtC,EAAE;QACF,6CAA6C;QAC7C,6CAA6C;QAC7C,+CAA+C;QAC/C,iDAAiD;QACjD,8CAA8C;QAC9C,EAAE;QACF,gGAAgG;QAChG,gEAAgE;QAChE,EAAE;QACF,iGAAiG;QACjG,kGAAkG;QAClG,EAAE;QACF,6FAA6F;QAC7F,wDAAwD;QACxD,EAAE;QACF,oGAAoG;QACpG,mGAAmG;QACnG,eAAe;QACf,EAAE;QACF,sGAAsG;QACtG,sGAAsG;QACtG,EAAE;QACF,gGAAgG;QAChG,kGAAkG;QAClG,oGAAoG;QACpG,0BAA0B;QAC1B,EAAE;QACF,iGAAiG;QACjG,uCAAuC;QACvC,IAAI,OAAO,GAAG,GAAG,CAAA;QACjB,IAAI,QAAQ,GAAG,IAAI,CAAA;QACnB,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YACnC,6BAA6B;YAC7B,OAAO,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;YACrB,IAAI,QAAQ,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE;gBACnC,OAAO,IAAI,IAAI,CAAA,CAAC,mBAAmB;aACpC;iBAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;gBAC7B,QAAQ,GAAG,IAAI,CAAA;gBACf,OAAO,IAAI,GAAG,CAAA,CAAC,mBAAmB;aACnC;iBAAM;gBACL,QAAQ,GAAG,KAAK,CAAA;aACjB;SACF;QAED,OAAO,IAAI,GAAG,CAAA;QACd,OAAO,OAAO;aACX,KAAK,CAAC,EAAE,CAAC;aACT,OAAO,EAAE;aACT,IAAI,CAAC,EAAE,CAAC,CAAA;IACb,CAAC;IAEO,cAAc,CAAC,GAAW;QAChC,iFAAiF;QACjF,qFAAqF;QACrF,WAAW;QACX,EAAE;QACF,qFAAqF;QACrF,uFAAuF;QACvF,2DAA2D;QAC3D,EAAE;QACF,gFAAgF;QAChF,EAAE;QACF,oFAAoF;QACpF,gFAAgF;QAChF,kFAAkF;QAClF,mFAAmF;QACnF,kFAAkF;QAClF,gEAAgE;QAChE,EAAE;QACF,kFAAkF;QAClF,2DAA2D;QAC3D,EAAE;QACF,kFAAkF;QAClF,gFAAgF;QAChF,mFAAmF;QACnF,8EAA8E;QAC9E,+EAA+E;QAC/E,oFAAoF;QACpF,wBAAwB;QAExB,IAAI,CAAC,GAAG,EAAE;YACR,2CAA2C;YAC3C,OAAO,IAAI,CAAA;SACZ;QAED,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACnE,sBAAsB;YACtB,OAAO,GAAG,CAAA;SACX;QAED,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YAC7C,+DAA+D;YAC/D,sCAAsC;YACtC,OAAO,IAAI,GAAG,GAAG,CAAA;SAClB;QAED,yBAAyB;QACzB,wBAAwB;QACxB,2BAA2B;QAC3B,yBAAyB;QACzB,6BAA6B;QAC7B,wBAAwB;QACxB,wBAAwB;QACxB,yBAAyB;QACzB,yBAAyB;QACzB,yBAAyB;QACzB,6BAA6B;QAC7B,0BAA0B;QAC1B,+BAA+B;QAC/B,yBAAyB;QACzB,sFAAsF;QACtF,gGAAgG;QAChG,IAAI,OAAO,GAAG,GAAG,CAAA;QACjB,IAAI,QAAQ,GAAG,IAAI,CAAA;QACnB,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YACnC,6BAA6B;YAC7B,OAAO,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;YACrB,IAAI,QAAQ,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE;gBACnC,OAAO,IAAI,IAAI,CAAA;aAChB;iBAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;gBAC7B,QAAQ,GAAG,IAAI,CAAA;gBACf,OAAO,IAAI,IAAI,CAAA;aAChB;iBAAM;gBACL,QAAQ,GAAG,KAAK,CAAA;aACjB;SACF;QAED,OAAO,IAAI,GAAG,CAAA;QACd,OAAO,OAAO;aACX,KAAK,CAAC,EAAE,CAAC;aACT,OAAO,EAAE;aACT,IAAI,CAAC,EAAE,CAAC,CAAA;IACb,CAAC;IAEO,iBAAiB,CAAC,OAAwB;QAChD,OAAO,GAAG,OAAO,IAAoB,EAAE,CAAA;QACvC,MAAM,MAAM,GAAmC;YAC7C,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;YACjC,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG;YAC/B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;YAC/B,wBAAwB,EAAE,OAAO,CAAC,wBAAwB,IAAI,KAAK;YACnE,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,KAAK;YAC3C,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,IAAI,KAAK;YACnD,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK;SAC9B,CAAA;QACD,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAqB,OAAO,CAAC,MAAM,CAAA;QACvE,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAqB,OAAO,CAAC,MAAM,CAAA;QACvE,OAAO,MAAM,CAAA;IACf,CAAC;IAEO,gBAAgB,CACtB,OAAuB,EACvB,QAAgB;QAEhB,OAAO,GAAG,OAAO,IAAoB,EAAE,CAAA;QACvC,MAAM,MAAM,GAAuB,EAAE,CAAA;QACrC,MAAM,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAA;QACxB,MAAM,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAA;QACxB,MAAM,CAAC,0BAA0B,CAAC;YAChC,OAAO,CAAC,wBAAwB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAA;QACvD,IAAI,OAAO,CAAC,wBAAwB,EAAE;YACpC,MAAM,CAAC,KAAK,GAAG,IAAI,QAAQ,GAAG,CAAA;SAC/B;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;;;;;;;OAQG;IACG,IAAI;;YACR,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC7C,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;gBAC1C,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;gBACzB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE;oBAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;iBACzB;gBAED,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBAC3D,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,cAAc,CAAC,SAAS,EAAE;oBACtD,cAAc,CAAC,SAAS,CAAC,KAAK,CAC5B,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,GAAG,CAChD,CAAA;iBACF;gBAED,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;gBAC1D,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,OAAe,EAAE,EAAE;oBACpC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;gBACtB,CAAC,CAAC,CAAA;gBAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAA;gBACzC,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,CACpB,QAAQ,EACR,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,EAClC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAC9C,CAAA;gBAED,MAAM,SAAS,GAAG,EAAE,CAAA;gBACpB,IAAI,EAAE,CAAC,MAAM,EAAE;oBACb,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;wBACpC,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE;4BAC3D,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;yBACpC;wBAED,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,cAAc,CAAC,SAAS,EAAE;4BACtD,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;yBACrC;wBAED,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,IAAY,EAAE,EAAE;4BACxD,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE;gCAC5D,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;6BACrC;wBACH,CAAC,CAAC,CAAA;oBACJ,CAAC,CAAC,CAAA;iBACH;gBAED,MAAM,SAAS,GAAG,EAAE,CAAA;gBACpB,IAAI,EAAE,CAAC,MAAM,EAAE;oBACb,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;wBACpC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAA;wBAC1B,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE;4BAC3D,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;yBACpC;wBAED,IACE,CAAC,cAAc,CAAC,MAAM;4BACtB,cAAc,CAAC,SAAS;4BACxB,cAAc,CAAC,SAAS,EACxB;4BACA,MAAM,CAAC,GAAG,cAAc,CAAC,YAAY;gCACnC,CAAC,CAAC,cAAc,CAAC,SAAS;gCAC1B,CAAC,CAAC,cAAc,CAAC,SAAS,CAAA;4BAC5B,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;yBACd;wBAED,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,IAAY,EAAE,EAAE;4BACxD,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE;gCAC5D,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;6BACrC;wBACH,CAAC,CAAC,CAAA;oBACJ,CAAC,CAAC,CAAA;iBACH;gBAED,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;oBAC5B,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC,OAAO,CAAA;oBAChC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAA;oBAC1B,KAAK,CAAC,aAAa,GAAG,IAAI,CAAA;oBAC1B,KAAK,CAAC,aAAa,EAAE,CAAA;gBACvB,CAAC,CAAC,CAAA;gBAEF,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;oBAC7B,KAAK,CAAC,eAAe,GAAG,IAAI,CAAA;oBAC5B,KAAK,CAAC,aAAa,GAAG,IAAI,CAAA;oBAC1B,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,wBAAwB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA;oBACtE,KAAK,CAAC,aAAa,EAAE,CAAA;gBACvB,CAAC,CAAC,CAAA;gBAEF,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAY,EAAE,EAAE;oBAC9B,KAAK,CAAC,eAAe,GAAG,IAAI,CAAA;oBAC5B,KAAK,CAAC,aAAa,GAAG,IAAI,CAAA;oBAC1B,KAAK,CAAC,aAAa,GAAG,IAAI,CAAA;oBAC1B,IAAI,CAAC,MAAM,CAAC,uCAAuC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA;oBACpE,KAAK,CAAC,aAAa,EAAE,CAAA;gBACvB,CAAC,CAAC,CAAA;gBAEF,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAY,EAAE,QAAgB,EAAE,EAAE;oBAClD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;wBACxB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;qBAChC;oBAED,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;wBACxB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;qBAChC;oBAED,EAAE,CAAC,kBAAkB,EAAE,CAAA;oBAEvB,IAAI,KAAK,EAAE;wBACT,MAAM,CAAC,KAAK,CAAC,CAAA;qBACd;yBAAM;wBACL,OAAO,CAAC,QAAQ,CAAC,CAAA;qBAClB;gBACH,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC;KAAA;CACF;AA9eD,gCA8eC;AAED;;;;;GAKG;AACH,SAAgB,gBAAgB,CAAC,SAAiB;IAChD,MAAM,IAAI,GAAa,EAAE,CAAA;IAEzB,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,IAAI,GAAG,GAAG,EAAE,CAAA;IAEZ,SAAS,MAAM,CAAC,CAAS;QACvB,gCAAgC;QAChC,IAAI,OAAO,IAAI,CAAC,KAAK,GAAG,EAAE;YACxB,GAAG,IAAI,IAAI,CAAA;SACZ;QAED,GAAG,IAAI,CAAC,CAAA;QACR,OAAO,GAAG,KAAK,CAAA;IACjB,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACzC,MAAM,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QAE7B,IAAI,CAAC,KAAK,GAAG,EAAE;YACb,IAAI,CAAC,OAAO,EAAE;gBACZ,QAAQ,GAAG,CAAC,QAAQ,CAAA;aACrB;iBAAM;gBACL,MAAM,CAAC,CAAC,CAAC,CAAA;aACV;YACD,SAAQ;SACT;QAED,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,EAAE;YACzB,MAAM,CAAC,CAAC,CAAC,CAAA;YACT,SAAQ;SACT;QAED,IAAI,CAAC,KAAK,IAAI,IAAI,QAAQ,EAAE;YAC1B,OAAO,GAAG,IAAI,CAAA;YACd,SAAQ;SACT;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;YAC1B,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;gBAClB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACd,GAAG,GAAG,EAAE,CAAA;aACT;YACD,SAAQ;SACT;QAED,MAAM,CAAC,CAAC,CAAC,CAAA;KACV;IAED,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;QAClB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;KACtB;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAvDD,4CAuDC;AAED,MAAM,SAAU,SAAQ,MAAM,CAAC,YAAY;IACzC,YAAY,OAAuB,EAAE,QAAgB;QACnD,KAAK,EAAE,CAAA;QAaT,kBAAa,GAAY,KAAK,CAAA,CAAC,4DAA4D;QAC3F,iBAAY,GAAW,EAAE,CAAA;QACzB,oBAAe,GAAW,CAAC,CAAA;QAC3B,kBAAa,GAAY,KAAK,CAAA,CAAC,wCAAwC;QACvE,kBAAa,GAAY,KAAK,CAAA,CAAC,uCAAuC;QAC9D,UAAK,GAAG,KAAK,CAAA,CAAC,aAAa;QAC3B,SAAI,GAAY,KAAK,CAAA;QAErB,YAAO,GAAwB,IAAI,CAAA;QAnBzC,IAAI,CAAC,QAAQ,EAAE;YACb,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;SAC9C;QAED,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,OAAO,CAAC,KAAK,EAAE;YACjB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;SAC3B;IACH,CAAC;IAaD,aAAa;QACX,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,OAAM;SACP;QAED,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,UAAU,EAAE,CAAA;SAClB;aAAM,IAAI,IAAI,CAAC,aAAa,EAAE;YAC7B,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;SACrE;IACH,CAAC;IAEO,MAAM,CAAC,OAAe;QAC5B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC7B,CAAC;IAEO,UAAU;QAChB,sCAAsC;QACtC,IAAI,KAAwB,CAAA;QAC5B,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,KAAK,GAAG,IAAI,KAAK,CACf,8DACE,IAAI,CAAC,QACP,4DACE,IAAI,CAAC,YACP,EAAE,CACH,CAAA;aACF;iBAAM,IAAI,IAAI,CAAC,eAAe,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;gBACvE,KAAK,GAAG,IAAI,KAAK,CACf,gBAAgB,IAAI,CAAC,QAAQ,2BAC3B,IAAI,CAAC,eACP,EAAE,CACH,CAAA;aACF;iBAAM,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;gBAC1D,KAAK,GAAG,IAAI,KAAK,CACf,gBACE,IAAI,CAAC,QACP,sEAAsE,CACvE,CAAA;aACF;SACF;QAED,oBAAoB;QACpB,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;SACpB;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,CAAA;IAChD,CAAC;IAEO,MAAM,CAAC,aAAa,CAAC,KAAgB;QAC3C,IAAI,KAAK,CAAC,IAAI,EAAE;YACd,OAAM;SACP;QAED,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa,EAAE;YAC/C,MAAM,OAAO,GAAG,0CAA0C,KAAK,CAAC,KAAK;gBACnE,IAAI,4CACJ,KAAK,CAAC,QACR,0FAA0F,CAAA;YAC1F,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;SACtB;QAED,KAAK,CAAC,UAAU,EAAE,CAAA;IACpB,CAAC;CACF"}
\ No newline at end of file
diff --git a/setup-maven/node_modules/@actions/exec/package.json b/setup-maven/node_modules/@actions/exec/package.json
new file mode 100644
index 0000000..7af9624
--- /dev/null
+++ b/setup-maven/node_modules/@actions/exec/package.json
@@ -0,0 +1,64 @@
+{
+  "_from": "@actions/exec@^1.0.1",
+  "_id": "@actions/exec@1.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-nvFkxwiicvpzNiCBF4wFBDfnBvi7xp/as7LE1hBxBxKG2L29+gkIPBiLKMVORL+Hg3JNf07AKRfl0V5djoypjQ==",
+  "_location": "/@actions/exec",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "@actions/exec@^1.0.1",
+    "name": "@actions/exec",
+    "escapedName": "@actions%2fexec",
+    "scope": "@actions",
+    "rawSpec": "^1.0.1",
+    "saveSpec": null,
+    "fetchSpec": "^1.0.1"
+  },
+  "_requiredBy": [
+    "/@actions/tool-cache"
+  ],
+  "_resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.0.1.tgz",
+  "_shasum": "1624b541165697e7008d7c87bc1f69f191263c6c",
+  "_spec": "@actions/exec@^1.0.1",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/@actions/tool-cache",
+  "bugs": {
+    "url": "https://github.com/actions/toolkit/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "Actions exec lib",
+  "devDependencies": {
+    "@actions/io": "^1.0.1"
+  },
+  "directories": {
+    "lib": "lib",
+    "test": "__tests__"
+  },
+  "files": [
+    "lib"
+  ],
+  "gitHead": "a2ab4bcf78e4f7080f0d45856e6eeba16f0bbc52",
+  "homepage": "https://github.com/actions/toolkit/tree/master/packages/exec",
+  "keywords": [
+    "github",
+    "actions",
+    "exec"
+  ],
+  "license": "MIT",
+  "main": "lib/exec.js",
+  "name": "@actions/exec",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/actions/toolkit.git"
+  },
+  "scripts": {
+    "test": "echo \"Error: run tests from root\" && exit 1",
+    "tsc": "tsc"
+  },
+  "version": "1.0.1"
+}
diff --git a/setup-maven/node_modules/@actions/github/LICENSE.md b/setup-maven/node_modules/@actions/github/LICENSE.md
new file mode 100644
index 0000000..e5a73f4
--- /dev/null
+++ b/setup-maven/node_modules/@actions/github/LICENSE.md
@@ -0,0 +1,7 @@
+Copyright 2019 GitHub
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/setup-maven/node_modules/@actions/github/README.md b/setup-maven/node_modules/@actions/github/README.md
new file mode 100644
index 0000000..b431256
--- /dev/null
+++ b/setup-maven/node_modules/@actions/github/README.md
@@ -0,0 +1,50 @@
+# `@actions/github`
+
+> A hydrated Octokit client.
+
+## Usage
+
+Returns an Octokit client. See https://octokit.github.io/rest.js for the API.
+
+```js
+const github = require('@actions/github');
+const core = require('@actions/core');
+
+// This should be a token with access to your repository scoped in as a secret.
+const myToken = core.getInput('myToken');
+
+const octokit = new github.GitHub(myToken);
+
+const { data: pullRequest } = await octokit.pulls.get({
+    owner: 'octokit',
+    repo: 'rest.js',
+    pull_number: 123,
+    mediaType: {
+      format: 'diff'
+    }
+});
+
+console.log(pullRequest);
+```
+
+You can pass client options (except `auth`, which is handled by the token argument), as specified by [Octokit](https://octokit.github.io/rest.js/), as a second argument to the `GitHub` constructor.
+
+You can also make GraphQL requests. See https://github.com/octokit/graphql.js for the API.
+
+```js
+const result = await octokit.graphql(query, variables);
+```
+
+Finally, you can get the context of the current action:
+
+```js
+const github = require('@actions/github');
+
+const context = github.context;
+
+const newIssue = await octokit.issues.create({
+  ...context.repo,
+  title: 'New issue!',
+  body: 'Hello Universe!'
+});
+```
diff --git a/setup-maven/node_modules/@actions/github/lib/context.d.ts b/setup-maven/node_modules/@actions/github/lib/context.d.ts
new file mode 100644
index 0000000..3ee7583
--- /dev/null
+++ b/setup-maven/node_modules/@actions/github/lib/context.d.ts
@@ -0,0 +1,26 @@
+import { WebhookPayload } from './interfaces';
+export declare class Context {
+    /**
+     * Webhook payload object that triggered the workflow
+     */
+    payload: WebhookPayload;
+    eventName: string;
+    sha: string;
+    ref: string;
+    workflow: string;
+    action: string;
+    actor: string;
+    /**
+     * Hydrate the context from the environment
+     */
+    constructor();
+    readonly issue: {
+        owner: string;
+        repo: string;
+        number: number;
+    };
+    readonly repo: {
+        owner: string;
+        repo: string;
+    };
+}
diff --git a/setup-maven/node_modules/@actions/github/lib/context.js b/setup-maven/node_modules/@actions/github/lib/context.js
new file mode 100644
index 0000000..0df128f
--- /dev/null
+++ b/setup-maven/node_modules/@actions/github/lib/context.js
@@ -0,0 +1,45 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const fs_1 = require("fs");
+const os_1 = require("os");
+class Context {
+    /**
+     * Hydrate the context from the environment
+     */
+    constructor() {
+        this.payload = {};
+        if (process.env.GITHUB_EVENT_PATH) {
+            if (fs_1.existsSync(process.env.GITHUB_EVENT_PATH)) {
+                this.payload = JSON.parse(fs_1.readFileSync(process.env.GITHUB_EVENT_PATH, { encoding: 'utf8' }));
+            }
+            else {
+                process.stdout.write(`GITHUB_EVENT_PATH ${process.env.GITHUB_EVENT_PATH} does not exist${os_1.EOL}`);
+            }
+        }
+        this.eventName = process.env.GITHUB_EVENT_NAME;
+        this.sha = process.env.GITHUB_SHA;
+        this.ref = process.env.GITHUB_REF;
+        this.workflow = process.env.GITHUB_WORKFLOW;
+        this.action = process.env.GITHUB_ACTION;
+        this.actor = process.env.GITHUB_ACTOR;
+    }
+    get issue() {
+        const payload = this.payload;
+        return Object.assign(Object.assign({}, this.repo), { number: (payload.issue || payload.pullRequest || payload).number });
+    }
+    get repo() {
+        if (process.env.GITHUB_REPOSITORY) {
+            const [owner, repo] = process.env.GITHUB_REPOSITORY.split('/');
+            return { owner, repo };
+        }
+        if (this.payload.repository) {
+            return {
+                owner: this.payload.repository.owner.login,
+                repo: this.payload.repository.name
+            };
+        }
+        throw new Error("context.repo requires a GITHUB_REPOSITORY environment variable like 'owner/repo'");
+    }
+}
+exports.Context = Context;
+//# sourceMappingURL=context.js.map
\ No newline at end of file
diff --git a/setup-maven/node_modules/@actions/github/lib/context.js.map b/setup-maven/node_modules/@actions/github/lib/context.js.map
new file mode 100644
index 0000000..24eabd8
--- /dev/null
+++ b/setup-maven/node_modules/@actions/github/lib/context.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":";;AAEA,2BAA2C;AAC3C,2BAAsB;AAEtB,MAAa,OAAO;IAalB;;OAEG;IACH;QACE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;QACjB,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE;YACjC,IAAI,eAAU,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE;gBAC7C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CACvB,iBAAY,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAC,QAAQ,EAAE,MAAM,EAAC,CAAC,CAChE,CAAA;aACF;iBAAM;gBACL,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,qBACE,OAAO,CAAC,GAAG,CAAC,iBACd,kBAAkB,QAAG,EAAE,CACxB,CAAA;aACF;SACF;QACD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,iBAA2B,CAAA;QACxD,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,UAAoB,CAAA;QAC3C,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,UAAoB,CAAA;QAC3C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,eAAyB,CAAA;QACrD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,aAAuB,CAAA;QACjD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,YAAsB,CAAA;IACjD,CAAC;IAED,IAAI,KAAK;QACP,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAE5B,uCACK,IAAI,CAAC,IAAI,KACZ,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,CAAC,MAAM,IACjE;IACH,CAAC;IAED,IAAI,IAAI;QACN,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE;YACjC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC9D,OAAO,EAAC,KAAK,EAAE,IAAI,EAAC,CAAA;SACrB;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,OAAO;gBACL,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK;gBAC1C,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI;aACnC,CAAA;SACF;QAED,MAAM,IAAI,KAAK,CACb,kFAAkF,CACnF,CAAA;IACH,CAAC;CACF;AAjED,0BAiEC"}
\ No newline at end of file
diff --git a/setup-maven/node_modules/@actions/github/lib/github.d.ts b/setup-maven/node_modules/@actions/github/lib/github.d.ts
new file mode 100644
index 0000000..7c5b9f2
--- /dev/null
+++ b/setup-maven/node_modules/@actions/github/lib/github.d.ts
@@ -0,0 +1,8 @@
+import { GraphQlQueryResponse, Variables } from '@octokit/graphql';
+import Octokit from '@octokit/rest';
+import * as Context from './context';
+export declare const context: Context.Context;
+export declare class GitHub extends Octokit {
+    graphql: (query: string, variables?: Variables) => Promise<GraphQlQueryResponse>;
+    constructor(token: string, opts?: Omit<Octokit.Options, 'auth'>);
+}
diff --git a/setup-maven/node_modules/@actions/github/lib/github.js b/setup-maven/node_modules/@actions/github/lib/github.js
new file mode 100644
index 0000000..d5c782f
--- /dev/null
+++ b/setup-maven/node_modules/@actions/github/lib/github.js
@@ -0,0 +1,29 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+    return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+var __importStar = (this && this.__importStar) || function (mod) {
+    if (mod && mod.__esModule) return mod;
+    var result = {};
+    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
+    result["default"] = mod;
+    return result;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+// Originally pulled from https://github.com/JasonEtco/actions-toolkit/blob/master/src/github.ts
+const graphql_1 = require("@octokit/graphql");
+const rest_1 = __importDefault(require("@octokit/rest"));
+const Context = __importStar(require("./context"));
+// We need this in order to extend Octokit
+rest_1.default.prototype = new rest_1.default();
+exports.context = new Context.Context();
+class GitHub extends rest_1.default {
+    constructor(token, opts = {}) {
+        super(Object.assign(Object.assign({}, opts), { auth: `token ${token}` }));
+        this.graphql = graphql_1.defaults({
+            headers: { authorization: `token ${token}` }
+        });
+    }
+}
+exports.GitHub = GitHub;
+//# sourceMappingURL=github.js.map
\ No newline at end of file
diff --git a/setup-maven/node_modules/@actions/github/lib/github.js.map b/setup-maven/node_modules/@actions/github/lib/github.js.map
new file mode 100644
index 0000000..0c268e8
--- /dev/null
+++ b/setup-maven/node_modules/@actions/github/lib/github.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"github.js","sourceRoot":"","sources":["../src/github.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,gGAAgG;AAChG,8CAA0E;AAC1E,yDAAmC;AACnC,mDAAoC;AAEpC,0CAA0C;AAC1C,cAAO,CAAC,SAAS,GAAG,IAAI,cAAO,EAAE,CAAA;AAEpB,QAAA,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,CAAA;AAE5C,MAAa,MAAO,SAAQ,cAAO;IAMjC,YAAY,KAAa,EAAE,OAAsC,EAAE;QACjE,KAAK,iCAAK,IAAI,KAAE,IAAI,EAAE,SAAS,KAAK,EAAE,IAAE,CAAA;QACxC,IAAI,CAAC,OAAO,GAAG,kBAAQ,CAAC;YACtB,OAAO,EAAE,EAAC,aAAa,EAAE,SAAS,KAAK,EAAE,EAAC;SAC3C,CAAC,CAAA;IACJ,CAAC;CACF;AAZD,wBAYC"}
\ No newline at end of file
diff --git a/setup-maven/node_modules/@actions/github/lib/interfaces.d.ts b/setup-maven/node_modules/@actions/github/lib/interfaces.d.ts
new file mode 100644
index 0000000..23788cc
--- /dev/null
+++ b/setup-maven/node_modules/@actions/github/lib/interfaces.d.ts
@@ -0,0 +1,36 @@
+export interface PayloadRepository {
+    [key: string]: any;
+    full_name?: string;
+    name: string;
+    owner: {
+        [key: string]: any;
+        login: string;
+        name?: string;
+    };
+    html_url?: string;
+}
+export interface WebhookPayload {
+    [key: string]: any;
+    repository?: PayloadRepository;
+    issue?: {
+        [key: string]: any;
+        number: number;
+        html_url?: string;
+        body?: string;
+    };
+    pull_request?: {
+        [key: string]: any;
+        number: number;
+        html_url?: string;
+        body?: string;
+    };
+    sender?: {
+        [key: string]: any;
+        type: string;
+    };
+    action?: string;
+    installation?: {
+        id: number;
+        [key: string]: any;
+    };
+}
diff --git a/setup-maven/node_modules/@actions/github/lib/interfaces.js b/setup-maven/node_modules/@actions/github/lib/interfaces.js
new file mode 100644
index 0000000..a660b5e
--- /dev/null
+++ b/setup-maven/node_modules/@actions/github/lib/interfaces.js
@@ -0,0 +1,4 @@
+"use strict";
+/* eslint-disable @typescript-eslint/no-explicit-any */
+Object.defineProperty(exports, "__esModule", { value: true });
+//# sourceMappingURL=interfaces.js.map
\ No newline at end of file
diff --git a/setup-maven/node_modules/@actions/github/lib/interfaces.js.map b/setup-maven/node_modules/@actions/github/lib/interfaces.js.map
new file mode 100644
index 0000000..dc2c960
--- /dev/null
+++ b/setup-maven/node_modules/@actions/github/lib/interfaces.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":";AAAA,uDAAuD"}
\ No newline at end of file
diff --git a/setup-maven/node_modules/@actions/github/package.json b/setup-maven/node_modules/@actions/github/package.json
new file mode 100644
index 0000000..f0055d6
--- /dev/null
+++ b/setup-maven/node_modules/@actions/github/package.json
@@ -0,0 +1,68 @@
+{
+  "_from": "@actions/github@^1.0.0",
+  "_id": "@actions/github@1.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-cHf6PyoNMdei13jEdGPhKprIMFmjVVW/dnM5/9QmQDJ1ZTaGVyezUSCUIC/ySNLRvDUpeFwPYMdThSEJldSbUw==",
+  "_location": "/@actions/github",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "@actions/github@^1.0.0",
+    "name": "@actions/github",
+    "escapedName": "@actions%2fgithub",
+    "scope": "@actions",
+    "rawSpec": "^1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^1.0.0"
+  },
+  "_requiredBy": [
+    "/"
+  ],
+  "_resolved": "https://registry.npmjs.org/@actions/github/-/github-1.1.0.tgz",
+  "_shasum": "06f34e6b0cf07eb2b3641de3e680dbfae6bcd400",
+  "_spec": "@actions/github@^1.0.0",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven",
+  "bugs": {
+    "url": "https://github.com/actions/toolkit/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "@octokit/graphql": "^2.0.1",
+    "@octokit/rest": "^16.15.0"
+  },
+  "deprecated": false,
+  "description": "Actions github lib",
+  "devDependencies": {
+    "jest": "^24.7.1"
+  },
+  "directories": {
+    "lib": "lib",
+    "test": "__tests__"
+  },
+  "files": [
+    "lib"
+  ],
+  "gitHead": "a2ab4bcf78e4f7080f0d45856e6eeba16f0bbc52",
+  "homepage": "https://github.com/actions/toolkit/tree/master/packages/github",
+  "keywords": [
+    "github",
+    "actions"
+  ],
+  "license": "MIT",
+  "main": "lib/github.js",
+  "name": "@actions/github",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/actions/toolkit.git"
+  },
+  "scripts": {
+    "build": "tsc",
+    "test": "jest",
+    "tsc": "tsc"
+  },
+  "version": "1.1.0"
+}
diff --git a/setup-maven/node_modules/@actions/io/LICENSE.md b/setup-maven/node_modules/@actions/io/LICENSE.md
new file mode 100644
index 0000000..e5a73f4
--- /dev/null
+++ b/setup-maven/node_modules/@actions/io/LICENSE.md
@@ -0,0 +1,7 @@
+Copyright 2019 GitHub
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/setup-maven/node_modules/@actions/io/README.md b/setup-maven/node_modules/@actions/io/README.md
new file mode 100644
index 0000000..9aadf2f
--- /dev/null
+++ b/setup-maven/node_modules/@actions/io/README.md
@@ -0,0 +1,53 @@
+# `@actions/io`
+
+> Core functions for cli filesystem scenarios
+
+## Usage
+
+#### mkdir -p
+
+Recursively make a directory. Follows rules specified in [man mkdir](https://linux.die.net/man/1/mkdir) with the `-p` option specified:
+
+```js
+const io = require('@actions/io');
+
+await io.mkdirP('path/to/make');
+```
+
+#### cp/mv
+
+Copy or move files or folders. Follows rules specified in [man cp](https://linux.die.net/man/1/cp) and [man mv](https://linux.die.net/man/1/mv):
+
+```js
+const io = require('@actions/io');
+
+// Recursive must be true for directories
+const options = { recursive: true, force: false }
+
+await io.cp('path/to/directory', 'path/to/dest', options);
+await io.mv('path/to/file', 'path/to/dest');
+```
+
+#### rm -rf
+
+Remove a file or folder recursively. Follows rules specified in [man rm](https://linux.die.net/man/1/rm) with the `-r` and `-f` rules specified.
+
+```js
+const io = require('@actions/io');
+
+await io.rmRF('path/to/directory');
+await io.rmRF('path/to/file');
+```
+
+#### which
+
+Get the path to a tool and resolves via paths. Follows the rules specified in [man which](https://linux.die.net/man/1/which).
+
+```js
+const exec = require('@actions/exec');
+const io = require('@actions/io');
+
+const pythonPath: string = await io.which('python', true)
+
+await exec.exec(`"${pythonPath}"`, ['main.py']);
+```
diff --git a/setup-maven/node_modules/@actions/io/lib/io-util.d.ts b/setup-maven/node_modules/@actions/io/lib/io-util.d.ts
new file mode 100644
index 0000000..f0214fe
--- /dev/null
+++ b/setup-maven/node_modules/@actions/io/lib/io-util.d.ts
@@ -0,0 +1,29 @@
+/// <reference types="node" />
+import * as fs from 'fs';
+export declare const chmod: typeof fs.promises.chmod, copyFile: typeof fs.promises.copyFile, lstat: typeof fs.promises.lstat, mkdir: typeof fs.promises.mkdir, readdir: typeof fs.promises.readdir, readlink: typeof fs.promises.readlink, rename: typeof fs.promises.rename, rmdir: typeof fs.promises.rmdir, stat: typeof fs.promises.stat, symlink: typeof fs.promises.symlink, unlink: typeof fs.promises.unlink;
+export declare const IS_WINDOWS: boolean;
+export declare function exists(fsPath: string): Promise<boolean>;
+export declare function isDirectory(fsPath: string, useStat?: boolean): Promise<boolean>;
+/**
+ * On OSX/Linux, true if path starts with '/'. On Windows, true for paths like:
+ * \, \hello, \\hello\share, C:, and C:\hello (and corresponding alternate separator cases).
+ */
+export declare function isRooted(p: string): boolean;
+/**
+ * Recursively create a directory at `fsPath`.
+ *
+ * This implementation is optimistic, meaning it attempts to create the full
+ * path first, and backs up the path stack from there.
+ *
+ * @param fsPath The path to create
+ * @param maxDepth The maximum recursion depth
+ * @param depth The current recursion depth
+ */
+export declare function mkdirP(fsPath: string, maxDepth?: number, depth?: number): Promise<void>;
+/**
+ * Best effort attempt to determine whether a file exists and is executable.
+ * @param filePath    file path to check
+ * @param extensions  additional file extensions to try
+ * @return if file exists and is executable, returns the file path. otherwise empty string.
+ */
+export declare function tryGetExecutablePath(filePath: string, extensions: string[]): Promise<string>;
diff --git a/setup-maven/node_modules/@actions/io/lib/io-util.js b/setup-maven/node_modules/@actions/io/lib/io-util.js
new file mode 100644
index 0000000..17b3bba
--- /dev/null
+++ b/setup-maven/node_modules/@actions/io/lib/io-util.js
@@ -0,0 +1,195 @@
+"use strict";
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+    return new (P || (P = Promise))(function (resolve, reject) {
+        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+        step((generator = generator.apply(thisArg, _arguments || [])).next());
+    });
+};
+var _a;
+Object.defineProperty(exports, "__esModule", { value: true });
+const assert_1 = require("assert");
+const fs = require("fs");
+const path = require("path");
+_a = fs.promises, exports.chmod = _a.chmod, exports.copyFile = _a.copyFile, exports.lstat = _a.lstat, exports.mkdir = _a.mkdir, exports.readdir = _a.readdir, exports.readlink = _a.readlink, exports.rename = _a.rename, exports.rmdir = _a.rmdir, exports.stat = _a.stat, exports.symlink = _a.symlink, exports.unlink = _a.unlink;
+exports.IS_WINDOWS = process.platform === 'win32';
+function exists(fsPath) {
+    return __awaiter(this, void 0, void 0, function* () {
+        try {
+            yield exports.stat(fsPath);
+        }
+        catch (err) {
+            if (err.code === 'ENOENT') {
+                return false;
+            }
+            throw err;
+        }
+        return true;
+    });
+}
+exports.exists = exists;
+function isDirectory(fsPath, useStat = false) {
+    return __awaiter(this, void 0, void 0, function* () {
+        const stats = useStat ? yield exports.stat(fsPath) : yield exports.lstat(fsPath);
+        return stats.isDirectory();
+    });
+}
+exports.isDirectory = isDirectory;
+/**
+ * On OSX/Linux, true if path starts with '/'. On Windows, true for paths like:
+ * \, \hello, \\hello\share, C:, and C:\hello (and corresponding alternate separator cases).
+ */
+function isRooted(p) {
+    p = normalizeSeparators(p);
+    if (!p) {
+        throw new Error('isRooted() parameter "p" cannot be empty');
+    }
+    if (exports.IS_WINDOWS) {
+        return (p.startsWith('\\') || /^[A-Z]:/i.test(p) // e.g. \ or \hello or \\hello
+        ); // e.g. C: or C:\hello
+    }
+    return p.startsWith('/');
+}
+exports.isRooted = isRooted;
+/**
+ * Recursively create a directory at `fsPath`.
+ *
+ * This implementation is optimistic, meaning it attempts to create the full
+ * path first, and backs up the path stack from there.
+ *
+ * @param fsPath The path to create
+ * @param maxDepth The maximum recursion depth
+ * @param depth The current recursion depth
+ */
+function mkdirP(fsPath, maxDepth = 1000, depth = 1) {
+    return __awaiter(this, void 0, void 0, function* () {
+        assert_1.ok(fsPath, 'a path argument must be provided');
+        fsPath = path.resolve(fsPath);
+        if (depth >= maxDepth)
+            return exports.mkdir(fsPath);
+        try {
+            yield exports.mkdir(fsPath);
+            return;
+        }
+        catch (err) {
+            switch (err.code) {
+                case 'ENOENT': {
+                    yield mkdirP(path.dirname(fsPath), maxDepth, depth + 1);
+                    yield exports.mkdir(fsPath);
+                    return;
+                }
+                default: {
+                    let stats;
+                    try {
+                        stats = yield exports.stat(fsPath);
+                    }
+                    catch (err2) {
+                        throw err;
+                    }
+                    if (!stats.isDirectory())
+                        throw err;
+                }
+            }
+        }
+    });
+}
+exports.mkdirP = mkdirP;
+/**
+ * Best effort attempt to determine whether a file exists and is executable.
+ * @param filePath    file path to check
+ * @param extensions  additional file extensions to try
+ * @return if file exists and is executable, returns the file path. otherwise empty string.
+ */
+function tryGetExecutablePath(filePath, extensions) {
+    return __awaiter(this, void 0, void 0, function* () {
+        let stats = undefined;
+        try {
+            // test file exists
+            stats = yield exports.stat(filePath);
+        }
+        catch (err) {
+            if (err.code !== 'ENOENT') {
+                // eslint-disable-next-line no-console
+                console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`);
+            }
+        }
+        if (stats && stats.isFile()) {
+            if (exports.IS_WINDOWS) {
+                // on Windows, test for valid extension
+                const upperExt = path.extname(filePath).toUpperCase();
+                if (extensions.some(validExt => validExt.toUpperCase() === upperExt)) {
+                    return filePath;
+                }
+            }
+            else {
+                if (isUnixExecutable(stats)) {
+                    return filePath;
+                }
+            }
+        }
+        // try each extension
+        const originalFilePath = filePath;
+        for (const extension of extensions) {
+            filePath = originalFilePath + extension;
+            stats = undefined;
+            try {
+                stats = yield exports.stat(filePath);
+            }
+            catch (err) {
+                if (err.code !== 'ENOENT') {
+                    // eslint-disable-next-line no-console
+                    console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`);
+                }
+            }
+            if (stats && stats.isFile()) {
+                if (exports.IS_WINDOWS) {
+                    // preserve the case of the actual file (since an extension was appended)
+                    try {
+                        const directory = path.dirname(filePath);
+                        const upperName = path.basename(filePath).toUpperCase();
+                        for (const actualName of yield exports.readdir(directory)) {
+                            if (upperName === actualName.toUpperCase()) {
+                                filePath = path.join(directory, actualName);
+                                break;
+                            }
+                        }
+                    }
+                    catch (err) {
+                        // eslint-disable-next-line no-console
+                        console.log(`Unexpected error attempting to determine the actual case of the file '${filePath}': ${err}`);
+                    }
+                    return filePath;
+                }
+                else {
+                    if (isUnixExecutable(stats)) {
+                        return filePath;
+                    }
+                }
+            }
+        }
+        return '';
+    });
+}
+exports.tryGetExecutablePath = tryGetExecutablePath;
+function normalizeSeparators(p) {
+    p = p || '';
+    if (exports.IS_WINDOWS) {
+        // convert slashes on Windows
+        p = p.replace(/\//g, '\\');
+        // remove redundant slashes
+        return p.replace(/\\\\+/g, '\\');
+    }
+    // remove redundant slashes
+    return p.replace(/\/\/+/g, '/');
+}
+// on Mac/Linux, test the execute bit
+//     R   W  X  R  W X R W X
+//   256 128 64 32 16 8 4 2 1
+function isUnixExecutable(stats) {
+    return ((stats.mode & 1) > 0 ||
+        ((stats.mode & 8) > 0 && stats.gid === process.getgid()) ||
+        ((stats.mode & 64) > 0 && stats.uid === process.getuid()));
+}
+//# sourceMappingURL=io-util.js.map
\ No newline at end of file
diff --git a/setup-maven/node_modules/@actions/io/lib/io-util.js.map b/setup-maven/node_modules/@actions/io/lib/io-util.js.map
new file mode 100644
index 0000000..76cd3b9
--- /dev/null
+++ b/setup-maven/node_modules/@actions/io/lib/io-util.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"io-util.js","sourceRoot":"","sources":["../src/io-util.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mCAAyB;AACzB,yBAAwB;AACxB,6BAA4B;AAEf,gBAYE,qTAAA;AAEF,QAAA,UAAU,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAA;AAEtD,SAAsB,MAAM,CAAC,MAAc;;QACzC,IAAI;YACF,MAAM,YAAI,CAAC,MAAM,CAAC,CAAA;SACnB;QAAC,OAAO,GAAG,EAAE;YACZ,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;gBACzB,OAAO,KAAK,CAAA;aACb;YAED,MAAM,GAAG,CAAA;SACV;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CAAA;AAZD,wBAYC;AAED,SAAsB,WAAW,CAC/B,MAAc,EACd,UAAmB,KAAK;;QAExB,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,YAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,aAAK,CAAC,MAAM,CAAC,CAAA;QAChE,OAAO,KAAK,CAAC,WAAW,EAAE,CAAA;IAC5B,CAAC;CAAA;AAND,kCAMC;AAED;;;GAGG;AACH,SAAgB,QAAQ,CAAC,CAAS;IAChC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAA;IAC1B,IAAI,CAAC,CAAC,EAAE;QACN,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;KAC5D;IAED,IAAI,kBAAU,EAAE;QACd,OAAO,CACL,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,8BAA8B;SACxE,CAAA,CAAC,sBAAsB;KACzB;IAED,OAAO,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;AAC1B,CAAC;AAbD,4BAaC;AAED;;;;;;;;;GASG;AACH,SAAsB,MAAM,CAC1B,MAAc,EACd,WAAmB,IAAI,EACvB,QAAgB,CAAC;;QAEjB,WAAE,CAAC,MAAM,EAAE,kCAAkC,CAAC,CAAA;QAE9C,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QAE7B,IAAI,KAAK,IAAI,QAAQ;YAAE,OAAO,aAAK,CAAC,MAAM,CAAC,CAAA;QAE3C,IAAI;YACF,MAAM,aAAK,CAAC,MAAM,CAAC,CAAA;YACnB,OAAM;SACP;QAAC,OAAO,GAAG,EAAE;YACZ,QAAQ,GAAG,CAAC,IAAI,EAAE;gBAChB,KAAK,QAAQ,CAAC,CAAC;oBACb,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;oBACvD,MAAM,aAAK,CAAC,MAAM,CAAC,CAAA;oBACnB,OAAM;iBACP;gBACD,OAAO,CAAC,CAAC;oBACP,IAAI,KAAe,CAAA;oBAEnB,IAAI;wBACF,KAAK,GAAG,MAAM,YAAI,CAAC,MAAM,CAAC,CAAA;qBAC3B;oBAAC,OAAO,IAAI,EAAE;wBACb,MAAM,GAAG,CAAA;qBACV;oBAED,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;wBAAE,MAAM,GAAG,CAAA;iBACpC;aACF;SACF;IACH,CAAC;CAAA;AAlCD,wBAkCC;AAED;;;;;GAKG;AACH,SAAsB,oBAAoB,CACxC,QAAgB,EAChB,UAAoB;;QAEpB,IAAI,KAAK,GAAyB,SAAS,CAAA;QAC3C,IAAI;YACF,mBAAmB;YACnB,KAAK,GAAG,MAAM,YAAI,CAAC,QAAQ,CAAC,CAAA;SAC7B;QAAC,OAAO,GAAG,EAAE;YACZ,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;gBACzB,sCAAsC;gBACtC,OAAO,CAAC,GAAG,CACT,uEAAuE,QAAQ,MAAM,GAAG,EAAE,CAC3F,CAAA;aACF;SACF;QACD,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE;YAC3B,IAAI,kBAAU,EAAE;gBACd,uCAAuC;gBACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAA;gBACrD,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,EAAE;oBACpE,OAAO,QAAQ,CAAA;iBAChB;aACF;iBAAM;gBACL,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE;oBAC3B,OAAO,QAAQ,CAAA;iBAChB;aACF;SACF;QAED,qBAAqB;QACrB,MAAM,gBAAgB,GAAG,QAAQ,CAAA;QACjC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;YAClC,QAAQ,GAAG,gBAAgB,GAAG,SAAS,CAAA;YAEvC,KAAK,GAAG,SAAS,CAAA;YACjB,IAAI;gBACF,KAAK,GAAG,MAAM,YAAI,CAAC,QAAQ,CAAC,CAAA;aAC7B;YAAC,OAAO,GAAG,EAAE;gBACZ,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;oBACzB,sCAAsC;oBACtC,OAAO,CAAC,GAAG,CACT,uEAAuE,QAAQ,MAAM,GAAG,EAAE,CAC3F,CAAA;iBACF;aACF;YAED,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE;gBAC3B,IAAI,kBAAU,EAAE;oBACd,yEAAyE;oBACzE,IAAI;wBACF,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;wBACxC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAA;wBACvD,KAAK,MAAM,UAAU,IAAI,MAAM,eAAO,CAAC,SAAS,CAAC,EAAE;4BACjD,IAAI,SAAS,KAAK,UAAU,CAAC,WAAW,EAAE,EAAE;gCAC1C,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;gCAC3C,MAAK;6BACN;yBACF;qBACF;oBAAC,OAAO,GAAG,EAAE;wBACZ,sCAAsC;wBACtC,OAAO,CAAC,GAAG,CACT,yEAAyE,QAAQ,MAAM,GAAG,EAAE,CAC7F,CAAA;qBACF;oBAED,OAAO,QAAQ,CAAA;iBAChB;qBAAM;oBACL,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE;wBAC3B,OAAO,QAAQ,CAAA;qBAChB;iBACF;aACF;SACF;QAED,OAAO,EAAE,CAAA;IACX,CAAC;CAAA;AA5ED,oDA4EC;AAED,SAAS,mBAAmB,CAAC,CAAS;IACpC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;IACX,IAAI,kBAAU,EAAE;QACd,6BAA6B;QAC7B,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QAE1B,2BAA2B;QAC3B,OAAO,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;KACjC;IAED,2BAA2B;IAC3B,OAAO,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;AACjC,CAAC;AAED,qCAAqC;AACrC,6BAA6B;AAC7B,6BAA6B;AAC7B,SAAS,gBAAgB,CAAC,KAAe;IACvC,OAAO,CACL,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC;QACpB,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;QACxD,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAC1D,CAAA;AACH,CAAC"}
\ No newline at end of file
diff --git a/setup-maven/node_modules/@actions/io/lib/io.d.ts b/setup-maven/node_modules/@actions/io/lib/io.d.ts
new file mode 100644
index 0000000..a4ea5a7
--- /dev/null
+++ b/setup-maven/node_modules/@actions/io/lib/io.d.ts
@@ -0,0 +1,56 @@
+/**
+ * Interface for cp/mv options
+ */
+export interface CopyOptions {
+    /** Optional. Whether to recursively copy all subdirectories. Defaults to false */
+    recursive?: boolean;
+    /** Optional. Whether to overwrite existing files in the destination. Defaults to true */
+    force?: boolean;
+}
+/**
+ * Interface for cp/mv options
+ */
+export interface MoveOptions {
+    /** Optional. Whether to overwrite existing files in the destination. Defaults to true */
+    force?: boolean;
+}
+/**
+ * Copies a file or folder.
+ * Based off of shelljs - https://github.com/shelljs/shelljs/blob/9237f66c52e5daa40458f94f9565e18e8132f5a6/src/cp.js
+ *
+ * @param     source    source path
+ * @param     dest      destination path
+ * @param     options   optional. See CopyOptions.
+ */
+export declare function cp(source: string, dest: string, options?: CopyOptions): Promise<void>;
+/**
+ * Moves a path.
+ *
+ * @param     source    source path
+ * @param     dest      destination path
+ * @param     options   optional. See MoveOptions.
+ */
+export declare function mv(source: string, dest: string, options?: MoveOptions): Promise<void>;
+/**
+ * Remove a path recursively with force
+ *
+ * @param inputPath path to remove
+ */
+export declare function rmRF(inputPath: string): Promise<void>;
+/**
+ * Make a directory.  Creates the full path with folders in between
+ * Will throw if it fails
+ *
+ * @param   fsPath        path to create
+ * @returns Promise<void>
+ */
+export declare function mkdirP(fsPath: string): Promise<void>;
+/**
+ * Returns path of a tool had the tool actually been invoked.  Resolves via paths.
+ * If you check and the tool does not exist, it will throw.
+ *
+ * @param     tool              name of the tool
+ * @param     check             whether to check if tool exists
+ * @returns   Promise<string>   path to tool
+ */
+export declare function which(tool: string, check?: boolean): Promise<string>;
diff --git a/setup-maven/node_modules/@actions/io/lib/io.js b/setup-maven/node_modules/@actions/io/lib/io.js
new file mode 100644
index 0000000..ad5bdb9
--- /dev/null
+++ b/setup-maven/node_modules/@actions/io/lib/io.js
@@ -0,0 +1,290 @@
+"use strict";
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+    return new (P || (P = Promise))(function (resolve, reject) {
+        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+        step((generator = generator.apply(thisArg, _arguments || [])).next());
+    });
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const childProcess = require("child_process");
+const path = require("path");
+const util_1 = require("util");
+const ioUtil = require("./io-util");
+const exec = util_1.promisify(childProcess.exec);
+/**
+ * Copies a file or folder.
+ * Based off of shelljs - https://github.com/shelljs/shelljs/blob/9237f66c52e5daa40458f94f9565e18e8132f5a6/src/cp.js
+ *
+ * @param     source    source path
+ * @param     dest      destination path
+ * @param     options   optional. See CopyOptions.
+ */
+function cp(source, dest, options = {}) {
+    return __awaiter(this, void 0, void 0, function* () {
+        const { force, recursive } = readCopyOptions(options);
+        const destStat = (yield ioUtil.exists(dest)) ? yield ioUtil.stat(dest) : null;
+        // Dest is an existing file, but not forcing
+        if (destStat && destStat.isFile() && !force) {
+            return;
+        }
+        // If dest is an existing directory, should copy inside.
+        const newDest = destStat && destStat.isDirectory()
+            ? path.join(dest, path.basename(source))
+            : dest;
+        if (!(yield ioUtil.exists(source))) {
+            throw new Error(`no such file or directory: ${source}`);
+        }
+        const sourceStat = yield ioUtil.stat(source);
+        if (sourceStat.isDirectory()) {
+            if (!recursive) {
+                throw new Error(`Failed to copy. ${source} is a directory, but tried to copy without recursive flag.`);
+            }
+            else {
+                yield cpDirRecursive(source, newDest, 0, force);
+            }
+        }
+        else {
+            if (path.relative(source, newDest) === '') {
+                // a file cannot be copied to itself
+                throw new Error(`'${newDest}' and '${source}' are the same file`);
+            }
+            yield copyFile(source, newDest, force);
+        }
+    });
+}
+exports.cp = cp;
+/**
+ * Moves a path.
+ *
+ * @param     source    source path
+ * @param     dest      destination path
+ * @param     options   optional. See MoveOptions.
+ */
+function mv(source, dest, options = {}) {
+    return __awaiter(this, void 0, void 0, function* () {
+        if (yield ioUtil.exists(dest)) {
+            let destExists = true;
+            if (yield ioUtil.isDirectory(dest)) {
+                // If dest is directory copy src into dest
+                dest = path.join(dest, path.basename(source));
+                destExists = yield ioUtil.exists(dest);
+            }
+            if (destExists) {
+                if (options.force == null || options.force) {
+                    yield rmRF(dest);
+                }
+                else {
+                    throw new Error('Destination already exists');
+                }
+            }
+        }
+        yield mkdirP(path.dirname(dest));
+        yield ioUtil.rename(source, dest);
+    });
+}
+exports.mv = mv;
+/**
+ * Remove a path recursively with force
+ *
+ * @param inputPath path to remove
+ */
+function rmRF(inputPath) {
+    return __awaiter(this, void 0, void 0, function* () {
+        if (ioUtil.IS_WINDOWS) {
+            // Node doesn't provide a delete operation, only an unlink function. This means that if the file is being used by another
+            // program (e.g. antivirus), it won't be deleted. To address this, we shell out the work to rd/del.
+            try {
+                if (yield ioUtil.isDirectory(inputPath, true)) {
+                    yield exec(`rd /s /q "${inputPath}"`);
+                }
+                else {
+                    yield exec(`del /f /a "${inputPath}"`);
+                }
+            }
+            catch (err) {
+                // if you try to delete a file that doesn't exist, desired result is achieved
+                // other errors are valid
+                if (err.code !== 'ENOENT')
+                    throw err;
+            }
+            // Shelling out fails to remove a symlink folder with missing source, this unlink catches that
+            try {
+                yield ioUtil.unlink(inputPath);
+            }
+            catch (err) {
+                // if you try to delete a file that doesn't exist, desired result is achieved
+                // other errors are valid
+                if (err.code !== 'ENOENT')
+                    throw err;
+            }
+        }
+        else {
+            let isDir = false;
+            try {
+                isDir = yield ioUtil.isDirectory(inputPath);
+            }
+            catch (err) {
+                // if you try to delete a file that doesn't exist, desired result is achieved
+                // other errors are valid
+                if (err.code !== 'ENOENT')
+                    throw err;
+                return;
+            }
+            if (isDir) {
+                yield exec(`rm -rf "${inputPath}"`);
+            }
+            else {
+                yield ioUtil.unlink(inputPath);
+            }
+        }
+    });
+}
+exports.rmRF = rmRF;
+/**
+ * Make a directory.  Creates the full path with folders in between
+ * Will throw if it fails
+ *
+ * @param   fsPath        path to create
+ * @returns Promise<void>
+ */
+function mkdirP(fsPath) {
+    return __awaiter(this, void 0, void 0, function* () {
+        yield ioUtil.mkdirP(fsPath);
+    });
+}
+exports.mkdirP = mkdirP;
+/**
+ * Returns path of a tool had the tool actually been invoked.  Resolves via paths.
+ * If you check and the tool does not exist, it will throw.
+ *
+ * @param     tool              name of the tool
+ * @param     check             whether to check if tool exists
+ * @returns   Promise<string>   path to tool
+ */
+function which(tool, check) {
+    return __awaiter(this, void 0, void 0, function* () {
+        if (!tool) {
+            throw new Error("parameter 'tool' is required");
+        }
+        // recursive when check=true
+        if (check) {
+            const result = yield which(tool, false);
+            if (!result) {
+                if (ioUtil.IS_WINDOWS) {
+                    throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`);
+                }
+                else {
+                    throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`);
+                }
+            }
+        }
+        try {
+            // build the list of extensions to try
+            const extensions = [];
+            if (ioUtil.IS_WINDOWS && process.env.PATHEXT) {
+                for (const extension of process.env.PATHEXT.split(path.delimiter)) {
+                    if (extension) {
+                        extensions.push(extension);
+                    }
+                }
+            }
+            // if it's rooted, return it if exists. otherwise return empty.
+            if (ioUtil.isRooted(tool)) {
+                const filePath = yield ioUtil.tryGetExecutablePath(tool, extensions);
+                if (filePath) {
+                    return filePath;
+                }
+                return '';
+            }
+            // if any path separators, return empty
+            if (tool.includes('/') || (ioUtil.IS_WINDOWS && tool.includes('\\'))) {
+                return '';
+            }
+            // build the list of directories
+            //
+            // Note, technically "where" checks the current directory on Windows. From a toolkit perspective,
+            // it feels like we should not do this. Checking the current directory seems like more of a use
+            // case of a shell, and the which() function exposed by the toolkit should strive for consistency
+            // across platforms.
+            const directories = [];
+            if (process.env.PATH) {
+                for (const p of process.env.PATH.split(path.delimiter)) {
+                    if (p) {
+                        directories.push(p);
+                    }
+                }
+            }
+            // return the first match
+            for (const directory of directories) {
+                const filePath = yield ioUtil.tryGetExecutablePath(directory + path.sep + tool, extensions);
+                if (filePath) {
+                    return filePath;
+                }
+            }
+            return '';
+        }
+        catch (err) {
+            throw new Error(`which failed with message ${err.message}`);
+        }
+    });
+}
+exports.which = which;
+function readCopyOptions(options) {
+    const force = options.force == null ? true : options.force;
+    const recursive = Boolean(options.recursive);
+    return { force, recursive };
+}
+function cpDirRecursive(sourceDir, destDir, currentDepth, force) {
+    return __awaiter(this, void 0, void 0, function* () {
+        // Ensure there is not a run away recursive copy
+        if (currentDepth >= 255)
+            return;
+        currentDepth++;
+        yield mkdirP(destDir);
+        const files = yield ioUtil.readdir(sourceDir);
+        for (const fileName of files) {
+            const srcFile = `${sourceDir}/${fileName}`;
+            const destFile = `${destDir}/${fileName}`;
+            const srcFileStat = yield ioUtil.lstat(srcFile);
+            if (srcFileStat.isDirectory()) {
+                // Recurse
+                yield cpDirRecursive(srcFile, destFile, currentDepth, force);
+            }
+            else {
+                yield copyFile(srcFile, destFile, force);
+            }
+        }
+        // Change the mode for the newly created directory
+        yield ioUtil.chmod(destDir, (yield ioUtil.stat(sourceDir)).mode);
+    });
+}
+// Buffered file copy
+function copyFile(srcFile, destFile, force) {
+    return __awaiter(this, void 0, void 0, function* () {
+        if ((yield ioUtil.lstat(srcFile)).isSymbolicLink()) {
+            // unlink/re-link it
+            try {
+                yield ioUtil.lstat(destFile);
+                yield ioUtil.unlink(destFile);
+            }
+            catch (e) {
+                // Try to override file permission
+                if (e.code === 'EPERM') {
+                    yield ioUtil.chmod(destFile, '0666');
+                    yield ioUtil.unlink(destFile);
+                }
+                // other errors = it doesn't exist, no work to do
+            }
+            // Copy over symlink
+            const symlinkFull = yield ioUtil.readlink(srcFile);
+            yield ioUtil.symlink(symlinkFull, destFile, ioUtil.IS_WINDOWS ? 'junction' : null);
+        }
+        else if (!(yield ioUtil.exists(destFile)) || force) {
+            yield ioUtil.copyFile(srcFile, destFile);
+        }
+    });
+}
+//# sourceMappingURL=io.js.map
\ No newline at end of file
diff --git a/setup-maven/node_modules/@actions/io/lib/io.js.map b/setup-maven/node_modules/@actions/io/lib/io.js.map
new file mode 100644
index 0000000..91db963
--- /dev/null
+++ b/setup-maven/node_modules/@actions/io/lib/io.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"io.js","sourceRoot":"","sources":["../src/io.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,8CAA6C;AAC7C,6BAA4B;AAC5B,+BAA8B;AAC9B,oCAAmC;AAEnC,MAAM,IAAI,GAAG,gBAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;AAoBzC;;;;;;;GAOG;AACH,SAAsB,EAAE,CACtB,MAAc,EACd,IAAY,EACZ,UAAuB,EAAE;;QAEzB,MAAM,EAAC,KAAK,EAAE,SAAS,EAAC,GAAG,eAAe,CAAC,OAAO,CAAC,CAAA;QAEnD,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAC7E,4CAA4C;QAC5C,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE;YAC3C,OAAM;SACP;QAED,wDAAwD;QACxD,MAAM,OAAO,GACX,QAAQ,IAAI,QAAQ,CAAC,WAAW,EAAE;YAChC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACxC,CAAC,CAAC,IAAI,CAAA;QAEV,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE;YAClC,MAAM,IAAI,KAAK,CAAC,8BAA8B,MAAM,EAAE,CAAC,CAAA;SACxD;QACD,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAE5C,IAAI,UAAU,CAAC,WAAW,EAAE,EAAE;YAC5B,IAAI,CAAC,SAAS,EAAE;gBACd,MAAM,IAAI,KAAK,CACb,mBAAmB,MAAM,4DAA4D,CACtF,CAAA;aACF;iBAAM;gBACL,MAAM,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,CAAA;aAChD;SACF;aAAM;YACL,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE;gBACzC,oCAAoC;gBACpC,MAAM,IAAI,KAAK,CAAC,IAAI,OAAO,UAAU,MAAM,qBAAqB,CAAC,CAAA;aAClE;YAED,MAAM,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;SACvC;IACH,CAAC;CAAA;AAxCD,gBAwCC;AAED;;;;;;GAMG;AACH,SAAsB,EAAE,CACtB,MAAc,EACd,IAAY,EACZ,UAAuB,EAAE;;QAEzB,IAAI,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YAC7B,IAAI,UAAU,GAAG,IAAI,CAAA;YACrB,IAAI,MAAM,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;gBAClC,0CAA0C;gBAC1C,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;gBAC7C,UAAU,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;aACvC;YAED,IAAI,UAAU,EAAE;gBACd,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE;oBAC1C,MAAM,IAAI,CAAC,IAAI,CAAC,CAAA;iBACjB;qBAAM;oBACL,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;iBAC9C;aACF;SACF;QACD,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;QAChC,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACnC,CAAC;CAAA;AAvBD,gBAuBC;AAED;;;;GAIG;AACH,SAAsB,IAAI,CAAC,SAAiB;;QAC1C,IAAI,MAAM,CAAC,UAAU,EAAE;YACrB,yHAAyH;YACzH,mGAAmG;YACnG,IAAI;gBACF,IAAI,MAAM,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE;oBAC7C,MAAM,IAAI,CAAC,aAAa,SAAS,GAAG,CAAC,CAAA;iBACtC;qBAAM;oBACL,MAAM,IAAI,CAAC,cAAc,SAAS,GAAG,CAAC,CAAA;iBACvC;aACF;YAAC,OAAO,GAAG,EAAE;gBACZ,6EAA6E;gBAC7E,yBAAyB;gBACzB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;oBAAE,MAAM,GAAG,CAAA;aACrC;YAED,8FAA8F;YAC9F,IAAI;gBACF,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;aAC/B;YAAC,OAAO,GAAG,EAAE;gBACZ,6EAA6E;gBAC7E,yBAAyB;gBACzB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;oBAAE,MAAM,GAAG,CAAA;aACrC;SACF;aAAM;YACL,IAAI,KAAK,GAAG,KAAK,CAAA;YACjB,IAAI;gBACF,KAAK,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;aAC5C;YAAC,OAAO,GAAG,EAAE;gBACZ,6EAA6E;gBAC7E,yBAAyB;gBACzB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;oBAAE,MAAM,GAAG,CAAA;gBACpC,OAAM;aACP;YAED,IAAI,KAAK,EAAE;gBACT,MAAM,IAAI,CAAC,WAAW,SAAS,GAAG,CAAC,CAAA;aACpC;iBAAM;gBACL,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;aAC/B;SACF;IACH,CAAC;CAAA;AAzCD,oBAyCC;AAED;;;;;;GAMG;AACH,SAAsB,MAAM,CAAC,MAAc;;QACzC,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAC7B,CAAC;CAAA;AAFD,wBAEC;AAED;;;;;;;GAOG;AACH,SAAsB,KAAK,CAAC,IAAY,EAAE,KAAe;;QACvD,IAAI,CAAC,IAAI,EAAE;YACT,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;SAChD;QAED,4BAA4B;QAC5B,IAAI,KAAK,EAAE;YACT,MAAM,MAAM,GAAW,MAAM,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;YAE/C,IAAI,CAAC,MAAM,EAAE;gBACX,IAAI,MAAM,CAAC,UAAU,EAAE;oBACrB,MAAM,IAAI,KAAK,CACb,qCAAqC,IAAI,wMAAwM,CAClP,CAAA;iBACF;qBAAM;oBACL,MAAM,IAAI,KAAK,CACb,qCAAqC,IAAI,gMAAgM,CAC1O,CAAA;iBACF;aACF;SACF;QAED,IAAI;YACF,sCAAsC;YACtC,MAAM,UAAU,GAAa,EAAE,CAAA;YAC/B,IAAI,MAAM,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE;gBAC5C,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;oBACjE,IAAI,SAAS,EAAE;wBACb,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;qBAC3B;iBACF;aACF;YAED,+DAA+D;YAC/D,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gBACzB,MAAM,QAAQ,GAAW,MAAM,MAAM,CAAC,oBAAoB,CACxD,IAAI,EACJ,UAAU,CACX,CAAA;gBAED,IAAI,QAAQ,EAAE;oBACZ,OAAO,QAAQ,CAAA;iBAChB;gBAED,OAAO,EAAE,CAAA;aACV;YAED,uCAAuC;YACvC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE;gBACpE,OAAO,EAAE,CAAA;aACV;YAED,gCAAgC;YAChC,EAAE;YACF,iGAAiG;YACjG,+FAA+F;YAC/F,iGAAiG;YACjG,oBAAoB;YACpB,MAAM,WAAW,GAAa,EAAE,CAAA;YAEhC,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE;gBACpB,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;oBACtD,IAAI,CAAC,EAAE;wBACL,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;qBACpB;iBACF;aACF;YAED,yBAAyB;YACzB,KAAK,MAAM,SAAS,IAAI,WAAW,EAAE;gBACnC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAChD,SAAS,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,EAC3B,UAAU,CACX,CAAA;gBACD,IAAI,QAAQ,EAAE;oBACZ,OAAO,QAAQ,CAAA;iBAChB;aACF;YAED,OAAO,EAAE,CAAA;SACV;QAAC,OAAO,GAAG,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;SAC5D;IACH,CAAC;CAAA;AAnFD,sBAmFC;AAED,SAAS,eAAe,CAAC,OAAoB;IAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAA;IAC1D,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IAC5C,OAAO,EAAC,KAAK,EAAE,SAAS,EAAC,CAAA;AAC3B,CAAC;AAED,SAAe,cAAc,CAC3B,SAAiB,EACjB,OAAe,EACf,YAAoB,EACpB,KAAc;;QAEd,gDAAgD;QAChD,IAAI,YAAY,IAAI,GAAG;YAAE,OAAM;QAC/B,YAAY,EAAE,CAAA;QAEd,MAAM,MAAM,CAAC,OAAO,CAAC,CAAA;QAErB,MAAM,KAAK,GAAa,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QAEvD,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE;YAC5B,MAAM,OAAO,GAAG,GAAG,SAAS,IAAI,QAAQ,EAAE,CAAA;YAC1C,MAAM,QAAQ,GAAG,GAAG,OAAO,IAAI,QAAQ,EAAE,CAAA;YACzC,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAE/C,IAAI,WAAW,CAAC,WAAW,EAAE,EAAE;gBAC7B,UAAU;gBACV,MAAM,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,CAAC,CAAA;aAC7D;iBAAM;gBACL,MAAM,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAA;aACzC;SACF;QAED,kDAAkD;QAClD,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IAClE,CAAC;CAAA;AAED,qBAAqB;AACrB,SAAe,QAAQ,CACrB,OAAe,EACf,QAAgB,EAChB,KAAc;;QAEd,IAAI,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,EAAE,EAAE;YAClD,oBAAoB;YACpB,IAAI;gBACF,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;gBAC5B,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;aAC9B;YAAC,OAAO,CAAC,EAAE;gBACV,kCAAkC;gBAClC,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE;oBACtB,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;oBACpC,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;iBAC9B;gBACD,iDAAiD;aAClD;YAED,oBAAoB;YACpB,MAAM,WAAW,GAAW,MAAM,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;YAC1D,MAAM,MAAM,CAAC,OAAO,CAClB,WAAW,EACX,QAAQ,EACR,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CACtC,CAAA;SACF;aAAM,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,KAAK,EAAE;YACpD,MAAM,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;SACzC;IACH,CAAC;CAAA"}
\ No newline at end of file
diff --git a/setup-maven/node_modules/@actions/io/package.json b/setup-maven/node_modules/@actions/io/package.json
new file mode 100644
index 0000000..311dba1
--- /dev/null
+++ b/setup-maven/node_modules/@actions/io/package.json
@@ -0,0 +1,62 @@
+{
+  "_from": "@actions/io@^1.0.0",
+  "_id": "@actions/io@1.0.1",
+  "_inBundle": false,
+  "_integrity": "sha512-rhq+tfZukbtaus7xyUtwKfuiCRXd1hWSfmJNEpFgBQJ4woqPEpsBw04awicjwz9tyG2/MVhAEMfVn664Cri5zA==",
+  "_location": "/@actions/io",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "@actions/io@^1.0.0",
+    "name": "@actions/io",
+    "escapedName": "@actions%2fio",
+    "scope": "@actions",
+    "rawSpec": "^1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^1.0.0"
+  },
+  "_requiredBy": [
+    "/",
+    "/@actions/tool-cache"
+  ],
+  "_resolved": "https://registry.npmjs.org/@actions/io/-/io-1.0.1.tgz",
+  "_shasum": "81a9418fe2bbdef2d2717a8e9f85188b9c565aca",
+  "_spec": "@actions/io@^1.0.0",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven",
+  "bugs": {
+    "url": "https://github.com/actions/toolkit/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "Actions io lib",
+  "directories": {
+    "lib": "lib",
+    "test": "__tests__"
+  },
+  "files": [
+    "lib"
+  ],
+  "gitHead": "a2ab4bcf78e4f7080f0d45856e6eeba16f0bbc52",
+  "homepage": "https://github.com/actions/toolkit/tree/master/packages/io",
+  "keywords": [
+    "github",
+    "actions",
+    "io"
+  ],
+  "license": "MIT",
+  "main": "lib/io.js",
+  "name": "@actions/io",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/actions/toolkit.git"
+  },
+  "scripts": {
+    "test": "echo \"Error: run tests from root\" && exit 1",
+    "tsc": "tsc"
+  },
+  "version": "1.0.1"
+}
diff --git a/setup-maven/node_modules/@actions/tool-cache/README.md b/setup-maven/node_modules/@actions/tool-cache/README.md
new file mode 100644
index 0000000..e00bb4b
--- /dev/null
+++ b/setup-maven/node_modules/@actions/tool-cache/README.md
@@ -0,0 +1,82 @@
+# `@actions/tool-cache`
+
+> Functions necessary for downloading and caching tools.
+
+## Usage
+
+#### Download
+
+You can use this to download tools (or other files) from a download URL:
+
+```js
+const tc = require('@actions/tool-cache');
+
+const node12Path = await tc.downloadTool('https://nodejs.org/dist/v12.7.0/node-v12.7.0-linux-x64.tar.gz');
+```
+
+#### Extract
+
+These can then be extracted in platform specific ways:
+
+```js
+const tc = require('@actions/tool-cache');
+
+if (process.platform === 'win32') {
+  const node12Path = tc.downloadTool('https://nodejs.org/dist/v12.7.0/node-v12.7.0-win-x64.zip');
+  const node12ExtractedFolder = await tc.extractZip(node12Path, 'path/to/extract/to');
+
+  // Or alternately
+  const node12Path = tc.downloadTool('https://nodejs.org/dist/v12.7.0/node-v12.7.0-win-x64.7z');
+  const node12ExtractedFolder = await tc.extract7z(node12Path, 'path/to/extract/to');
+}
+else {
+  const node12Path = await tc.downloadTool('https://nodejs.org/dist/v12.7.0/node-v12.7.0-linux-x64.tar.gz');
+  const node12ExtractedFolder = await tc.extractTar(node12Path, 'path/to/extract/to');
+}
+```
+
+#### Cache
+
+Finally, you can cache these directories in our tool-cache. This is useful if you want to switch back and forth between versions of a tool, or save a tool between runs for private runners (private runners are still in development but are on the roadmap).
+
+You'll often want to add it to the path as part of this step:
+
+```js
+const tc = require('@actions/tool-cache');
+const core = require('@actions/core');
+
+const node12Path = await tc.downloadTool('https://nodejs.org/dist/v12.7.0/node-v12.7.0-linux-x64.tar.gz');
+const node12ExtractedFolder = await tc.extractTar(node12Path, 'path/to/extract/to');
+
+const cachedPath = await tc.cacheDir(node12ExtractedFolder, 'node', '12.7.0');
+core.addPath(cachedPath);
+```
+
+You can also cache files for reuse.
+
+```js
+const tc = require('@actions/tool-cache');
+
+tc.cacheFile('path/to/exe', 'destFileName.exe', 'myExeName', '1.1.0');
+```
+
+#### Find
+
+Finally, you can find directories and files you've previously cached:
+
+```js
+const tc = require('@actions/tool-cache');
+const core = require('@actions/core');
+
+const nodeDirectory = tc.find('node', '12.x', 'x64');
+core.addPath(nodeDirectory);
+```
+
+You can even find all cached versions of a tool:
+
+```js
+const tc = require('@actions/tool-cache');
+
+const allNodeVersions = tc.findAllVersions('node');
+console.log(`Versions of node available: ${allNodeVersions}`);
+```
diff --git a/setup-maven/node_modules/@actions/tool-cache/lib/tool-cache.d.ts b/setup-maven/node_modules/@actions/tool-cache/lib/tool-cache.d.ts
new file mode 100644
index 0000000..ca6fa07
--- /dev/null
+++ b/setup-maven/node_modules/@actions/tool-cache/lib/tool-cache.d.ts
@@ -0,0 +1,79 @@
+export declare class HTTPError extends Error {
+    readonly httpStatusCode: number | undefined;
+    constructor(httpStatusCode: number | undefined);
+}
+/**
+ * Download a tool from an url and stream it into a file
+ *
+ * @param url       url of tool to download
+ * @returns         path to downloaded tool
+ */
+export declare function downloadTool(url: string): Promise<string>;
+/**
+ * Extract a .7z file
+ *
+ * @param file     path to the .7z file
+ * @param dest     destination directory. Optional.
+ * @param _7zPath  path to 7zr.exe. Optional, for long path support. Most .7z archives do not have this
+ * problem. If your .7z archive contains very long paths, you can pass the path to 7zr.exe which will
+ * gracefully handle long paths. By default 7zdec.exe is used because it is a very small program and is
+ * bundled with the tool lib. However it does not support long paths. 7zr.exe is the reduced command line
+ * interface, it is smaller than the full command line interface, and it does support long paths. At the
+ * time of this writing, it is freely available from the LZMA SDK that is available on the 7zip website.
+ * Be sure to check the current license agreement. If 7zr.exe is bundled with your action, then the path
+ * to 7zr.exe can be pass to this function.
+ * @returns        path to the destination directory
+ */
+export declare function extract7z(file: string, dest?: string, _7zPath?: string): Promise<string>;
+/**
+ * Extract a tar
+ *
+ * @param file     path to the tar
+ * @param dest     destination directory. Optional.
+ * @param flags    flags for the tar. Optional.
+ * @returns        path to the destination directory
+ */
+export declare function extractTar(file: string, dest?: string, flags?: string): Promise<string>;
+/**
+ * Extract a zip
+ *
+ * @param file     path to the zip
+ * @param dest     destination directory. Optional.
+ * @returns        path to the destination directory
+ */
+export declare function extractZip(file: string, dest?: string): Promise<string>;
+/**
+ * Caches a directory and installs it into the tool cacheDir
+ *
+ * @param sourceDir    the directory to cache into tools
+ * @param tool          tool name
+ * @param version       version of the tool.  semver format
+ * @param arch          architecture of the tool.  Optional.  Defaults to machine architecture
+ */
+export declare function cacheDir(sourceDir: string, tool: string, version: string, arch?: string): Promise<string>;
+/**
+ * Caches a downloaded file (GUID) and installs it
+ * into the tool cache with a given targetName
+ *
+ * @param sourceFile    the file to cache into tools.  Typically a result of downloadTool which is a guid.
+ * @param targetFile    the name of the file name in the tools directory
+ * @param tool          tool name
+ * @param version       version of the tool.  semver format
+ * @param arch          architecture of the tool.  Optional.  Defaults to machine architecture
+ */
+export declare function cacheFile(sourceFile: string, targetFile: string, tool: string, version: string, arch?: string): Promise<string>;
+/**
+ * Finds the path to a tool version in the local installed tool cache
+ *
+ * @param toolName      name of the tool
+ * @param versionSpec   version of the tool
+ * @param arch          optional arch.  defaults to arch of computer
+ */
+export declare function find(toolName: string, versionSpec: string, arch?: string): string;
+/**
+ * Finds the paths to all versions of a tool that are installed in the local tool cache
+ *
+ * @param toolName  name of the tool
+ * @param arch      optional arch.  defaults to arch of computer
+ */
+export declare function findAllVersions(toolName: string, arch?: string): string[];
diff --git a/setup-maven/node_modules/@actions/tool-cache/lib/tool-cache.js b/setup-maven/node_modules/@actions/tool-cache/lib/tool-cache.js
new file mode 100644
index 0000000..bb04f17
--- /dev/null
+++ b/setup-maven/node_modules/@actions/tool-cache/lib/tool-cache.js
@@ -0,0 +1,438 @@
+"use strict";
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+    return new (P || (P = Promise))(function (resolve, reject) {
+        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+        step((generator = generator.apply(thisArg, _arguments || [])).next());
+    });
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const core = require("@actions/core");
+const io = require("@actions/io");
+const fs = require("fs");
+const os = require("os");
+const path = require("path");
+const httpm = require("typed-rest-client/HttpClient");
+const semver = require("semver");
+const uuidV4 = require("uuid/v4");
+const exec_1 = require("@actions/exec/lib/exec");
+const assert_1 = require("assert");
+class HTTPError extends Error {
+    constructor(httpStatusCode) {
+        super(`Unexpected HTTP response: ${httpStatusCode}`);
+        this.httpStatusCode = httpStatusCode;
+        Object.setPrototypeOf(this, new.target.prototype);
+    }
+}
+exports.HTTPError = HTTPError;
+const IS_WINDOWS = process.platform === 'win32';
+const userAgent = 'actions/tool-cache';
+// On load grab temp directory and cache directory and remove them from env (currently don't want to expose this)
+let tempDirectory = process.env['RUNNER_TEMP'] || '';
+let cacheRoot = process.env['RUNNER_TOOL_CACHE'] || '';
+// If directories not found, place them in common temp locations
+if (!tempDirectory || !cacheRoot) {
+    let baseLocation;
+    if (IS_WINDOWS) {
+        // On windows use the USERPROFILE env variable
+        baseLocation = process.env['USERPROFILE'] || 'C:\\';
+    }
+    else {
+        if (process.platform === 'darwin') {
+            baseLocation = '/Users';
+        }
+        else {
+            baseLocation = '/home';
+        }
+    }
+    if (!tempDirectory) {
+        tempDirectory = path.join(baseLocation, 'actions', 'temp');
+    }
+    if (!cacheRoot) {
+        cacheRoot = path.join(baseLocation, 'actions', 'cache');
+    }
+}
+/**
+ * Download a tool from an url and stream it into a file
+ *
+ * @param url       url of tool to download
+ * @returns         path to downloaded tool
+ */
+function downloadTool(url) {
+    return __awaiter(this, void 0, void 0, function* () {
+        // Wrap in a promise so that we can resolve from within stream callbacks
+        return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
+            try {
+                const http = new httpm.HttpClient(userAgent, [], {
+                    allowRetries: true,
+                    maxRetries: 3
+                });
+                const destPath = path.join(tempDirectory, uuidV4());
+                yield io.mkdirP(tempDirectory);
+                core.debug(`Downloading ${url}`);
+                core.debug(`Downloading ${destPath}`);
+                if (fs.existsSync(destPath)) {
+                    throw new Error(`Destination file path ${destPath} already exists`);
+                }
+                const response = yield http.get(url);
+                if (response.message.statusCode !== 200) {
+                    const err = new HTTPError(response.message.statusCode);
+                    core.debug(`Failed to download from "${url}". Code(${response.message.statusCode}) Message(${response.message.statusMessage})`);
+                    throw err;
+                }
+                const file = fs.createWriteStream(destPath);
+                file.on('open', () => __awaiter(this, void 0, void 0, function* () {
+                    try {
+                        const stream = response.message.pipe(file);
+                        stream.on('close', () => {
+                            core.debug('download complete');
+                            resolve(destPath);
+                        });
+                    }
+                    catch (err) {
+                        core.debug(`Failed to download from "${url}". Code(${response.message.statusCode}) Message(${response.message.statusMessage})`);
+                        reject(err);
+                    }
+                }));
+                file.on('error', err => {
+                    file.end();
+                    reject(err);
+                });
+            }
+            catch (err) {
+                reject(err);
+            }
+        }));
+    });
+}
+exports.downloadTool = downloadTool;
+/**
+ * Extract a .7z file
+ *
+ * @param file     path to the .7z file
+ * @param dest     destination directory. Optional.
+ * @param _7zPath  path to 7zr.exe. Optional, for long path support. Most .7z archives do not have this
+ * problem. If your .7z archive contains very long paths, you can pass the path to 7zr.exe which will
+ * gracefully handle long paths. By default 7zdec.exe is used because it is a very small program and is
+ * bundled with the tool lib. However it does not support long paths. 7zr.exe is the reduced command line
+ * interface, it is smaller than the full command line interface, and it does support long paths. At the
+ * time of this writing, it is freely available from the LZMA SDK that is available on the 7zip website.
+ * Be sure to check the current license agreement. If 7zr.exe is bundled with your action, then the path
+ * to 7zr.exe can be pass to this function.
+ * @returns        path to the destination directory
+ */
+function extract7z(file, dest, _7zPath) {
+    return __awaiter(this, void 0, void 0, function* () {
+        assert_1.ok(IS_WINDOWS, 'extract7z() not supported on current OS');
+        assert_1.ok(file, 'parameter "file" is required');
+        dest = dest || (yield _createExtractFolder(dest));
+        const originalCwd = process.cwd();
+        process.chdir(dest);
+        if (_7zPath) {
+            try {
+                const args = [
+                    'x',
+                    '-bb1',
+                    '-bd',
+                    '-sccUTF-8',
+                    file
+                ];
+                const options = {
+                    silent: true
+                };
+                yield exec_1.exec(`"${_7zPath}"`, args, options);
+            }
+            finally {
+                process.chdir(originalCwd);
+            }
+        }
+        else {
+            const escapedScript = path
+                .join(__dirname, '..', 'scripts', 'Invoke-7zdec.ps1')
+                .replace(/'/g, "''")
+                .replace(/"|\n|\r/g, ''); // double-up single quotes, remove double quotes and newlines
+            const escapedFile = file.replace(/'/g, "''").replace(/"|\n|\r/g, '');
+            const escapedTarget = dest.replace(/'/g, "''").replace(/"|\n|\r/g, '');
+            const command = `& '${escapedScript}' -Source '${escapedFile}' -Target '${escapedTarget}'`;
+            const args = [
+                '-NoLogo',
+                '-Sta',
+                '-NoProfile',
+                '-NonInteractive',
+                '-ExecutionPolicy',
+                'Unrestricted',
+                '-Command',
+                command
+            ];
+            const options = {
+                silent: true
+            };
+            try {
+                const powershellPath = yield io.which('powershell', true);
+                yield exec_1.exec(`"${powershellPath}"`, args, options);
+            }
+            finally {
+                process.chdir(originalCwd);
+            }
+        }
+        return dest;
+    });
+}
+exports.extract7z = extract7z;
+/**
+ * Extract a tar
+ *
+ * @param file     path to the tar
+ * @param dest     destination directory. Optional.
+ * @param flags    flags for the tar. Optional.
+ * @returns        path to the destination directory
+ */
+function extractTar(file, dest, flags = 'xz') {
+    return __awaiter(this, void 0, void 0, function* () {
+        if (!file) {
+            throw new Error("parameter 'file' is required");
+        }
+        dest = dest || (yield _createExtractFolder(dest));
+        const tarPath = yield io.which('tar', true);
+        yield exec_1.exec(`"${tarPath}"`, [flags, '-C', dest, '-f', file]);
+        return dest;
+    });
+}
+exports.extractTar = extractTar;
+/**
+ * Extract a zip
+ *
+ * @param file     path to the zip
+ * @param dest     destination directory. Optional.
+ * @returns        path to the destination directory
+ */
+function extractZip(file, dest) {
+    return __awaiter(this, void 0, void 0, function* () {
+        if (!file) {
+            throw new Error("parameter 'file' is required");
+        }
+        dest = dest || (yield _createExtractFolder(dest));
+        if (IS_WINDOWS) {
+            yield extractZipWin(file, dest);
+        }
+        else {
+            yield extractZipNix(file, dest);
+        }
+        return dest;
+    });
+}
+exports.extractZip = extractZip;
+function extractZipWin(file, dest) {
+    return __awaiter(this, void 0, void 0, function* () {
+        // build the powershell command
+        const escapedFile = file.replace(/'/g, "''").replace(/"|\n|\r/g, ''); // double-up single quotes, remove double quotes and newlines
+        const escapedDest = dest.replace(/'/g, "''").replace(/"|\n|\r/g, '');
+        const command = `$ErrorActionPreference = 'Stop' ; try { Add-Type -AssemblyName System.IO.Compression.FileSystem } catch { } ; [System.IO.Compression.ZipFile]::ExtractToDirectory('${escapedFile}', '${escapedDest}')`;
+        // run powershell
+        const powershellPath = yield io.which('powershell');
+        const args = [
+            '-NoLogo',
+            '-Sta',
+            '-NoProfile',
+            '-NonInteractive',
+            '-ExecutionPolicy',
+            'Unrestricted',
+            '-Command',
+            command
+        ];
+        yield exec_1.exec(`"${powershellPath}"`, args);
+    });
+}
+function extractZipNix(file, dest) {
+    return __awaiter(this, void 0, void 0, function* () {
+        const unzipPath = yield io.which('unzip');
+        yield exec_1.exec(`"${unzipPath}"`, [file], { cwd: dest });
+    });
+}
+/**
+ * Caches a directory and installs it into the tool cacheDir
+ *
+ * @param sourceDir    the directory to cache into tools
+ * @param tool          tool name
+ * @param version       version of the tool.  semver format
+ * @param arch          architecture of the tool.  Optional.  Defaults to machine architecture
+ */
+function cacheDir(sourceDir, tool, version, arch) {
+    return __awaiter(this, void 0, void 0, function* () {
+        version = semver.clean(version) || version;
+        arch = arch || os.arch();
+        core.debug(`Caching tool ${tool} ${version} ${arch}`);
+        core.debug(`source dir: ${sourceDir}`);
+        if (!fs.statSync(sourceDir).isDirectory()) {
+            throw new Error('sourceDir is not a directory');
+        }
+        // Create the tool dir
+        const destPath = yield _createToolPath(tool, version, arch);
+        // copy each child item. do not move. move can fail on Windows
+        // due to anti-virus software having an open handle on a file.
+        for (const itemName of fs.readdirSync(sourceDir)) {
+            const s = path.join(sourceDir, itemName);
+            yield io.cp(s, destPath, { recursive: true });
+        }
+        // write .complete
+        _completeToolPath(tool, version, arch);
+        return destPath;
+    });
+}
+exports.cacheDir = cacheDir;
+/**
+ * Caches a downloaded file (GUID) and installs it
+ * into the tool cache with a given targetName
+ *
+ * @param sourceFile    the file to cache into tools.  Typically a result of downloadTool which is a guid.
+ * @param targetFile    the name of the file name in the tools directory
+ * @param tool          tool name
+ * @param version       version of the tool.  semver format
+ * @param arch          architecture of the tool.  Optional.  Defaults to machine architecture
+ */
+function cacheFile(sourceFile, targetFile, tool, version, arch) {
+    return __awaiter(this, void 0, void 0, function* () {
+        version = semver.clean(version) || version;
+        arch = arch || os.arch();
+        core.debug(`Caching tool ${tool} ${version} ${arch}`);
+        core.debug(`source file: ${sourceFile}`);
+        if (!fs.statSync(sourceFile).isFile()) {
+            throw new Error('sourceFile is not a file');
+        }
+        // create the tool dir
+        const destFolder = yield _createToolPath(tool, version, arch);
+        // copy instead of move. move can fail on Windows due to
+        // anti-virus software having an open handle on a file.
+        const destPath = path.join(destFolder, targetFile);
+        core.debug(`destination file ${destPath}`);
+        yield io.cp(sourceFile, destPath);
+        // write .complete
+        _completeToolPath(tool, version, arch);
+        return destFolder;
+    });
+}
+exports.cacheFile = cacheFile;
+/**
+ * Finds the path to a tool version in the local installed tool cache
+ *
+ * @param toolName      name of the tool
+ * @param versionSpec   version of the tool
+ * @param arch          optional arch.  defaults to arch of computer
+ */
+function find(toolName, versionSpec, arch) {
+    if (!toolName) {
+        throw new Error('toolName parameter is required');
+    }
+    if (!versionSpec) {
+        throw new Error('versionSpec parameter is required');
+    }
+    arch = arch || os.arch();
+    // attempt to resolve an explicit version
+    if (!_isExplicitVersion(versionSpec)) {
+        const localVersions = findAllVersions(toolName, arch);
+        const match = _evaluateVersions(localVersions, versionSpec);
+        versionSpec = match;
+    }
+    // check for the explicit version in the cache
+    let toolPath = '';
+    if (versionSpec) {
+        versionSpec = semver.clean(versionSpec) || '';
+        const cachePath = path.join(cacheRoot, toolName, versionSpec, arch);
+        core.debug(`checking cache: ${cachePath}`);
+        if (fs.existsSync(cachePath) && fs.existsSync(`${cachePath}.complete`)) {
+            core.debug(`Found tool in cache ${toolName} ${versionSpec} ${arch}`);
+            toolPath = cachePath;
+        }
+        else {
+            core.debug('not found');
+        }
+    }
+    return toolPath;
+}
+exports.find = find;
+/**
+ * Finds the paths to all versions of a tool that are installed in the local tool cache
+ *
+ * @param toolName  name of the tool
+ * @param arch      optional arch.  defaults to arch of computer
+ */
+function findAllVersions(toolName, arch) {
+    const versions = [];
+    arch = arch || os.arch();
+    const toolPath = path.join(cacheRoot, toolName);
+    if (fs.existsSync(toolPath)) {
+        const children = fs.readdirSync(toolPath);
+        for (const child of children) {
+            if (_isExplicitVersion(child)) {
+                const fullPath = path.join(toolPath, child, arch || '');
+                if (fs.existsSync(fullPath) && fs.existsSync(`${fullPath}.complete`)) {
+                    versions.push(child);
+                }
+            }
+        }
+    }
+    return versions;
+}
+exports.findAllVersions = findAllVersions;
+function _createExtractFolder(dest) {
+    return __awaiter(this, void 0, void 0, function* () {
+        if (!dest) {
+            // create a temp dir
+            dest = path.join(tempDirectory, uuidV4());
+        }
+        yield io.mkdirP(dest);
+        return dest;
+    });
+}
+function _createToolPath(tool, version, arch) {
+    return __awaiter(this, void 0, void 0, function* () {
+        const folderPath = path.join(cacheRoot, tool, semver.clean(version) || version, arch || '');
+        core.debug(`destination ${folderPath}`);
+        const markerPath = `${folderPath}.complete`;
+        yield io.rmRF(folderPath);
+        yield io.rmRF(markerPath);
+        yield io.mkdirP(folderPath);
+        return folderPath;
+    });
+}
+function _completeToolPath(tool, version, arch) {
+    const folderPath = path.join(cacheRoot, tool, semver.clean(version) || version, arch || '');
+    const markerPath = `${folderPath}.complete`;
+    fs.writeFileSync(markerPath, '');
+    core.debug('finished caching tool');
+}
+function _isExplicitVersion(versionSpec) {
+    const c = semver.clean(versionSpec) || '';
+    core.debug(`isExplicit: ${c}`);
+    const valid = semver.valid(c) != null;
+    core.debug(`explicit? ${valid}`);
+    return valid;
+}
+function _evaluateVersions(versions, versionSpec) {
+    let version = '';
+    core.debug(`evaluating ${versions.length} versions`);
+    versions = versions.sort((a, b) => {
+        if (semver.gt(a, b)) {
+            return 1;
+        }
+        return -1;
+    });
+    for (let i = versions.length - 1; i >= 0; i--) {
+        const potential = versions[i];
+        const satisfied = semver.satisfies(potential, versionSpec);
+        if (satisfied) {
+            version = potential;
+            break;
+        }
+    }
+    if (version) {
+        core.debug(`matched: ${version}`);
+    }
+    else {
+        core.debug('match not found');
+    }
+    return version;
+}
+//# sourceMappingURL=tool-cache.js.map
\ No newline at end of file
diff --git a/setup-maven/node_modules/@actions/tool-cache/lib/tool-cache.js.map b/setup-maven/node_modules/@actions/tool-cache/lib/tool-cache.js.map
new file mode 100644
index 0000000..8d905c2
--- /dev/null
+++ b/setup-maven/node_modules/@actions/tool-cache/lib/tool-cache.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"tool-cache.js","sourceRoot":"","sources":["../src/tool-cache.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,sCAAqC;AACrC,kCAAiC;AACjC,yBAAwB;AACxB,yBAAwB;AACxB,6BAA4B;AAC5B,sDAAqD;AACrD,iCAAgC;AAChC,kCAAiC;AACjC,iDAA2C;AAE3C,mCAAyB;AAEzB,MAAa,SAAU,SAAQ,KAAK;IAClC,YAAqB,cAAkC;QACrD,KAAK,CAAC,6BAA6B,cAAc,EAAE,CAAC,CAAA;QADjC,mBAAc,GAAd,cAAc,CAAoB;QAErD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IACnD,CAAC;CACF;AALD,8BAKC;AAED,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAA;AAC/C,MAAM,SAAS,GAAG,oBAAoB,CAAA;AAEtC,iHAAiH;AACjH,IAAI,aAAa,GAAW,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAA;AAC5D,IAAI,SAAS,GAAW,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAA;AAC9D,gEAAgE;AAChE,IAAI,CAAC,aAAa,IAAI,CAAC,SAAS,EAAE;IAChC,IAAI,YAAoB,CAAA;IACxB,IAAI,UAAU,EAAE;QACd,8CAA8C;QAC9C,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,MAAM,CAAA;KACpD;SAAM;QACL,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE;YACjC,YAAY,GAAG,QAAQ,CAAA;SACxB;aAAM;YACL,YAAY,GAAG,OAAO,CAAA;SACvB;KACF;IACD,IAAI,CAAC,aAAa,EAAE;QAClB,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;KAC3D;IACD,IAAI,CAAC,SAAS,EAAE;QACd,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;KACxD;CACF;AAED;;;;;GAKG;AACH,SAAsB,YAAY,CAAC,GAAW;;QAC5C,wEAAwE;QACxE,OAAO,IAAI,OAAO,CAAS,CAAO,OAAO,EAAE,MAAM,EAAE,EAAE;YACnD,IAAI;gBACF,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,EAAE,EAAE,EAAE;oBAC/C,YAAY,EAAE,IAAI;oBAClB,UAAU,EAAE,CAAC;iBACd,CAAC,CAAA;gBACF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC,CAAA;gBAEnD,MAAM,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;gBAC9B,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,EAAE,CAAC,CAAA;gBAChC,IAAI,CAAC,KAAK,CAAC,eAAe,QAAQ,EAAE,CAAC,CAAA;gBAErC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;oBAC3B,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,iBAAiB,CAAC,CAAA;iBACpE;gBAED,MAAM,QAAQ,GAA6B,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBAE9D,IAAI,QAAQ,CAAC,OAAO,CAAC,UAAU,KAAK,GAAG,EAAE;oBACvC,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;oBACtD,IAAI,CAAC,KAAK,CACR,4BAA4B,GAAG,WAC7B,QAAQ,CAAC,OAAO,CAAC,UACnB,aAAa,QAAQ,CAAC,OAAO,CAAC,aAAa,GAAG,CAC/C,CAAA;oBACD,MAAM,GAAG,CAAA;iBACV;gBAED,MAAM,IAAI,GAA0B,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAA;gBAClE,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,GAAS,EAAE;oBACzB,IAAI;wBACF,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;wBAC1C,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;4BACtB,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;4BAC/B,OAAO,CAAC,QAAQ,CAAC,CAAA;wBACnB,CAAC,CAAC,CAAA;qBACH;oBAAC,OAAO,GAAG,EAAE;wBACZ,IAAI,CAAC,KAAK,CACR,4BAA4B,GAAG,WAC7B,QAAQ,CAAC,OAAO,CAAC,UACnB,aAAa,QAAQ,CAAC,OAAO,CAAC,aAAa,GAAG,CAC/C,CAAA;wBACD,MAAM,CAAC,GAAG,CAAC,CAAA;qBACZ;gBACH,CAAC,CAAA,CAAC,CAAA;gBACF,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;oBACrB,IAAI,CAAC,GAAG,EAAE,CAAA;oBACV,MAAM,CAAC,GAAG,CAAC,CAAA;gBACb,CAAC,CAAC,CAAA;aACH;YAAC,OAAO,GAAG,EAAE;gBACZ,MAAM,CAAC,GAAG,CAAC,CAAA;aACZ;QACH,CAAC,CAAA,CAAC,CAAA;IACJ,CAAC;CAAA;AAvDD,oCAuDC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAsB,SAAS,CAC7B,IAAY,EACZ,IAAa,EACb,OAAgB;;QAEhB,WAAE,CAAC,UAAU,EAAE,yCAAyC,CAAC,CAAA;QACzD,WAAE,CAAC,IAAI,EAAE,8BAA8B,CAAC,CAAA;QAExC,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAA;QAEjD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;QACjC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACnB,IAAI,OAAO,EAAE;YACX,IAAI;gBACF,MAAM,IAAI,GAAa;oBACrB,GAAG;oBACH,MAAM;oBACN,KAAK;oBACL,WAAW;oBACX,IAAI;iBACL,CAAA;gBACD,MAAM,OAAO,GAAgB;oBAC3B,MAAM,EAAE,IAAI;iBACb,CAAA;gBACD,MAAM,WAAI,CAAC,IAAI,OAAO,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;aAC1C;oBAAS;gBACR,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;aAC3B;SACF;aAAM;YACL,MAAM,aAAa,GAAG,IAAI;iBACvB,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,kBAAkB,CAAC;iBACpD,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;iBACnB,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA,CAAC,6DAA6D;YACxF,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;YACpE,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;YACtE,MAAM,OAAO,GAAG,MAAM,aAAa,cAAc,WAAW,cAAc,aAAa,GAAG,CAAA;YAC1F,MAAM,IAAI,GAAa;gBACrB,SAAS;gBACT,MAAM;gBACN,YAAY;gBACZ,iBAAiB;gBACjB,kBAAkB;gBAClB,cAAc;gBACd,UAAU;gBACV,OAAO;aACR,CAAA;YACD,MAAM,OAAO,GAAgB;gBAC3B,MAAM,EAAE,IAAI;aACb,CAAA;YACD,IAAI;gBACF,MAAM,cAAc,GAAW,MAAM,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;gBACjE,MAAM,WAAI,CAAC,IAAI,cAAc,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;aACjD;oBAAS;gBACR,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;aAC3B;SACF;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CAAA;AA1DD,8BA0DC;AAED;;;;;;;GAOG;AACH,SAAsB,UAAU,CAC9B,IAAY,EACZ,IAAa,EACb,QAAgB,IAAI;;QAEpB,IAAI,CAAC,IAAI,EAAE;YACT,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;SAChD;QAED,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAA;QACjD,MAAM,OAAO,GAAW,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QACnD,MAAM,WAAI,CAAC,IAAI,OAAO,GAAG,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;QAE3D,OAAO,IAAI,CAAA;IACb,CAAC;CAAA;AAdD,gCAcC;AAED;;;;;;GAMG;AACH,SAAsB,UAAU,CAAC,IAAY,EAAE,IAAa;;QAC1D,IAAI,CAAC,IAAI,EAAE;YACT,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;SAChD;QAED,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAA;QAEjD,IAAI,UAAU,EAAE;YACd,MAAM,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;SAChC;aAAM;YACL,MAAM,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;SAChC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CAAA;AAdD,gCAcC;AAED,SAAe,aAAa,CAAC,IAAY,EAAE,IAAY;;QACrD,+BAA+B;QAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA,CAAC,6DAA6D;QAClI,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;QACpE,MAAM,OAAO,GAAG,sKAAsK,WAAW,OAAO,WAAW,IAAI,CAAA;QAEvN,iBAAiB;QACjB,MAAM,cAAc,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;QACnD,MAAM,IAAI,GAAG;YACX,SAAS;YACT,MAAM;YACN,YAAY;YACZ,iBAAiB;YACjB,kBAAkB;YAClB,cAAc;YACd,UAAU;YACV,OAAO;SACR,CAAA;QACD,MAAM,WAAI,CAAC,IAAI,cAAc,GAAG,EAAE,IAAI,CAAC,CAAA;IACzC,CAAC;CAAA;AAED,SAAe,aAAa,CAAC,IAAY,EAAE,IAAY;;QACrD,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACzC,MAAM,WAAI,CAAC,IAAI,SAAS,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,EAAC,GAAG,EAAE,IAAI,EAAC,CAAC,CAAA;IACnD,CAAC;CAAA;AAED;;;;;;;GAOG;AACH,SAAsB,QAAQ,CAC5B,SAAiB,EACjB,IAAY,EACZ,OAAe,EACf,IAAa;;QAEb,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,CAAA;QAC1C,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,CAAA;QACxB,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC,CAAA;QAErD,IAAI,CAAC,KAAK,CAAC,eAAe,SAAS,EAAE,CAAC,CAAA;QACtC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,EAAE;YACzC,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;SAChD;QAED,sBAAsB;QACtB,MAAM,QAAQ,GAAW,MAAM,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;QACnE,8DAA8D;QAC9D,8DAA8D;QAC9D,KAAK,MAAM,QAAQ,IAAI,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE;YAChD,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;YACxC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAA;SAC5C;QAED,kBAAkB;QAClB,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;QAEtC,OAAO,QAAQ,CAAA;IACjB,CAAC;CAAA;AA5BD,4BA4BC;AAED;;;;;;;;;GASG;AACH,SAAsB,SAAS,CAC7B,UAAkB,EAClB,UAAkB,EAClB,IAAY,EACZ,OAAe,EACf,IAAa;;QAEb,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,CAAA;QAC1C,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,CAAA;QACxB,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC,CAAA;QAErD,IAAI,CAAC,KAAK,CAAC,gBAAgB,UAAU,EAAE,CAAC,CAAA;QACxC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,EAAE;YACrC,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;SAC5C;QAED,sBAAsB;QACtB,MAAM,UAAU,GAAW,MAAM,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;QAErE,wDAAwD;QACxD,uDAAuD;QACvD,MAAM,QAAQ,GAAW,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;QAC1D,IAAI,CAAC,KAAK,CAAC,oBAAoB,QAAQ,EAAE,CAAC,CAAA;QAC1C,MAAM,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;QAEjC,kBAAkB;QAClB,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;QAEtC,OAAO,UAAU,CAAA;IACnB,CAAC;CAAA;AA7BD,8BA6BC;AAED;;;;;;GAMG;AACH,SAAgB,IAAI,CAClB,QAAgB,EAChB,WAAmB,EACnB,IAAa;IAEb,IAAI,CAAC,QAAQ,EAAE;QACb,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;KAClD;IAED,IAAI,CAAC,WAAW,EAAE;QAChB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;KACrD;IAED,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,CAAA;IAExB,yCAAyC;IACzC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,EAAE;QACpC,MAAM,aAAa,GAAa,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;QAC/D,MAAM,KAAK,GAAG,iBAAiB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;QAC3D,WAAW,GAAG,KAAK,CAAA;KACpB;IAED,8CAA8C;IAC9C,IAAI,QAAQ,GAAG,EAAE,CAAA;IACjB,IAAI,WAAW,EAAE;QACf,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAA;QAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,CAAA;QACnE,IAAI,CAAC,KAAK,CAAC,mBAAmB,SAAS,EAAE,CAAC,CAAA;QAC1C,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,SAAS,WAAW,CAAC,EAAE;YACtE,IAAI,CAAC,KAAK,CAAC,uBAAuB,QAAQ,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC,CAAA;YACpE,QAAQ,GAAG,SAAS,CAAA;SACrB;aAAM;YACL,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;SACxB;KACF;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC;AApCD,oBAoCC;AAED;;;;;GAKG;AACH,SAAgB,eAAe,CAAC,QAAgB,EAAE,IAAa;IAC7D,MAAM,QAAQ,GAAa,EAAE,CAAA;IAE7B,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,CAAA;IACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;IAE/C,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;QAC3B,MAAM,QAAQ,GAAa,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;QACnD,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;YAC5B,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE;gBAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC,CAAA;gBACvD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,QAAQ,WAAW,CAAC,EAAE;oBACpE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;iBACrB;aACF;SACF;KACF;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAnBD,0CAmBC;AAED,SAAe,oBAAoB,CAAC,IAAa;;QAC/C,IAAI,CAAC,IAAI,EAAE;YACT,oBAAoB;YACpB,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC,CAAA;SAC1C;QACD,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACrB,OAAO,IAAI,CAAA;IACb,CAAC;CAAA;AAED,SAAe,eAAe,CAC5B,IAAY,EACZ,OAAe,EACf,IAAa;;QAEb,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAC1B,SAAS,EACT,IAAI,EACJ,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,EAChC,IAAI,IAAI,EAAE,CACX,CAAA;QACD,IAAI,CAAC,KAAK,CAAC,eAAe,UAAU,EAAE,CAAC,CAAA;QACvC,MAAM,UAAU,GAAG,GAAG,UAAU,WAAW,CAAA;QAC3C,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACzB,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACzB,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAC3B,OAAO,UAAU,CAAA;IACnB,CAAC;CAAA;AAED,SAAS,iBAAiB,CAAC,IAAY,EAAE,OAAe,EAAE,IAAa;IACrE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAC1B,SAAS,EACT,IAAI,EACJ,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,EAChC,IAAI,IAAI,EAAE,CACX,CAAA;IACD,MAAM,UAAU,GAAG,GAAG,UAAU,WAAW,CAAA;IAC3C,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;IAChC,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAA;AACrC,CAAC;AAED,SAAS,kBAAkB,CAAC,WAAmB;IAC7C,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAA;IACzC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;IAE9B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;IACrC,IAAI,CAAC,KAAK,CAAC,aAAa,KAAK,EAAE,CAAC,CAAA;IAEhC,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAkB,EAAE,WAAmB;IAChE,IAAI,OAAO,GAAG,EAAE,CAAA;IAChB,IAAI,CAAC,KAAK,CAAC,cAAc,QAAQ,CAAC,MAAM,WAAW,CAAC,CAAA;IACpD,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAChC,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;YACnB,OAAO,CAAC,CAAA;SACT;QACD,OAAO,CAAC,CAAC,CAAA;IACX,CAAC,CAAC,CAAA;IACF,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;QAC7C,MAAM,SAAS,GAAW,QAAQ,CAAC,CAAC,CAAC,CAAA;QACrC,MAAM,SAAS,GAAY,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;QACnE,IAAI,SAAS,EAAE;YACb,OAAO,GAAG,SAAS,CAAA;YACnB,MAAK;SACN;KACF;IAED,IAAI,OAAO,EAAE;QACX,IAAI,CAAC,KAAK,CAAC,YAAY,OAAO,EAAE,CAAC,CAAA;KAClC;SAAM;QACL,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;KAC9B;IAED,OAAO,OAAO,CAAA;AAChB,CAAC"}
\ No newline at end of file
diff --git a/setup-maven/node_modules/@actions/tool-cache/package.json b/setup-maven/node_modules/@actions/tool-cache/package.json
new file mode 100644
index 0000000..4dce04b
--- /dev/null
+++ b/setup-maven/node_modules/@actions/tool-cache/package.json
@@ -0,0 +1,75 @@
+{
+  "_from": "@actions/tool-cache@^1.0.0",
+  "_id": "@actions/tool-cache@1.1.2",
+  "_inBundle": false,
+  "_integrity": "sha512-IJczPaZr02ECa3Lgws/TJEVco9tjOujiQSZbO3dHuXXjhd5vrUtfOgGwhmz3/f97L910OraPZ8SknofUk6RvOQ==",
+  "_location": "/@actions/tool-cache",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "@actions/tool-cache@^1.0.0",
+    "name": "@actions/tool-cache",
+    "escapedName": "@actions%2ftool-cache",
+    "scope": "@actions",
+    "rawSpec": "^1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^1.0.0"
+  },
+  "_requiredBy": [
+    "/"
+  ],
+  "_resolved": "https://registry.npmjs.org/@actions/tool-cache/-/tool-cache-1.1.2.tgz",
+  "_shasum": "304d44cecb9547324731e03ca004a3905e6530d2",
+  "_spec": "@actions/tool-cache@^1.0.0",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven",
+  "bugs": {
+    "url": "https://github.com/actions/toolkit/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "@actions/core": "^1.1.0",
+    "@actions/exec": "^1.0.1",
+    "@actions/io": "^1.0.1",
+    "semver": "^6.1.0",
+    "typed-rest-client": "^1.4.0",
+    "uuid": "^3.3.2"
+  },
+  "deprecated": false,
+  "description": "Actions tool-cache lib",
+  "devDependencies": {
+    "@types/nock": "^10.0.3",
+    "@types/semver": "^6.0.0",
+    "@types/uuid": "^3.4.4",
+    "nock": "^10.0.6"
+  },
+  "directories": {
+    "lib": "lib",
+    "test": "__tests__"
+  },
+  "files": [
+    "lib",
+    "scripts"
+  ],
+  "homepage": "https://github.com/actions/toolkit/tree/master/packages/exec",
+  "keywords": [
+    "github",
+    "actions",
+    "exec"
+  ],
+  "license": "MIT",
+  "main": "lib/tool-cache.js",
+  "name": "@actions/tool-cache",
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/actions/toolkit.git"
+  },
+  "scripts": {
+    "test": "echo \"Error: run tests from root\" && exit 1",
+    "tsc": "tsc"
+  },
+  "version": "1.1.2"
+}
diff --git a/setup-maven/node_modules/@actions/tool-cache/scripts/Invoke-7zdec.ps1 b/setup-maven/node_modules/@actions/tool-cache/scripts/Invoke-7zdec.ps1
new file mode 100644
index 0000000..8b39bb4
--- /dev/null
+++ b/setup-maven/node_modules/@actions/tool-cache/scripts/Invoke-7zdec.ps1
@@ -0,0 +1,60 @@
+[CmdletBinding()]
+param(
+    [Parameter(Mandatory = $true)]
+    [string]$Source,
+
+    [Parameter(Mandatory = $true)]
+    [string]$Target)
+
+# This script translates the output from 7zdec into UTF8. Node has limited
+# built-in support for encodings.
+#
+# 7zdec uses the system default code page. The system default code page varies
+# depending on the locale configuration. On an en-US box, the system default code
+# page is Windows-1252.
+#
+# Note, on a typical en-US box, testing with the 'ç' character is a good way to
+# determine whether data is passed correctly between processes. This is because
+# the 'ç' character has a different code point across each of the common encodings
+# on a typical en-US box, i.e.
+#   1) the default console-output code page (IBM437)
+#   2) the system default code page (i.e. CP_ACP) (Windows-1252)
+#   3) UTF8
+
+$ErrorActionPreference = 'Stop'
+
+# Redefine the wrapper over STDOUT to use UTF8. Node expects UTF8 by default.
+$stdout = [System.Console]::OpenStandardOutput()
+$utf8 = New-Object System.Text.UTF8Encoding($false) # do not emit BOM
+$writer = New-Object System.IO.StreamWriter($stdout, $utf8)
+[System.Console]::SetOut($writer)
+
+# All subsequent output must be written using [System.Console]::WriteLine(). In
+# PowerShell 4, Write-Host and Out-Default do not consider the updated stream writer.
+
+Set-Location -LiteralPath $Target
+
+# Print the ##command.
+$_7zdec = Join-Path -Path "$PSScriptRoot" -ChildPath "externals/7zdec.exe"
+[System.Console]::WriteLine("##[command]$_7zdec x `"$Source`"")
+
+# The $OutputEncoding variable instructs PowerShell how to interpret the output
+# from the external command.
+$OutputEncoding = [System.Text.Encoding]::Default
+
+# Note, the output from 7zdec.exe needs to be iterated over. Otherwise PowerShell.exe
+# will launch the external command in such a way that it inherits the streams.
+& $_7zdec x $Source 2>&1 |
+    ForEach-Object {
+        if ($_ -is [System.Management.Automation.ErrorRecord]) {
+            [System.Console]::WriteLine($_.Exception.Message)
+        }
+        else {
+            [System.Console]::WriteLine($_)
+        }
+    }
+[System.Console]::WriteLine("##[debug]7zdec.exe exit code '$LASTEXITCODE'")
+[System.Console]::Out.Flush()
+if ($LASTEXITCODE -ne 0) {
+    exit $LASTEXITCODE
+}
\ No newline at end of file
diff --git a/setup-maven/node_modules/@actions/tool-cache/scripts/externals/7zdec.exe b/setup-maven/node_modules/@actions/tool-cache/scripts/externals/7zdec.exe
new file mode 100644
index 0000000..1106aa0
--- /dev/null
+++ b/setup-maven/node_modules/@actions/tool-cache/scripts/externals/7zdec.exe
Binary files differ
diff --git a/setup-maven/node_modules/@octokit/endpoint/LICENSE b/setup-maven/node_modules/@octokit/endpoint/LICENSE
new file mode 100644
index 0000000..af5366d
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/LICENSE
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright (c) 2018 Octokit contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/setup-maven/node_modules/@octokit/endpoint/README.md b/setup-maven/node_modules/@octokit/endpoint/README.md
new file mode 100644
index 0000000..5ac8429
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/README.md
@@ -0,0 +1,421 @@
+# endpoint.js
+
+> Turns GitHub REST API endpoints into generic request options
+
+[![@latest](https://img.shields.io/npm/v/@octokit/endpoint.svg)](https://www.npmjs.com/package/@octokit/endpoint)
+![Build Status](https://github.com/octokit/endpoint.js/workflows/Test/badge.svg)
+[![Greenkeeper](https://badges.greenkeeper.io/octokit/endpoint.js.svg)](https://greenkeeper.io/)
+
+`@octokit/endpoint` combines [GitHub REST API routes](https://developer.github.com/v3/) with your parameters and turns them into generic request options that can be used in any request library.
+
+<!-- update table of contents by running `npx markdown-toc README.md -i` -->
+<!-- toc -->
+
+- [Usage](#usage)
+- [API](#api)
+  - [endpoint()](#endpointroute-options-or-endpointoptions)
+  - [endpoint.defaults()](#endpointdefaults)
+  - [endpoint.DEFAULTS](#endpointdefaults-1)
+  - [endpoint.merge()](#endpointmergeroute-options-or-endpointmergeoptions)
+  - [endpoint.parse()](#endpointparse)
+- [Special cases](#special-cases)
+  - [The `data` parameter – set request body directly](#the-data-parameter--set-request-body-directly)
+  - [Set parameters for both the URL/query and the request body](#set-parameters-for-both-the-urlquery-and-the-request-body)
+- [LICENSE](#license)
+
+<!-- tocstop -->
+
+## Usage
+
+<table>
+<tbody valign=top align=left>
+<tr><th>
+Browsers
+</th><td width=100%>
+Load <code>@octokit/endpoint</code> directly from <a href="https://cdn.pika.dev">cdn.pika.dev</a>
+        
+```html
+<script type="module">
+import { endpoint } from "https://cdn.pika.dev/@octokit/endpoint";
+</script>
+```
+
+</td></tr>
+<tr><th>
+Node
+</th><td>
+
+Install with <code>npm install @octokit/endpoint</code>
+
+```js
+const { endpoint } = require("@octokit/endpoint");
+// or: import { endpoint } from "@octokit/endpoint";
+```
+
+</td></tr>
+</tbody>
+</table>
+
+Example for [List organization repositories](https://developer.github.com/v3/repos/#list-organization-repositories)
+
+```js
+const requestOptions = endpoint("GET /orgs/:org/repos", {
+  headers: {
+    authorization: "token 0000000000000000000000000000000000000001"
+  },
+  org: "octokit",
+  type: "private"
+});
+```
+
+The resulting `requestOptions` looks as follows
+
+```json
+{
+  "method": "GET",
+  "url": "https://api.github.com/orgs/octokit/repos?type=private",
+  "headers": {
+    "accept": "application/vnd.github.v3+json",
+    "authorization": "token 0000000000000000000000000000000000000001",
+    "user-agent": "octokit/endpoint.js v1.2.3"
+  }
+}
+```
+
+You can pass `requestOptions` to common request libraries
+
+```js
+const { url, ...options } = requestOptions;
+// using with fetch (https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)
+fetch(url, options);
+// using with request (https://github.com/request/request)
+request(requestOptions);
+// using with got (https://github.com/sindresorhus/got)
+got[options.method](url, options);
+// using with axios
+axios(requestOptions);
+```
+
+## API
+
+### `endpoint(route, options)` or `endpoint(options)`
+
+<table>
+  <thead align=left>
+    <tr>
+      <th>
+        name
+      </th>
+      <th>
+        type
+      </th>
+      <th width=100%>
+        description
+      </th>
+    </tr>
+  </thead>
+  <tbody align=left valign=top>
+    <tr>
+      <th>
+        <code>route</code>
+      </th>
+      <td>
+        String
+      </td>
+      <td>
+        If set, it has to be a string consisting of URL and the request method, e.g., <code>GET /orgs/:org</code>. If it’s set to a URL, only the method defaults to <code>GET</code>.
+      </td>
+    </tr>
+    <tr>
+      <th>
+        <code>options.method</code>
+      </th>
+      <td>
+        String
+      </td>
+      <td>
+        <strong>Required unless <code>route</code> is set.</strong> Any supported <a href="https://developer.github.com/v3/#http-verbs">http verb</a>. <em>Defaults to <code>GET</code></em>.
+      </td>
+    </tr>
+    <tr>
+      <th>
+        <code>options.url</code>
+      </th>
+      <td>
+        String
+      </td>
+      <td>
+        <strong>Required unless <code>route</code> is set.</strong> A path or full URL which may contain <code>:variable</code> or <code>{variable}</code> placeholders,
+        e.g., <code>/orgs/:org/repos</code>. The <code>url</code> is parsed using <a href="https://github.com/bramstein/url-template">url-template</a>.
+      </td>
+    </tr>
+    <tr>
+      <th>
+        <code>options.baseUrl</code>
+      </th>
+      <td>
+        String
+      </td>
+      <td>
+        <em>Defaults to <code>https://api.github.com</code></em>.
+      </td>
+    </tr>
+    <tr>
+      <th>
+        <code>options.headers</code>
+      </th>
+      <td>
+        Object
+      </td>
+      <td>
+        Custom headers. Passed headers are merged with defaults:<br>
+        <em><code>headers['user-agent']</code> defaults to <code>octokit-endpoint.js/1.2.3</code> (where <code>1.2.3</code> is the released version)</em>.<br>
+        <em><code>headers['accept']</code> defaults to <code>application/vnd.github.v3+json</code></em>.<br>
+      </td>
+    </tr>
+    <tr>
+      <th>
+        <code>options.mediaType.format</code>
+      </th>
+      <td>
+        String
+      </td>
+      <td>
+        Media type param, such as <code>raw</code>, <code>diff</code>, or <code>text+json</code>. See <a href="https://developer.github.com/v3/media/">Media Types</a>. Setting <code>options.mediaType.format</code> will amend the <code>headers.accept</code> value.
+      </td>
+    </tr>
+    <tr>
+      <th>
+        <code>options.mediaType.previews</code>
+      </th>
+      <td>
+        Array of Strings
+      </td>
+      <td>
+        Name of previews, such as <code>mercy</code>, <code>symmetra</code>, or <code>scarlet-witch</code>. See <a href="https://developer.github.com/v3/previews/">API Previews</a>. If <code>options.mediaType.previews</code> was set as default, the new previews will be merged into the default ones. Setting <code>options.mediaType.previews</code> will amend the <code>headers.accept</code> value. <code>options.mediaType.previews</code> will be merged with an existing array set using <code>.defaults()</code>.
+      </td>
+    </tr>
+    <tr>
+      <th>
+        <code>options.data</code>
+      </th>
+      <td>
+        Any
+      </td>
+      <td>
+        Set request body directly instead of setting it to JSON based on additional parameters. See <a href="#data-parameter">"The <code>data</code> parameter"</a> below.
+      </td>
+    </tr>
+    <tr>
+      <th>
+        <code>options.request</code>
+      </th>
+      <td>
+        Object
+      </td>
+      <td>
+        Pass custom meta information for the request. The <code>request</code> object will be returned as is.
+      </td>
+    </tr>
+  </tbody>
+</table>
+
+All other options will be passed depending on the `method` and `url` options.
+
+1. If the option key has a placeholder in the `url`, it will be used as the replacement. For example, if the passed options are `{url: '/orgs/:org/repos', org: 'foo'}` the returned `options.url` is `https://api.github.com/orgs/foo/repos`.
+2. If the `method` is `GET` or `HEAD`, the option is passed as a query parameter.
+3. Otherwise, the parameter is passed in the request body as a JSON key.
+
+**Result**
+
+`endpoint()` is a synchronous method and returns an object with the following keys:
+
+<table>
+  <thead align=left>
+    <tr>
+      <th>
+        key
+      </th>
+      <th>
+        type
+      </th>
+      <th width=100%>
+        description
+      </th>
+    </tr>
+  </thead>
+  <tbody align=left valign=top>
+    <tr>
+      <th><code>method</code></th>
+      <td>String</td>
+      <td>The http method. Always lowercase.</td>
+    </tr>
+    <tr>
+      <th><code>url</code></th>
+      <td>String</td>
+      <td>The url with placeholders replaced with passed parameters.</td>
+    </tr>
+    <tr>
+      <th><code>headers</code></th>
+      <td>Object</td>
+      <td>All header names are lowercased.</td>
+    </tr>
+    <tr>
+      <th><code>body</code></th>
+      <td>Any</td>
+      <td>The request body if one is present. Only for <code>PATCH</code>, <code>POST</code>, <code>PUT</code>, <code>DELETE</code> requests.</td>
+    </tr>
+    <tr>
+      <th><code>request</code></th>
+      <td>Object</td>
+      <td>Request meta option, it will be returned as it was passed into <code>endpoint()</code></td>
+    </tr>
+  </tbody>
+</table>
+
+### `endpoint.defaults()`
+
+Override or set default options. Example:
+
+```js
+const request = require("request");
+const myEndpoint = require("@octokit/endpoint").defaults({
+  baseUrl: "https://github-enterprise.acme-inc.com/api/v3",
+  headers: {
+    "user-agent": "myApp/1.2.3",
+    authorization: `token 0000000000000000000000000000000000000001`
+  },
+  org: "my-project",
+  per_page: 100
+});
+
+request(myEndpoint(`GET /orgs/:org/repos`));
+```
+
+You can call `.defaults()` again on the returned method, the defaults will cascade.
+
+```js
+const myProjectEndpoint = endpoint.defaults({
+  baseUrl: "https://github-enterprise.acme-inc.com/api/v3",
+  headers: {
+    "user-agent": "myApp/1.2.3"
+  },
+  org: "my-project"
+});
+const myProjectEndpointWithAuth = myProjectEndpoint.defaults({
+  headers: {
+    authorization: `token 0000000000000000000000000000000000000001`
+  }
+});
+```
+
+`myProjectEndpointWithAuth` now defaults the `baseUrl`, `headers['user-agent']`,
+`org` and `headers['authorization']` on top of `headers['accept']` that is set
+by the global default.
+
+### `endpoint.DEFAULTS`
+
+The current default options.
+
+```js
+endpoint.DEFAULTS.baseUrl; // https://api.github.com
+const myEndpoint = endpoint.defaults({
+  baseUrl: "https://github-enterprise.acme-inc.com/api/v3"
+});
+myEndpoint.DEFAULTS.baseUrl; // https://github-enterprise.acme-inc.com/api/v3
+```
+
+### `endpoint.merge(route, options)` or `endpoint.merge(options)`
+
+Get the defaulted endpoint options, but without parsing them into request options:
+
+```js
+const myProjectEndpoint = endpoint.defaults({
+  baseUrl: "https://github-enterprise.acme-inc.com/api/v3",
+  headers: {
+    "user-agent": "myApp/1.2.3"
+  },
+  org: "my-project"
+});
+myProjectEndpoint.merge("GET /orgs/:org/repos", {
+  headers: {
+    authorization: `token 0000000000000000000000000000000000000001`
+  },
+  org: "my-secret-project",
+  type: "private"
+});
+
+// {
+//   baseUrl: 'https://github-enterprise.acme-inc.com/api/v3',
+//   method: 'GET',
+//   url: '/orgs/:org/repos',
+//   headers: {
+//     accept: 'application/vnd.github.v3+json',
+//     authorization: `token 0000000000000000000000000000000000000001`,
+//     'user-agent': 'myApp/1.2.3'
+//   },
+//   org: 'my-secret-project',
+//   type: 'private'
+// }
+```
+
+### `endpoint.parse()`
+
+Stateless method to turn endpoint options into request options. Calling
+`endpoint(options)` is the same as calling `endpoint.parse(endpoint.merge(options))`.
+
+## Special cases
+
+<a name="data-parameter"></a>
+
+### The `data` parameter – set request body directly
+
+Some endpoints such as [Render a Markdown document in raw mode](https://developer.github.com/v3/markdown/#render-a-markdown-document-in-raw-mode) don’t have parameters that are sent as request body keys, instead, the request body needs to be set directly. In these cases, set the `data` parameter.
+
+```js
+const options = endpoint("POST /markdown/raw", {
+  data: "Hello world github/linguist#1 **cool**, and #1!",
+  headers: {
+    accept: "text/html;charset=utf-8",
+    "content-type": "text/plain"
+  }
+});
+
+// options is
+// {
+//   method: 'post',
+//   url: 'https://api.github.com/markdown/raw',
+//   headers: {
+//     accept: 'text/html;charset=utf-8',
+//     'content-type': 'text/plain',
+//     'user-agent': userAgent
+//   },
+//   body: 'Hello world github/linguist#1 **cool**, and #1!'
+// }
+```
+
+### Set parameters for both the URL/query and the request body
+
+There are API endpoints that accept both query parameters as well as a body. In that case, you need to add the query parameters as templates to `options.url`, as defined in the [RFC 6570 URI Template specification](https://tools.ietf.org/html/rfc6570).
+
+Example
+
+```js
+endpoint(
+  "POST https://uploads.github.com/repos/octocat/Hello-World/releases/1/assets{?name,label}",
+  {
+    name: "example.zip",
+    label: "short description",
+    headers: {
+      "content-type": "text/plain",
+      "content-length": 14,
+      authorization: `token 0000000000000000000000000000000000000001`
+    },
+    data: "Hello, world!"
+  }
+);
+```
+
+## LICENSE
+
+[MIT](LICENSE)
diff --git a/setup-maven/node_modules/@octokit/endpoint/dist-node/index.js b/setup-maven/node_modules/@octokit/endpoint/dist-node/index.js
new file mode 100644
index 0000000..9218ced
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/dist-node/index.js
@@ -0,0 +1,379 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
+
+var isPlainObject = _interopDefault(require('is-plain-object'));
+var universalUserAgent = require('universal-user-agent');
+
+function lowercaseKeys(object) {
+  if (!object) {
+    return {};
+  }
+
+  return Object.keys(object).reduce((newObj, key) => {
+    newObj[key.toLowerCase()] = object[key];
+    return newObj;
+  }, {});
+}
+
+function mergeDeep(defaults, options) {
+  const result = Object.assign({}, defaults);
+  Object.keys(options).forEach(key => {
+    if (isPlainObject(options[key])) {
+      if (!(key in defaults)) Object.assign(result, {
+        [key]: options[key]
+      });else result[key] = mergeDeep(defaults[key], options[key]);
+    } else {
+      Object.assign(result, {
+        [key]: options[key]
+      });
+    }
+  });
+  return result;
+}
+
+function merge(defaults, route, options) {
+  if (typeof route === "string") {
+    let [method, url] = route.split(" ");
+    options = Object.assign(url ? {
+      method,
+      url
+    } : {
+      url: method
+    }, options);
+  } else {
+    options = Object.assign({}, route);
+  } // lowercase header names before merging with defaults to avoid duplicates
+
+
+  options.headers = lowercaseKeys(options.headers);
+  const mergedOptions = mergeDeep(defaults || {}, options); // mediaType.previews arrays are merged, instead of overwritten
+
+  if (defaults && defaults.mediaType.previews.length) {
+    mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(preview => !mergedOptions.mediaType.previews.includes(preview)).concat(mergedOptions.mediaType.previews);
+  }
+
+  mergedOptions.mediaType.previews = mergedOptions.mediaType.previews.map(preview => preview.replace(/-preview/, ""));
+  return mergedOptions;
+}
+
+function addQueryParameters(url, parameters) {
+  const separator = /\?/.test(url) ? "&" : "?";
+  const names = Object.keys(parameters);
+
+  if (names.length === 0) {
+    return url;
+  }
+
+  return url + separator + names.map(name => {
+    if (name === "q") {
+      return "q=" + parameters.q.split("+").map(encodeURIComponent).join("+");
+    }
+
+    return `${name}=${encodeURIComponent(parameters[name])}`;
+  }).join("&");
+}
+
+const urlVariableRegex = /\{[^}]+\}/g;
+
+function removeNonChars(variableName) {
+  return variableName.replace(/^\W+|\W+$/g, "").split(/,/);
+}
+
+function extractUrlVariableNames(url) {
+  const matches = url.match(urlVariableRegex);
+
+  if (!matches) {
+    return [];
+  }
+
+  return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);
+}
+
+function omit(object, keysToOmit) {
+  return Object.keys(object).filter(option => !keysToOmit.includes(option)).reduce((obj, key) => {
+    obj[key] = object[key];
+    return obj;
+  }, {});
+}
+
+// Based on https://github.com/bramstein/url-template, licensed under BSD
+// TODO: create separate package.
+//
+// Copyright (c) 2012-2014, Bram Stein
+// All rights reserved.
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+//  1. Redistributions of source code must retain the above copyright
+//     notice, this list of conditions and the following disclaimer.
+//  2. Redistributions in binary form must reproduce the above copyright
+//     notice, this list of conditions and the following disclaimer in the
+//     documentation and/or other materials provided with the distribution.
+//  3. The name of the author may not be used to endorse or promote products
+//     derived from this software without specific prior written permission.
+// THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
+// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+// EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/* istanbul ignore file */
+function encodeReserved(str) {
+  return str.split(/(%[0-9A-Fa-f]{2})/g).map(function (part) {
+    if (!/%[0-9A-Fa-f]/.test(part)) {
+      part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]");
+    }
+
+    return part;
+  }).join("");
+}
+
+function encodeUnreserved(str) {
+  return encodeURIComponent(str).replace(/[!'()*]/g, function (c) {
+    return "%" + c.charCodeAt(0).toString(16).toUpperCase();
+  });
+}
+
+function encodeValue(operator, value, key) {
+  value = operator === "+" || operator === "#" ? encodeReserved(value) : encodeUnreserved(value);
+
+  if (key) {
+    return encodeUnreserved(key) + "=" + value;
+  } else {
+    return value;
+  }
+}
+
+function isDefined(value) {
+  return value !== undefined && value !== null;
+}
+
+function isKeyOperator(operator) {
+  return operator === ";" || operator === "&" || operator === "?";
+}
+
+function getValues(context, operator, key, modifier) {
+  var value = context[key],
+      result = [];
+
+  if (isDefined(value) && value !== "") {
+    if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
+      value = value.toString();
+
+      if (modifier && modifier !== "*") {
+        value = value.substring(0, parseInt(modifier, 10));
+      }
+
+      result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : ""));
+    } else {
+      if (modifier === "*") {
+        if (Array.isArray(value)) {
+          value.filter(isDefined).forEach(function (value) {
+            result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : ""));
+          });
+        } else {
+          Object.keys(value).forEach(function (k) {
+            if (isDefined(value[k])) {
+              result.push(encodeValue(operator, value[k], k));
+            }
+          });
+        }
+      } else {
+        const tmp = [];
+
+        if (Array.isArray(value)) {
+          value.filter(isDefined).forEach(function (value) {
+            tmp.push(encodeValue(operator, value));
+          });
+        } else {
+          Object.keys(value).forEach(function (k) {
+            if (isDefined(value[k])) {
+              tmp.push(encodeUnreserved(k));
+              tmp.push(encodeValue(operator, value[k].toString()));
+            }
+          });
+        }
+
+        if (isKeyOperator(operator)) {
+          result.push(encodeUnreserved(key) + "=" + tmp.join(","));
+        } else if (tmp.length !== 0) {
+          result.push(tmp.join(","));
+        }
+      }
+    }
+  } else {
+    if (operator === ";") {
+      if (isDefined(value)) {
+        result.push(encodeUnreserved(key));
+      }
+    } else if (value === "" && (operator === "&" || operator === "?")) {
+      result.push(encodeUnreserved(key) + "=");
+    } else if (value === "") {
+      result.push("");
+    }
+  }
+
+  return result;
+}
+
+function parseUrl(template) {
+  return {
+    expand: expand.bind(null, template)
+  };
+}
+
+function expand(template, context) {
+  var operators = ["+", "#", ".", "/", ";", "?", "&"];
+  return template.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g, function (_, expression, literal) {
+    if (expression) {
+      let operator = "";
+      const values = [];
+
+      if (operators.indexOf(expression.charAt(0)) !== -1) {
+        operator = expression.charAt(0);
+        expression = expression.substr(1);
+      }
+
+      expression.split(/,/g).forEach(function (variable) {
+        var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable);
+        values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));
+      });
+
+      if (operator && operator !== "+") {
+        var separator = ",";
+
+        if (operator === "?") {
+          separator = "&";
+        } else if (operator !== "#") {
+          separator = operator;
+        }
+
+        return (values.length !== 0 ? operator : "") + values.join(separator);
+      } else {
+        return values.join(",");
+      }
+    } else {
+      return encodeReserved(literal);
+    }
+  });
+}
+
+function parse(options) {
+  // https://fetch.spec.whatwg.org/#methods
+  let method = options.method.toUpperCase(); // replace :varname with {varname} to make it RFC 6570 compatible
+
+  let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{+$1}");
+  let headers = Object.assign({}, options.headers);
+  let body;
+  let parameters = omit(options, ["method", "baseUrl", "url", "headers", "request", "mediaType"]); // extract variable names from URL to calculate remaining variables later
+
+  const urlVariableNames = extractUrlVariableNames(url);
+  url = parseUrl(url).expand(parameters);
+
+  if (!/^http/.test(url)) {
+    url = options.baseUrl + url;
+  }
+
+  const omittedParameters = Object.keys(options).filter(option => urlVariableNames.includes(option)).concat("baseUrl");
+  const remainingParameters = omit(parameters, omittedParameters);
+  const isBinaryRequset = /application\/octet-stream/i.test(headers.accept);
+
+  if (!isBinaryRequset) {
+    if (options.mediaType.format) {
+      // e.g. application/vnd.github.v3+json => application/vnd.github.v3.raw
+      headers.accept = headers.accept.split(/,/).map(preview => preview.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, `application/vnd$1$2.${options.mediaType.format}`)).join(",");
+    }
+
+    if (options.mediaType.previews.length) {
+      const previewsFromAcceptHeader = headers.accept.match(/[\w-]+(?=-preview)/g) || [];
+      headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map(preview => {
+        const format = options.mediaType.format ? `.${options.mediaType.format}` : "+json";
+        return `application/vnd.github.${preview}-preview${format}`;
+      }).join(",");
+    }
+  } // for GET/HEAD requests, set URL query parameters from remaining parameters
+  // for PATCH/POST/PUT/DELETE requests, set request body from remaining parameters
+
+
+  if (["GET", "HEAD"].includes(method)) {
+    url = addQueryParameters(url, remainingParameters);
+  } else {
+    if ("data" in remainingParameters) {
+      body = remainingParameters.data;
+    } else {
+      if (Object.keys(remainingParameters).length) {
+        body = remainingParameters;
+      } else {
+        headers["content-length"] = 0;
+      }
+    }
+  } // default content-type for JSON if body is set
+
+
+  if (!headers["content-type"] && typeof body !== "undefined") {
+    headers["content-type"] = "application/json; charset=utf-8";
+  } // GitHub expects 'content-length: 0' header for PUT/PATCH requests without body.
+  // fetch does not allow to set `content-length` header, but we can set body to an empty string
+
+
+  if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") {
+    body = "";
+  } // Only return body/request keys if present
+
+
+  return Object.assign({
+    method,
+    url,
+    headers
+  }, typeof body !== "undefined" ? {
+    body
+  } : null, options.request ? {
+    request: options.request
+  } : null);
+}
+
+function endpointWithDefaults(defaults, route, options) {
+  return parse(merge(defaults, route, options));
+}
+
+function withDefaults(oldDefaults, newDefaults) {
+  const DEFAULTS = merge(oldDefaults, newDefaults);
+  const endpoint = endpointWithDefaults.bind(null, DEFAULTS);
+  return Object.assign(endpoint, {
+    DEFAULTS,
+    defaults: withDefaults.bind(null, DEFAULTS),
+    merge: merge.bind(null, DEFAULTS),
+    parse
+  });
+}
+
+const VERSION = "5.5.1";
+
+const userAgent = `octokit-endpoint.js/${VERSION} ${universalUserAgent.getUserAgent()}`; // DEFAULTS has all properties set that EndpointOptions has, except url.
+// So we use RequestParameters and add method as additional required property.
+
+const DEFAULTS = {
+  method: "GET",
+  baseUrl: "https://api.github.com",
+  headers: {
+    accept: "application/vnd.github.v3+json",
+    "user-agent": userAgent
+  },
+  mediaType: {
+    format: "",
+    previews: []
+  }
+};
+
+const endpoint = withDefaults(null, DEFAULTS);
+
+exports.endpoint = endpoint;
+//# sourceMappingURL=index.js.map
diff --git a/setup-maven/node_modules/@octokit/endpoint/dist-node/index.js.map b/setup-maven/node_modules/@octokit/endpoint/dist-node/index.js.map
new file mode 100644
index 0000000..d84c1b7
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/dist-node/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sources":["../dist-src/util/lowercase-keys.js","../dist-src/util/merge-deep.js","../dist-src/merge.js","../dist-src/util/add-query-parameters.js","../dist-src/util/extract-url-variable-names.js","../dist-src/util/omit.js","../dist-src/util/url-template.js","../dist-src/parse.js","../dist-src/endpoint-with-defaults.js","../dist-src/with-defaults.js","../dist-src/version.js","../dist-src/defaults.js","../dist-src/index.js"],"sourcesContent":["export function lowercaseKeys(object) {\n    if (!object) {\n        return {};\n    }\n    return Object.keys(object).reduce((newObj, key) => {\n        newObj[key.toLowerCase()] = object[key];\n        return newObj;\n    }, {});\n}\n","import isPlainObject from \"is-plain-object\";\nexport function mergeDeep(defaults, options) {\n    const result = Object.assign({}, defaults);\n    Object.keys(options).forEach(key => {\n        if (isPlainObject(options[key])) {\n            if (!(key in defaults))\n                Object.assign(result, { [key]: options[key] });\n            else\n                result[key] = mergeDeep(defaults[key], options[key]);\n        }\n        else {\n            Object.assign(result, { [key]: options[key] });\n        }\n    });\n    return result;\n}\n","import { lowercaseKeys } from \"./util/lowercase-keys\";\nimport { mergeDeep } from \"./util/merge-deep\";\nexport function merge(defaults, route, options) {\n    if (typeof route === \"string\") {\n        let [method, url] = route.split(\" \");\n        options = Object.assign(url ? { method, url } : { url: method }, options);\n    }\n    else {\n        options = Object.assign({}, route);\n    }\n    // lowercase header names before merging with defaults to avoid duplicates\n    options.headers = lowercaseKeys(options.headers);\n    const mergedOptions = mergeDeep(defaults || {}, options);\n    // mediaType.previews arrays are merged, instead of overwritten\n    if (defaults && defaults.mediaType.previews.length) {\n        mergedOptions.mediaType.previews = defaults.mediaType.previews\n            .filter(preview => !mergedOptions.mediaType.previews.includes(preview))\n            .concat(mergedOptions.mediaType.previews);\n    }\n    mergedOptions.mediaType.previews = mergedOptions.mediaType.previews.map((preview) => preview.replace(/-preview/, \"\"));\n    return mergedOptions;\n}\n","export function addQueryParameters(url, parameters) {\n    const separator = /\\?/.test(url) ? \"&\" : \"?\";\n    const names = Object.keys(parameters);\n    if (names.length === 0) {\n        return url;\n    }\n    return (url +\n        separator +\n        names\n            .map(name => {\n            if (name === \"q\") {\n                return (\"q=\" +\n                    parameters\n                        .q.split(\"+\")\n                        .map(encodeURIComponent)\n                        .join(\"+\"));\n            }\n            return `${name}=${encodeURIComponent(parameters[name])}`;\n        })\n            .join(\"&\"));\n}\n","const urlVariableRegex = /\\{[^}]+\\}/g;\nfunction removeNonChars(variableName) {\n    return variableName.replace(/^\\W+|\\W+$/g, \"\").split(/,/);\n}\nexport function extractUrlVariableNames(url) {\n    const matches = url.match(urlVariableRegex);\n    if (!matches) {\n        return [];\n    }\n    return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);\n}\n","export function omit(object, keysToOmit) {\n    return Object.keys(object)\n        .filter(option => !keysToOmit.includes(option))\n        .reduce((obj, key) => {\n        obj[key] = object[key];\n        return obj;\n    }, {});\n}\n","// Based on https://github.com/bramstein/url-template, licensed under BSD\n// TODO: create separate package.\n//\n// Copyright (c) 2012-2014, Bram Stein\n// All rights reserved.\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions\n// are met:\n//  1. Redistributions of source code must retain the above copyright\n//     notice, this list of conditions and the following disclaimer.\n//  2. Redistributions in binary form must reproduce the above copyright\n//     notice, this list of conditions and the following disclaimer in the\n//     documentation and/or other materials provided with the distribution.\n//  3. The name of the author may not be used to endorse or promote products\n//     derived from this software without specific prior written permission.\n// THIS SOFTWARE IS PROVIDED BY THE AUTHOR \"AS IS\" AND ANY EXPRESS OR IMPLIED\n// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n// EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n/* istanbul ignore file */\nfunction encodeReserved(str) {\n    return str\n        .split(/(%[0-9A-Fa-f]{2})/g)\n        .map(function (part) {\n        if (!/%[0-9A-Fa-f]/.test(part)) {\n            part = encodeURI(part)\n                .replace(/%5B/g, \"[\")\n                .replace(/%5D/g, \"]\");\n        }\n        return part;\n    })\n        .join(\"\");\n}\nfunction encodeUnreserved(str) {\n    return encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n        return (\"%\" +\n            c\n                .charCodeAt(0)\n                .toString(16)\n                .toUpperCase());\n    });\n}\nfunction encodeValue(operator, value, key) {\n    value =\n        operator === \"+\" || operator === \"#\"\n            ? encodeReserved(value)\n            : encodeUnreserved(value);\n    if (key) {\n        return encodeUnreserved(key) + \"=\" + value;\n    }\n    else {\n        return value;\n    }\n}\nfunction isDefined(value) {\n    return value !== undefined && value !== null;\n}\nfunction isKeyOperator(operator) {\n    return operator === \";\" || operator === \"&\" || operator === \"?\";\n}\nfunction getValues(context, operator, key, modifier) {\n    var value = context[key], result = [];\n    if (isDefined(value) && value !== \"\") {\n        if (typeof value === \"string\" ||\n            typeof value === \"number\" ||\n            typeof value === \"boolean\") {\n            value = value.toString();\n            if (modifier && modifier !== \"*\") {\n                value = value.substring(0, parseInt(modifier, 10));\n            }\n            result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : \"\"));\n        }\n        else {\n            if (modifier === \"*\") {\n                if (Array.isArray(value)) {\n                    value.filter(isDefined).forEach(function (value) {\n                        result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : \"\"));\n                    });\n                }\n                else {\n                    Object.keys(value).forEach(function (k) {\n                        if (isDefined(value[k])) {\n                            result.push(encodeValue(operator, value[k], k));\n                        }\n                    });\n                }\n            }\n            else {\n                const tmp = [];\n                if (Array.isArray(value)) {\n                    value.filter(isDefined).forEach(function (value) {\n                        tmp.push(encodeValue(operator, value));\n                    });\n                }\n                else {\n                    Object.keys(value).forEach(function (k) {\n                        if (isDefined(value[k])) {\n                            tmp.push(encodeUnreserved(k));\n                            tmp.push(encodeValue(operator, value[k].toString()));\n                        }\n                    });\n                }\n                if (isKeyOperator(operator)) {\n                    result.push(encodeUnreserved(key) + \"=\" + tmp.join(\",\"));\n                }\n                else if (tmp.length !== 0) {\n                    result.push(tmp.join(\",\"));\n                }\n            }\n        }\n    }\n    else {\n        if (operator === \";\") {\n            if (isDefined(value)) {\n                result.push(encodeUnreserved(key));\n            }\n        }\n        else if (value === \"\" && (operator === \"&\" || operator === \"?\")) {\n            result.push(encodeUnreserved(key) + \"=\");\n        }\n        else if (value === \"\") {\n            result.push(\"\");\n        }\n    }\n    return result;\n}\nexport function parseUrl(template) {\n    return {\n        expand: expand.bind(null, template)\n    };\n}\nfunction expand(template, context) {\n    var operators = [\"+\", \"#\", \".\", \"/\", \";\", \"?\", \"&\"];\n    return template.replace(/\\{([^\\{\\}]+)\\}|([^\\{\\}]+)/g, function (_, expression, literal) {\n        if (expression) {\n            let operator = \"\";\n            const values = [];\n            if (operators.indexOf(expression.charAt(0)) !== -1) {\n                operator = expression.charAt(0);\n                expression = expression.substr(1);\n            }\n            expression.split(/,/g).forEach(function (variable) {\n                var tmp = /([^:\\*]*)(?::(\\d+)|(\\*))?/.exec(variable);\n                values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));\n            });\n            if (operator && operator !== \"+\") {\n                var separator = \",\";\n                if (operator === \"?\") {\n                    separator = \"&\";\n                }\n                else if (operator !== \"#\") {\n                    separator = operator;\n                }\n                return (values.length !== 0 ? operator : \"\") + values.join(separator);\n            }\n            else {\n                return values.join(\",\");\n            }\n        }\n        else {\n            return encodeReserved(literal);\n        }\n    });\n}\n","import { addQueryParameters } from \"./util/add-query-parameters\";\nimport { extractUrlVariableNames } from \"./util/extract-url-variable-names\";\nimport { omit } from \"./util/omit\";\nimport { parseUrl } from \"./util/url-template\";\nexport function parse(options) {\n    // https://fetch.spec.whatwg.org/#methods\n    let method = options.method.toUpperCase();\n    // replace :varname with {varname} to make it RFC 6570 compatible\n    let url = (options.url || \"/\").replace(/:([a-z]\\w+)/g, \"{+$1}\");\n    let headers = Object.assign({}, options.headers);\n    let body;\n    let parameters = omit(options, [\n        \"method\",\n        \"baseUrl\",\n        \"url\",\n        \"headers\",\n        \"request\",\n        \"mediaType\"\n    ]);\n    // extract variable names from URL to calculate remaining variables later\n    const urlVariableNames = extractUrlVariableNames(url);\n    url = parseUrl(url).expand(parameters);\n    if (!/^http/.test(url)) {\n        url = options.baseUrl + url;\n    }\n    const omittedParameters = Object.keys(options)\n        .filter(option => urlVariableNames.includes(option))\n        .concat(\"baseUrl\");\n    const remainingParameters = omit(parameters, omittedParameters);\n    const isBinaryRequset = /application\\/octet-stream/i.test(headers.accept);\n    if (!isBinaryRequset) {\n        if (options.mediaType.format) {\n            // e.g. application/vnd.github.v3+json => application/vnd.github.v3.raw\n            headers.accept = headers.accept\n                .split(/,/)\n                .map(preview => preview.replace(/application\\/vnd(\\.\\w+)(\\.v3)?(\\.\\w+)?(\\+json)?$/, `application/vnd$1$2.${options.mediaType.format}`))\n                .join(\",\");\n        }\n        if (options.mediaType.previews.length) {\n            const previewsFromAcceptHeader = headers.accept.match(/[\\w-]+(?=-preview)/g) || [];\n            headers.accept = previewsFromAcceptHeader\n                .concat(options.mediaType.previews)\n                .map(preview => {\n                const format = options.mediaType.format\n                    ? `.${options.mediaType.format}`\n                    : \"+json\";\n                return `application/vnd.github.${preview}-preview${format}`;\n            })\n                .join(\",\");\n        }\n    }\n    // for GET/HEAD requests, set URL query parameters from remaining parameters\n    // for PATCH/POST/PUT/DELETE requests, set request body from remaining parameters\n    if ([\"GET\", \"HEAD\"].includes(method)) {\n        url = addQueryParameters(url, remainingParameters);\n    }\n    else {\n        if (\"data\" in remainingParameters) {\n            body = remainingParameters.data;\n        }\n        else {\n            if (Object.keys(remainingParameters).length) {\n                body = remainingParameters;\n            }\n            else {\n                headers[\"content-length\"] = 0;\n            }\n        }\n    }\n    // default content-type for JSON if body is set\n    if (!headers[\"content-type\"] && typeof body !== \"undefined\") {\n        headers[\"content-type\"] = \"application/json; charset=utf-8\";\n    }\n    // GitHub expects 'content-length: 0' header for PUT/PATCH requests without body.\n    // fetch does not allow to set `content-length` header, but we can set body to an empty string\n    if ([\"PATCH\", \"PUT\"].includes(method) && typeof body === \"undefined\") {\n        body = \"\";\n    }\n    // Only return body/request keys if present\n    return Object.assign({ method, url, headers }, typeof body !== \"undefined\" ? { body } : null, options.request ? { request: options.request } : null);\n}\n","import { merge } from \"./merge\";\nimport { parse } from \"./parse\";\nexport function endpointWithDefaults(defaults, route, options) {\n    return parse(merge(defaults, route, options));\n}\n","import { endpointWithDefaults } from \"./endpoint-with-defaults\";\nimport { merge } from \"./merge\";\nimport { parse } from \"./parse\";\nexport function withDefaults(oldDefaults, newDefaults) {\n    const DEFAULTS = merge(oldDefaults, newDefaults);\n    const endpoint = endpointWithDefaults.bind(null, DEFAULTS);\n    return Object.assign(endpoint, {\n        DEFAULTS,\n        defaults: withDefaults.bind(null, DEFAULTS),\n        merge: merge.bind(null, DEFAULTS),\n        parse\n    });\n}\n","export const VERSION = \"5.5.1\";\n","import { getUserAgent } from \"universal-user-agent\";\nimport { VERSION } from \"./version\";\nconst userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`;\n// DEFAULTS has all properties set that EndpointOptions has, except url.\n// So we use RequestParameters and add method as additional required property.\nexport const DEFAULTS = {\n    method: \"GET\",\n    baseUrl: \"https://api.github.com\",\n    headers: {\n        accept: \"application/vnd.github.v3+json\",\n        \"user-agent\": userAgent\n    },\n    mediaType: {\n        format: \"\",\n        previews: []\n    }\n};\n","import { withDefaults } from \"./with-defaults\";\nimport { DEFAULTS } from \"./defaults\";\nexport const endpoint = withDefaults(null, DEFAULTS);\n"],"names":["lowercaseKeys","object","Object","keys","reduce","newObj","key","toLowerCase","mergeDeep","defaults","options","result","assign","forEach","isPlainObject","merge","route","method","url","split","headers","mergedOptions","mediaType","previews","length","filter","preview","includes","concat","map","replace","addQueryParameters","parameters","separator","test","names","name","q","encodeURIComponent","join","urlVariableRegex","removeNonChars","variableName","extractUrlVariableNames","matches","match","a","b","omit","keysToOmit","option","obj","encodeReserved","str","part","encodeURI","encodeUnreserved","c","charCodeAt","toString","toUpperCase","encodeValue","operator","value","isDefined","undefined","isKeyOperator","getValues","context","modifier","substring","parseInt","push","Array","isArray","k","tmp","parseUrl","template","expand","bind","operators","_","expression","literal","values","indexOf","charAt","substr","variable","exec","parse","body","urlVariableNames","baseUrl","omittedParameters","remainingParameters","isBinaryRequset","accept","format","previewsFromAcceptHeader","data","request","endpointWithDefaults","withDefaults","oldDefaults","newDefaults","DEFAULTS","endpoint","VERSION","userAgent","getUserAgent"],"mappings":";;;;;;;;;AAAO,SAASA,aAAT,CAAuBC,MAAvB,EAA+B;MAC9B,CAACA,MAAL,EAAa;WACF,EAAP;;;SAEGC,MAAM,CAACC,IAAP,CAAYF,MAAZ,EAAoBG,MAApB,CAA2B,CAACC,MAAD,EAASC,GAAT,KAAiB;IAC/CD,MAAM,CAACC,GAAG,CAACC,WAAJ,EAAD,CAAN,GAA4BN,MAAM,CAACK,GAAD,CAAlC;WACOD,MAAP;GAFG,EAGJ,EAHI,CAAP;;;ACHG,SAASG,SAAT,CAAmBC,QAAnB,EAA6BC,OAA7B,EAAsC;QACnCC,MAAM,GAAGT,MAAM,CAACU,MAAP,CAAc,EAAd,EAAkBH,QAAlB,CAAf;EACAP,MAAM,CAACC,IAAP,CAAYO,OAAZ,EAAqBG,OAArB,CAA6BP,GAAG,IAAI;QAC5BQ,aAAa,CAACJ,OAAO,CAACJ,GAAD,CAAR,CAAjB,EAAiC;UACzB,EAAEA,GAAG,IAAIG,QAAT,CAAJ,EACIP,MAAM,CAACU,MAAP,CAAcD,MAAd,EAAsB;SAAGL,GAAD,GAAOI,OAAO,CAACJ,GAAD;OAAtC,EADJ,KAGIK,MAAM,CAACL,GAAD,CAAN,GAAcE,SAAS,CAACC,QAAQ,CAACH,GAAD,CAAT,EAAgBI,OAAO,CAACJ,GAAD,CAAvB,CAAvB;KAJR,MAMK;MACDJ,MAAM,CAACU,MAAP,CAAcD,MAAd,EAAsB;SAAGL,GAAD,GAAOI,OAAO,CAACJ,GAAD;OAAtC;;GARR;SAWOK,MAAP;;;ACZG,SAASI,KAAT,CAAeN,QAAf,EAAyBO,KAAzB,EAAgCN,OAAhC,EAAyC;MACxC,OAAOM,KAAP,KAAiB,QAArB,EAA+B;QACvB,CAACC,MAAD,EAASC,GAAT,IAAgBF,KAAK,CAACG,KAAN,CAAY,GAAZ,CAApB;IACAT,OAAO,GAAGR,MAAM,CAACU,MAAP,CAAcM,GAAG,GAAG;MAAED,MAAF;MAAUC;KAAb,GAAqB;MAAEA,GAAG,EAAED;KAA7C,EAAuDP,OAAvD,CAAV;GAFJ,MAIK;IACDA,OAAO,GAAGR,MAAM,CAACU,MAAP,CAAc,EAAd,EAAkBI,KAAlB,CAAV;GANwC;;;EAS5CN,OAAO,CAACU,OAAR,GAAkBpB,aAAa,CAACU,OAAO,CAACU,OAAT,CAA/B;QACMC,aAAa,GAAGb,SAAS,CAACC,QAAQ,IAAI,EAAb,EAAiBC,OAAjB,CAA/B,CAV4C;;MAYxCD,QAAQ,IAAIA,QAAQ,CAACa,SAAT,CAAmBC,QAAnB,CAA4BC,MAA5C,EAAoD;IAChDH,aAAa,CAACC,SAAd,CAAwBC,QAAxB,GAAmCd,QAAQ,CAACa,SAAT,CAAmBC,QAAnB,CAC9BE,MAD8B,CACvBC,OAAO,IAAI,CAACL,aAAa,CAACC,SAAd,CAAwBC,QAAxB,CAAiCI,QAAjC,CAA0CD,OAA1C,CADW,EAE9BE,MAF8B,CAEvBP,aAAa,CAACC,SAAd,CAAwBC,QAFD,CAAnC;;;EAIJF,aAAa,CAACC,SAAd,CAAwBC,QAAxB,GAAmCF,aAAa,CAACC,SAAd,CAAwBC,QAAxB,CAAiCM,GAAjC,CAAsCH,OAAD,IAAaA,OAAO,CAACI,OAAR,CAAgB,UAAhB,EAA4B,EAA5B,CAAlD,CAAnC;SACOT,aAAP;;;ACpBG,SAASU,kBAAT,CAA4Bb,GAA5B,EAAiCc,UAAjC,EAA6C;QAC1CC,SAAS,GAAG,KAAKC,IAAL,CAAUhB,GAAV,IAAiB,GAAjB,GAAuB,GAAzC;QACMiB,KAAK,GAAGjC,MAAM,CAACC,IAAP,CAAY6B,UAAZ,CAAd;;MACIG,KAAK,CAACX,MAAN,KAAiB,CAArB,EAAwB;WACbN,GAAP;;;SAEIA,GAAG,GACPe,SADI,GAEJE,KAAK,CACAN,GADL,CACSO,IAAI,IAAI;QACTA,IAAI,KAAK,GAAb,EAAkB;aACN,OACJJ,UAAU,CACLK,CADL,CACOlB,KADP,CACa,GADb,EAEKU,GAFL,CAESS,kBAFT,EAGKC,IAHL,CAGU,GAHV,CADJ;;;WAMI,GAAEH,IAAK,IAAGE,kBAAkB,CAACN,UAAU,CAACI,IAAD,CAAX,CAAmB,EAAvD;GATJ,EAWKG,IAXL,CAWU,GAXV,CAFJ;;;ACNJ,MAAMC,gBAAgB,GAAG,YAAzB;;AACA,SAASC,cAAT,CAAwBC,YAAxB,EAAsC;SAC3BA,YAAY,CAACZ,OAAb,CAAqB,YAArB,EAAmC,EAAnC,EAAuCX,KAAvC,CAA6C,GAA7C,CAAP;;;AAEJ,AAAO,SAASwB,uBAAT,CAAiCzB,GAAjC,EAAsC;QACnC0B,OAAO,GAAG1B,GAAG,CAAC2B,KAAJ,CAAUL,gBAAV,CAAhB;;MACI,CAACI,OAAL,EAAc;WACH,EAAP;;;SAEGA,OAAO,CAACf,GAAR,CAAYY,cAAZ,EAA4BrC,MAA5B,CAAmC,CAAC0C,CAAD,EAAIC,CAAJ,KAAUD,CAAC,CAAClB,MAAF,CAASmB,CAAT,CAA7C,EAA0D,EAA1D,CAAP;;;ACTG,SAASC,IAAT,CAAc/C,MAAd,EAAsBgD,UAAtB,EAAkC;SAC9B/C,MAAM,CAACC,IAAP,CAAYF,MAAZ,EACFwB,MADE,CACKyB,MAAM,IAAI,CAACD,UAAU,CAACtB,QAAX,CAAoBuB,MAApB,CADhB,EAEF9C,MAFE,CAEK,CAAC+C,GAAD,EAAM7C,GAAN,KAAc;IACtB6C,GAAG,CAAC7C,GAAD,CAAH,GAAWL,MAAM,CAACK,GAAD,CAAjB;WACO6C,GAAP;GAJG,EAKJ,EALI,CAAP;;;ACDJ;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,SAASC,cAAT,CAAwBC,GAAxB,EAA6B;SAClBA,GAAG,CACLlC,KADE,CACI,oBADJ,EAEFU,GAFE,CAEE,UAAUyB,IAAV,EAAgB;QACjB,CAAC,eAAepB,IAAf,CAAoBoB,IAApB,CAAL,EAAgC;MAC5BA,IAAI,GAAGC,SAAS,CAACD,IAAD,CAAT,CACFxB,OADE,CACM,MADN,EACc,GADd,EAEFA,OAFE,CAEM,MAFN,EAEc,GAFd,CAAP;;;WAIGwB,IAAP;GARG,EAUFf,IAVE,CAUG,EAVH,CAAP;;;AAYJ,SAASiB,gBAAT,CAA0BH,GAA1B,EAA+B;SACpBf,kBAAkB,CAACe,GAAD,CAAlB,CAAwBvB,OAAxB,CAAgC,UAAhC,EAA4C,UAAU2B,CAAV,EAAa;WACpD,MACJA,CAAC,CACIC,UADL,CACgB,CADhB,EAEKC,QAFL,CAEc,EAFd,EAGKC,WAHL,EADJ;GADG,CAAP;;;AAQJ,SAASC,WAAT,CAAqBC,QAArB,EAA+BC,KAA/B,EAAsCzD,GAAtC,EAA2C;EACvCyD,KAAK,GACDD,QAAQ,KAAK,GAAb,IAAoBA,QAAQ,KAAK,GAAjC,GACMV,cAAc,CAACW,KAAD,CADpB,GAEMP,gBAAgB,CAACO,KAAD,CAH1B;;MAIIzD,GAAJ,EAAS;WACEkD,gBAAgB,CAAClD,GAAD,CAAhB,GAAwB,GAAxB,GAA8ByD,KAArC;GADJ,MAGK;WACMA,KAAP;;;;AAGR,SAASC,SAAT,CAAmBD,KAAnB,EAA0B;SACfA,KAAK,KAAKE,SAAV,IAAuBF,KAAK,KAAK,IAAxC;;;AAEJ,SAASG,aAAT,CAAuBJ,QAAvB,EAAiC;SACtBA,QAAQ,KAAK,GAAb,IAAoBA,QAAQ,KAAK,GAAjC,IAAwCA,QAAQ,KAAK,GAA5D;;;AAEJ,SAASK,SAAT,CAAmBC,OAAnB,EAA4BN,QAA5B,EAAsCxD,GAAtC,EAA2C+D,QAA3C,EAAqD;MAC7CN,KAAK,GAAGK,OAAO,CAAC9D,GAAD,CAAnB;MAA0BK,MAAM,GAAG,EAAnC;;MACIqD,SAAS,CAACD,KAAD,CAAT,IAAoBA,KAAK,KAAK,EAAlC,EAAsC;QAC9B,OAAOA,KAAP,KAAiB,QAAjB,IACA,OAAOA,KAAP,KAAiB,QADjB,IAEA,OAAOA,KAAP,KAAiB,SAFrB,EAEgC;MAC5BA,KAAK,GAAGA,KAAK,CAACJ,QAAN,EAAR;;UACIU,QAAQ,IAAIA,QAAQ,KAAK,GAA7B,EAAkC;QAC9BN,KAAK,GAAGA,KAAK,CAACO,SAAN,CAAgB,CAAhB,EAAmBC,QAAQ,CAACF,QAAD,EAAW,EAAX,CAA3B,CAAR;;;MAEJ1D,MAAM,CAAC6D,IAAP,CAAYX,WAAW,CAACC,QAAD,EAAWC,KAAX,EAAkBG,aAAa,CAACJ,QAAD,CAAb,GAA0BxD,GAA1B,GAAgC,EAAlD,CAAvB;KAPJ,MASK;UACG+D,QAAQ,KAAK,GAAjB,EAAsB;YACdI,KAAK,CAACC,OAAN,CAAcX,KAAd,CAAJ,EAA0B;UACtBA,KAAK,CAACtC,MAAN,CAAauC,SAAb,EAAwBnD,OAAxB,CAAgC,UAAUkD,KAAV,EAAiB;YAC7CpD,MAAM,CAAC6D,IAAP,CAAYX,WAAW,CAACC,QAAD,EAAWC,KAAX,EAAkBG,aAAa,CAACJ,QAAD,CAAb,GAA0BxD,GAA1B,GAAgC,EAAlD,CAAvB;WADJ;SADJ,MAKK;UACDJ,MAAM,CAACC,IAAP,CAAY4D,KAAZ,EAAmBlD,OAAnB,CAA2B,UAAU8D,CAAV,EAAa;gBAChCX,SAAS,CAACD,KAAK,CAACY,CAAD,CAAN,CAAb,EAAyB;cACrBhE,MAAM,CAAC6D,IAAP,CAAYX,WAAW,CAACC,QAAD,EAAWC,KAAK,CAACY,CAAD,CAAhB,EAAqBA,CAArB,CAAvB;;WAFR;;OAPR,MAcK;cACKC,GAAG,GAAG,EAAZ;;YACIH,KAAK,CAACC,OAAN,CAAcX,KAAd,CAAJ,EAA0B;UACtBA,KAAK,CAACtC,MAAN,CAAauC,SAAb,EAAwBnD,OAAxB,CAAgC,UAAUkD,KAAV,EAAiB;YAC7Ca,GAAG,CAACJ,IAAJ,CAASX,WAAW,CAACC,QAAD,EAAWC,KAAX,CAApB;WADJ;SADJ,MAKK;UACD7D,MAAM,CAACC,IAAP,CAAY4D,KAAZ,EAAmBlD,OAAnB,CAA2B,UAAU8D,CAAV,EAAa;gBAChCX,SAAS,CAACD,KAAK,CAACY,CAAD,CAAN,CAAb,EAAyB;cACrBC,GAAG,CAACJ,IAAJ,CAAShB,gBAAgB,CAACmB,CAAD,CAAzB;cACAC,GAAG,CAACJ,IAAJ,CAASX,WAAW,CAACC,QAAD,EAAWC,KAAK,CAACY,CAAD,CAAL,CAAShB,QAAT,EAAX,CAApB;;WAHR;;;YAOAO,aAAa,CAACJ,QAAD,CAAjB,EAA6B;UACzBnD,MAAM,CAAC6D,IAAP,CAAYhB,gBAAgB,CAAClD,GAAD,CAAhB,GAAwB,GAAxB,GAA8BsE,GAAG,CAACrC,IAAJ,CAAS,GAAT,CAA1C;SADJ,MAGK,IAAIqC,GAAG,CAACpD,MAAJ,KAAe,CAAnB,EAAsB;UACvBb,MAAM,CAAC6D,IAAP,CAAYI,GAAG,CAACrC,IAAJ,CAAS,GAAT,CAAZ;;;;GA5ChB,MAiDK;QACGuB,QAAQ,KAAK,GAAjB,EAAsB;UACdE,SAAS,CAACD,KAAD,CAAb,EAAsB;QAClBpD,MAAM,CAAC6D,IAAP,CAAYhB,gBAAgB,CAAClD,GAAD,CAA5B;;KAFR,MAKK,IAAIyD,KAAK,KAAK,EAAV,KAAiBD,QAAQ,KAAK,GAAb,IAAoBA,QAAQ,KAAK,GAAlD,CAAJ,EAA4D;MAC7DnD,MAAM,CAAC6D,IAAP,CAAYhB,gBAAgB,CAAClD,GAAD,CAAhB,GAAwB,GAApC;KADC,MAGA,IAAIyD,KAAK,KAAK,EAAd,EAAkB;MACnBpD,MAAM,CAAC6D,IAAP,CAAY,EAAZ;;;;SAGD7D,MAAP;;;AAEJ,AAAO,SAASkE,QAAT,CAAkBC,QAAlB,EAA4B;SACxB;IACHC,MAAM,EAAEA,MAAM,CAACC,IAAP,CAAY,IAAZ,EAAkBF,QAAlB;GADZ;;;AAIJ,SAASC,MAAT,CAAgBD,QAAhB,EAA0BV,OAA1B,EAAmC;MAC3Ba,SAAS,GAAG,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,EAAqB,GAArB,EAA0B,GAA1B,EAA+B,GAA/B,CAAhB;SACOH,QAAQ,CAAChD,OAAT,CAAiB,4BAAjB,EAA+C,UAAUoD,CAAV,EAAaC,UAAb,EAAyBC,OAAzB,EAAkC;QAChFD,UAAJ,EAAgB;UACRrB,QAAQ,GAAG,EAAf;YACMuB,MAAM,GAAG,EAAf;;UACIJ,SAAS,CAACK,OAAV,CAAkBH,UAAU,CAACI,MAAX,CAAkB,CAAlB,CAAlB,MAA4C,CAAC,CAAjD,EAAoD;QAChDzB,QAAQ,GAAGqB,UAAU,CAACI,MAAX,CAAkB,CAAlB,CAAX;QACAJ,UAAU,GAAGA,UAAU,CAACK,MAAX,CAAkB,CAAlB,CAAb;;;MAEJL,UAAU,CAAChE,KAAX,CAAiB,IAAjB,EAAuBN,OAAvB,CAA+B,UAAU4E,QAAV,EAAoB;YAC3Cb,GAAG,GAAG,4BAA4Bc,IAA5B,CAAiCD,QAAjC,CAAV;QACAJ,MAAM,CAACb,IAAP,CAAYL,SAAS,CAACC,OAAD,EAAUN,QAAV,EAAoBc,GAAG,CAAC,CAAD,CAAvB,EAA4BA,GAAG,CAAC,CAAD,CAAH,IAAUA,GAAG,CAAC,CAAD,CAAzC,CAArB;OAFJ;;UAIId,QAAQ,IAAIA,QAAQ,KAAK,GAA7B,EAAkC;YAC1B7B,SAAS,GAAG,GAAhB;;YACI6B,QAAQ,KAAK,GAAjB,EAAsB;UAClB7B,SAAS,GAAG,GAAZ;SADJ,MAGK,IAAI6B,QAAQ,KAAK,GAAjB,EAAsB;UACvB7B,SAAS,GAAG6B,QAAZ;;;eAEG,CAACuB,MAAM,CAAC7D,MAAP,KAAkB,CAAlB,GAAsBsC,QAAtB,GAAiC,EAAlC,IAAwCuB,MAAM,CAAC9C,IAAP,CAAYN,SAAZ,CAA/C;OARJ,MAUK;eACMoD,MAAM,CAAC9C,IAAP,CAAY,GAAZ,CAAP;;KAtBR,MAyBK;aACMa,cAAc,CAACgC,OAAD,CAArB;;GA3BD,CAAP;;;ACvIG,SAASO,KAAT,CAAejF,OAAf,EAAwB;;MAEvBO,MAAM,GAAGP,OAAO,CAACO,MAAR,CAAe2C,WAAf,EAAb,CAF2B;;MAIvB1C,GAAG,GAAG,CAACR,OAAO,CAACQ,GAAR,IAAe,GAAhB,EAAqBY,OAArB,CAA6B,cAA7B,EAA6C,OAA7C,CAAV;MACIV,OAAO,GAAGlB,MAAM,CAACU,MAAP,CAAc,EAAd,EAAkBF,OAAO,CAACU,OAA1B,CAAd;MACIwE,IAAJ;MACI5D,UAAU,GAAGgB,IAAI,CAACtC,OAAD,EAAU,CAC3B,QAD2B,EAE3B,SAF2B,EAG3B,KAH2B,EAI3B,SAJ2B,EAK3B,SAL2B,EAM3B,WAN2B,CAAV,CAArB,CAP2B;;QAgBrBmF,gBAAgB,GAAGlD,uBAAuB,CAACzB,GAAD,CAAhD;EACAA,GAAG,GAAG2D,QAAQ,CAAC3D,GAAD,CAAR,CAAc6D,MAAd,CAAqB/C,UAArB,CAAN;;MACI,CAAC,QAAQE,IAAR,CAAahB,GAAb,CAAL,EAAwB;IACpBA,GAAG,GAAGR,OAAO,CAACoF,OAAR,GAAkB5E,GAAxB;;;QAEE6E,iBAAiB,GAAG7F,MAAM,CAACC,IAAP,CAAYO,OAAZ,EACrBe,MADqB,CACdyB,MAAM,IAAI2C,gBAAgB,CAAClE,QAAjB,CAA0BuB,MAA1B,CADI,EAErBtB,MAFqB,CAEd,SAFc,CAA1B;QAGMoE,mBAAmB,GAAGhD,IAAI,CAAChB,UAAD,EAAa+D,iBAAb,CAAhC;QACME,eAAe,GAAG,6BAA6B/D,IAA7B,CAAkCd,OAAO,CAAC8E,MAA1C,CAAxB;;MACI,CAACD,eAAL,EAAsB;QACdvF,OAAO,CAACY,SAAR,CAAkB6E,MAAtB,EAA8B;;MAE1B/E,OAAO,CAAC8E,MAAR,GAAiB9E,OAAO,CAAC8E,MAAR,CACZ/E,KADY,CACN,GADM,EAEZU,GAFY,CAERH,OAAO,IAAIA,OAAO,CAACI,OAAR,CAAgB,kDAAhB,EAAqE,uBAAsBpB,OAAO,CAACY,SAAR,CAAkB6E,MAAO,EAApH,CAFH,EAGZ5D,IAHY,CAGP,GAHO,CAAjB;;;QAKA7B,OAAO,CAACY,SAAR,CAAkBC,QAAlB,CAA2BC,MAA/B,EAAuC;YAC7B4E,wBAAwB,GAAGhF,OAAO,CAAC8E,MAAR,CAAerD,KAAf,CAAqB,qBAArB,KAA+C,EAAhF;MACAzB,OAAO,CAAC8E,MAAR,GAAiBE,wBAAwB,CACpCxE,MADY,CACLlB,OAAO,CAACY,SAAR,CAAkBC,QADb,EAEZM,GAFY,CAERH,OAAO,IAAI;cACVyE,MAAM,GAAGzF,OAAO,CAACY,SAAR,CAAkB6E,MAAlB,GACR,IAAGzF,OAAO,CAACY,SAAR,CAAkB6E,MAAO,EADpB,GAET,OAFN;eAGQ,0BAAyBzE,OAAQ,WAAUyE,MAAO,EAA1D;OANa,EAQZ5D,IARY,CAQP,GARO,CAAjB;;GApCmB;;;;MAiDvB,CAAC,KAAD,EAAQ,MAAR,EAAgBZ,QAAhB,CAAyBV,MAAzB,CAAJ,EAAsC;IAClCC,GAAG,GAAGa,kBAAkB,CAACb,GAAD,EAAM8E,mBAAN,CAAxB;GADJ,MAGK;QACG,UAAUA,mBAAd,EAAmC;MAC/BJ,IAAI,GAAGI,mBAAmB,CAACK,IAA3B;KADJ,MAGK;UACGnG,MAAM,CAACC,IAAP,CAAY6F,mBAAZ,EAAiCxE,MAArC,EAA6C;QACzCoE,IAAI,GAAGI,mBAAP;OADJ,MAGK;QACD5E,OAAO,CAAC,gBAAD,CAAP,GAA4B,CAA5B;;;GA7De;;;MAkEvB,CAACA,OAAO,CAAC,cAAD,CAAR,IAA4B,OAAOwE,IAAP,KAAgB,WAAhD,EAA6D;IACzDxE,OAAO,CAAC,cAAD,CAAP,GAA0B,iCAA1B;GAnEuB;;;;MAuEvB,CAAC,OAAD,EAAU,KAAV,EAAiBO,QAAjB,CAA0BV,MAA1B,KAAqC,OAAO2E,IAAP,KAAgB,WAAzD,EAAsE;IAClEA,IAAI,GAAG,EAAP;GAxEuB;;;SA2EpB1F,MAAM,CAACU,MAAP,CAAc;IAAEK,MAAF;IAAUC,GAAV;IAAeE;GAA7B,EAAwC,OAAOwE,IAAP,KAAgB,WAAhB,GAA8B;IAAEA;GAAhC,GAAyC,IAAjF,EAAuFlF,OAAO,CAAC4F,OAAR,GAAkB;IAAEA,OAAO,EAAE5F,OAAO,CAAC4F;GAArC,GAAiD,IAAxI,CAAP;;;AC7EG,SAASC,oBAAT,CAA8B9F,QAA9B,EAAwCO,KAAxC,EAA+CN,OAA/C,EAAwD;SACpDiF,KAAK,CAAC5E,KAAK,CAACN,QAAD,EAAWO,KAAX,EAAkBN,OAAlB,CAAN,CAAZ;;;ACAG,SAAS8F,YAAT,CAAsBC,WAAtB,EAAmCC,WAAnC,EAAgD;QAC7CC,QAAQ,GAAG5F,KAAK,CAAC0F,WAAD,EAAcC,WAAd,CAAtB;QACME,QAAQ,GAAGL,oBAAoB,CAACvB,IAArB,CAA0B,IAA1B,EAAgC2B,QAAhC,CAAjB;SACOzG,MAAM,CAACU,MAAP,CAAcgG,QAAd,EAAwB;IAC3BD,QAD2B;IAE3BlG,QAAQ,EAAE+F,YAAY,CAACxB,IAAb,CAAkB,IAAlB,EAAwB2B,QAAxB,CAFiB;IAG3B5F,KAAK,EAAEA,KAAK,CAACiE,IAAN,CAAW,IAAX,EAAiB2B,QAAjB,CAHoB;IAI3BhB;GAJG,CAAP;;;ACNG,MAAMkB,OAAO,GAAG,mBAAhB;;ACEP,MAAMC,SAAS,GAAI,uBAAsBD,OAAQ,IAAGE,+BAAY,EAAG,EAAnE;;;AAGA,AAAO,MAAMJ,QAAQ,GAAG;EACpB1F,MAAM,EAAE,KADY;EAEpB6E,OAAO,EAAE,wBAFW;EAGpB1E,OAAO,EAAE;IACL8E,MAAM,EAAE,gCADH;kBAESY;GALE;EAOpBxF,SAAS,EAAE;IACP6E,MAAM,EAAE,EADD;IAEP5E,QAAQ,EAAE;;CATX;;MCHMqF,QAAQ,GAAGJ,YAAY,CAAC,IAAD,EAAOG,QAAP,CAA7B;;;;"}
\ No newline at end of file
diff --git a/setup-maven/node_modules/@octokit/endpoint/dist-src/defaults.js b/setup-maven/node_modules/@octokit/endpoint/dist-src/defaults.js
new file mode 100644
index 0000000..e1e53fb
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/dist-src/defaults.js
@@ -0,0 +1,17 @@
+import { getUserAgent } from "universal-user-agent";
+import { VERSION } from "./version";
+const userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`;
+// DEFAULTS has all properties set that EndpointOptions has, except url.
+// So we use RequestParameters and add method as additional required property.
+export const DEFAULTS = {
+    method: "GET",
+    baseUrl: "https://api.github.com",
+    headers: {
+        accept: "application/vnd.github.v3+json",
+        "user-agent": userAgent
+    },
+    mediaType: {
+        format: "",
+        previews: []
+    }
+};
diff --git a/setup-maven/node_modules/@octokit/endpoint/dist-src/endpoint-with-defaults.js b/setup-maven/node_modules/@octokit/endpoint/dist-src/endpoint-with-defaults.js
new file mode 100644
index 0000000..5763758
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/dist-src/endpoint-with-defaults.js
@@ -0,0 +1,5 @@
+import { merge } from "./merge";
+import { parse } from "./parse";
+export function endpointWithDefaults(defaults, route, options) {
+    return parse(merge(defaults, route, options));
+}
diff --git a/setup-maven/node_modules/@octokit/endpoint/dist-src/index.js b/setup-maven/node_modules/@octokit/endpoint/dist-src/index.js
new file mode 100644
index 0000000..599917f
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/dist-src/index.js
@@ -0,0 +1,3 @@
+import { withDefaults } from "./with-defaults";
+import { DEFAULTS } from "./defaults";
+export const endpoint = withDefaults(null, DEFAULTS);
diff --git a/setup-maven/node_modules/@octokit/endpoint/dist-src/merge.js b/setup-maven/node_modules/@octokit/endpoint/dist-src/merge.js
new file mode 100644
index 0000000..a209ffa
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/dist-src/merge.js
@@ -0,0 +1,22 @@
+import { lowercaseKeys } from "./util/lowercase-keys";
+import { mergeDeep } from "./util/merge-deep";
+export function merge(defaults, route, options) {
+    if (typeof route === "string") {
+        let [method, url] = route.split(" ");
+        options = Object.assign(url ? { method, url } : { url: method }, options);
+    }
+    else {
+        options = Object.assign({}, route);
+    }
+    // lowercase header names before merging with defaults to avoid duplicates
+    options.headers = lowercaseKeys(options.headers);
+    const mergedOptions = mergeDeep(defaults || {}, options);
+    // mediaType.previews arrays are merged, instead of overwritten
+    if (defaults && defaults.mediaType.previews.length) {
+        mergedOptions.mediaType.previews = defaults.mediaType.previews
+            .filter(preview => !mergedOptions.mediaType.previews.includes(preview))
+            .concat(mergedOptions.mediaType.previews);
+    }
+    mergedOptions.mediaType.previews = mergedOptions.mediaType.previews.map((preview) => preview.replace(/-preview/, ""));
+    return mergedOptions;
+}
diff --git a/setup-maven/node_modules/@octokit/endpoint/dist-src/parse.js b/setup-maven/node_modules/@octokit/endpoint/dist-src/parse.js
new file mode 100644
index 0000000..ca68ca9
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/dist-src/parse.js
@@ -0,0 +1,81 @@
+import { addQueryParameters } from "./util/add-query-parameters";
+import { extractUrlVariableNames } from "./util/extract-url-variable-names";
+import { omit } from "./util/omit";
+import { parseUrl } from "./util/url-template";
+export function parse(options) {
+    // https://fetch.spec.whatwg.org/#methods
+    let method = options.method.toUpperCase();
+    // replace :varname with {varname} to make it RFC 6570 compatible
+    let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{+$1}");
+    let headers = Object.assign({}, options.headers);
+    let body;
+    let parameters = omit(options, [
+        "method",
+        "baseUrl",
+        "url",
+        "headers",
+        "request",
+        "mediaType"
+    ]);
+    // extract variable names from URL to calculate remaining variables later
+    const urlVariableNames = extractUrlVariableNames(url);
+    url = parseUrl(url).expand(parameters);
+    if (!/^http/.test(url)) {
+        url = options.baseUrl + url;
+    }
+    const omittedParameters = Object.keys(options)
+        .filter(option => urlVariableNames.includes(option))
+        .concat("baseUrl");
+    const remainingParameters = omit(parameters, omittedParameters);
+    const isBinaryRequset = /application\/octet-stream/i.test(headers.accept);
+    if (!isBinaryRequset) {
+        if (options.mediaType.format) {
+            // e.g. application/vnd.github.v3+json => application/vnd.github.v3.raw
+            headers.accept = headers.accept
+                .split(/,/)
+                .map(preview => preview.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, `application/vnd$1$2.${options.mediaType.format}`))
+                .join(",");
+        }
+        if (options.mediaType.previews.length) {
+            const previewsFromAcceptHeader = headers.accept.match(/[\w-]+(?=-preview)/g) || [];
+            headers.accept = previewsFromAcceptHeader
+                .concat(options.mediaType.previews)
+                .map(preview => {
+                const format = options.mediaType.format
+                    ? `.${options.mediaType.format}`
+                    : "+json";
+                return `application/vnd.github.${preview}-preview${format}`;
+            })
+                .join(",");
+        }
+    }
+    // for GET/HEAD requests, set URL query parameters from remaining parameters
+    // for PATCH/POST/PUT/DELETE requests, set request body from remaining parameters
+    if (["GET", "HEAD"].includes(method)) {
+        url = addQueryParameters(url, remainingParameters);
+    }
+    else {
+        if ("data" in remainingParameters) {
+            body = remainingParameters.data;
+        }
+        else {
+            if (Object.keys(remainingParameters).length) {
+                body = remainingParameters;
+            }
+            else {
+                headers["content-length"] = 0;
+            }
+        }
+    }
+    // default content-type for JSON if body is set
+    if (!headers["content-type"] && typeof body !== "undefined") {
+        headers["content-type"] = "application/json; charset=utf-8";
+    }
+    // GitHub expects 'content-length: 0' header for PUT/PATCH requests without body.
+    // fetch does not allow to set `content-length` header, but we can set body to an empty string
+    if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") {
+        body = "";
+    }
+    // Only return body/request keys if present
+    return Object.assign({ method, url, headers }, typeof body !== "undefined" ? { body } : null, options.request ? { request: options.request } : null);
+}
diff --git a/setup-maven/node_modules/@octokit/endpoint/dist-src/util/add-query-parameters.js b/setup-maven/node_modules/@octokit/endpoint/dist-src/util/add-query-parameters.js
new file mode 100644
index 0000000..a78812f
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/dist-src/util/add-query-parameters.js
@@ -0,0 +1,21 @@
+export function addQueryParameters(url, parameters) {
+    const separator = /\?/.test(url) ? "&" : "?";
+    const names = Object.keys(parameters);
+    if (names.length === 0) {
+        return url;
+    }
+    return (url +
+        separator +
+        names
+            .map(name => {
+            if (name === "q") {
+                return ("q=" +
+                    parameters
+                        .q.split("+")
+                        .map(encodeURIComponent)
+                        .join("+"));
+            }
+            return `${name}=${encodeURIComponent(parameters[name])}`;
+        })
+            .join("&"));
+}
diff --git a/setup-maven/node_modules/@octokit/endpoint/dist-src/util/extract-url-variable-names.js b/setup-maven/node_modules/@octokit/endpoint/dist-src/util/extract-url-variable-names.js
new file mode 100644
index 0000000..3e75db2
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/dist-src/util/extract-url-variable-names.js
@@ -0,0 +1,11 @@
+const urlVariableRegex = /\{[^}]+\}/g;
+function removeNonChars(variableName) {
+    return variableName.replace(/^\W+|\W+$/g, "").split(/,/);
+}
+export function extractUrlVariableNames(url) {
+    const matches = url.match(urlVariableRegex);
+    if (!matches) {
+        return [];
+    }
+    return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);
+}
diff --git a/setup-maven/node_modules/@octokit/endpoint/dist-src/util/lowercase-keys.js b/setup-maven/node_modules/@octokit/endpoint/dist-src/util/lowercase-keys.js
new file mode 100644
index 0000000..0780642
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/dist-src/util/lowercase-keys.js
@@ -0,0 +1,9 @@
+export function lowercaseKeys(object) {
+    if (!object) {
+        return {};
+    }
+    return Object.keys(object).reduce((newObj, key) => {
+        newObj[key.toLowerCase()] = object[key];
+        return newObj;
+    }, {});
+}
diff --git a/setup-maven/node_modules/@octokit/endpoint/dist-src/util/merge-deep.js b/setup-maven/node_modules/@octokit/endpoint/dist-src/util/merge-deep.js
new file mode 100644
index 0000000..d1c5402
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/dist-src/util/merge-deep.js
@@ -0,0 +1,16 @@
+import isPlainObject from "is-plain-object";
+export function mergeDeep(defaults, options) {
+    const result = Object.assign({}, defaults);
+    Object.keys(options).forEach(key => {
+        if (isPlainObject(options[key])) {
+            if (!(key in defaults))
+                Object.assign(result, { [key]: options[key] });
+            else
+                result[key] = mergeDeep(defaults[key], options[key]);
+        }
+        else {
+            Object.assign(result, { [key]: options[key] });
+        }
+    });
+    return result;
+}
diff --git a/setup-maven/node_modules/@octokit/endpoint/dist-src/util/omit.js b/setup-maven/node_modules/@octokit/endpoint/dist-src/util/omit.js
new file mode 100644
index 0000000..7e1aa6b
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/dist-src/util/omit.js
@@ -0,0 +1,8 @@
+export function omit(object, keysToOmit) {
+    return Object.keys(object)
+        .filter(option => !keysToOmit.includes(option))
+        .reduce((obj, key) => {
+        obj[key] = object[key];
+        return obj;
+    }, {});
+}
diff --git a/setup-maven/node_modules/@octokit/endpoint/dist-src/util/url-template.js b/setup-maven/node_modules/@octokit/endpoint/dist-src/util/url-template.js
new file mode 100644
index 0000000..f6d9885
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/dist-src/util/url-template.js
@@ -0,0 +1,170 @@
+// Based on https://github.com/bramstein/url-template, licensed under BSD
+// TODO: create separate package.
+//
+// Copyright (c) 2012-2014, Bram Stein
+// All rights reserved.
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+//  1. Redistributions of source code must retain the above copyright
+//     notice, this list of conditions and the following disclaimer.
+//  2. Redistributions in binary form must reproduce the above copyright
+//     notice, this list of conditions and the following disclaimer in the
+//     documentation and/or other materials provided with the distribution.
+//  3. The name of the author may not be used to endorse or promote products
+//     derived from this software without specific prior written permission.
+// THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
+// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+// EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+/* istanbul ignore file */
+function encodeReserved(str) {
+    return str
+        .split(/(%[0-9A-Fa-f]{2})/g)
+        .map(function (part) {
+        if (!/%[0-9A-Fa-f]/.test(part)) {
+            part = encodeURI(part)
+                .replace(/%5B/g, "[")
+                .replace(/%5D/g, "]");
+        }
+        return part;
+    })
+        .join("");
+}
+function encodeUnreserved(str) {
+    return encodeURIComponent(str).replace(/[!'()*]/g, function (c) {
+        return ("%" +
+            c
+                .charCodeAt(0)
+                .toString(16)
+                .toUpperCase());
+    });
+}
+function encodeValue(operator, value, key) {
+    value =
+        operator === "+" || operator === "#"
+            ? encodeReserved(value)
+            : encodeUnreserved(value);
+    if (key) {
+        return encodeUnreserved(key) + "=" + value;
+    }
+    else {
+        return value;
+    }
+}
+function isDefined(value) {
+    return value !== undefined && value !== null;
+}
+function isKeyOperator(operator) {
+    return operator === ";" || operator === "&" || operator === "?";
+}
+function getValues(context, operator, key, modifier) {
+    var value = context[key], result = [];
+    if (isDefined(value) && value !== "") {
+        if (typeof value === "string" ||
+            typeof value === "number" ||
+            typeof value === "boolean") {
+            value = value.toString();
+            if (modifier && modifier !== "*") {
+                value = value.substring(0, parseInt(modifier, 10));
+            }
+            result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : ""));
+        }
+        else {
+            if (modifier === "*") {
+                if (Array.isArray(value)) {
+                    value.filter(isDefined).forEach(function (value) {
+                        result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : ""));
+                    });
+                }
+                else {
+                    Object.keys(value).forEach(function (k) {
+                        if (isDefined(value[k])) {
+                            result.push(encodeValue(operator, value[k], k));
+                        }
+                    });
+                }
+            }
+            else {
+                const tmp = [];
+                if (Array.isArray(value)) {
+                    value.filter(isDefined).forEach(function (value) {
+                        tmp.push(encodeValue(operator, value));
+                    });
+                }
+                else {
+                    Object.keys(value).forEach(function (k) {
+                        if (isDefined(value[k])) {
+                            tmp.push(encodeUnreserved(k));
+                            tmp.push(encodeValue(operator, value[k].toString()));
+                        }
+                    });
+                }
+                if (isKeyOperator(operator)) {
+                    result.push(encodeUnreserved(key) + "=" + tmp.join(","));
+                }
+                else if (tmp.length !== 0) {
+                    result.push(tmp.join(","));
+                }
+            }
+        }
+    }
+    else {
+        if (operator === ";") {
+            if (isDefined(value)) {
+                result.push(encodeUnreserved(key));
+            }
+        }
+        else if (value === "" && (operator === "&" || operator === "?")) {
+            result.push(encodeUnreserved(key) + "=");
+        }
+        else if (value === "") {
+            result.push("");
+        }
+    }
+    return result;
+}
+export function parseUrl(template) {
+    return {
+        expand: expand.bind(null, template)
+    };
+}
+function expand(template, context) {
+    var operators = ["+", "#", ".", "/", ";", "?", "&"];
+    return template.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g, function (_, expression, literal) {
+        if (expression) {
+            let operator = "";
+            const values = [];
+            if (operators.indexOf(expression.charAt(0)) !== -1) {
+                operator = expression.charAt(0);
+                expression = expression.substr(1);
+            }
+            expression.split(/,/g).forEach(function (variable) {
+                var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable);
+                values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));
+            });
+            if (operator && operator !== "+") {
+                var separator = ",";
+                if (operator === "?") {
+                    separator = "&";
+                }
+                else if (operator !== "#") {
+                    separator = operator;
+                }
+                return (values.length !== 0 ? operator : "") + values.join(separator);
+            }
+            else {
+                return values.join(",");
+            }
+        }
+        else {
+            return encodeReserved(literal);
+        }
+    });
+}
diff --git a/setup-maven/node_modules/@octokit/endpoint/dist-src/version.js b/setup-maven/node_modules/@octokit/endpoint/dist-src/version.js
new file mode 100644
index 0000000..ef91397
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/dist-src/version.js
@@ -0,0 +1 @@
+export const VERSION = "5.5.1";
diff --git a/setup-maven/node_modules/@octokit/endpoint/dist-src/with-defaults.js b/setup-maven/node_modules/@octokit/endpoint/dist-src/with-defaults.js
new file mode 100644
index 0000000..9a1c886
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/dist-src/with-defaults.js
@@ -0,0 +1,13 @@
+import { endpointWithDefaults } from "./endpoint-with-defaults";
+import { merge } from "./merge";
+import { parse } from "./parse";
+export function withDefaults(oldDefaults, newDefaults) {
+    const DEFAULTS = merge(oldDefaults, newDefaults);
+    const endpoint = endpointWithDefaults.bind(null, DEFAULTS);
+    return Object.assign(endpoint, {
+        DEFAULTS,
+        defaults: withDefaults.bind(null, DEFAULTS),
+        merge: merge.bind(null, DEFAULTS),
+        parse
+    });
+}
diff --git a/setup-maven/node_modules/@octokit/endpoint/dist-types/defaults.d.ts b/setup-maven/node_modules/@octokit/endpoint/dist-types/defaults.d.ts
new file mode 100644
index 0000000..30fcd20
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/dist-types/defaults.d.ts
@@ -0,0 +1,2 @@
+import { EndpointDefaults } from "@octokit/types";
+export declare const DEFAULTS: EndpointDefaults;
diff --git a/setup-maven/node_modules/@octokit/endpoint/dist-types/endpoint-with-defaults.d.ts b/setup-maven/node_modules/@octokit/endpoint/dist-types/endpoint-with-defaults.d.ts
new file mode 100644
index 0000000..ff39e5e
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/dist-types/endpoint-with-defaults.d.ts
@@ -0,0 +1,3 @@
+import { EndpointOptions, RequestParameters, Route } from "@octokit/types";
+import { DEFAULTS } from "./defaults";
+export declare function endpointWithDefaults(defaults: typeof DEFAULTS, route: Route | EndpointOptions, options?: RequestParameters): import("@octokit/types").RequestOptions;
diff --git a/setup-maven/node_modules/@octokit/endpoint/dist-types/index.d.ts b/setup-maven/node_modules/@octokit/endpoint/dist-types/index.d.ts
new file mode 100644
index 0000000..17be855
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/dist-types/index.d.ts
@@ -0,0 +1 @@
+export declare const endpoint: import("@octokit/types").EndpointInterface;
diff --git a/setup-maven/node_modules/@octokit/endpoint/dist-types/merge.d.ts b/setup-maven/node_modules/@octokit/endpoint/dist-types/merge.d.ts
new file mode 100644
index 0000000..b75a15e
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/dist-types/merge.d.ts
@@ -0,0 +1,2 @@
+import { EndpointDefaults, RequestParameters, Route } from "@octokit/types";
+export declare function merge(defaults: EndpointDefaults | null, route?: Route | RequestParameters, options?: RequestParameters): EndpointDefaults;
diff --git a/setup-maven/node_modules/@octokit/endpoint/dist-types/parse.d.ts b/setup-maven/node_modules/@octokit/endpoint/dist-types/parse.d.ts
new file mode 100644
index 0000000..fbe2144
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/dist-types/parse.d.ts
@@ -0,0 +1,2 @@
+import { EndpointDefaults, RequestOptions } from "@octokit/types";
+export declare function parse(options: EndpointDefaults): RequestOptions;
diff --git a/setup-maven/node_modules/@octokit/endpoint/dist-types/util/add-query-parameters.d.ts b/setup-maven/node_modules/@octokit/endpoint/dist-types/util/add-query-parameters.d.ts
new file mode 100644
index 0000000..4b192ac
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/dist-types/util/add-query-parameters.d.ts
@@ -0,0 +1,4 @@
+export declare function addQueryParameters(url: string, parameters: {
+    [x: string]: string | undefined;
+    q?: string;
+}): string;
diff --git a/setup-maven/node_modules/@octokit/endpoint/dist-types/util/extract-url-variable-names.d.ts b/setup-maven/node_modules/@octokit/endpoint/dist-types/util/extract-url-variable-names.d.ts
new file mode 100644
index 0000000..93586d4
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/dist-types/util/extract-url-variable-names.d.ts
@@ -0,0 +1 @@
+export declare function extractUrlVariableNames(url: string): string[];
diff --git a/setup-maven/node_modules/@octokit/endpoint/dist-types/util/lowercase-keys.d.ts b/setup-maven/node_modules/@octokit/endpoint/dist-types/util/lowercase-keys.d.ts
new file mode 100644
index 0000000..1daf307
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/dist-types/util/lowercase-keys.d.ts
@@ -0,0 +1,5 @@
+export declare function lowercaseKeys(object?: {
+    [key: string]: any;
+}): {
+    [key: string]: any;
+};
diff --git a/setup-maven/node_modules/@octokit/endpoint/dist-types/util/merge-deep.d.ts b/setup-maven/node_modules/@octokit/endpoint/dist-types/util/merge-deep.d.ts
new file mode 100644
index 0000000..914411c
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/dist-types/util/merge-deep.d.ts
@@ -0,0 +1 @@
+export declare function mergeDeep(defaults: any, options: any): object;
diff --git a/setup-maven/node_modules/@octokit/endpoint/dist-types/util/omit.d.ts b/setup-maven/node_modules/@octokit/endpoint/dist-types/util/omit.d.ts
new file mode 100644
index 0000000..06927d6
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/dist-types/util/omit.d.ts
@@ -0,0 +1,5 @@
+export declare function omit(object: {
+    [key: string]: any;
+}, keysToOmit: string[]): {
+    [key: string]: any;
+};
diff --git a/setup-maven/node_modules/@octokit/endpoint/dist-types/util/url-template.d.ts b/setup-maven/node_modules/@octokit/endpoint/dist-types/util/url-template.d.ts
new file mode 100644
index 0000000..5d967ca
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/dist-types/util/url-template.d.ts
@@ -0,0 +1,3 @@
+export declare function parseUrl(template: string): {
+    expand: (context: object) => string;
+};
diff --git a/setup-maven/node_modules/@octokit/endpoint/dist-types/version.d.ts b/setup-maven/node_modules/@octokit/endpoint/dist-types/version.d.ts
new file mode 100644
index 0000000..809d28a
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/dist-types/version.d.ts
@@ -0,0 +1 @@
+export declare const VERSION = "5.5.1";
diff --git a/setup-maven/node_modules/@octokit/endpoint/dist-types/with-defaults.d.ts b/setup-maven/node_modules/@octokit/endpoint/dist-types/with-defaults.d.ts
new file mode 100644
index 0000000..6f5afd1
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/dist-types/with-defaults.d.ts
@@ -0,0 +1,2 @@
+import { EndpointInterface, RequestParameters, EndpointDefaults } from "@octokit/types";
+export declare function withDefaults(oldDefaults: EndpointDefaults | null, newDefaults: RequestParameters): EndpointInterface;
diff --git a/setup-maven/node_modules/@octokit/endpoint/dist-web/index.js b/setup-maven/node_modules/@octokit/endpoint/dist-web/index.js
new file mode 100644
index 0000000..a327238
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/dist-web/index.js
@@ -0,0 +1,379 @@
+import isPlainObject from 'is-plain-object';
+import { getUserAgent } from 'universal-user-agent';
+
+function lowercaseKeys(object) {
+    if (!object) {
+        return {};
+    }
+    return Object.keys(object).reduce((newObj, key) => {
+        newObj[key.toLowerCase()] = object[key];
+        return newObj;
+    }, {});
+}
+
+function mergeDeep(defaults, options) {
+    const result = Object.assign({}, defaults);
+    Object.keys(options).forEach(key => {
+        if (isPlainObject(options[key])) {
+            if (!(key in defaults))
+                Object.assign(result, { [key]: options[key] });
+            else
+                result[key] = mergeDeep(defaults[key], options[key]);
+        }
+        else {
+            Object.assign(result, { [key]: options[key] });
+        }
+    });
+    return result;
+}
+
+function merge(defaults, route, options) {
+    if (typeof route === "string") {
+        let [method, url] = route.split(" ");
+        options = Object.assign(url ? { method, url } : { url: method }, options);
+    }
+    else {
+        options = Object.assign({}, route);
+    }
+    // lowercase header names before merging with defaults to avoid duplicates
+    options.headers = lowercaseKeys(options.headers);
+    const mergedOptions = mergeDeep(defaults || {}, options);
+    // mediaType.previews arrays are merged, instead of overwritten
+    if (defaults && defaults.mediaType.previews.length) {
+        mergedOptions.mediaType.previews = defaults.mediaType.previews
+            .filter(preview => !mergedOptions.mediaType.previews.includes(preview))
+            .concat(mergedOptions.mediaType.previews);
+    }
+    mergedOptions.mediaType.previews = mergedOptions.mediaType.previews.map((preview) => preview.replace(/-preview/, ""));
+    return mergedOptions;
+}
+
+function addQueryParameters(url, parameters) {
+    const separator = /\?/.test(url) ? "&" : "?";
+    const names = Object.keys(parameters);
+    if (names.length === 0) {
+        return url;
+    }
+    return (url +
+        separator +
+        names
+            .map(name => {
+            if (name === "q") {
+                return ("q=" +
+                    parameters
+                        .q.split("+")
+                        .map(encodeURIComponent)
+                        .join("+"));
+            }
+            return `${name}=${encodeURIComponent(parameters[name])}`;
+        })
+            .join("&"));
+}
+
+const urlVariableRegex = /\{[^}]+\}/g;
+function removeNonChars(variableName) {
+    return variableName.replace(/^\W+|\W+$/g, "").split(/,/);
+}
+function extractUrlVariableNames(url) {
+    const matches = url.match(urlVariableRegex);
+    if (!matches) {
+        return [];
+    }
+    return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);
+}
+
+function omit(object, keysToOmit) {
+    return Object.keys(object)
+        .filter(option => !keysToOmit.includes(option))
+        .reduce((obj, key) => {
+        obj[key] = object[key];
+        return obj;
+    }, {});
+}
+
+// Based on https://github.com/bramstein/url-template, licensed under BSD
+// TODO: create separate package.
+//
+// Copyright (c) 2012-2014, Bram Stein
+// All rights reserved.
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+//  1. Redistributions of source code must retain the above copyright
+//     notice, this list of conditions and the following disclaimer.
+//  2. Redistributions in binary form must reproduce the above copyright
+//     notice, this list of conditions and the following disclaimer in the
+//     documentation and/or other materials provided with the distribution.
+//  3. The name of the author may not be used to endorse or promote products
+//     derived from this software without specific prior written permission.
+// THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
+// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+// EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+/* istanbul ignore file */
+function encodeReserved(str) {
+    return str
+        .split(/(%[0-9A-Fa-f]{2})/g)
+        .map(function (part) {
+        if (!/%[0-9A-Fa-f]/.test(part)) {
+            part = encodeURI(part)
+                .replace(/%5B/g, "[")
+                .replace(/%5D/g, "]");
+        }
+        return part;
+    })
+        .join("");
+}
+function encodeUnreserved(str) {
+    return encodeURIComponent(str).replace(/[!'()*]/g, function (c) {
+        return ("%" +
+            c
+                .charCodeAt(0)
+                .toString(16)
+                .toUpperCase());
+    });
+}
+function encodeValue(operator, value, key) {
+    value =
+        operator === "+" || operator === "#"
+            ? encodeReserved(value)
+            : encodeUnreserved(value);
+    if (key) {
+        return encodeUnreserved(key) + "=" + value;
+    }
+    else {
+        return value;
+    }
+}
+function isDefined(value) {
+    return value !== undefined && value !== null;
+}
+function isKeyOperator(operator) {
+    return operator === ";" || operator === "&" || operator === "?";
+}
+function getValues(context, operator, key, modifier) {
+    var value = context[key], result = [];
+    if (isDefined(value) && value !== "") {
+        if (typeof value === "string" ||
+            typeof value === "number" ||
+            typeof value === "boolean") {
+            value = value.toString();
+            if (modifier && modifier !== "*") {
+                value = value.substring(0, parseInt(modifier, 10));
+            }
+            result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : ""));
+        }
+        else {
+            if (modifier === "*") {
+                if (Array.isArray(value)) {
+                    value.filter(isDefined).forEach(function (value) {
+                        result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : ""));
+                    });
+                }
+                else {
+                    Object.keys(value).forEach(function (k) {
+                        if (isDefined(value[k])) {
+                            result.push(encodeValue(operator, value[k], k));
+                        }
+                    });
+                }
+            }
+            else {
+                const tmp = [];
+                if (Array.isArray(value)) {
+                    value.filter(isDefined).forEach(function (value) {
+                        tmp.push(encodeValue(operator, value));
+                    });
+                }
+                else {
+                    Object.keys(value).forEach(function (k) {
+                        if (isDefined(value[k])) {
+                            tmp.push(encodeUnreserved(k));
+                            tmp.push(encodeValue(operator, value[k].toString()));
+                        }
+                    });
+                }
+                if (isKeyOperator(operator)) {
+                    result.push(encodeUnreserved(key) + "=" + tmp.join(","));
+                }
+                else if (tmp.length !== 0) {
+                    result.push(tmp.join(","));
+                }
+            }
+        }
+    }
+    else {
+        if (operator === ";") {
+            if (isDefined(value)) {
+                result.push(encodeUnreserved(key));
+            }
+        }
+        else if (value === "" && (operator === "&" || operator === "?")) {
+            result.push(encodeUnreserved(key) + "=");
+        }
+        else if (value === "") {
+            result.push("");
+        }
+    }
+    return result;
+}
+function parseUrl(template) {
+    return {
+        expand: expand.bind(null, template)
+    };
+}
+function expand(template, context) {
+    var operators = ["+", "#", ".", "/", ";", "?", "&"];
+    return template.replace(/\{([^\{\}]+)\}|([^\{\}]+)/g, function (_, expression, literal) {
+        if (expression) {
+            let operator = "";
+            const values = [];
+            if (operators.indexOf(expression.charAt(0)) !== -1) {
+                operator = expression.charAt(0);
+                expression = expression.substr(1);
+            }
+            expression.split(/,/g).forEach(function (variable) {
+                var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable);
+                values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));
+            });
+            if (operator && operator !== "+") {
+                var separator = ",";
+                if (operator === "?") {
+                    separator = "&";
+                }
+                else if (operator !== "#") {
+                    separator = operator;
+                }
+                return (values.length !== 0 ? operator : "") + values.join(separator);
+            }
+            else {
+                return values.join(",");
+            }
+        }
+        else {
+            return encodeReserved(literal);
+        }
+    });
+}
+
+function parse(options) {
+    // https://fetch.spec.whatwg.org/#methods
+    let method = options.method.toUpperCase();
+    // replace :varname with {varname} to make it RFC 6570 compatible
+    let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{+$1}");
+    let headers = Object.assign({}, options.headers);
+    let body;
+    let parameters = omit(options, [
+        "method",
+        "baseUrl",
+        "url",
+        "headers",
+        "request",
+        "mediaType"
+    ]);
+    // extract variable names from URL to calculate remaining variables later
+    const urlVariableNames = extractUrlVariableNames(url);
+    url = parseUrl(url).expand(parameters);
+    if (!/^http/.test(url)) {
+        url = options.baseUrl + url;
+    }
+    const omittedParameters = Object.keys(options)
+        .filter(option => urlVariableNames.includes(option))
+        .concat("baseUrl");
+    const remainingParameters = omit(parameters, omittedParameters);
+    const isBinaryRequset = /application\/octet-stream/i.test(headers.accept);
+    if (!isBinaryRequset) {
+        if (options.mediaType.format) {
+            // e.g. application/vnd.github.v3+json => application/vnd.github.v3.raw
+            headers.accept = headers.accept
+                .split(/,/)
+                .map(preview => preview.replace(/application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/, `application/vnd$1$2.${options.mediaType.format}`))
+                .join(",");
+        }
+        if (options.mediaType.previews.length) {
+            const previewsFromAcceptHeader = headers.accept.match(/[\w-]+(?=-preview)/g) || [];
+            headers.accept = previewsFromAcceptHeader
+                .concat(options.mediaType.previews)
+                .map(preview => {
+                const format = options.mediaType.format
+                    ? `.${options.mediaType.format}`
+                    : "+json";
+                return `application/vnd.github.${preview}-preview${format}`;
+            })
+                .join(",");
+        }
+    }
+    // for GET/HEAD requests, set URL query parameters from remaining parameters
+    // for PATCH/POST/PUT/DELETE requests, set request body from remaining parameters
+    if (["GET", "HEAD"].includes(method)) {
+        url = addQueryParameters(url, remainingParameters);
+    }
+    else {
+        if ("data" in remainingParameters) {
+            body = remainingParameters.data;
+        }
+        else {
+            if (Object.keys(remainingParameters).length) {
+                body = remainingParameters;
+            }
+            else {
+                headers["content-length"] = 0;
+            }
+        }
+    }
+    // default content-type for JSON if body is set
+    if (!headers["content-type"] && typeof body !== "undefined") {
+        headers["content-type"] = "application/json; charset=utf-8";
+    }
+    // GitHub expects 'content-length: 0' header for PUT/PATCH requests without body.
+    // fetch does not allow to set `content-length` header, but we can set body to an empty string
+    if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") {
+        body = "";
+    }
+    // Only return body/request keys if present
+    return Object.assign({ method, url, headers }, typeof body !== "undefined" ? { body } : null, options.request ? { request: options.request } : null);
+}
+
+function endpointWithDefaults(defaults, route, options) {
+    return parse(merge(defaults, route, options));
+}
+
+function withDefaults(oldDefaults, newDefaults) {
+    const DEFAULTS = merge(oldDefaults, newDefaults);
+    const endpoint = endpointWithDefaults.bind(null, DEFAULTS);
+    return Object.assign(endpoint, {
+        DEFAULTS,
+        defaults: withDefaults.bind(null, DEFAULTS),
+        merge: merge.bind(null, DEFAULTS),
+        parse
+    });
+}
+
+const VERSION = "5.5.1";
+
+const userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`;
+// DEFAULTS has all properties set that EndpointOptions has, except url.
+// So we use RequestParameters and add method as additional required property.
+const DEFAULTS = {
+    method: "GET",
+    baseUrl: "https://api.github.com",
+    headers: {
+        accept: "application/vnd.github.v3+json",
+        "user-agent": userAgent
+    },
+    mediaType: {
+        format: "",
+        previews: []
+    }
+};
+
+const endpoint = withDefaults(null, DEFAULTS);
+
+export { endpoint };
+//# sourceMappingURL=index.js.map
diff --git a/setup-maven/node_modules/@octokit/endpoint/dist-web/index.js.map b/setup-maven/node_modules/@octokit/endpoint/dist-web/index.js.map
new file mode 100644
index 0000000..6890009
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/dist-web/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sources":["../dist-src/util/lowercase-keys.js","../dist-src/util/merge-deep.js","../dist-src/merge.js","../dist-src/util/add-query-parameters.js","../dist-src/util/extract-url-variable-names.js","../dist-src/util/omit.js","../dist-src/util/url-template.js","../dist-src/parse.js","../dist-src/endpoint-with-defaults.js","../dist-src/with-defaults.js","../dist-src/version.js","../dist-src/defaults.js","../dist-src/index.js"],"sourcesContent":["export function lowercaseKeys(object) {\n    if (!object) {\n        return {};\n    }\n    return Object.keys(object).reduce((newObj, key) => {\n        newObj[key.toLowerCase()] = object[key];\n        return newObj;\n    }, {});\n}\n","import isPlainObject from \"is-plain-object\";\nexport function mergeDeep(defaults, options) {\n    const result = Object.assign({}, defaults);\n    Object.keys(options).forEach(key => {\n        if (isPlainObject(options[key])) {\n            if (!(key in defaults))\n                Object.assign(result, { [key]: options[key] });\n            else\n                result[key] = mergeDeep(defaults[key], options[key]);\n        }\n        else {\n            Object.assign(result, { [key]: options[key] });\n        }\n    });\n    return result;\n}\n","import { lowercaseKeys } from \"./util/lowercase-keys\";\nimport { mergeDeep } from \"./util/merge-deep\";\nexport function merge(defaults, route, options) {\n    if (typeof route === \"string\") {\n        let [method, url] = route.split(\" \");\n        options = Object.assign(url ? { method, url } : { url: method }, options);\n    }\n    else {\n        options = Object.assign({}, route);\n    }\n    // lowercase header names before merging with defaults to avoid duplicates\n    options.headers = lowercaseKeys(options.headers);\n    const mergedOptions = mergeDeep(defaults || {}, options);\n    // mediaType.previews arrays are merged, instead of overwritten\n    if (defaults && defaults.mediaType.previews.length) {\n        mergedOptions.mediaType.previews = defaults.mediaType.previews\n            .filter(preview => !mergedOptions.mediaType.previews.includes(preview))\n            .concat(mergedOptions.mediaType.previews);\n    }\n    mergedOptions.mediaType.previews = mergedOptions.mediaType.previews.map((preview) => preview.replace(/-preview/, \"\"));\n    return mergedOptions;\n}\n","export function addQueryParameters(url, parameters) {\n    const separator = /\\?/.test(url) ? \"&\" : \"?\";\n    const names = Object.keys(parameters);\n    if (names.length === 0) {\n        return url;\n    }\n    return (url +\n        separator +\n        names\n            .map(name => {\n            if (name === \"q\") {\n                return (\"q=\" +\n                    parameters\n                        .q.split(\"+\")\n                        .map(encodeURIComponent)\n                        .join(\"+\"));\n            }\n            return `${name}=${encodeURIComponent(parameters[name])}`;\n        })\n            .join(\"&\"));\n}\n","const urlVariableRegex = /\\{[^}]+\\}/g;\nfunction removeNonChars(variableName) {\n    return variableName.replace(/^\\W+|\\W+$/g, \"\").split(/,/);\n}\nexport function extractUrlVariableNames(url) {\n    const matches = url.match(urlVariableRegex);\n    if (!matches) {\n        return [];\n    }\n    return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);\n}\n","export function omit(object, keysToOmit) {\n    return Object.keys(object)\n        .filter(option => !keysToOmit.includes(option))\n        .reduce((obj, key) => {\n        obj[key] = object[key];\n        return obj;\n    }, {});\n}\n","// Based on https://github.com/bramstein/url-template, licensed under BSD\n// TODO: create separate package.\n//\n// Copyright (c) 2012-2014, Bram Stein\n// All rights reserved.\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions\n// are met:\n//  1. Redistributions of source code must retain the above copyright\n//     notice, this list of conditions and the following disclaimer.\n//  2. Redistributions in binary form must reproduce the above copyright\n//     notice, this list of conditions and the following disclaimer in the\n//     documentation and/or other materials provided with the distribution.\n//  3. The name of the author may not be used to endorse or promote products\n//     derived from this software without specific prior written permission.\n// THIS SOFTWARE IS PROVIDED BY THE AUTHOR \"AS IS\" AND ANY EXPRESS OR IMPLIED\n// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n// EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n/* istanbul ignore file */\nfunction encodeReserved(str) {\n    return str\n        .split(/(%[0-9A-Fa-f]{2})/g)\n        .map(function (part) {\n        if (!/%[0-9A-Fa-f]/.test(part)) {\n            part = encodeURI(part)\n                .replace(/%5B/g, \"[\")\n                .replace(/%5D/g, \"]\");\n        }\n        return part;\n    })\n        .join(\"\");\n}\nfunction encodeUnreserved(str) {\n    return encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n        return (\"%\" +\n            c\n                .charCodeAt(0)\n                .toString(16)\n                .toUpperCase());\n    });\n}\nfunction encodeValue(operator, value, key) {\n    value =\n        operator === \"+\" || operator === \"#\"\n            ? encodeReserved(value)\n            : encodeUnreserved(value);\n    if (key) {\n        return encodeUnreserved(key) + \"=\" + value;\n    }\n    else {\n        return value;\n    }\n}\nfunction isDefined(value) {\n    return value !== undefined && value !== null;\n}\nfunction isKeyOperator(operator) {\n    return operator === \";\" || operator === \"&\" || operator === \"?\";\n}\nfunction getValues(context, operator, key, modifier) {\n    var value = context[key], result = [];\n    if (isDefined(value) && value !== \"\") {\n        if (typeof value === \"string\" ||\n            typeof value === \"number\" ||\n            typeof value === \"boolean\") {\n            value = value.toString();\n            if (modifier && modifier !== \"*\") {\n                value = value.substring(0, parseInt(modifier, 10));\n            }\n            result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : \"\"));\n        }\n        else {\n            if (modifier === \"*\") {\n                if (Array.isArray(value)) {\n                    value.filter(isDefined).forEach(function (value) {\n                        result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : \"\"));\n                    });\n                }\n                else {\n                    Object.keys(value).forEach(function (k) {\n                        if (isDefined(value[k])) {\n                            result.push(encodeValue(operator, value[k], k));\n                        }\n                    });\n                }\n            }\n            else {\n                const tmp = [];\n                if (Array.isArray(value)) {\n                    value.filter(isDefined).forEach(function (value) {\n                        tmp.push(encodeValue(operator, value));\n                    });\n                }\n                else {\n                    Object.keys(value).forEach(function (k) {\n                        if (isDefined(value[k])) {\n                            tmp.push(encodeUnreserved(k));\n                            tmp.push(encodeValue(operator, value[k].toString()));\n                        }\n                    });\n                }\n                if (isKeyOperator(operator)) {\n                    result.push(encodeUnreserved(key) + \"=\" + tmp.join(\",\"));\n                }\n                else if (tmp.length !== 0) {\n                    result.push(tmp.join(\",\"));\n                }\n            }\n        }\n    }\n    else {\n        if (operator === \";\") {\n            if (isDefined(value)) {\n                result.push(encodeUnreserved(key));\n            }\n        }\n        else if (value === \"\" && (operator === \"&\" || operator === \"?\")) {\n            result.push(encodeUnreserved(key) + \"=\");\n        }\n        else if (value === \"\") {\n            result.push(\"\");\n        }\n    }\n    return result;\n}\nexport function parseUrl(template) {\n    return {\n        expand: expand.bind(null, template)\n    };\n}\nfunction expand(template, context) {\n    var operators = [\"+\", \"#\", \".\", \"/\", \";\", \"?\", \"&\"];\n    return template.replace(/\\{([^\\{\\}]+)\\}|([^\\{\\}]+)/g, function (_, expression, literal) {\n        if (expression) {\n            let operator = \"\";\n            const values = [];\n            if (operators.indexOf(expression.charAt(0)) !== -1) {\n                operator = expression.charAt(0);\n                expression = expression.substr(1);\n            }\n            expression.split(/,/g).forEach(function (variable) {\n                var tmp = /([^:\\*]*)(?::(\\d+)|(\\*))?/.exec(variable);\n                values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));\n            });\n            if (operator && operator !== \"+\") {\n                var separator = \",\";\n                if (operator === \"?\") {\n                    separator = \"&\";\n                }\n                else if (operator !== \"#\") {\n                    separator = operator;\n                }\n                return (values.length !== 0 ? operator : \"\") + values.join(separator);\n            }\n            else {\n                return values.join(\",\");\n            }\n        }\n        else {\n            return encodeReserved(literal);\n        }\n    });\n}\n","import { addQueryParameters } from \"./util/add-query-parameters\";\nimport { extractUrlVariableNames } from \"./util/extract-url-variable-names\";\nimport { omit } from \"./util/omit\";\nimport { parseUrl } from \"./util/url-template\";\nexport function parse(options) {\n    // https://fetch.spec.whatwg.org/#methods\n    let method = options.method.toUpperCase();\n    // replace :varname with {varname} to make it RFC 6570 compatible\n    let url = (options.url || \"/\").replace(/:([a-z]\\w+)/g, \"{+$1}\");\n    let headers = Object.assign({}, options.headers);\n    let body;\n    let parameters = omit(options, [\n        \"method\",\n        \"baseUrl\",\n        \"url\",\n        \"headers\",\n        \"request\",\n        \"mediaType\"\n    ]);\n    // extract variable names from URL to calculate remaining variables later\n    const urlVariableNames = extractUrlVariableNames(url);\n    url = parseUrl(url).expand(parameters);\n    if (!/^http/.test(url)) {\n        url = options.baseUrl + url;\n    }\n    const omittedParameters = Object.keys(options)\n        .filter(option => urlVariableNames.includes(option))\n        .concat(\"baseUrl\");\n    const remainingParameters = omit(parameters, omittedParameters);\n    const isBinaryRequset = /application\\/octet-stream/i.test(headers.accept);\n    if (!isBinaryRequset) {\n        if (options.mediaType.format) {\n            // e.g. application/vnd.github.v3+json => application/vnd.github.v3.raw\n            headers.accept = headers.accept\n                .split(/,/)\n                .map(preview => preview.replace(/application\\/vnd(\\.\\w+)(\\.v3)?(\\.\\w+)?(\\+json)?$/, `application/vnd$1$2.${options.mediaType.format}`))\n                .join(\",\");\n        }\n        if (options.mediaType.previews.length) {\n            const previewsFromAcceptHeader = headers.accept.match(/[\\w-]+(?=-preview)/g) || [];\n            headers.accept = previewsFromAcceptHeader\n                .concat(options.mediaType.previews)\n                .map(preview => {\n                const format = options.mediaType.format\n                    ? `.${options.mediaType.format}`\n                    : \"+json\";\n                return `application/vnd.github.${preview}-preview${format}`;\n            })\n                .join(\",\");\n        }\n    }\n    // for GET/HEAD requests, set URL query parameters from remaining parameters\n    // for PATCH/POST/PUT/DELETE requests, set request body from remaining parameters\n    if ([\"GET\", \"HEAD\"].includes(method)) {\n        url = addQueryParameters(url, remainingParameters);\n    }\n    else {\n        if (\"data\" in remainingParameters) {\n            body = remainingParameters.data;\n        }\n        else {\n            if (Object.keys(remainingParameters).length) {\n                body = remainingParameters;\n            }\n            else {\n                headers[\"content-length\"] = 0;\n            }\n        }\n    }\n    // default content-type for JSON if body is set\n    if (!headers[\"content-type\"] && typeof body !== \"undefined\") {\n        headers[\"content-type\"] = \"application/json; charset=utf-8\";\n    }\n    // GitHub expects 'content-length: 0' header for PUT/PATCH requests without body.\n    // fetch does not allow to set `content-length` header, but we can set body to an empty string\n    if ([\"PATCH\", \"PUT\"].includes(method) && typeof body === \"undefined\") {\n        body = \"\";\n    }\n    // Only return body/request keys if present\n    return Object.assign({ method, url, headers }, typeof body !== \"undefined\" ? { body } : null, options.request ? { request: options.request } : null);\n}\n","import { merge } from \"./merge\";\nimport { parse } from \"./parse\";\nexport function endpointWithDefaults(defaults, route, options) {\n    return parse(merge(defaults, route, options));\n}\n","import { endpointWithDefaults } from \"./endpoint-with-defaults\";\nimport { merge } from \"./merge\";\nimport { parse } from \"./parse\";\nexport function withDefaults(oldDefaults, newDefaults) {\n    const DEFAULTS = merge(oldDefaults, newDefaults);\n    const endpoint = endpointWithDefaults.bind(null, DEFAULTS);\n    return Object.assign(endpoint, {\n        DEFAULTS,\n        defaults: withDefaults.bind(null, DEFAULTS),\n        merge: merge.bind(null, DEFAULTS),\n        parse\n    });\n}\n","export const VERSION = \"5.5.1\";\n","import { getUserAgent } from \"universal-user-agent\";\nimport { VERSION } from \"./version\";\nconst userAgent = `octokit-endpoint.js/${VERSION} ${getUserAgent()}`;\n// DEFAULTS has all properties set that EndpointOptions has, except url.\n// So we use RequestParameters and add method as additional required property.\nexport const DEFAULTS = {\n    method: \"GET\",\n    baseUrl: \"https://api.github.com\",\n    headers: {\n        accept: \"application/vnd.github.v3+json\",\n        \"user-agent\": userAgent\n    },\n    mediaType: {\n        format: \"\",\n        previews: []\n    }\n};\n","import { withDefaults } from \"./with-defaults\";\nimport { DEFAULTS } from \"./defaults\";\nexport const endpoint = withDefaults(null, DEFAULTS);\n"],"names":[],"mappings":";;;AAAO,SAAS,aAAa,CAAC,MAAM,EAAE;IAClC,IAAI,CAAC,MAAM,EAAE;QACT,OAAO,EAAE,CAAC;KACb;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,GAAG,KAAK;QAC/C,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QACxC,OAAO,MAAM,CAAC;KACjB,EAAE,EAAE,CAAC,CAAC;CACV;;ACPM,SAAS,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE;IACzC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC3C,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI;QAChC,IAAI,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE;YAC7B,IAAI,EAAE,GAAG,IAAI,QAAQ,CAAC;gBAClB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;;gBAE/C,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;SAC5D;aACI;YACD,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SAClD;KACJ,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;CACjB;;ACbM,SAAS,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC3B,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;KAC7E;SACI;QACD,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;KACtC;;IAED,OAAO,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;;IAEzD,IAAI,QAAQ,IAAI,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE;QAChD,aAAa,CAAC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ;aACzD,MAAM,CAAC,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;aACtE,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;KACjD;IACD,aAAa,CAAC,SAAS,CAAC,QAAQ,GAAG,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;IACtH,OAAO,aAAa,CAAC;CACxB;;ACrBM,SAAS,kBAAkB,CAAC,GAAG,EAAE,UAAU,EAAE;IAChD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;IAC7C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACtC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QACpB,OAAO,GAAG,CAAC;KACd;IACD,QAAQ,GAAG;QACP,SAAS;QACT,KAAK;aACA,GAAG,CAAC,IAAI,IAAI;YACb,IAAI,IAAI,KAAK,GAAG,EAAE;gBACd,QAAQ,IAAI;oBACR,UAAU;yBACL,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;yBACZ,GAAG,CAAC,kBAAkB,CAAC;yBACvB,IAAI,CAAC,GAAG,CAAC,EAAE;aACvB;YACD,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;SAC5D,CAAC;aACG,IAAI,CAAC,GAAG,CAAC,EAAE;CACvB;;ACpBD,MAAM,gBAAgB,GAAG,YAAY,CAAC;AACtC,SAAS,cAAc,CAAC,YAAY,EAAE;IAClC,OAAO,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;CAC5D;AACD,AAAO,SAAS,uBAAuB,CAAC,GAAG,EAAE;IACzC,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC5C,IAAI,CAAC,OAAO,EAAE;QACV,OAAO,EAAE,CAAC;KACb;IACD,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;CACxE;;ACVM,SAAS,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE;IACrC,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;SACrB,MAAM,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SAC9C,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK;QACtB,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QACvB,OAAO,GAAG,CAAC;KACd,EAAE,EAAE,CAAC,CAAC;CACV;;ACPD;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,SAAS,cAAc,CAAC,GAAG,EAAE;IACzB,OAAO,GAAG;SACL,KAAK,CAAC,oBAAoB,CAAC;SAC3B,GAAG,CAAC,UAAU,IAAI,EAAE;QACrB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC5B,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;iBACjB,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;iBACpB,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;SAC7B;QACD,OAAO,IAAI,CAAC;KACf,CAAC;SACG,IAAI,CAAC,EAAE,CAAC,CAAC;CACjB;AACD,SAAS,gBAAgB,CAAC,GAAG,EAAE;IAC3B,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE;QAC5D,QAAQ,GAAG;YACP,CAAC;iBACI,UAAU,CAAC,CAAC,CAAC;iBACb,QAAQ,CAAC,EAAE,CAAC;iBACZ,WAAW,EAAE,EAAE;KAC3B,CAAC,CAAC;CACN;AACD,SAAS,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;IACvC,KAAK;QACD,QAAQ,KAAK,GAAG,IAAI,QAAQ,KAAK,GAAG;cAC9B,cAAc,CAAC,KAAK,CAAC;cACrB,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,GAAG,EAAE;QACL,OAAO,gBAAgB,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC;KAC9C;SACI;QACD,OAAO,KAAK,CAAC;KAChB;CACJ;AACD,SAAS,SAAS,CAAC,KAAK,EAAE;IACtB,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;CAChD;AACD,SAAS,aAAa,CAAC,QAAQ,EAAE;IAC7B,OAAO,QAAQ,KAAK,GAAG,IAAI,QAAQ,KAAK,GAAG,IAAI,QAAQ,KAAK,GAAG,CAAC;CACnE;AACD,SAAS,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE;IACjD,IAAI,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC;IACtC,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,EAAE;QAClC,IAAI,OAAO,KAAK,KAAK,QAAQ;YACzB,OAAO,KAAK,KAAK,QAAQ;YACzB,OAAO,KAAK,KAAK,SAAS,EAAE;YAC5B,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;YACzB,IAAI,QAAQ,IAAI,QAAQ,KAAK,GAAG,EAAE;gBAC9B,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;aACtD;YACD,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;SACjF;aACI;YACD,IAAI,QAAQ,KAAK,GAAG,EAAE;gBAClB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBACtB,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,UAAU,KAAK,EAAE;wBAC7C,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;qBACjF,CAAC,CAAC;iBACN;qBACI;oBACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;wBACpC,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;4BACrB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;yBACnD;qBACJ,CAAC,CAAC;iBACN;aACJ;iBACI;gBACD,MAAM,GAAG,GAAG,EAAE,CAAC;gBACf,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBACtB,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,UAAU,KAAK,EAAE;wBAC7C,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;qBAC1C,CAAC,CAAC;iBACN;qBACI;oBACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;wBACpC,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;4BACrB,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;4BAC9B,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;yBACxD;qBACJ,CAAC,CAAC;iBACN;gBACD,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE;oBACzB,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;iBAC5D;qBACI,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;oBACvB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;iBAC9B;aACJ;SACJ;KACJ;SACI;QACD,IAAI,QAAQ,KAAK,GAAG,EAAE;YAClB,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE;gBAClB,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;aACtC;SACJ;aACI,IAAI,KAAK,KAAK,EAAE,KAAK,QAAQ,KAAK,GAAG,IAAI,QAAQ,KAAK,GAAG,CAAC,EAAE;YAC7D,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;SAC5C;aACI,IAAI,KAAK,KAAK,EAAE,EAAE;YACnB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACnB;KACJ;IACD,OAAO,MAAM,CAAC;CACjB;AACD,AAAO,SAAS,QAAQ,CAAC,QAAQ,EAAE;IAC/B,OAAO;QACH,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;KACtC,CAAC;CACL;AACD,SAAS,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE;IAC/B,IAAI,SAAS,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACpD,OAAO,QAAQ,CAAC,OAAO,CAAC,4BAA4B,EAAE,UAAU,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE;QACpF,IAAI,UAAU,EAAE;YACZ,IAAI,QAAQ,GAAG,EAAE,CAAC;YAClB,MAAM,MAAM,GAAG,EAAE,CAAC;YAClB,IAAI,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;gBAChD,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAChC,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;aACrC;YACD,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,QAAQ,EAAE;gBAC/C,IAAI,GAAG,GAAG,2BAA2B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACrD,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACvE,CAAC,CAAC;YACH,IAAI,QAAQ,IAAI,QAAQ,KAAK,GAAG,EAAE;gBAC9B,IAAI,SAAS,GAAG,GAAG,CAAC;gBACpB,IAAI,QAAQ,KAAK,GAAG,EAAE;oBAClB,SAAS,GAAG,GAAG,CAAC;iBACnB;qBACI,IAAI,QAAQ,KAAK,GAAG,EAAE;oBACvB,SAAS,GAAG,QAAQ,CAAC;iBACxB;gBACD,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,GAAG,QAAQ,GAAG,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACzE;iBACI;gBACD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAC3B;SACJ;aACI;YACD,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC;SAClC;KACJ,CAAC,CAAC;CACN;;ACrKM,SAAS,KAAK,CAAC,OAAO,EAAE;;IAE3B,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;;IAE1C,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,EAAE,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IAChE,IAAI,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,IAAI,CAAC;IACT,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE;QAC3B,QAAQ;QACR,SAAS;QACT,KAAK;QACL,SAAS;QACT,SAAS;QACT,WAAW;KACd,CAAC,CAAC;;IAEH,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC;IACtD,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACvC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACpB,GAAG,GAAG,OAAO,CAAC,OAAO,GAAG,GAAG,CAAC;KAC/B;IACD,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;SACzC,MAAM,CAAC,MAAM,IAAI,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SACnD,MAAM,CAAC,SAAS,CAAC,CAAC;IACvB,MAAM,mBAAmB,GAAG,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;IAChE,MAAM,eAAe,GAAG,4BAA4B,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1E,IAAI,CAAC,eAAe,EAAE;QAClB,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE;;YAE1B,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;iBAC1B,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,kDAAkD,EAAE,CAAC,oBAAoB,EAAE,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;iBACtI,IAAI,CAAC,GAAG,CAAC,CAAC;SAClB;QACD,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE;YACnC,MAAM,wBAAwB,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC;YACnF,OAAO,CAAC,MAAM,GAAG,wBAAwB;iBACpC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC;iBAClC,GAAG,CAAC,OAAO,IAAI;gBAChB,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM;sBACjC,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;sBAC9B,OAAO,CAAC;gBACd,OAAO,CAAC,uBAAuB,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;aAC/D,CAAC;iBACG,IAAI,CAAC,GAAG,CAAC,CAAC;SAClB;KACJ;;;IAGD,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;QAClC,GAAG,GAAG,kBAAkB,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;KACtD;SACI;QACD,IAAI,MAAM,IAAI,mBAAmB,EAAE;YAC/B,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC;SACnC;aACI;YACD,IAAI,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,MAAM,EAAE;gBACzC,IAAI,GAAG,mBAAmB,CAAC;aAC9B;iBACI;gBACD,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;aACjC;SACJ;KACJ;;IAED,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;QACzD,OAAO,CAAC,cAAc,CAAC,GAAG,iCAAiC,CAAC;KAC/D;;;IAGD,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;QAClE,IAAI,GAAG,EAAE,CAAC;KACb;;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,OAAO,IAAI,KAAK,WAAW,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,OAAO,CAAC,OAAO,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;CACxJ;;AC9EM,SAAS,oBAAoB,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE;IAC3D,OAAO,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;CACjD;;ACDM,SAAS,YAAY,CAAC,WAAW,EAAE,WAAW,EAAE;IACnD,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC3D,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;QAC3B,QAAQ;QACR,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;QAC3C,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;QACjC,KAAK;KACR,CAAC,CAAC;CACN;;ACZM,MAAM,OAAO,GAAG,mBAAmB,CAAC;;ACE3C,MAAM,SAAS,GAAG,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;;;AAGrE,AAAO,MAAM,QAAQ,GAAG;IACpB,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,wBAAwB;IACjC,OAAO,EAAE;QACL,MAAM,EAAE,gCAAgC;QACxC,YAAY,EAAE,SAAS;KAC1B;IACD,SAAS,EAAE;QACP,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE,EAAE;KACf;CACJ,CAAC;;ACdU,MAAC,QAAQ,GAAG,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC;;;;"}
\ No newline at end of file
diff --git a/setup-maven/node_modules/@octokit/endpoint/node_modules/universal-user-agent/LICENSE.md b/setup-maven/node_modules/@octokit/endpoint/node_modules/universal-user-agent/LICENSE.md
new file mode 100644
index 0000000..f105ab0
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/node_modules/universal-user-agent/LICENSE.md
@@ -0,0 +1,7 @@
+# [ISC License](https://spdx.org/licenses/ISC)
+
+Copyright (c) 2018, Gregor Martynus (https://github.com/gr2m)
+
+Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/setup-maven/node_modules/@octokit/endpoint/node_modules/universal-user-agent/README.md b/setup-maven/node_modules/@octokit/endpoint/node_modules/universal-user-agent/README.md
new file mode 100644
index 0000000..d00d14c
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/node_modules/universal-user-agent/README.md
@@ -0,0 +1,25 @@
+# universal-user-agent
+
+> Get a user agent string in both browser and node
+
+[![@latest](https://img.shields.io/npm/v/universal-user-agent.svg)](https://www.npmjs.com/package/universal-user-agent)
+[![Build Status](https://travis-ci.com/gr2m/universal-user-agent.svg?branch=master)](https://travis-ci.com/gr2m/universal-user-agent)
+[![Greenkeeper](https://badges.greenkeeper.io/gr2m/universal-user-agent.svg)](https://greenkeeper.io/)
+
+```js
+const { getUserAgent } = require("universal-user-agent");
+// or import { getUserAgent } from "universal-user-agent";
+
+const userAgent = getUserAgent();
+// userAgent will look like this
+// in browser: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:61.0) Gecko/20100101 Firefox/61.0"
+// in node: Node.js/v8.9.4 (macOS High Sierra; x64)
+```
+
+## Credits
+
+The Node implementation was originally inspired by [default-user-agent](https://www.npmjs.com/package/default-user-agent).
+
+## License
+
+[ISC](LICENSE.md)
diff --git a/setup-maven/node_modules/@octokit/endpoint/node_modules/universal-user-agent/dist-node/index.js b/setup-maven/node_modules/@octokit/endpoint/node_modules/universal-user-agent/dist-node/index.js
new file mode 100644
index 0000000..80a0710
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/node_modules/universal-user-agent/dist-node/index.js
@@ -0,0 +1,22 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
+
+var osName = _interopDefault(require('os-name'));
+
+function getUserAgent() {
+  try {
+    return `Node.js/${process.version.substr(1)} (${osName()}; ${process.arch})`;
+  } catch (error) {
+    if (/wmic os get Caption/.test(error.message)) {
+      return "Windows <version undetectable>";
+    }
+
+    throw error;
+  }
+}
+
+exports.getUserAgent = getUserAgent;
+//# sourceMappingURL=index.js.map
diff --git a/setup-maven/node_modules/@octokit/endpoint/node_modules/universal-user-agent/dist-node/index.js.map b/setup-maven/node_modules/@octokit/endpoint/node_modules/universal-user-agent/dist-node/index.js.map
new file mode 100644
index 0000000..aff09ec
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/node_modules/universal-user-agent/dist-node/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sources":["../dist-src/node.js"],"sourcesContent":["import osName from \"os-name\";\nexport function getUserAgent() {\n    try {\n        return `Node.js/${process.version.substr(1)} (${osName()}; ${process.arch})`;\n    }\n    catch (error) {\n        if (/wmic os get Caption/.test(error.message)) {\n            return \"Windows <version undetectable>\";\n        }\n        throw error;\n    }\n}\n"],"names":["getUserAgent","process","version","substr","osName","arch","error","test","message"],"mappings":";;;;;;;;AACO,SAASA,YAAT,GAAwB;MACvB;WACQ,WAAUC,OAAO,CAACC,OAAR,CAAgBC,MAAhB,CAAuB,CAAvB,CAA0B,KAAIC,MAAM,EAAG,KAAIH,OAAO,CAACI,IAAK,GAA1E;GADJ,CAGA,OAAOC,KAAP,EAAc;QACN,sBAAsBC,IAAtB,CAA2BD,KAAK,CAACE,OAAjC,CAAJ,EAA+C;aACpC,gCAAP;;;UAEEF,KAAN;;;;;;"}
\ No newline at end of file
diff --git a/setup-maven/node_modules/@octokit/endpoint/node_modules/universal-user-agent/dist-src/browser.js b/setup-maven/node_modules/@octokit/endpoint/node_modules/universal-user-agent/dist-src/browser.js
new file mode 100644
index 0000000..6f52232
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/node_modules/universal-user-agent/dist-src/browser.js
@@ -0,0 +1,3 @@
+export function getUserAgent() {
+    return navigator.userAgent;
+}
diff --git a/setup-maven/node_modules/@octokit/endpoint/node_modules/universal-user-agent/dist-src/index.js b/setup-maven/node_modules/@octokit/endpoint/node_modules/universal-user-agent/dist-src/index.js
new file mode 100644
index 0000000..c6253f5
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/node_modules/universal-user-agent/dist-src/index.js
@@ -0,0 +1 @@
+export { getUserAgent } from "./node";
diff --git a/setup-maven/node_modules/@octokit/endpoint/node_modules/universal-user-agent/dist-src/node.js b/setup-maven/node_modules/@octokit/endpoint/node_modules/universal-user-agent/dist-src/node.js
new file mode 100644
index 0000000..8b70a03
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/node_modules/universal-user-agent/dist-src/node.js
@@ -0,0 +1,12 @@
+import osName from "os-name";
+export function getUserAgent() {
+    try {
+        return `Node.js/${process.version.substr(1)} (${osName()}; ${process.arch})`;
+    }
+    catch (error) {
+        if (/wmic os get Caption/.test(error.message)) {
+            return "Windows <version undetectable>";
+        }
+        throw error;
+    }
+}
diff --git a/setup-maven/node_modules/@octokit/endpoint/node_modules/universal-user-agent/dist-types/browser.d.ts b/setup-maven/node_modules/@octokit/endpoint/node_modules/universal-user-agent/dist-types/browser.d.ts
new file mode 100644
index 0000000..a7bb1c4
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/node_modules/universal-user-agent/dist-types/browser.d.ts
@@ -0,0 +1 @@
+export declare function getUserAgent(): string;
diff --git a/setup-maven/node_modules/@octokit/endpoint/node_modules/universal-user-agent/dist-types/index.d.ts b/setup-maven/node_modules/@octokit/endpoint/node_modules/universal-user-agent/dist-types/index.d.ts
new file mode 100644
index 0000000..c6253f5
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/node_modules/universal-user-agent/dist-types/index.d.ts
@@ -0,0 +1 @@
+export { getUserAgent } from "./node";
diff --git a/setup-maven/node_modules/@octokit/endpoint/node_modules/universal-user-agent/dist-types/node.d.ts b/setup-maven/node_modules/@octokit/endpoint/node_modules/universal-user-agent/dist-types/node.d.ts
new file mode 100644
index 0000000..a7bb1c4
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/node_modules/universal-user-agent/dist-types/node.d.ts
@@ -0,0 +1 @@
+export declare function getUserAgent(): string;
diff --git a/setup-maven/node_modules/@octokit/endpoint/node_modules/universal-user-agent/dist-web/index.js b/setup-maven/node_modules/@octokit/endpoint/node_modules/universal-user-agent/dist-web/index.js
new file mode 100644
index 0000000..11ec79b
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/node_modules/universal-user-agent/dist-web/index.js
@@ -0,0 +1,6 @@
+function getUserAgent() {
+    return navigator.userAgent;
+}
+
+export { getUserAgent };
+//# sourceMappingURL=index.js.map
diff --git a/setup-maven/node_modules/@octokit/endpoint/node_modules/universal-user-agent/dist-web/index.js.map b/setup-maven/node_modules/@octokit/endpoint/node_modules/universal-user-agent/dist-web/index.js.map
new file mode 100644
index 0000000..549407e
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/node_modules/universal-user-agent/dist-web/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sources":["../dist-src/browser.js"],"sourcesContent":["export function getUserAgent() {\n    return navigator.userAgent;\n}\n"],"names":[],"mappings":"AAAO,SAAS,YAAY,GAAG;IAC3B,OAAO,SAAS,CAAC,SAAS,CAAC;CAC9B;;;;"}
\ No newline at end of file
diff --git a/setup-maven/node_modules/@octokit/endpoint/node_modules/universal-user-agent/package.json b/setup-maven/node_modules/@octokit/endpoint/node_modules/universal-user-agent/package.json
new file mode 100644
index 0000000..c08b731
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/node_modules/universal-user-agent/package.json
@@ -0,0 +1,65 @@
+{
+  "_from": "universal-user-agent@^4.0.0",
+  "_id": "universal-user-agent@4.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-eM8knLpev67iBDizr/YtqkJsF3GK8gzDc6st/WKzrTuPtcsOKW/0IdL4cnMBsU69pOx0otavLWBDGTwg+dB0aA==",
+  "_location": "/@octokit/endpoint/universal-user-agent",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "universal-user-agent@^4.0.0",
+    "name": "universal-user-agent",
+    "escapedName": "universal-user-agent",
+    "rawSpec": "^4.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^4.0.0"
+  },
+  "_requiredBy": [
+    "/@octokit/endpoint"
+  ],
+  "_resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-4.0.0.tgz",
+  "_shasum": "27da2ec87e32769619f68a14996465ea1cb9df16",
+  "_spec": "universal-user-agent@^4.0.0",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/@octokit/endpoint",
+  "bugs": {
+    "url": "https://github.com/gr2m/universal-user-agent/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "os-name": "^3.1.0"
+  },
+  "deprecated": false,
+  "description": "Get a user agent string in both browser and node",
+  "devDependencies": {
+    "@gr2m/pika-plugin-build-web": "^0.6.0-issue-84.1",
+    "@pika/pack": "^0.5.0",
+    "@pika/plugin-build-node": "^0.6.0",
+    "@pika/plugin-ts-standard-pkg": "^0.6.0",
+    "@types/jest": "^24.0.18",
+    "jest": "^24.9.0",
+    "prettier": "^1.18.2",
+    "semantic-release": "^15.9.15",
+    "ts-jest": "^24.0.2",
+    "typescript": "^3.6.2"
+  },
+  "files": [
+    "dist-*/",
+    "bin/"
+  ],
+  "homepage": "https://github.com/gr2m/universal-user-agent#readme",
+  "keywords": [],
+  "license": "ISC",
+  "main": "dist-node/index.js",
+  "module": "dist-web/index.js",
+  "name": "universal-user-agent",
+  "pika": true,
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/gr2m/universal-user-agent.git"
+  },
+  "sideEffects": false,
+  "source": "dist-src/index.js",
+  "types": "dist-types/index.d.ts",
+  "version": "4.0.0"
+}
diff --git a/setup-maven/node_modules/@octokit/endpoint/package.json b/setup-maven/node_modules/@octokit/endpoint/package.json
new file mode 100644
index 0000000..8470212
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/endpoint/package.json
@@ -0,0 +1,79 @@
+{
+  "_from": "@octokit/endpoint@^5.5.0",
+  "_id": "@octokit/endpoint@5.5.1",
+  "_inBundle": false,
+  "_integrity": "sha512-nBFhRUb5YzVTCX/iAK1MgQ4uWo89Gu0TH00qQHoYRCsE12dWcG1OiLd7v2EIo2+tpUKPMOQ62QFy9hy9Vg2ULg==",
+  "_location": "/@octokit/endpoint",
+  "_phantomChildren": {
+    "os-name": "3.1.0"
+  },
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "@octokit/endpoint@^5.5.0",
+    "name": "@octokit/endpoint",
+    "escapedName": "@octokit%2fendpoint",
+    "scope": "@octokit",
+    "rawSpec": "^5.5.0",
+    "saveSpec": null,
+    "fetchSpec": "^5.5.0"
+  },
+  "_requiredBy": [
+    "/@octokit/request"
+  ],
+  "_resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-5.5.1.tgz",
+  "_shasum": "2eea81e110ca754ff2de11c79154ccab4ae16b3f",
+  "_spec": "@octokit/endpoint@^5.5.0",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/@octokit/request",
+  "bugs": {
+    "url": "https://github.com/octokit/endpoint.js/issues"
+  },
+  "bundleDependencies": false,
+  "deno": "dist-web/index.js",
+  "dependencies": {
+    "@octokit/types": "^2.0.0",
+    "is-plain-object": "^3.0.0",
+    "universal-user-agent": "^4.0.0"
+  },
+  "deprecated": false,
+  "description": "Turns REST API endpoints into generic request options",
+  "devDependencies": {
+    "@pika/pack": "^0.5.0",
+    "@pika/plugin-build-node": "^0.7.0",
+    "@pika/plugin-build-web": "^0.7.0",
+    "@pika/plugin-ts-standard-pkg": "^0.7.0",
+    "@types/jest": "^24.0.11",
+    "jest": "^24.7.1",
+    "prettier": "1.18.2",
+    "semantic-release": "^15.13.8",
+    "semantic-release-plugin-update-version-in-files": "^1.0.0",
+    "ts-jest": "^24.0.2",
+    "typescript": "^3.4.5"
+  },
+  "files": [
+    "dist-*/",
+    "bin/"
+  ],
+  "homepage": "https://github.com/octokit/endpoint.js#readme",
+  "keywords": [
+    "octokit",
+    "github",
+    "api",
+    "rest"
+  ],
+  "license": "MIT",
+  "main": "dist-node/index.js",
+  "name": "@octokit/endpoint",
+  "pika": true,
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/octokit/endpoint.js.git"
+  },
+  "sideEffects": false,
+  "source": "dist-src/index.js",
+  "types": "dist-types/index.d.ts",
+  "version": "5.5.1"
+}
diff --git a/setup-maven/node_modules/@octokit/graphql/LICENSE b/setup-maven/node_modules/@octokit/graphql/LICENSE
new file mode 100644
index 0000000..af5366d
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/graphql/LICENSE
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright (c) 2018 Octokit contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/setup-maven/node_modules/@octokit/graphql/README.md b/setup-maven/node_modules/@octokit/graphql/README.md
new file mode 100644
index 0000000..4e44592
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/graphql/README.md
@@ -0,0 +1,292 @@
+# graphql.js
+
+> GitHub GraphQL API client for browsers and Node
+
+[![@latest](https://img.shields.io/npm/v/@octokit/graphql.svg)](https://www.npmjs.com/package/@octokit/graphql)
+[![Build Status](https://travis-ci.com/octokit/graphql.js.svg?branch=master)](https://travis-ci.com/octokit/graphql.js)
+[![Coverage Status](https://coveralls.io/repos/github/octokit/graphql.js/badge.svg)](https://coveralls.io/github/octokit/graphql.js)
+[![Greenkeeper](https://badges.greenkeeper.io/octokit/graphql.js.svg)](https://greenkeeper.io/)
+
+<!-- toc -->
+
+- [Usage](#usage)
+- [Errors](#errors)
+- [Writing tests](#writing-tests)
+- [License](#license)
+
+<!-- tocstop -->
+
+## Usage
+
+Send a simple query
+
+```js
+const graphql = require('@octokit/graphql')
+const { repository } = await graphql(`{
+  repository(owner:"octokit", name:"graphql.js") {
+    issues(last:3) {
+      edges {
+        node {
+          title
+        }
+      }
+    }
+  }
+}`, {
+  headers: {
+    authorization: `token secret123`
+  }
+})
+```
+
+⚠️ Do not use [template literals](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals) in the query strings as they make your code vulnerable to query injection attacks (see [#2](https://github.com/octokit/graphql.js/issues/2)). Use variables instead:
+
+```js
+const graphql = require('@octokit/graphql')
+const { lastIssues } = await graphql(`query lastIssues($owner: String!, $repo: String!, $num: Int = 3) {
+    repository(owner:$owner, name:$repo) {
+      issues(last:$num) {
+        edges {
+          node {
+            title
+          }
+        }
+      }
+    }
+  }`, {
+    owner: 'octokit',
+    repo: 'graphql.js'
+    headers: {
+      authorization: `token secret123`
+    }
+  }
+})
+```
+
+Create two new clients and set separate default configs for them.
+
+```js
+const graphql1 = require('@octokit/graphql').defaults({
+  headers: {
+    authorization: `token secret123`
+  }
+})
+
+const graphql2 = require('@octokit/graphql').defaults({
+  headers: {
+    authorization: `token foobar`
+  }
+})
+```
+
+Create two clients, the second inherits config from the first.
+
+```js
+const graphql1 = require('@octokit/graphql').defaults({
+  headers: {
+    authorization: `token secret123`
+  }
+})
+
+const graphql2 = graphql1.defaults({
+  headers: {
+    'user-agent': 'my-user-agent/v1.2.3'
+  }
+})
+```
+
+Create a new client with default options and run query
+
+```js
+const graphql = require('@octokit/graphql').defaults({
+  headers: {
+    authorization: `token secret123`
+  }
+})
+const { repository } = await graphql(`{
+  repository(owner:"octokit", name:"graphql.js") {
+    issues(last:3) {
+      edges {
+        node {
+          title
+        }
+      }
+    }
+  }
+}`)
+```
+
+Pass query together with headers and variables
+
+```js
+const graphql = require('@octokit/graphql')
+const { lastIssues } = await graphql({
+  query: `query lastIssues($owner: String!, $repo: String!, $num: Int = 3) {
+    repository(owner:$owner, name:$repo) {
+      issues(last:$num) {
+        edges {
+          node {
+            title
+          }
+        }
+      }
+    }
+  }`,
+  owner: 'octokit',
+  repo: 'graphql.js'
+  headers: {
+    authorization: `token secret123`
+  }
+})
+```
+
+Use with GitHub Enterprise
+
+```js
+const graphql = require('@octokit/graphql').defaults({
+  baseUrl: 'https://github-enterprise.acme-inc.com/api',
+  headers: {
+    authorization: `token secret123`
+  }
+})
+const { repository } = await graphql(`{
+  repository(owner:"acme-project", name:"acme-repo") {
+    issues(last:3) {
+      edges {
+        node {
+          title
+        }
+      }
+    }
+  }
+}`)
+```
+
+## Errors
+
+In case of a GraphQL error, `error.message` is set to the first error from the response’s `errors` array. All errors can be accessed at `error.errors`. `error.request` has the request options such as query, variables and headers set for easier debugging.
+
+```js
+const graphql = require('@octokit/graphql').defaults({
+  headers: {
+    authorization: `token secret123`
+  }
+})
+const query = `{
+  viewer {
+    bioHtml
+  }
+}`
+
+try {
+  const result = await graphql(query)
+} catch (error) {
+  // server responds with
+  // {
+  // 	"data": null,
+  // 	"errors": [{
+  // 		"message": "Field 'bioHtml' doesn't exist on type 'User'",
+  // 		"locations": [{
+  // 			"line": 3,
+  // 			"column": 5
+  // 		}]
+  // 	}]
+  // }
+
+  console.log('Request failed:', error.request) // { query, variables: {}, headers: { authorization: 'token secret123' } }
+  console.log(error.message) // Field 'bioHtml' doesn't exist on type 'User'
+}
+```
+
+## Partial responses
+
+A GraphQL query may respond with partial data accompanied by errors. In this case we will throw an error but the partial data will still be accessible through `error.data`
+
+```js
+const graphql = require('@octokit/graphql').defaults({
+  headers: {
+    authorization: `token secret123`
+  }
+})
+const query = `{
+  repository(name: "probot", owner: "probot") {
+    name
+    ref(qualifiedName: "master") {
+      target {
+        ... on Commit {
+          history(first: 25, after: "invalid cursor") {
+            nodes {
+              message
+            }
+          }
+        }
+      }
+    }
+  }
+}`
+
+try {
+  const result = await graphql(query)
+} catch (error) {
+  // server responds with
+  // { 
+  //   "data": { 
+  //     "repository": { 
+  //       "name": "probot", 
+  //       "ref": null 
+  //     } 
+  //   }, 
+  //   "errors": [ 
+  //     { 
+  //       "type": "INVALID_CURSOR_ARGUMENTS", 
+  //       "path": [ 
+  //         "repository", 
+  //         "ref", 
+  //         "target", 
+  //         "history" 
+  //       ], 
+  //       "locations": [ 
+  //         { 
+  //           "line": 7, 
+  //           "column": 11 
+  //         } 
+  //       ], 
+  //       "message": "`invalid cursor` does not appear to be a valid cursor." 
+  //     } 
+  //   ] 
+  // } 
+
+  console.log('Request failed:', error.request) // { query, variables: {}, headers: { authorization: 'token secret123' } }
+  console.log(error.message) // `invalid cursor` does not appear to be a valid cursor.
+  console.log(error.data) // { repository: { name: 'probot', ref: null } }
+}
+```
+
+## Writing tests
+
+You can pass a replacement for [the built-in fetch implementation](https://github.com/bitinn/node-fetch) as `request.fetch` option. For example, using [fetch-mock](http://www.wheresrhys.co.uk/fetch-mock/) works great to write tests
+
+```js
+const assert = require('assert')
+const fetchMock = require('fetch-mock/es5/server')
+
+const graphql = require('@octokit/graphql')
+
+graphql('{ viewer { login } }', {
+  headers: {
+    authorization: 'token secret123'
+  },
+  request: {
+    fetch: fetchMock.sandbox()
+      .post('https://api.github.com/graphql', (url, options) => {
+        assert.strictEqual(options.headers.authorization, 'token secret123')
+        assert.strictEqual(options.body, '{"query":"{ viewer { login } }"}', 'Sends correct query')
+        return { data: {} }
+      })
+  }
+})
+```
+
+## License
+
+[MIT](LICENSE)
diff --git a/setup-maven/node_modules/@octokit/graphql/index.js b/setup-maven/node_modules/@octokit/graphql/index.js
new file mode 100644
index 0000000..7f8278c
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/graphql/index.js
@@ -0,0 +1,15 @@
+const { request } = require('@octokit/request')
+const getUserAgent = require('universal-user-agent')
+
+const version = require('./package.json').version
+const userAgent = `octokit-graphql.js/${version} ${getUserAgent()}`
+
+const withDefaults = require('./lib/with-defaults')
+
+module.exports = withDefaults(request, {
+  method: 'POST',
+  url: '/graphql',
+  headers: {
+    'user-agent': userAgent
+  }
+})
diff --git a/setup-maven/node_modules/@octokit/graphql/lib/error.js b/setup-maven/node_modules/@octokit/graphql/lib/error.js
new file mode 100644
index 0000000..4478abd
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/graphql/lib/error.js
@@ -0,0 +1,16 @@
+module.exports = class GraphqlError extends Error {
+  constructor (request, response) {
+    const message = response.data.errors[0].message
+    super(message)
+
+    Object.assign(this, response.data)
+    this.name = 'GraphqlError'
+    this.request = request
+
+    // Maintains proper stack trace (only available on V8)
+    /* istanbul ignore next */
+    if (Error.captureStackTrace) {
+      Error.captureStackTrace(this, this.constructor)
+    }
+  }
+}
diff --git a/setup-maven/node_modules/@octokit/graphql/lib/graphql.js b/setup-maven/node_modules/@octokit/graphql/lib/graphql.js
new file mode 100644
index 0000000..4a5b211
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/graphql/lib/graphql.js
@@ -0,0 +1,36 @@
+module.exports = graphql
+
+const GraphqlError = require('./error')
+
+const NON_VARIABLE_OPTIONS = ['method', 'baseUrl', 'url', 'headers', 'request', 'query']
+
+function graphql (request, query, options) {
+  if (typeof query === 'string') {
+    options = Object.assign({ query }, options)
+  } else {
+    options = query
+  }
+
+  const requestOptions = Object.keys(options).reduce((result, key) => {
+    if (NON_VARIABLE_OPTIONS.includes(key)) {
+      result[key] = options[key]
+      return result
+    }
+
+    if (!result.variables) {
+      result.variables = {}
+    }
+
+    result.variables[key] = options[key]
+    return result
+  }, {})
+
+  return request(requestOptions)
+    .then(response => {
+      if (response.data.errors) {
+        throw new GraphqlError(requestOptions, response)
+      }
+
+      return response.data.data
+    })
+}
diff --git a/setup-maven/node_modules/@octokit/graphql/lib/with-defaults.js b/setup-maven/node_modules/@octokit/graphql/lib/with-defaults.js
new file mode 100644
index 0000000..a5b1493
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/graphql/lib/with-defaults.js
@@ -0,0 +1,13 @@
+module.exports = withDefaults
+
+const graphql = require('./graphql')
+
+function withDefaults (request, newDefaults) {
+  const newRequest = request.defaults(newDefaults)
+  const newApi = function (query, options) {
+    return graphql(newRequest, query, options)
+  }
+
+  newApi.defaults = withDefaults.bind(null, newRequest)
+  return newApi
+}
diff --git a/setup-maven/node_modules/@octokit/graphql/package.json b/setup-maven/node_modules/@octokit/graphql/package.json
new file mode 100644
index 0000000..04e8ecf
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/graphql/package.json
@@ -0,0 +1,119 @@
+{
+  "_from": "@octokit/graphql@^2.0.1",
+  "_id": "@octokit/graphql@2.1.3",
+  "_inBundle": false,
+  "_integrity": "sha512-XoXJqL2ondwdnMIW3wtqJWEwcBfKk37jO/rYkoxNPEVeLBDGsGO1TCWggrAlq3keGt/O+C/7VepXnukUxwt5vA==",
+  "_location": "/@octokit/graphql",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "@octokit/graphql@^2.0.1",
+    "name": "@octokit/graphql",
+    "escapedName": "@octokit%2fgraphql",
+    "scope": "@octokit",
+    "rawSpec": "^2.0.1",
+    "saveSpec": null,
+    "fetchSpec": "^2.0.1"
+  },
+  "_requiredBy": [
+    "/@actions/github"
+  ],
+  "_resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-2.1.3.tgz",
+  "_shasum": "60c058a0ed5fa242eca6f938908d95fd1a2f4b92",
+  "_spec": "@octokit/graphql@^2.0.1",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/@actions/github",
+  "author": {
+    "name": "Gregor Martynus",
+    "url": "https://github.com/gr2m"
+  },
+  "bugs": {
+    "url": "https://github.com/octokit/graphql.js/issues"
+  },
+  "bundleDependencies": false,
+  "bundlesize": [
+    {
+      "path": "./dist/octokit-graphql.min.js.gz",
+      "maxSize": "5KB"
+    }
+  ],
+  "dependencies": {
+    "@octokit/request": "^5.0.0",
+    "universal-user-agent": "^2.0.3"
+  },
+  "deprecated": false,
+  "description": "GitHub GraphQL API client for browsers and Node",
+  "devDependencies": {
+    "chai": "^4.2.0",
+    "compression-webpack-plugin": "^2.0.0",
+    "coveralls": "^3.0.3",
+    "cypress": "^3.1.5",
+    "fetch-mock": "^7.3.1",
+    "mkdirp": "^0.5.1",
+    "mocha": "^6.0.0",
+    "npm-run-all": "^4.1.3",
+    "nyc": "^14.0.0",
+    "semantic-release": "^15.13.3",
+    "simple-mock": "^0.8.0",
+    "standard": "^12.0.1",
+    "webpack": "^4.29.6",
+    "webpack-bundle-analyzer": "^3.1.0",
+    "webpack-cli": "^3.2.3"
+  },
+  "files": [
+    "lib"
+  ],
+  "homepage": "https://github.com/octokit/graphql.js#readme",
+  "keywords": [
+    "octokit",
+    "github",
+    "api",
+    "graphql"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "@octokit/graphql",
+  "publishConfig": {
+    "access": "public"
+  },
+  "release": {
+    "publish": [
+      "@semantic-release/npm",
+      {
+        "path": "@semantic-release/github",
+        "assets": [
+          "dist/*",
+          "!dist/*.map.gz"
+        ]
+      }
+    ]
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/octokit/graphql.js.git"
+  },
+  "scripts": {
+    "build": "npm-run-all build:*",
+    "build:development": "webpack --mode development --entry . --output-library=octokitGraphql --output=./dist/octokit-graphql.js --profile --json > dist/bundle-stats.json",
+    "build:production": "webpack --mode production --entry . --plugin=compression-webpack-plugin --output-library=octokitGraphql --output-path=./dist --output-filename=octokit-graphql.min.js --devtool source-map",
+    "bundle-report": "webpack-bundle-analyzer dist/bundle-stats.json --mode=static --no-open --report dist/bundle-report.html",
+    "coverage": "nyc report --reporter=html && open coverage/index.html",
+    "coverage:upload": "nyc report --reporter=text-lcov | coveralls",
+    "prebuild": "mkdirp dist/",
+    "pretest": "standard",
+    "test": "nyc mocha test/*-test.js",
+    "test:browser": "cypress run --browser chrome"
+  },
+  "standard": {
+    "globals": [
+      "describe",
+      "before",
+      "beforeEach",
+      "afterEach",
+      "after",
+      "it",
+      "expect"
+    ]
+  },
+  "version": "2.1.3"
+}
diff --git a/setup-maven/node_modules/@octokit/request-error/LICENSE b/setup-maven/node_modules/@octokit/request-error/LICENSE
new file mode 100644
index 0000000..ef2c18e
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/request-error/LICENSE
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright (c) 2019 Octokit contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/setup-maven/node_modules/@octokit/request-error/README.md b/setup-maven/node_modules/@octokit/request-error/README.md
new file mode 100644
index 0000000..bcb711d
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/request-error/README.md
@@ -0,0 +1,68 @@
+# http-error.js
+
+> Error class for Octokit request errors
+
+[![@latest](https://img.shields.io/npm/v/@octokit/request-error.svg)](https://www.npmjs.com/package/@octokit/request-error)
+[![Build Status](https://travis-ci.com/octokit/request-error.js.svg?branch=master)](https://travis-ci.com/octokit/request-error.js)
+[![Greenkeeper](https://badges.greenkeeper.io/octokit/request-error.js.svg)](https://greenkeeper.io/)
+
+## Usage
+
+<table>
+<tbody valign=top align=left>
+<tr><th>
+Browsers
+</th><td width=100%>
+Load <code>@octokit/request-error</code> directly from <a href="https://cdn.pika.dev">cdn.pika.dev</a>
+        
+```html
+<script type="module">
+import { RequestError } from "https://cdn.pika.dev/@octokit/request-error";
+</script>
+```
+
+</td></tr>
+<tr><th>
+Node
+</th><td>
+
+Install with <code>npm install @octokit/request-error</code>
+
+```js
+const { RequestError } = require("@octokit/request-error");
+// or: import { RequestError } from "@octokit/request-error";
+```
+
+</td></tr>
+</tbody>
+</table>
+
+```js
+const error = new RequestError("Oops", 500, {
+  headers: {
+    "x-github-request-id": "1:2:3:4"
+  }, // response headers
+  request: {
+    method: "POST",
+    url: "https://api.github.com/foo",
+    body: {
+      bar: "baz"
+    },
+    headers: {
+      authorization: "token secret123"
+    }
+  }
+});
+
+error.message; // Oops
+error.status; // 500
+error.headers; // { 'x-github-request-id': '1:2:3:4' }
+error.request.method; // POST
+error.request.url; // https://api.github.com/foo
+error.request.body; // { bar: 'baz' }
+error.request.headers; // { authorization: 'token [REDACTED]' }
+```
+
+## LICENSE
+
+[MIT](LICENSE)
diff --git a/setup-maven/node_modules/@octokit/request-error/dist-node/index.js b/setup-maven/node_modules/@octokit/request-error/dist-node/index.js
new file mode 100644
index 0000000..95b9c57
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/request-error/dist-node/index.js
@@ -0,0 +1,55 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
+
+var deprecation = require('deprecation');
+var once = _interopDefault(require('once'));
+
+const logOnce = once(deprecation => console.warn(deprecation));
+/**
+ * Error with extra properties to help with debugging
+ */
+
+class RequestError extends Error {
+  constructor(message, statusCode, options) {
+    super(message); // Maintains proper stack trace (only available on V8)
+
+    /* istanbul ignore next */
+
+    if (Error.captureStackTrace) {
+      Error.captureStackTrace(this, this.constructor);
+    }
+
+    this.name = "HttpError";
+    this.status = statusCode;
+    Object.defineProperty(this, "code", {
+      get() {
+        logOnce(new deprecation.Deprecation("[@octokit/request-error] `error.code` is deprecated, use `error.status`."));
+        return statusCode;
+      }
+
+    });
+    this.headers = options.headers || {}; // redact request credentials without mutating original request options
+
+    const requestCopy = Object.assign({}, options.request);
+
+    if (options.request.headers.authorization) {
+      requestCopy.headers = Object.assign({}, options.request.headers, {
+        authorization: options.request.headers.authorization.replace(/ .*$/, " [REDACTED]")
+      });
+    }
+
+    requestCopy.url = requestCopy.url // client_id & client_secret can be passed as URL query parameters to increase rate limit
+    // see https://developer.github.com/v3/#increasing-the-unauthenticated-rate-limit-for-oauth-applications
+    .replace(/\bclient_secret=\w+/g, "client_secret=[REDACTED]") // OAuth tokens can be passed as URL query parameters, although it is not recommended
+    // see https://developer.github.com/v3/#oauth2-token-sent-in-a-header
+    .replace(/\baccess_token=\w+/g, "access_token=[REDACTED]");
+    this.request = requestCopy;
+  }
+
+}
+
+exports.RequestError = RequestError;
+//# sourceMappingURL=index.js.map
diff --git a/setup-maven/node_modules/@octokit/request-error/dist-node/index.js.map b/setup-maven/node_modules/@octokit/request-error/dist-node/index.js.map
new file mode 100644
index 0000000..ec1c6db
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/request-error/dist-node/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sources":["../dist-src/index.js"],"sourcesContent":["import { Deprecation } from \"deprecation\";\nimport once from \"once\";\nconst logOnce = once((deprecation) => console.warn(deprecation));\n/**\n * Error with extra properties to help with debugging\n */\nexport class RequestError extends Error {\n    constructor(message, statusCode, options) {\n        super(message);\n        // Maintains proper stack trace (only available on V8)\n        /* istanbul ignore next */\n        if (Error.captureStackTrace) {\n            Error.captureStackTrace(this, this.constructor);\n        }\n        this.name = \"HttpError\";\n        this.status = statusCode;\n        Object.defineProperty(this, \"code\", {\n            get() {\n                logOnce(new Deprecation(\"[@octokit/request-error] `error.code` is deprecated, use `error.status`.\"));\n                return statusCode;\n            }\n        });\n        this.headers = options.headers || {};\n        // redact request credentials without mutating original request options\n        const requestCopy = Object.assign({}, options.request);\n        if (options.request.headers.authorization) {\n            requestCopy.headers = Object.assign({}, options.request.headers, {\n                authorization: options.request.headers.authorization.replace(/ .*$/, \" [REDACTED]\")\n            });\n        }\n        requestCopy.url = requestCopy.url\n            // client_id & client_secret can be passed as URL query parameters to increase rate limit\n            // see https://developer.github.com/v3/#increasing-the-unauthenticated-rate-limit-for-oauth-applications\n            .replace(/\\bclient_secret=\\w+/g, \"client_secret=[REDACTED]\")\n            // OAuth tokens can be passed as URL query parameters, although it is not recommended\n            // see https://developer.github.com/v3/#oauth2-token-sent-in-a-header\n            .replace(/\\baccess_token=\\w+/g, \"access_token=[REDACTED]\");\n        this.request = requestCopy;\n    }\n}\n"],"names":["logOnce","once","deprecation","console","warn","RequestError","Error","constructor","message","statusCode","options","captureStackTrace","name","status","Object","defineProperty","get","Deprecation","headers","requestCopy","assign","request","authorization","replace","url"],"mappings":";;;;;;;;;AAEA,MAAMA,OAAO,GAAGC,IAAI,CAAEC,WAAD,IAAiBC,OAAO,CAACC,IAAR,CAAaF,WAAb,CAAlB,CAApB;;;;;AAIA,AAAO,MAAMG,YAAN,SAA2BC,KAA3B,CAAiC;EACpCC,WAAW,CAACC,OAAD,EAAUC,UAAV,EAAsBC,OAAtB,EAA+B;UAChCF,OAAN,EADsC;;;;QAIlCF,KAAK,CAACK,iBAAV,EAA6B;MACzBL,KAAK,CAACK,iBAAN,CAAwB,IAAxB,EAA8B,KAAKJ,WAAnC;;;SAECK,IAAL,GAAY,WAAZ;SACKC,MAAL,GAAcJ,UAAd;IACAK,MAAM,CAACC,cAAP,CAAsB,IAAtB,EAA4B,MAA5B,EAAoC;MAChCC,GAAG,GAAG;QACFhB,OAAO,CAAC,IAAIiB,uBAAJ,CAAgB,0EAAhB,CAAD,CAAP;eACOR,UAAP;;;KAHR;SAMKS,OAAL,GAAeR,OAAO,CAACQ,OAAR,IAAmB,EAAlC,CAfsC;;UAiBhCC,WAAW,GAAGL,MAAM,CAACM,MAAP,CAAc,EAAd,EAAkBV,OAAO,CAACW,OAA1B,CAApB;;QACIX,OAAO,CAACW,OAAR,CAAgBH,OAAhB,CAAwBI,aAA5B,EAA2C;MACvCH,WAAW,CAACD,OAAZ,GAAsBJ,MAAM,CAACM,MAAP,CAAc,EAAd,EAAkBV,OAAO,CAACW,OAAR,CAAgBH,OAAlC,EAA2C;QAC7DI,aAAa,EAAEZ,OAAO,CAACW,OAAR,CAAgBH,OAAhB,CAAwBI,aAAxB,CAAsCC,OAAtC,CAA8C,MAA9C,EAAsD,aAAtD;OADG,CAAtB;;;IAIJJ,WAAW,CAACK,GAAZ,GAAkBL,WAAW,CAACK,GAAZ;;KAGbD,OAHa,CAGL,sBAHK,EAGmB,0BAHnB;;KAMbA,OANa,CAML,qBANK,EAMkB,yBANlB,CAAlB;SAOKF,OAAL,GAAeF,WAAf;;;;;;;"}
\ No newline at end of file
diff --git a/setup-maven/node_modules/@octokit/request-error/dist-src/index.js b/setup-maven/node_modules/@octokit/request-error/dist-src/index.js
new file mode 100644
index 0000000..cfcb7c4
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/request-error/dist-src/index.js
@@ -0,0 +1,40 @@
+import { Deprecation } from "deprecation";
+import once from "once";
+const logOnce = once((deprecation) => console.warn(deprecation));
+/**
+ * Error with extra properties to help with debugging
+ */
+export class RequestError extends Error {
+    constructor(message, statusCode, options) {
+        super(message);
+        // Maintains proper stack trace (only available on V8)
+        /* istanbul ignore next */
+        if (Error.captureStackTrace) {
+            Error.captureStackTrace(this, this.constructor);
+        }
+        this.name = "HttpError";
+        this.status = statusCode;
+        Object.defineProperty(this, "code", {
+            get() {
+                logOnce(new Deprecation("[@octokit/request-error] `error.code` is deprecated, use `error.status`."));
+                return statusCode;
+            }
+        });
+        this.headers = options.headers || {};
+        // redact request credentials without mutating original request options
+        const requestCopy = Object.assign({}, options.request);
+        if (options.request.headers.authorization) {
+            requestCopy.headers = Object.assign({}, options.request.headers, {
+                authorization: options.request.headers.authorization.replace(/ .*$/, " [REDACTED]")
+            });
+        }
+        requestCopy.url = requestCopy.url
+            // client_id & client_secret can be passed as URL query parameters to increase rate limit
+            // see https://developer.github.com/v3/#increasing-the-unauthenticated-rate-limit-for-oauth-applications
+            .replace(/\bclient_secret=\w+/g, "client_secret=[REDACTED]")
+            // OAuth tokens can be passed as URL query parameters, although it is not recommended
+            // see https://developer.github.com/v3/#oauth2-token-sent-in-a-header
+            .replace(/\baccess_token=\w+/g, "access_token=[REDACTED]");
+        this.request = requestCopy;
+    }
+}
diff --git a/setup-maven/node_modules/@octokit/request-error/dist-src/types.js b/setup-maven/node_modules/@octokit/request-error/dist-src/types.js
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/request-error/dist-src/types.js
diff --git a/setup-maven/node_modules/@octokit/request-error/dist-types/index.d.ts b/setup-maven/node_modules/@octokit/request-error/dist-types/index.d.ts
new file mode 100644
index 0000000..baa8a0e
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/request-error/dist-types/index.d.ts
@@ -0,0 +1,27 @@
+import { RequestOptions, ResponseHeaders } from "@octokit/types";
+import { RequestErrorOptions } from "./types";
+/**
+ * Error with extra properties to help with debugging
+ */
+export declare class RequestError extends Error {
+    name: "HttpError";
+    /**
+     * http status code
+     */
+    status: number;
+    /**
+     * http status code
+     *
+     * @deprecated `error.code` is deprecated in favor of `error.status`
+     */
+    code: number;
+    /**
+     * error response headers
+     */
+    headers: ResponseHeaders;
+    /**
+     * Request options that lead to the error.
+     */
+    request: RequestOptions;
+    constructor(message: string, statusCode: number, options: RequestErrorOptions);
+}
diff --git a/setup-maven/node_modules/@octokit/request-error/dist-types/types.d.ts b/setup-maven/node_modules/@octokit/request-error/dist-types/types.d.ts
new file mode 100644
index 0000000..865d213
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/request-error/dist-types/types.d.ts
@@ -0,0 +1,5 @@
+import { RequestOptions, ResponseHeaders } from "@octokit/types";
+export declare type RequestErrorOptions = {
+    headers?: ResponseHeaders;
+    request: RequestOptions;
+};
diff --git a/setup-maven/node_modules/@octokit/request-error/dist-web/index.js b/setup-maven/node_modules/@octokit/request-error/dist-web/index.js
new file mode 100644
index 0000000..32b45a3
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/request-error/dist-web/index.js
@@ -0,0 +1,44 @@
+import { Deprecation } from 'deprecation';
+import once from 'once';
+
+const logOnce = once((deprecation) => console.warn(deprecation));
+/**
+ * Error with extra properties to help with debugging
+ */
+class RequestError extends Error {
+    constructor(message, statusCode, options) {
+        super(message);
+        // Maintains proper stack trace (only available on V8)
+        /* istanbul ignore next */
+        if (Error.captureStackTrace) {
+            Error.captureStackTrace(this, this.constructor);
+        }
+        this.name = "HttpError";
+        this.status = statusCode;
+        Object.defineProperty(this, "code", {
+            get() {
+                logOnce(new Deprecation("[@octokit/request-error] `error.code` is deprecated, use `error.status`."));
+                return statusCode;
+            }
+        });
+        this.headers = options.headers || {};
+        // redact request credentials without mutating original request options
+        const requestCopy = Object.assign({}, options.request);
+        if (options.request.headers.authorization) {
+            requestCopy.headers = Object.assign({}, options.request.headers, {
+                authorization: options.request.headers.authorization.replace(/ .*$/, " [REDACTED]")
+            });
+        }
+        requestCopy.url = requestCopy.url
+            // client_id & client_secret can be passed as URL query parameters to increase rate limit
+            // see https://developer.github.com/v3/#increasing-the-unauthenticated-rate-limit-for-oauth-applications
+            .replace(/\bclient_secret=\w+/g, "client_secret=[REDACTED]")
+            // OAuth tokens can be passed as URL query parameters, although it is not recommended
+            // see https://developer.github.com/v3/#oauth2-token-sent-in-a-header
+            .replace(/\baccess_token=\w+/g, "access_token=[REDACTED]");
+        this.request = requestCopy;
+    }
+}
+
+export { RequestError };
+//# sourceMappingURL=index.js.map
diff --git a/setup-maven/node_modules/@octokit/request-error/dist-web/index.js.map b/setup-maven/node_modules/@octokit/request-error/dist-web/index.js.map
new file mode 100644
index 0000000..05151b0
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/request-error/dist-web/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sources":["../dist-src/index.js"],"sourcesContent":["import { Deprecation } from \"deprecation\";\nimport once from \"once\";\nconst logOnce = once((deprecation) => console.warn(deprecation));\n/**\n * Error with extra properties to help with debugging\n */\nexport class RequestError extends Error {\n    constructor(message, statusCode, options) {\n        super(message);\n        // Maintains proper stack trace (only available on V8)\n        /* istanbul ignore next */\n        if (Error.captureStackTrace) {\n            Error.captureStackTrace(this, this.constructor);\n        }\n        this.name = \"HttpError\";\n        this.status = statusCode;\n        Object.defineProperty(this, \"code\", {\n            get() {\n                logOnce(new Deprecation(\"[@octokit/request-error] `error.code` is deprecated, use `error.status`.\"));\n                return statusCode;\n            }\n        });\n        this.headers = options.headers || {};\n        // redact request credentials without mutating original request options\n        const requestCopy = Object.assign({}, options.request);\n        if (options.request.headers.authorization) {\n            requestCopy.headers = Object.assign({}, options.request.headers, {\n                authorization: options.request.headers.authorization.replace(/ .*$/, \" [REDACTED]\")\n            });\n        }\n        requestCopy.url = requestCopy.url\n            // client_id & client_secret can be passed as URL query parameters to increase rate limit\n            // see https://developer.github.com/v3/#increasing-the-unauthenticated-rate-limit-for-oauth-applications\n            .replace(/\\bclient_secret=\\w+/g, \"client_secret=[REDACTED]\")\n            // OAuth tokens can be passed as URL query parameters, although it is not recommended\n            // see https://developer.github.com/v3/#oauth2-token-sent-in-a-header\n            .replace(/\\baccess_token=\\w+/g, \"access_token=[REDACTED]\");\n        this.request = requestCopy;\n    }\n}\n"],"names":[],"mappings":";;;AAEA,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;;;;AAIjE,AAAO,MAAM,YAAY,SAAS,KAAK,CAAC;IACpC,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE;QACtC,KAAK,CAAC,OAAO,CAAC,CAAC;;;QAGf,IAAI,KAAK,CAAC,iBAAiB,EAAE;YACzB,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;SACnD;QACD,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;QACzB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE;YAChC,GAAG,GAAG;gBACF,OAAO,CAAC,IAAI,WAAW,CAAC,0EAA0E,CAAC,CAAC,CAAC;gBACrG,OAAO,UAAU,CAAC;aACrB;SACJ,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;;QAErC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACvD,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE;YACvC,WAAW,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE;gBAC7D,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC;aACtF,CAAC,CAAC;SACN;QACD,WAAW,CAAC,GAAG,GAAG,WAAW,CAAC,GAAG;;;aAG5B,OAAO,CAAC,sBAAsB,EAAE,0BAA0B,CAAC;;;aAG3D,OAAO,CAAC,qBAAqB,EAAE,yBAAyB,CAAC,CAAC;QAC/D,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC;KAC9B;CACJ;;;;"}
\ No newline at end of file
diff --git a/setup-maven/node_modules/@octokit/request-error/package.json b/setup-maven/node_modules/@octokit/request-error/package.json
new file mode 100644
index 0000000..75a566b
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/request-error/package.json
@@ -0,0 +1,81 @@
+{
+  "_from": "@octokit/request-error@^1.0.1",
+  "_id": "@octokit/request-error@1.2.0",
+  "_inBundle": false,
+  "_integrity": "sha512-DNBhROBYjjV/I9n7A8kVkmQNkqFAMem90dSxqvPq57e2hBr7mNTX98y3R2zDpqMQHVRpBDjsvsfIGgBzy+4PAg==",
+  "_location": "/@octokit/request-error",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "@octokit/request-error@^1.0.1",
+    "name": "@octokit/request-error",
+    "escapedName": "@octokit%2frequest-error",
+    "scope": "@octokit",
+    "rawSpec": "^1.0.1",
+    "saveSpec": null,
+    "fetchSpec": "^1.0.1"
+  },
+  "_requiredBy": [
+    "/@octokit/request",
+    "/@octokit/rest"
+  ],
+  "_resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-1.2.0.tgz",
+  "_shasum": "a64d2a9d7a13555570cd79722de4a4d76371baaa",
+  "_spec": "@octokit/request-error@^1.0.1",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/@octokit/request",
+  "bugs": {
+    "url": "https://github.com/octokit/request-error.js/issues"
+  },
+  "bundleDependencies": false,
+  "deno": "dist-web/index.js",
+  "dependencies": {
+    "@octokit/types": "^2.0.0",
+    "deprecation": "^2.0.0",
+    "once": "^1.4.0"
+  },
+  "deprecated": false,
+  "description": "Error class for Octokit request errors",
+  "devDependencies": {
+    "@pika/pack": "^0.5.0",
+    "@pika/plugin-build-node": "^0.7.0",
+    "@pika/plugin-build-web": "^0.7.0",
+    "@pika/plugin-bundle-web": "^0.7.0",
+    "@pika/plugin-ts-standard-pkg": "^0.7.0",
+    "@types/jest": "^24.0.12",
+    "@types/node": "^12.0.2",
+    "@types/once": "^1.4.0",
+    "jest": "^24.7.1",
+    "pika-plugin-unpkg-field": "^1.1.0",
+    "prettier": "^1.17.0",
+    "semantic-release": "^15.10.5",
+    "ts-jest": "^24.0.2",
+    "typescript": "^3.4.5"
+  },
+  "files": [
+    "dist-*/",
+    "bin/"
+  ],
+  "homepage": "https://github.com/octokit/request-error.js#readme",
+  "keywords": [
+    "octokit",
+    "github",
+    "api",
+    "error"
+  ],
+  "license": "MIT",
+  "main": "dist-node/index.js",
+  "name": "@octokit/request-error",
+  "pika": true,
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/octokit/request-error.js.git"
+  },
+  "sideEffects": false,
+  "source": "dist-src/index.js",
+  "types": "dist-types/index.d.ts",
+  "version": "1.2.0"
+}
diff --git a/setup-maven/node_modules/@octokit/request/LICENSE b/setup-maven/node_modules/@octokit/request/LICENSE
new file mode 100644
index 0000000..af5366d
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/request/LICENSE
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright (c) 2018 Octokit contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/setup-maven/node_modules/@octokit/request/README.md b/setup-maven/node_modules/@octokit/request/README.md
new file mode 100644
index 0000000..db35e62
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/request/README.md
@@ -0,0 +1,539 @@
+# request.js
+
+> Send parameterized requests to GitHub’s APIs with sensible defaults in browsers and Node
+
+[![@latest](https://img.shields.io/npm/v/@octokit/request.svg)](https://www.npmjs.com/package/@octokit/request)
+[![Build Status](https://travis-ci.org/octokit/request.js.svg?branch=master)](https://travis-ci.org/octokit/request.js)
+[![Greenkeeper](https://badges.greenkeeper.io/octokit/request.js.svg)](https://greenkeeper.io/)
+
+`@octokit/request` is a request library for browsers & node that makes it easier
+to interact with [GitHub’s REST API](https://developer.github.com/v3/) and
+[GitHub’s GraphQL API](https://developer.github.com/v4/guides/forming-calls/#the-graphql-endpoint).
+
+It uses [`@octokit/endpoint`](https://github.com/octokit/endpoint.js) to parse
+the passed options and sends the request using [fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)
+([node-fetch](https://github.com/bitinn/node-fetch) in Node).
+
+<!-- update table of contents by running `npx markdown-toc README.md -i` -->
+
+<!-- toc -->
+
+- [Features](#features)
+- [Usage](#usage)
+  - [REST API example](#rest-api-example)
+  - [GraphQL example](#graphql-example)
+  - [Alternative: pass `method` & `url` as part of options](#alternative-pass-method--url-as-part-of-options)
+- [Authentication](#authentication)
+- [request()](#request)
+- [`request.defaults()`](#requestdefaults)
+- [`request.endpoint`](#requestendpoint)
+- [Special cases](#special-cases)
+  - [The `data` parameter – set request body directly](#the-data-parameter-%E2%80%93-set-request-body-directly)
+  - [Set parameters for both the URL/query and the request body](#set-parameters-for-both-the-urlquery-and-the-request-body)
+- [LICENSE](#license)
+
+<!-- tocstop -->
+
+## Features
+
+🤩 1:1 mapping of REST API endpoint documentation, e.g. [Add labels to an issue](https://developer.github.com/v3/issues/labels/#add-labels-to-an-issue) becomes
+
+```js
+request("POST /repos/:owner/:repo/issues/:number/labels", {
+  mediaType: {
+    previews: ["symmetra"]
+  },
+  owner: "octokit",
+  repo: "request.js",
+  number: 1,
+  labels: ["🐛 bug"]
+});
+```
+
+👶 [Small bundle size](https://bundlephobia.com/result?p=@octokit/request@5.0.3) (\<4kb minified + gzipped)
+
+😎 [Authenticate](#authentication) with any of [GitHubs Authentication Strategies](https://github.com/octokit/auth.js).
+
+👍 Sensible defaults
+
+- `baseUrl`: `https://api.github.com`
+- `headers.accept`: `application/vnd.github.v3+json`
+- `headers.agent`: `octokit-request.js/<current version> <OS information>`, e.g. `octokit-request.js/1.2.3 Node.js/10.15.0 (macOS Mojave; x64)`
+
+👌 Simple to test: mock requests by passing a custom fetch method.
+
+🧐 Simple to debug: Sets `error.request` to request options causing the error (with redacted credentials).
+
+## Usage
+
+<table>
+<tbody valign=top align=left>
+<tr><th>
+Browsers
+</th><td width=100%>
+Load <code>@octokit/request</code> directly from <a href="https://cdn.pika.dev">cdn.pika.dev</a>
+        
+```html
+<script type="module">
+import { request } from "https://cdn.pika.dev/@octokit/request";
+</script>
+```
+
+</td></tr>
+<tr><th>
+Node
+</th><td>
+
+Install with <code>npm install @octokit/request</code>
+
+```js
+const { request } = require("@octokit/request");
+// or: import { request } from "@octokit/request";
+```
+
+</td></tr>
+</tbody>
+</table>
+
+### REST API example
+
+```js
+// Following GitHub docs formatting:
+// https://developer.github.com/v3/repos/#list-organization-repositories
+const result = await request("GET /orgs/:org/repos", {
+  headers: {
+    authorization: "token 0000000000000000000000000000000000000001"
+  },
+  org: "octokit",
+  type: "private"
+});
+
+console.log(`${result.data.length} repos found.`);
+```
+
+### GraphQL example
+
+For GraphQL request we recommend using [`@octokit/graphql`](https://github.com/octokit/graphql.js#readme)
+
+```js
+const result = await request("POST /graphql", {
+  headers: {
+    authorization: "token 0000000000000000000000000000000000000001"
+  },
+  query: `query ($login: String!) {
+    organization(login: $login) {
+      repositories(privacy: PRIVATE) {
+        totalCount
+      }
+    }
+  }`,
+  variables: {
+    login: "octokit"
+  }
+});
+```
+
+### Alternative: pass `method` & `url` as part of options
+
+Alternatively, pass in a method and a url
+
+```js
+const result = await request({
+  method: "GET",
+  url: "/orgs/:org/repos",
+  headers: {
+    authorization: "token 0000000000000000000000000000000000000001"
+  },
+  org: "octokit",
+  type: "private"
+});
+```
+
+## Authentication
+
+The simplest way to authenticate a request is to set the `Authorization` header directly, e.g. to a [personal access token](https://github.com/settings/tokens/).
+
+```js
+const requestWithAuth = request.defaults({
+  headers: {
+    authorization: "token 0000000000000000000000000000000000000001"
+  }
+});
+const result = await request("GET /user");
+```
+
+For more complex authentication strategies such as GitHub Apps or Basic, we recommend the according authentication library exported by [`@octokit/auth`](https://github.com/octokit/auth.js).
+
+```js
+const { createAppAuth } = require("@octokit/auth-app");
+const auth = createAppAuth({
+  id: process.env.APP_ID,
+  privateKey: process.env.PRIVATE_KEY,
+  installationId: 123
+});
+const requestWithAuth = request.defaults({
+  request: {
+    hook: auth.hook
+  },
+  mediaType: {
+    previews: ["machine-man"]
+  }
+});
+
+const { data: app } = await requestWithAuth("GET /app");
+const { data: app } = await requestWithAuth("POST /repos/:owner/:repo/issues", {
+  owner: "octocat",
+  repo: "hello-world",
+  title: "Hello from the engine room"
+});
+```
+
+## request()
+
+`request(route, options)` or `request(options)`.
+
+**Options**
+
+<table>
+  <thead>
+    <tr>
+      <th align=left>
+        name
+      </th>
+      <th align=left>
+        type
+      </th>
+      <th align=left>
+        description
+      </th>
+    </tr>
+  </thead>
+  <tr>
+    <th align=left>
+      <code>route</code>
+    </th>
+    <td>
+      String
+    </td>
+    <td>
+      If <code>route</code> is set it has to be a string consisting of the request method and URL, e.g. <code>GET /orgs/:org</code>
+    </td>
+  </tr>
+  <tr>
+    <th align=left>
+      <code>options.baseUrl</code>
+    </th>
+    <td>
+      String
+    </td>
+    <td>
+      <strong>Required.</strong> Any supported <a href="https://developer.github.com/v3/#http-verbs">http verb</a>, case insensitive. <em>Defaults to <code>https://api.github.com</code></em>.
+    </td>
+  </tr>
+    <th align=left>
+      <code>options.headers</code>
+    </th>
+    <td>
+      Object
+    </td>
+    <td>
+      Custom headers. Passed headers are merged with defaults:<br>
+      <em><code>headers['user-agent']</code> defaults to <code>octokit-rest.js/1.2.3</code> (where <code>1.2.3</code> is the released version)</em>.<br>
+      <em><code>headers['accept']</code> defaults to <code>application/vnd.github.v3+json</code>.<br> Use <code>options.mediaType.{format,previews}</code> to request API previews and custom media types.
+    </td>
+  </tr>
+  <tr>
+    <th align=left>
+      <code>options.mediaType.format</code>
+    </th>
+    <td>
+      String
+    </td>
+    <td>
+      Media type param, such as `raw`, `html`, or `full`. See <a href="https://developer.github.com/v3/media/">Media Types</a>.
+    </td>
+  </tr>
+  <tr>
+    <th align=left>
+      <code>options.mediaType.previews</code>
+    </th>
+    <td>
+      Array of strings
+    </td>
+    <td>
+      Name of previews, such as `mercy`, `symmetra`, or `scarlet-witch`. See <a href="https://developer.github.com/v3/previews/">API Previews</a>.
+    </td>
+  </tr>
+  <tr>
+    <th align=left>
+      <code>options.method</code>
+    </th>
+    <td>
+      String
+    </td>
+    <td>
+      <strong>Required.</strong> Any supported <a href="https://developer.github.com/v3/#http-verbs">http verb</a>, case insensitive. <em>Defaults to <code>Get</code></em>.
+    </td>
+  </tr>
+  <tr>
+    <th align=left>
+      <code>options.url</code>
+    </th>
+    <td>
+      String
+    </td>
+    <td>
+      <strong>Required.</strong> A path or full URL which may contain <code>:variable</code> or <code>{variable}</code> placeholders,
+      e.g. <code>/orgs/:org/repos</code>. The <code>url</code> is parsed using <a href="https://github.com/bramstein/url-template">url-template</a>.
+    </td>
+  </tr>
+  <tr>
+    <th align=left>
+      <code>options.data</code>
+    </th>
+    <td>
+      Any
+    </td>
+    <td>
+      Set request body directly instead of setting it to JSON based on additional parameters. See <a href="#data-parameter">"The `data` parameter"</a> below.
+    </td>
+  </tr>
+  <tr>
+    <th align=left>
+      <code>options.request.agent</code>
+    </th>
+    <td>
+      <a href="https://nodejs.org/api/http.html#http_class_http_agent">http(s).Agent</a> instance
+    </td>
+    <td>
+     Node only. Useful for custom proxy, certificate, or dns lookup.
+    </td>
+  </tr>
+  <tr>
+    <th align=left>
+      <code>options.request.fetch</code>
+    </th>
+    <td>
+      Function
+    </td>
+    <td>
+     Custom replacement for <a href="https://github.com/bitinn/node-fetch">built-in fetch method</a>. Useful for testing or request hooks.
+    </td>
+  </tr>
+  <tr>
+    <th align=left>
+      <code>options.request.hook</code>
+    </th>
+    <td>
+      Function
+    </td>
+    <td>
+     Function with the signature <code>hook(request, endpointOptions)</code>, where <code>endpointOptions</code> are the parsed options as returned by <a href="https://github.com/octokit/endpoint.js#endpointmergeroute-options-or-endpointmergeoptions"><code>endpoint.merge()</code></a>, and <code>request</code> is <a href="https://github.com/octokit/request.js#request"><code>request()</code></a>. This option works great in conjuction with <a href="https://github.com/gr2m/before-after-hook">before-after-hook</a>.
+    </td>
+  </tr>
+  <tr>
+    <th align=left>
+      <a name="options-request-signal"></a><code>options.request.signal</code>
+    </th>
+    <td>
+      <a href="https://github.com/bitinn/node-fetch/tree/e996bdab73baf996cf2dbf25643c8fe2698c3249#request-cancellation-with-abortsignal">new AbortController().signal</a>
+    </td>
+    <td>
+      Use an <code>AbortController</code> instance to cancel a request. In node you can only cancel streamed requests.
+    </td>
+  </tr>
+  <tr>
+    <th align=left>
+      <code>options.request.timeout</code>
+    </th>
+    <td>
+      Number
+    </td>
+    <td>
+     Node only. Request/response timeout in ms, it resets on redirect. 0 to disable (OS limit applies). <a href="#options-request-signal">options.request.signal</a> is recommended instead.
+    </td>
+  </tr>
+</table>
+
+All other options except `options.request.*` will be passed depending on the `method` and `url` options.
+
+1. If the option key is a placeholder in the `url`, it will be used as replacement. For example, if the passed options are `{url: '/orgs/:org/repos', org: 'foo'}` the returned `options.url` is `https://api.github.com/orgs/foo/repos`
+2. If the `method` is `GET` or `HEAD`, the option is passed as query parameter
+3. Otherwise the parameter is passed in the request body as JSON key.
+
+**Result**
+
+`request` returns a promise and resolves with 4 keys
+
+<table>
+  <thead>
+    <tr>
+      <th align=left>
+        key
+      </th>
+      <th align=left>
+        type
+      </th>
+      <th align=left>
+        description
+      </th>
+    </tr>
+  </thead>
+  <tr>
+    <th align=left><code>status</code></th>
+    <td>Integer</td>
+    <td>Response status status</td>
+  </tr>
+  <tr>
+    <th align=left><code>url</code></th>
+    <td>String</td>
+    <td>URL of response. If a request results in redirects, this is the final URL. You can send a <code>HEAD</code> request to retrieve it without loading the full response body.</td>
+  </tr>
+  <tr>
+    <th align=left><code>headers</code></th>
+    <td>Object</td>
+    <td>All response headers</td>
+  </tr>
+  <tr>
+    <th align=left><code>data</code></th>
+    <td>Any</td>
+    <td>The response body as returned from server. If the response is JSON then it will be parsed into an object</td>
+  </tr>
+</table>
+
+If an error occurs, the `error` instance has additional properties to help with debugging
+
+- `error.status` The http response status code
+- `error.headers` The http response headers as an object
+- `error.request` The request options such as `method`, `url` and `data`
+
+## `request.defaults()`
+
+Override or set default options. Example:
+
+```js
+const myrequest = require("@octokit/request").defaults({
+  baseUrl: "https://github-enterprise.acme-inc.com/api/v3",
+  headers: {
+    "user-agent": "myApp/1.2.3",
+    authorization: `token 0000000000000000000000000000000000000001`
+  },
+  org: "my-project",
+  per_page: 100
+});
+
+myrequest(`GET /orgs/:org/repos`);
+```
+
+You can call `.defaults()` again on the returned method, the defaults will cascade.
+
+```js
+const myProjectRequest = request.defaults({
+  baseUrl: "https://github-enterprise.acme-inc.com/api/v3",
+  headers: {
+    "user-agent": "myApp/1.2.3"
+  },
+  org: "my-project"
+});
+const myProjectRequestWithAuth = myProjectRequest.defaults({
+  headers: {
+    authorization: `token 0000000000000000000000000000000000000001`
+  }
+});
+```
+
+`myProjectRequest` now defaults the `baseUrl`, `headers['user-agent']`,
+`org` and `headers['authorization']` on top of `headers['accept']` that is set
+by the global default.
+
+## `request.endpoint`
+
+See https://github.com/octokit/endpoint.js. Example
+
+```js
+const options = request.endpoint("GET /orgs/:org/repos", {
+  org: "my-project",
+  type: "private"
+});
+
+// {
+//   method: 'GET',
+//   url: 'https://api.github.com/orgs/my-project/repos?type=private',
+//   headers: {
+//     accept: 'application/vnd.github.v3+json',
+//     authorization: 'token 0000000000000000000000000000000000000001',
+//     'user-agent': 'octokit/endpoint.js v1.2.3'
+//   }
+// }
+```
+
+All of the [`@octokit/endpoint`](https://github.com/octokit/endpoint.js) API can be used:
+
+- [`octokitRequest.endpoint()`](#endpoint)
+- [`octokitRequest.endpoint.defaults()`](#endpointdefaults)
+- [`octokitRequest.endpoint.merge()`](#endpointdefaults)
+- [`octokitRequest.endpoint.parse()`](#endpointmerge)
+
+## Special cases
+
+<a name="data-parameter"></a>
+
+### The `data` parameter – set request body directly
+
+Some endpoints such as [Render a Markdown document in raw mode](https://developer.github.com/v3/markdown/#render-a-markdown-document-in-raw-mode) don’t have parameters that are sent as request body keys, instead the request body needs to be set directly. In these cases, set the `data` parameter.
+
+```js
+const response = await request("POST /markdown/raw", {
+  data: "Hello world github/linguist#1 **cool**, and #1!",
+  headers: {
+    accept: "text/html;charset=utf-8",
+    "content-type": "text/plain"
+  }
+});
+
+// Request is sent as
+//
+//     {
+//       method: 'post',
+//       url: 'https://api.github.com/markdown/raw',
+//       headers: {
+//         accept: 'text/html;charset=utf-8',
+//         'content-type': 'text/plain',
+//         'user-agent': userAgent
+//       },
+//       body: 'Hello world github/linguist#1 **cool**, and #1!'
+//     }
+//
+// not as
+//
+//     {
+//       ...
+//       body: '{"data": "Hello world github/linguist#1 **cool**, and #1!"}'
+//     }
+```
+
+### Set parameters for both the URL/query and the request body
+
+There are API endpoints that accept both query parameters as well as a body. In that case you need to add the query parameters as templates to `options.url`, as defined in the [RFC 6570 URI Template specification](https://tools.ietf.org/html/rfc6570).
+
+Example
+
+```js
+request(
+  "POST https://uploads.github.com/repos/octocat/Hello-World/releases/1/assets{?name,label}",
+  {
+    name: "example.zip",
+    label: "short description",
+    headers: {
+      "content-type": "text/plain",
+      "content-length": 14,
+      authorization: `token 0000000000000000000000000000000000000001`
+    },
+    data: "Hello, world!"
+  }
+);
+```
+
+## LICENSE
+
+[MIT](LICENSE)
diff --git a/setup-maven/node_modules/@octokit/request/dist-node/index.js b/setup-maven/node_modules/@octokit/request/dist-node/index.js
new file mode 100644
index 0000000..19b227b
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/request/dist-node/index.js
@@ -0,0 +1,148 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
+
+var endpoint = require('@octokit/endpoint');
+var universalUserAgent = require('universal-user-agent');
+var isPlainObject = _interopDefault(require('is-plain-object'));
+var nodeFetch = _interopDefault(require('node-fetch'));
+var requestError = require('@octokit/request-error');
+
+const VERSION = "5.3.1";
+
+function getBufferResponse(response) {
+  return response.arrayBuffer();
+}
+
+function fetchWrapper(requestOptions) {
+  if (isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) {
+    requestOptions.body = JSON.stringify(requestOptions.body);
+  }
+
+  let headers = {};
+  let status;
+  let url;
+  const fetch = requestOptions.request && requestOptions.request.fetch || nodeFetch;
+  return fetch(requestOptions.url, Object.assign({
+    method: requestOptions.method,
+    body: requestOptions.body,
+    headers: requestOptions.headers,
+    redirect: requestOptions.redirect
+  }, requestOptions.request)).then(response => {
+    url = response.url;
+    status = response.status;
+
+    for (const keyAndValue of response.headers) {
+      headers[keyAndValue[0]] = keyAndValue[1];
+    }
+
+    if (status === 204 || status === 205) {
+      return;
+    } // GitHub API returns 200 for HEAD requsets
+
+
+    if (requestOptions.method === "HEAD") {
+      if (status < 400) {
+        return;
+      }
+
+      throw new requestError.RequestError(response.statusText, status, {
+        headers,
+        request: requestOptions
+      });
+    }
+
+    if (status === 304) {
+      throw new requestError.RequestError("Not modified", status, {
+        headers,
+        request: requestOptions
+      });
+    }
+
+    if (status >= 400) {
+      return response.text().then(message => {
+        const error = new requestError.RequestError(message, status, {
+          headers,
+          request: requestOptions
+        });
+
+        try {
+          let responseBody = JSON.parse(error.message);
+          Object.assign(error, responseBody);
+          let errors = responseBody.errors; // Assumption `errors` would always be in Array Fotmat
+
+          error.message = error.message + ": " + errors.map(JSON.stringify).join(", ");
+        } catch (e) {// ignore, see octokit/rest.js#684
+        }
+
+        throw error;
+      });
+    }
+
+    const contentType = response.headers.get("content-type");
+
+    if (/application\/json/.test(contentType)) {
+      return response.json();
+    }
+
+    if (!contentType || /^text\/|charset=utf-8$/.test(contentType)) {
+      return response.text();
+    }
+
+    return getBufferResponse(response);
+  }).then(data => {
+    return {
+      status,
+      url,
+      headers,
+      data
+    };
+  }).catch(error => {
+    if (error instanceof requestError.RequestError) {
+      throw error;
+    }
+
+    throw new requestError.RequestError(error.message, 500, {
+      headers,
+      request: requestOptions
+    });
+  });
+}
+
+function withDefaults(oldEndpoint, newDefaults) {
+  const endpoint = oldEndpoint.defaults(newDefaults);
+
+  const newApi = function (route, parameters) {
+    const endpointOptions = endpoint.merge(route, parameters);
+
+    if (!endpointOptions.request || !endpointOptions.request.hook) {
+      return fetchWrapper(endpoint.parse(endpointOptions));
+    }
+
+    const request = (route, parameters) => {
+      return fetchWrapper(endpoint.parse(endpoint.merge(route, parameters)));
+    };
+
+    Object.assign(request, {
+      endpoint,
+      defaults: withDefaults.bind(null, endpoint)
+    });
+    return endpointOptions.request.hook(request, endpointOptions);
+  };
+
+  return Object.assign(newApi, {
+    endpoint,
+    defaults: withDefaults.bind(null, endpoint)
+  });
+}
+
+const request = withDefaults(endpoint.endpoint, {
+  headers: {
+    "user-agent": `octokit-request.js/${VERSION} ${universalUserAgent.getUserAgent()}`
+  }
+});
+
+exports.request = request;
+//# sourceMappingURL=index.js.map
diff --git a/setup-maven/node_modules/@octokit/request/dist-node/index.js.map b/setup-maven/node_modules/@octokit/request/dist-node/index.js.map
new file mode 100644
index 0000000..b0ffb70
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/request/dist-node/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sources":["../dist-src/version.js","../dist-src/get-buffer-response.js","../dist-src/fetch-wrapper.js","../dist-src/with-defaults.js","../dist-src/index.js"],"sourcesContent":["export const VERSION = \"5.3.1\";\n","export default function getBufferResponse(response) {\n    return response.arrayBuffer();\n}\n","import isPlainObject from \"is-plain-object\";\nimport nodeFetch from \"node-fetch\";\nimport { RequestError } from \"@octokit/request-error\";\nimport getBuffer from \"./get-buffer-response\";\nexport default function fetchWrapper(requestOptions) {\n    if (isPlainObject(requestOptions.body) ||\n        Array.isArray(requestOptions.body)) {\n        requestOptions.body = JSON.stringify(requestOptions.body);\n    }\n    let headers = {};\n    let status;\n    let url;\n    const fetch = (requestOptions.request && requestOptions.request.fetch) || nodeFetch;\n    return fetch(requestOptions.url, Object.assign({\n        method: requestOptions.method,\n        body: requestOptions.body,\n        headers: requestOptions.headers,\n        redirect: requestOptions.redirect\n    }, requestOptions.request))\n        .then(response => {\n        url = response.url;\n        status = response.status;\n        for (const keyAndValue of response.headers) {\n            headers[keyAndValue[0]] = keyAndValue[1];\n        }\n        if (status === 204 || status === 205) {\n            return;\n        }\n        // GitHub API returns 200 for HEAD requsets\n        if (requestOptions.method === \"HEAD\") {\n            if (status < 400) {\n                return;\n            }\n            throw new RequestError(response.statusText, status, {\n                headers,\n                request: requestOptions\n            });\n        }\n        if (status === 304) {\n            throw new RequestError(\"Not modified\", status, {\n                headers,\n                request: requestOptions\n            });\n        }\n        if (status >= 400) {\n            return response\n                .text()\n                .then(message => {\n                const error = new RequestError(message, status, {\n                    headers,\n                    request: requestOptions\n                });\n                try {\n                    let responseBody = JSON.parse(error.message);\n                    Object.assign(error, responseBody);\n                    let errors = responseBody.errors;\n                    // Assumption `errors` would always be in Array Fotmat\n                    error.message =\n                        error.message + \": \" + errors.map(JSON.stringify).join(\", \");\n                }\n                catch (e) {\n                    // ignore, see octokit/rest.js#684\n                }\n                throw error;\n            });\n        }\n        const contentType = response.headers.get(\"content-type\");\n        if (/application\\/json/.test(contentType)) {\n            return response.json();\n        }\n        if (!contentType || /^text\\/|charset=utf-8$/.test(contentType)) {\n            return response.text();\n        }\n        return getBuffer(response);\n    })\n        .then(data => {\n        return {\n            status,\n            url,\n            headers,\n            data\n        };\n    })\n        .catch(error => {\n        if (error instanceof RequestError) {\n            throw error;\n        }\n        throw new RequestError(error.message, 500, {\n            headers,\n            request: requestOptions\n        });\n    });\n}\n","import fetchWrapper from \"./fetch-wrapper\";\nexport default function withDefaults(oldEndpoint, newDefaults) {\n    const endpoint = oldEndpoint.defaults(newDefaults);\n    const newApi = function (route, parameters) {\n        const endpointOptions = endpoint.merge(route, parameters);\n        if (!endpointOptions.request || !endpointOptions.request.hook) {\n            return fetchWrapper(endpoint.parse(endpointOptions));\n        }\n        const request = (route, parameters) => {\n            return fetchWrapper(endpoint.parse(endpoint.merge(route, parameters)));\n        };\n        Object.assign(request, {\n            endpoint,\n            defaults: withDefaults.bind(null, endpoint)\n        });\n        return endpointOptions.request.hook(request, endpointOptions);\n    };\n    return Object.assign(newApi, {\n        endpoint,\n        defaults: withDefaults.bind(null, endpoint)\n    });\n}\n","import { endpoint } from \"@octokit/endpoint\";\nimport { getUserAgent } from \"universal-user-agent\";\nimport { VERSION } from \"./version\";\nimport withDefaults from \"./with-defaults\";\nexport const request = withDefaults(endpoint, {\n    headers: {\n        \"user-agent\": `octokit-request.js/${VERSION} ${getUserAgent()}`\n    }\n});\n"],"names":["VERSION","getBufferResponse","response","arrayBuffer","fetchWrapper","requestOptions","isPlainObject","body","Array","isArray","JSON","stringify","headers","status","url","fetch","request","nodeFetch","Object","assign","method","redirect","then","keyAndValue","RequestError","statusText","text","message","error","responseBody","parse","errors","map","join","e","contentType","get","test","json","getBuffer","data","catch","withDefaults","oldEndpoint","newDefaults","endpoint","defaults","newApi","route","parameters","endpointOptions","merge","hook","bind","getUserAgent"],"mappings":";;;;;;;;;;;;AAAO,MAAMA,OAAO,GAAG,mBAAhB;;ACAQ,SAASC,iBAAT,CAA2BC,QAA3B,EAAqC;SACzCA,QAAQ,CAACC,WAAT,EAAP;;;ACGW,SAASC,YAAT,CAAsBC,cAAtB,EAAsC;MAC7CC,aAAa,CAACD,cAAc,CAACE,IAAhB,CAAb,IACAC,KAAK,CAACC,OAAN,CAAcJ,cAAc,CAACE,IAA7B,CADJ,EACwC;IACpCF,cAAc,CAACE,IAAf,GAAsBG,IAAI,CAACC,SAAL,CAAeN,cAAc,CAACE,IAA9B,CAAtB;;;MAEAK,OAAO,GAAG,EAAd;MACIC,MAAJ;MACIC,GAAJ;QACMC,KAAK,GAAIV,cAAc,CAACW,OAAf,IAA0BX,cAAc,CAACW,OAAf,CAAuBD,KAAlD,IAA4DE,SAA1E;SACOF,KAAK,CAACV,cAAc,CAACS,GAAhB,EAAqBI,MAAM,CAACC,MAAP,CAAc;IAC3CC,MAAM,EAAEf,cAAc,CAACe,MADoB;IAE3Cb,IAAI,EAAEF,cAAc,CAACE,IAFsB;IAG3CK,OAAO,EAAEP,cAAc,CAACO,OAHmB;IAI3CS,QAAQ,EAAEhB,cAAc,CAACgB;GAJI,EAK9BhB,cAAc,CAACW,OALe,CAArB,CAAL,CAMFM,IANE,CAMGpB,QAAQ,IAAI;IAClBY,GAAG,GAAGZ,QAAQ,CAACY,GAAf;IACAD,MAAM,GAAGX,QAAQ,CAACW,MAAlB;;SACK,MAAMU,WAAX,IAA0BrB,QAAQ,CAACU,OAAnC,EAA4C;MACxCA,OAAO,CAACW,WAAW,CAAC,CAAD,CAAZ,CAAP,GAA0BA,WAAW,CAAC,CAAD,CAArC;;;QAEAV,MAAM,KAAK,GAAX,IAAkBA,MAAM,KAAK,GAAjC,EAAsC;;KANpB;;;QAUdR,cAAc,CAACe,MAAf,KAA0B,MAA9B,EAAsC;UAC9BP,MAAM,GAAG,GAAb,EAAkB;;;;YAGZ,IAAIW,yBAAJ,CAAiBtB,QAAQ,CAACuB,UAA1B,EAAsCZ,MAAtC,EAA8C;QAChDD,OADgD;QAEhDI,OAAO,EAAEX;OAFP,CAAN;;;QAKAQ,MAAM,KAAK,GAAf,EAAoB;YACV,IAAIW,yBAAJ,CAAiB,cAAjB,EAAiCX,MAAjC,EAAyC;QAC3CD,OAD2C;QAE3CI,OAAO,EAAEX;OAFP,CAAN;;;QAKAQ,MAAM,IAAI,GAAd,EAAmB;aACRX,QAAQ,CACVwB,IADE,GAEFJ,IAFE,CAEGK,OAAO,IAAI;cACXC,KAAK,GAAG,IAAIJ,yBAAJ,CAAiBG,OAAjB,EAA0Bd,MAA1B,EAAkC;UAC5CD,OAD4C;UAE5CI,OAAO,EAAEX;SAFC,CAAd;;YAII;cACIwB,YAAY,GAAGnB,IAAI,CAACoB,KAAL,CAAWF,KAAK,CAACD,OAAjB,CAAnB;UACAT,MAAM,CAACC,MAAP,CAAcS,KAAd,EAAqBC,YAArB;cACIE,MAAM,GAAGF,YAAY,CAACE,MAA1B,CAHA;;UAKAH,KAAK,CAACD,OAAN,GACIC,KAAK,CAACD,OAAN,GAAgB,IAAhB,GAAuBI,MAAM,CAACC,GAAP,CAAWtB,IAAI,CAACC,SAAhB,EAA2BsB,IAA3B,CAAgC,IAAhC,CAD3B;SALJ,CAQA,OAAOC,CAAP,EAAU;;;cAGJN,KAAN;OAlBG,CAAP;;;UAqBEO,WAAW,GAAGjC,QAAQ,CAACU,OAAT,CAAiBwB,GAAjB,CAAqB,cAArB,CAApB;;QACI,oBAAoBC,IAApB,CAAyBF,WAAzB,CAAJ,EAA2C;aAChCjC,QAAQ,CAACoC,IAAT,EAAP;;;QAEA,CAACH,WAAD,IAAgB,yBAAyBE,IAAzB,CAA8BF,WAA9B,CAApB,EAAgE;aACrDjC,QAAQ,CAACwB,IAAT,EAAP;;;WAEGa,iBAAS,CAACrC,QAAD,CAAhB;GA5DG,EA8DFoB,IA9DE,CA8DGkB,IAAI,IAAI;WACP;MACH3B,MADG;MAEHC,GAFG;MAGHF,OAHG;MAIH4B;KAJJ;GA/DG,EAsEFC,KAtEE,CAsEIb,KAAK,IAAI;QACZA,KAAK,YAAYJ,yBAArB,EAAmC;YACzBI,KAAN;;;UAEE,IAAIJ,yBAAJ,CAAiBI,KAAK,CAACD,OAAvB,EAAgC,GAAhC,EAAqC;MACvCf,OADuC;MAEvCI,OAAO,EAAEX;KAFP,CAAN;GA1EG,CAAP;;;ACZW,SAASqC,YAAT,CAAsBC,WAAtB,EAAmCC,WAAnC,EAAgD;QACrDC,QAAQ,GAAGF,WAAW,CAACG,QAAZ,CAAqBF,WAArB,CAAjB;;QACMG,MAAM,GAAG,UAAUC,KAAV,EAAiBC,UAAjB,EAA6B;UAClCC,eAAe,GAAGL,QAAQ,CAACM,KAAT,CAAeH,KAAf,EAAsBC,UAAtB,CAAxB;;QACI,CAACC,eAAe,CAAClC,OAAjB,IAA4B,CAACkC,eAAe,CAAClC,OAAhB,CAAwBoC,IAAzD,EAA+D;aACpDhD,YAAY,CAACyC,QAAQ,CAACf,KAAT,CAAeoB,eAAf,CAAD,CAAnB;;;UAEElC,OAAO,GAAG,CAACgC,KAAD,EAAQC,UAAR,KAAuB;aAC5B7C,YAAY,CAACyC,QAAQ,CAACf,KAAT,CAAee,QAAQ,CAACM,KAAT,CAAeH,KAAf,EAAsBC,UAAtB,CAAf,CAAD,CAAnB;KADJ;;IAGA/B,MAAM,CAACC,MAAP,CAAcH,OAAd,EAAuB;MACnB6B,QADmB;MAEnBC,QAAQ,EAAEJ,YAAY,CAACW,IAAb,CAAkB,IAAlB,EAAwBR,QAAxB;KAFd;WAIOK,eAAe,CAAClC,OAAhB,CAAwBoC,IAAxB,CAA6BpC,OAA7B,EAAsCkC,eAAtC,CAAP;GAZJ;;SAcOhC,MAAM,CAACC,MAAP,CAAc4B,MAAd,EAAsB;IACzBF,QADyB;IAEzBC,QAAQ,EAAEJ,YAAY,CAACW,IAAb,CAAkB,IAAlB,EAAwBR,QAAxB;GAFP,CAAP;;;MCbS7B,OAAO,GAAG0B,YAAY,CAACG,iBAAD,EAAW;EAC1CjC,OAAO,EAAE;kBACU,sBAAqBZ,OAAQ,IAAGsD,+BAAY,EAAG;;CAFnC,CAA5B;;;;"}
\ No newline at end of file
diff --git a/setup-maven/node_modules/@octokit/request/dist-src/fetch-wrapper.js b/setup-maven/node_modules/@octokit/request/dist-src/fetch-wrapper.js
new file mode 100644
index 0000000..f2b80d7
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/request/dist-src/fetch-wrapper.js
@@ -0,0 +1,93 @@
+import isPlainObject from "is-plain-object";
+import nodeFetch from "node-fetch";
+import { RequestError } from "@octokit/request-error";
+import getBuffer from "./get-buffer-response";
+export default function fetchWrapper(requestOptions) {
+    if (isPlainObject(requestOptions.body) ||
+        Array.isArray(requestOptions.body)) {
+        requestOptions.body = JSON.stringify(requestOptions.body);
+    }
+    let headers = {};
+    let status;
+    let url;
+    const fetch = (requestOptions.request && requestOptions.request.fetch) || nodeFetch;
+    return fetch(requestOptions.url, Object.assign({
+        method: requestOptions.method,
+        body: requestOptions.body,
+        headers: requestOptions.headers,
+        redirect: requestOptions.redirect
+    }, requestOptions.request))
+        .then(response => {
+        url = response.url;
+        status = response.status;
+        for (const keyAndValue of response.headers) {
+            headers[keyAndValue[0]] = keyAndValue[1];
+        }
+        if (status === 204 || status === 205) {
+            return;
+        }
+        // GitHub API returns 200 for HEAD requsets
+        if (requestOptions.method === "HEAD") {
+            if (status < 400) {
+                return;
+            }
+            throw new RequestError(response.statusText, status, {
+                headers,
+                request: requestOptions
+            });
+        }
+        if (status === 304) {
+            throw new RequestError("Not modified", status, {
+                headers,
+                request: requestOptions
+            });
+        }
+        if (status >= 400) {
+            return response
+                .text()
+                .then(message => {
+                const error = new RequestError(message, status, {
+                    headers,
+                    request: requestOptions
+                });
+                try {
+                    let responseBody = JSON.parse(error.message);
+                    Object.assign(error, responseBody);
+                    let errors = responseBody.errors;
+                    // Assumption `errors` would always be in Array Fotmat
+                    error.message =
+                        error.message + ": " + errors.map(JSON.stringify).join(", ");
+                }
+                catch (e) {
+                    // ignore, see octokit/rest.js#684
+                }
+                throw error;
+            });
+        }
+        const contentType = response.headers.get("content-type");
+        if (/application\/json/.test(contentType)) {
+            return response.json();
+        }
+        if (!contentType || /^text\/|charset=utf-8$/.test(contentType)) {
+            return response.text();
+        }
+        return getBuffer(response);
+    })
+        .then(data => {
+        return {
+            status,
+            url,
+            headers,
+            data
+        };
+    })
+        .catch(error => {
+        if (error instanceof RequestError) {
+            throw error;
+        }
+        throw new RequestError(error.message, 500, {
+            headers,
+            request: requestOptions
+        });
+    });
+}
diff --git a/setup-maven/node_modules/@octokit/request/dist-src/get-buffer-response.js b/setup-maven/node_modules/@octokit/request/dist-src/get-buffer-response.js
new file mode 100644
index 0000000..845a394
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/request/dist-src/get-buffer-response.js
@@ -0,0 +1,3 @@
+export default function getBufferResponse(response) {
+    return response.arrayBuffer();
+}
diff --git a/setup-maven/node_modules/@octokit/request/dist-src/index.js b/setup-maven/node_modules/@octokit/request/dist-src/index.js
new file mode 100644
index 0000000..6a36142
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/request/dist-src/index.js
@@ -0,0 +1,9 @@
+import { endpoint } from "@octokit/endpoint";
+import { getUserAgent } from "universal-user-agent";
+import { VERSION } from "./version";
+import withDefaults from "./with-defaults";
+export const request = withDefaults(endpoint, {
+    headers: {
+        "user-agent": `octokit-request.js/${VERSION} ${getUserAgent()}`
+    }
+});
diff --git a/setup-maven/node_modules/@octokit/request/dist-src/version.js b/setup-maven/node_modules/@octokit/request/dist-src/version.js
new file mode 100644
index 0000000..6250d76
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/request/dist-src/version.js
@@ -0,0 +1 @@
+export const VERSION = "5.3.1";
diff --git a/setup-maven/node_modules/@octokit/request/dist-src/with-defaults.js b/setup-maven/node_modules/@octokit/request/dist-src/with-defaults.js
new file mode 100644
index 0000000..8e44f46
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/request/dist-src/with-defaults.js
@@ -0,0 +1,22 @@
+import fetchWrapper from "./fetch-wrapper";
+export default function withDefaults(oldEndpoint, newDefaults) {
+    const endpoint = oldEndpoint.defaults(newDefaults);
+    const newApi = function (route, parameters) {
+        const endpointOptions = endpoint.merge(route, parameters);
+        if (!endpointOptions.request || !endpointOptions.request.hook) {
+            return fetchWrapper(endpoint.parse(endpointOptions));
+        }
+        const request = (route, parameters) => {
+            return fetchWrapper(endpoint.parse(endpoint.merge(route, parameters)));
+        };
+        Object.assign(request, {
+            endpoint,
+            defaults: withDefaults.bind(null, endpoint)
+        });
+        return endpointOptions.request.hook(request, endpointOptions);
+    };
+    return Object.assign(newApi, {
+        endpoint,
+        defaults: withDefaults.bind(null, endpoint)
+    });
+}
diff --git a/setup-maven/node_modules/@octokit/request/dist-types/fetch-wrapper.d.ts b/setup-maven/node_modules/@octokit/request/dist-types/fetch-wrapper.d.ts
new file mode 100644
index 0000000..594bce6
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/request/dist-types/fetch-wrapper.d.ts
@@ -0,0 +1,11 @@
+import { EndpointInterface } from "@octokit/types";
+export default function fetchWrapper(requestOptions: ReturnType<EndpointInterface> & {
+    redirect?: string;
+}): Promise<{
+    status: number;
+    url: string;
+    headers: {
+        [header: string]: string;
+    };
+    data: any;
+}>;
diff --git a/setup-maven/node_modules/@octokit/request/dist-types/get-buffer-response.d.ts b/setup-maven/node_modules/@octokit/request/dist-types/get-buffer-response.d.ts
new file mode 100644
index 0000000..915b705
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/request/dist-types/get-buffer-response.d.ts
@@ -0,0 +1,2 @@
+import { Response } from "node-fetch";
+export default function getBufferResponse(response: Response): Promise<ArrayBuffer>;
diff --git a/setup-maven/node_modules/@octokit/request/dist-types/index.d.ts b/setup-maven/node_modules/@octokit/request/dist-types/index.d.ts
new file mode 100644
index 0000000..cb9c9ba
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/request/dist-types/index.d.ts
@@ -0,0 +1 @@
+export declare const request: import("@octokit/types").RequestInterface;
diff --git a/setup-maven/node_modules/@octokit/request/dist-types/version.d.ts b/setup-maven/node_modules/@octokit/request/dist-types/version.d.ts
new file mode 100644
index 0000000..c32c7ab
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/request/dist-types/version.d.ts
@@ -0,0 +1 @@
+export declare const VERSION = "5.3.1";
diff --git a/setup-maven/node_modules/@octokit/request/dist-types/with-defaults.d.ts b/setup-maven/node_modules/@octokit/request/dist-types/with-defaults.d.ts
new file mode 100644
index 0000000..0080469
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/request/dist-types/with-defaults.d.ts
@@ -0,0 +1,2 @@
+import { EndpointInterface, RequestInterface, RequestParameters } from "@octokit/types";
+export default function withDefaults(oldEndpoint: EndpointInterface, newDefaults: RequestParameters): RequestInterface;
diff --git a/setup-maven/node_modules/@octokit/request/dist-web/index.js b/setup-maven/node_modules/@octokit/request/dist-web/index.js
new file mode 100644
index 0000000..3f51926
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/request/dist-web/index.js
@@ -0,0 +1,132 @@
+import { endpoint } from '@octokit/endpoint';
+import { getUserAgent } from 'universal-user-agent';
+import isPlainObject from 'is-plain-object';
+import nodeFetch from 'node-fetch';
+import { RequestError } from '@octokit/request-error';
+
+const VERSION = "5.3.1";
+
+function getBufferResponse(response) {
+    return response.arrayBuffer();
+}
+
+function fetchWrapper(requestOptions) {
+    if (isPlainObject(requestOptions.body) ||
+        Array.isArray(requestOptions.body)) {
+        requestOptions.body = JSON.stringify(requestOptions.body);
+    }
+    let headers = {};
+    let status;
+    let url;
+    const fetch = (requestOptions.request && requestOptions.request.fetch) || nodeFetch;
+    return fetch(requestOptions.url, Object.assign({
+        method: requestOptions.method,
+        body: requestOptions.body,
+        headers: requestOptions.headers,
+        redirect: requestOptions.redirect
+    }, requestOptions.request))
+        .then(response => {
+        url = response.url;
+        status = response.status;
+        for (const keyAndValue of response.headers) {
+            headers[keyAndValue[0]] = keyAndValue[1];
+        }
+        if (status === 204 || status === 205) {
+            return;
+        }
+        // GitHub API returns 200 for HEAD requsets
+        if (requestOptions.method === "HEAD") {
+            if (status < 400) {
+                return;
+            }
+            throw new RequestError(response.statusText, status, {
+                headers,
+                request: requestOptions
+            });
+        }
+        if (status === 304) {
+            throw new RequestError("Not modified", status, {
+                headers,
+                request: requestOptions
+            });
+        }
+        if (status >= 400) {
+            return response
+                .text()
+                .then(message => {
+                const error = new RequestError(message, status, {
+                    headers,
+                    request: requestOptions
+                });
+                try {
+                    let responseBody = JSON.parse(error.message);
+                    Object.assign(error, responseBody);
+                    let errors = responseBody.errors;
+                    // Assumption `errors` would always be in Array Fotmat
+                    error.message =
+                        error.message + ": " + errors.map(JSON.stringify).join(", ");
+                }
+                catch (e) {
+                    // ignore, see octokit/rest.js#684
+                }
+                throw error;
+            });
+        }
+        const contentType = response.headers.get("content-type");
+        if (/application\/json/.test(contentType)) {
+            return response.json();
+        }
+        if (!contentType || /^text\/|charset=utf-8$/.test(contentType)) {
+            return response.text();
+        }
+        return getBufferResponse(response);
+    })
+        .then(data => {
+        return {
+            status,
+            url,
+            headers,
+            data
+        };
+    })
+        .catch(error => {
+        if (error instanceof RequestError) {
+            throw error;
+        }
+        throw new RequestError(error.message, 500, {
+            headers,
+            request: requestOptions
+        });
+    });
+}
+
+function withDefaults(oldEndpoint, newDefaults) {
+    const endpoint = oldEndpoint.defaults(newDefaults);
+    const newApi = function (route, parameters) {
+        const endpointOptions = endpoint.merge(route, parameters);
+        if (!endpointOptions.request || !endpointOptions.request.hook) {
+            return fetchWrapper(endpoint.parse(endpointOptions));
+        }
+        const request = (route, parameters) => {
+            return fetchWrapper(endpoint.parse(endpoint.merge(route, parameters)));
+        };
+        Object.assign(request, {
+            endpoint,
+            defaults: withDefaults.bind(null, endpoint)
+        });
+        return endpointOptions.request.hook(request, endpointOptions);
+    };
+    return Object.assign(newApi, {
+        endpoint,
+        defaults: withDefaults.bind(null, endpoint)
+    });
+}
+
+const request = withDefaults(endpoint, {
+    headers: {
+        "user-agent": `octokit-request.js/${VERSION} ${getUserAgent()}`
+    }
+});
+
+export { request };
+//# sourceMappingURL=index.js.map
diff --git a/setup-maven/node_modules/@octokit/request/dist-web/index.js.map b/setup-maven/node_modules/@octokit/request/dist-web/index.js.map
new file mode 100644
index 0000000..f4c3084
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/request/dist-web/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sources":["../dist-src/version.js","../dist-src/get-buffer-response.js","../dist-src/fetch-wrapper.js","../dist-src/with-defaults.js","../dist-src/index.js"],"sourcesContent":["export const VERSION = \"5.3.1\";\n","export default function getBufferResponse(response) {\n    return response.arrayBuffer();\n}\n","import isPlainObject from \"is-plain-object\";\nimport nodeFetch from \"node-fetch\";\nimport { RequestError } from \"@octokit/request-error\";\nimport getBuffer from \"./get-buffer-response\";\nexport default function fetchWrapper(requestOptions) {\n    if (isPlainObject(requestOptions.body) ||\n        Array.isArray(requestOptions.body)) {\n        requestOptions.body = JSON.stringify(requestOptions.body);\n    }\n    let headers = {};\n    let status;\n    let url;\n    const fetch = (requestOptions.request && requestOptions.request.fetch) || nodeFetch;\n    return fetch(requestOptions.url, Object.assign({\n        method: requestOptions.method,\n        body: requestOptions.body,\n        headers: requestOptions.headers,\n        redirect: requestOptions.redirect\n    }, requestOptions.request))\n        .then(response => {\n        url = response.url;\n        status = response.status;\n        for (const keyAndValue of response.headers) {\n            headers[keyAndValue[0]] = keyAndValue[1];\n        }\n        if (status === 204 || status === 205) {\n            return;\n        }\n        // GitHub API returns 200 for HEAD requsets\n        if (requestOptions.method === \"HEAD\") {\n            if (status < 400) {\n                return;\n            }\n            throw new RequestError(response.statusText, status, {\n                headers,\n                request: requestOptions\n            });\n        }\n        if (status === 304) {\n            throw new RequestError(\"Not modified\", status, {\n                headers,\n                request: requestOptions\n            });\n        }\n        if (status >= 400) {\n            return response\n                .text()\n                .then(message => {\n                const error = new RequestError(message, status, {\n                    headers,\n                    request: requestOptions\n                });\n                try {\n                    let responseBody = JSON.parse(error.message);\n                    Object.assign(error, responseBody);\n                    let errors = responseBody.errors;\n                    // Assumption `errors` would always be in Array Fotmat\n                    error.message =\n                        error.message + \": \" + errors.map(JSON.stringify).join(\", \");\n                }\n                catch (e) {\n                    // ignore, see octokit/rest.js#684\n                }\n                throw error;\n            });\n        }\n        const contentType = response.headers.get(\"content-type\");\n        if (/application\\/json/.test(contentType)) {\n            return response.json();\n        }\n        if (!contentType || /^text\\/|charset=utf-8$/.test(contentType)) {\n            return response.text();\n        }\n        return getBuffer(response);\n    })\n        .then(data => {\n        return {\n            status,\n            url,\n            headers,\n            data\n        };\n    })\n        .catch(error => {\n        if (error instanceof RequestError) {\n            throw error;\n        }\n        throw new RequestError(error.message, 500, {\n            headers,\n            request: requestOptions\n        });\n    });\n}\n","import fetchWrapper from \"./fetch-wrapper\";\nexport default function withDefaults(oldEndpoint, newDefaults) {\n    const endpoint = oldEndpoint.defaults(newDefaults);\n    const newApi = function (route, parameters) {\n        const endpointOptions = endpoint.merge(route, parameters);\n        if (!endpointOptions.request || !endpointOptions.request.hook) {\n            return fetchWrapper(endpoint.parse(endpointOptions));\n        }\n        const request = (route, parameters) => {\n            return fetchWrapper(endpoint.parse(endpoint.merge(route, parameters)));\n        };\n        Object.assign(request, {\n            endpoint,\n            defaults: withDefaults.bind(null, endpoint)\n        });\n        return endpointOptions.request.hook(request, endpointOptions);\n    };\n    return Object.assign(newApi, {\n        endpoint,\n        defaults: withDefaults.bind(null, endpoint)\n    });\n}\n","import { endpoint } from \"@octokit/endpoint\";\nimport { getUserAgent } from \"universal-user-agent\";\nimport { VERSION } from \"./version\";\nimport withDefaults from \"./with-defaults\";\nexport const request = withDefaults(endpoint, {\n    headers: {\n        \"user-agent\": `octokit-request.js/${VERSION} ${getUserAgent()}`\n    }\n});\n"],"names":["getBuffer"],"mappings":";;;;;;AAAO,MAAM,OAAO,GAAG,mBAAmB,CAAC;;ACA5B,SAAS,iBAAiB,CAAC,QAAQ,EAAE;IAChD,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC;CACjC;;ACEc,SAAS,YAAY,CAAC,cAAc,EAAE;IACjD,IAAI,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC;QAClC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;QACpC,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;KAC7D;IACD,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,MAAM,CAAC;IACX,IAAI,GAAG,CAAC;IACR,MAAM,KAAK,GAAG,CAAC,cAAc,CAAC,OAAO,IAAI,cAAc,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC;IACpF,OAAO,KAAK,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC;QAC3C,MAAM,EAAE,cAAc,CAAC,MAAM;QAC7B,IAAI,EAAE,cAAc,CAAC,IAAI;QACzB,OAAO,EAAE,cAAc,CAAC,OAAO;QAC/B,QAAQ,EAAE,cAAc,CAAC,QAAQ;KACpC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;SACtB,IAAI,CAAC,QAAQ,IAAI;QAClB,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;QACnB,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QACzB,KAAK,MAAM,WAAW,IAAI,QAAQ,CAAC,OAAO,EAAE;YACxC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;SAC5C;QACD,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,EAAE;YAClC,OAAO;SACV;;QAED,IAAI,cAAc,CAAC,MAAM,KAAK,MAAM,EAAE;YAClC,IAAI,MAAM,GAAG,GAAG,EAAE;gBACd,OAAO;aACV;YACD,MAAM,IAAI,YAAY,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE;gBAChD,OAAO;gBACP,OAAO,EAAE,cAAc;aAC1B,CAAC,CAAC;SACN;QACD,IAAI,MAAM,KAAK,GAAG,EAAE;YAChB,MAAM,IAAI,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE;gBAC3C,OAAO;gBACP,OAAO,EAAE,cAAc;aAC1B,CAAC,CAAC;SACN;QACD,IAAI,MAAM,IAAI,GAAG,EAAE;YACf,OAAO,QAAQ;iBACV,IAAI,EAAE;iBACN,IAAI,CAAC,OAAO,IAAI;gBACjB,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE;oBAC5C,OAAO;oBACP,OAAO,EAAE,cAAc;iBAC1B,CAAC,CAAC;gBACH,IAAI;oBACA,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBAC7C,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;oBACnC,IAAI,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;;oBAEjC,KAAK,CAAC,OAAO;wBACT,KAAK,CAAC,OAAO,GAAG,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACpE;gBACD,OAAO,CAAC,EAAE;;iBAET;gBACD,MAAM,KAAK,CAAC;aACf,CAAC,CAAC;SACN;QACD,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACzD,IAAI,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YACvC,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;SAC1B;QACD,IAAI,CAAC,WAAW,IAAI,wBAAwB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YAC5D,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;SAC1B;QACD,OAAOA,iBAAS,CAAC,QAAQ,CAAC,CAAC;KAC9B,CAAC;SACG,IAAI,CAAC,IAAI,IAAI;QACd,OAAO;YACH,MAAM;YACN,GAAG;YACH,OAAO;YACP,IAAI;SACP,CAAC;KACL,CAAC;SACG,KAAK,CAAC,KAAK,IAAI;QAChB,IAAI,KAAK,YAAY,YAAY,EAAE;YAC/B,MAAM,KAAK,CAAC;SACf;QACD,MAAM,IAAI,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE;YACvC,OAAO;YACP,OAAO,EAAE,cAAc;SAC1B,CAAC,CAAC;KACN,CAAC,CAAC;CACN;;AC3Fc,SAAS,YAAY,CAAC,WAAW,EAAE,WAAW,EAAE;IAC3D,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,UAAU,KAAK,EAAE,UAAU,EAAE;QACxC,MAAM,eAAe,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC1D,IAAI,CAAC,eAAe,CAAC,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE;YAC3D,OAAO,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;SACxD;QACD,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK;YACnC,OAAO,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;SAC1E,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;YACnB,QAAQ;YACR,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;SAC9C,CAAC,CAAC;QACH,OAAO,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;KACjE,CAAC;IACF,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;QACzB,QAAQ;QACR,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;KAC9C,CAAC,CAAC;CACN;;ACjBW,MAAC,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE;IAC1C,OAAO,EAAE;QACL,YAAY,EAAE,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;KAClE;CACJ,CAAC;;;;"}
\ No newline at end of file
diff --git a/setup-maven/node_modules/@octokit/request/node_modules/universal-user-agent/LICENSE.md b/setup-maven/node_modules/@octokit/request/node_modules/universal-user-agent/LICENSE.md
new file mode 100644
index 0000000..f105ab0
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/request/node_modules/universal-user-agent/LICENSE.md
@@ -0,0 +1,7 @@
+# [ISC License](https://spdx.org/licenses/ISC)
+
+Copyright (c) 2018, Gregor Martynus (https://github.com/gr2m)
+
+Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/setup-maven/node_modules/@octokit/request/node_modules/universal-user-agent/README.md b/setup-maven/node_modules/@octokit/request/node_modules/universal-user-agent/README.md
new file mode 100644
index 0000000..d00d14c
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/request/node_modules/universal-user-agent/README.md
@@ -0,0 +1,25 @@
+# universal-user-agent
+
+> Get a user agent string in both browser and node
+
+[![@latest](https://img.shields.io/npm/v/universal-user-agent.svg)](https://www.npmjs.com/package/universal-user-agent)
+[![Build Status](https://travis-ci.com/gr2m/universal-user-agent.svg?branch=master)](https://travis-ci.com/gr2m/universal-user-agent)
+[![Greenkeeper](https://badges.greenkeeper.io/gr2m/universal-user-agent.svg)](https://greenkeeper.io/)
+
+```js
+const { getUserAgent } = require("universal-user-agent");
+// or import { getUserAgent } from "universal-user-agent";
+
+const userAgent = getUserAgent();
+// userAgent will look like this
+// in browser: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:61.0) Gecko/20100101 Firefox/61.0"
+// in node: Node.js/v8.9.4 (macOS High Sierra; x64)
+```
+
+## Credits
+
+The Node implementation was originally inspired by [default-user-agent](https://www.npmjs.com/package/default-user-agent).
+
+## License
+
+[ISC](LICENSE.md)
diff --git a/setup-maven/node_modules/@octokit/request/node_modules/universal-user-agent/dist-node/index.js b/setup-maven/node_modules/@octokit/request/node_modules/universal-user-agent/dist-node/index.js
new file mode 100644
index 0000000..80a0710
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/request/node_modules/universal-user-agent/dist-node/index.js
@@ -0,0 +1,22 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
+
+var osName = _interopDefault(require('os-name'));
+
+function getUserAgent() {
+  try {
+    return `Node.js/${process.version.substr(1)} (${osName()}; ${process.arch})`;
+  } catch (error) {
+    if (/wmic os get Caption/.test(error.message)) {
+      return "Windows <version undetectable>";
+    }
+
+    throw error;
+  }
+}
+
+exports.getUserAgent = getUserAgent;
+//# sourceMappingURL=index.js.map
diff --git a/setup-maven/node_modules/@octokit/request/node_modules/universal-user-agent/dist-node/index.js.map b/setup-maven/node_modules/@octokit/request/node_modules/universal-user-agent/dist-node/index.js.map
new file mode 100644
index 0000000..aff09ec
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/request/node_modules/universal-user-agent/dist-node/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sources":["../dist-src/node.js"],"sourcesContent":["import osName from \"os-name\";\nexport function getUserAgent() {\n    try {\n        return `Node.js/${process.version.substr(1)} (${osName()}; ${process.arch})`;\n    }\n    catch (error) {\n        if (/wmic os get Caption/.test(error.message)) {\n            return \"Windows <version undetectable>\";\n        }\n        throw error;\n    }\n}\n"],"names":["getUserAgent","process","version","substr","osName","arch","error","test","message"],"mappings":";;;;;;;;AACO,SAASA,YAAT,GAAwB;MACvB;WACQ,WAAUC,OAAO,CAACC,OAAR,CAAgBC,MAAhB,CAAuB,CAAvB,CAA0B,KAAIC,MAAM,EAAG,KAAIH,OAAO,CAACI,IAAK,GAA1E;GADJ,CAGA,OAAOC,KAAP,EAAc;QACN,sBAAsBC,IAAtB,CAA2BD,KAAK,CAACE,OAAjC,CAAJ,EAA+C;aACpC,gCAAP;;;UAEEF,KAAN;;;;;;"}
\ No newline at end of file
diff --git a/setup-maven/node_modules/@octokit/request/node_modules/universal-user-agent/dist-src/browser.js b/setup-maven/node_modules/@octokit/request/node_modules/universal-user-agent/dist-src/browser.js
new file mode 100644
index 0000000..6f52232
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/request/node_modules/universal-user-agent/dist-src/browser.js
@@ -0,0 +1,3 @@
+export function getUserAgent() {
+    return navigator.userAgent;
+}
diff --git a/setup-maven/node_modules/@octokit/request/node_modules/universal-user-agent/dist-src/index.js b/setup-maven/node_modules/@octokit/request/node_modules/universal-user-agent/dist-src/index.js
new file mode 100644
index 0000000..c6253f5
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/request/node_modules/universal-user-agent/dist-src/index.js
@@ -0,0 +1 @@
+export { getUserAgent } from "./node";
diff --git a/setup-maven/node_modules/@octokit/request/node_modules/universal-user-agent/dist-src/node.js b/setup-maven/node_modules/@octokit/request/node_modules/universal-user-agent/dist-src/node.js
new file mode 100644
index 0000000..8b70a03
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/request/node_modules/universal-user-agent/dist-src/node.js
@@ -0,0 +1,12 @@
+import osName from "os-name";
+export function getUserAgent() {
+    try {
+        return `Node.js/${process.version.substr(1)} (${osName()}; ${process.arch})`;
+    }
+    catch (error) {
+        if (/wmic os get Caption/.test(error.message)) {
+            return "Windows <version undetectable>";
+        }
+        throw error;
+    }
+}
diff --git a/setup-maven/node_modules/@octokit/request/node_modules/universal-user-agent/dist-types/browser.d.ts b/setup-maven/node_modules/@octokit/request/node_modules/universal-user-agent/dist-types/browser.d.ts
new file mode 100644
index 0000000..a7bb1c4
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/request/node_modules/universal-user-agent/dist-types/browser.d.ts
@@ -0,0 +1 @@
+export declare function getUserAgent(): string;
diff --git a/setup-maven/node_modules/@octokit/request/node_modules/universal-user-agent/dist-types/index.d.ts b/setup-maven/node_modules/@octokit/request/node_modules/universal-user-agent/dist-types/index.d.ts
new file mode 100644
index 0000000..c6253f5
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/request/node_modules/universal-user-agent/dist-types/index.d.ts
@@ -0,0 +1 @@
+export { getUserAgent } from "./node";
diff --git a/setup-maven/node_modules/@octokit/request/node_modules/universal-user-agent/dist-types/node.d.ts b/setup-maven/node_modules/@octokit/request/node_modules/universal-user-agent/dist-types/node.d.ts
new file mode 100644
index 0000000..a7bb1c4
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/request/node_modules/universal-user-agent/dist-types/node.d.ts
@@ -0,0 +1 @@
+export declare function getUserAgent(): string;
diff --git a/setup-maven/node_modules/@octokit/request/node_modules/universal-user-agent/dist-web/index.js b/setup-maven/node_modules/@octokit/request/node_modules/universal-user-agent/dist-web/index.js
new file mode 100644
index 0000000..11ec79b
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/request/node_modules/universal-user-agent/dist-web/index.js
@@ -0,0 +1,6 @@
+function getUserAgent() {
+    return navigator.userAgent;
+}
+
+export { getUserAgent };
+//# sourceMappingURL=index.js.map
diff --git a/setup-maven/node_modules/@octokit/request/node_modules/universal-user-agent/dist-web/index.js.map b/setup-maven/node_modules/@octokit/request/node_modules/universal-user-agent/dist-web/index.js.map
new file mode 100644
index 0000000..549407e
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/request/node_modules/universal-user-agent/dist-web/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sources":["../dist-src/browser.js"],"sourcesContent":["export function getUserAgent() {\n    return navigator.userAgent;\n}\n"],"names":[],"mappings":"AAAO,SAAS,YAAY,GAAG;IAC3B,OAAO,SAAS,CAAC,SAAS,CAAC;CAC9B;;;;"}
\ No newline at end of file
diff --git a/setup-maven/node_modules/@octokit/request/node_modules/universal-user-agent/package.json b/setup-maven/node_modules/@octokit/request/node_modules/universal-user-agent/package.json
new file mode 100644
index 0000000..dbb27cf
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/request/node_modules/universal-user-agent/package.json
@@ -0,0 +1,65 @@
+{
+  "_from": "universal-user-agent@^4.0.0",
+  "_id": "universal-user-agent@4.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-eM8knLpev67iBDizr/YtqkJsF3GK8gzDc6st/WKzrTuPtcsOKW/0IdL4cnMBsU69pOx0otavLWBDGTwg+dB0aA==",
+  "_location": "/@octokit/request/universal-user-agent",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "universal-user-agent@^4.0.0",
+    "name": "universal-user-agent",
+    "escapedName": "universal-user-agent",
+    "rawSpec": "^4.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^4.0.0"
+  },
+  "_requiredBy": [
+    "/@octokit/request"
+  ],
+  "_resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-4.0.0.tgz",
+  "_shasum": "27da2ec87e32769619f68a14996465ea1cb9df16",
+  "_spec": "universal-user-agent@^4.0.0",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/@octokit/request",
+  "bugs": {
+    "url": "https://github.com/gr2m/universal-user-agent/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "os-name": "^3.1.0"
+  },
+  "deprecated": false,
+  "description": "Get a user agent string in both browser and node",
+  "devDependencies": {
+    "@gr2m/pika-plugin-build-web": "^0.6.0-issue-84.1",
+    "@pika/pack": "^0.5.0",
+    "@pika/plugin-build-node": "^0.6.0",
+    "@pika/plugin-ts-standard-pkg": "^0.6.0",
+    "@types/jest": "^24.0.18",
+    "jest": "^24.9.0",
+    "prettier": "^1.18.2",
+    "semantic-release": "^15.9.15",
+    "ts-jest": "^24.0.2",
+    "typescript": "^3.6.2"
+  },
+  "files": [
+    "dist-*/",
+    "bin/"
+  ],
+  "homepage": "https://github.com/gr2m/universal-user-agent#readme",
+  "keywords": [],
+  "license": "ISC",
+  "main": "dist-node/index.js",
+  "module": "dist-web/index.js",
+  "name": "universal-user-agent",
+  "pika": true,
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/gr2m/universal-user-agent.git"
+  },
+  "sideEffects": false,
+  "source": "dist-src/index.js",
+  "types": "dist-types/index.d.ts",
+  "version": "4.0.0"
+}
diff --git a/setup-maven/node_modules/@octokit/request/package.json b/setup-maven/node_modules/@octokit/request/package.json
new file mode 100644
index 0000000..2174f8b
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/request/package.json
@@ -0,0 +1,93 @@
+{
+  "_from": "@octokit/request@^5.0.0",
+  "_id": "@octokit/request@5.3.1",
+  "_inBundle": false,
+  "_integrity": "sha512-5/X0AL1ZgoU32fAepTfEoggFinO3rxsMLtzhlUX+RctLrusn/CApJuGFCd0v7GMFhF+8UiCsTTfsu7Fh1HnEJg==",
+  "_location": "/@octokit/request",
+  "_phantomChildren": {
+    "os-name": "3.1.0"
+  },
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "@octokit/request@^5.0.0",
+    "name": "@octokit/request",
+    "escapedName": "@octokit%2frequest",
+    "scope": "@octokit",
+    "rawSpec": "^5.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^5.0.0"
+  },
+  "_requiredBy": [
+    "/@octokit/graphql",
+    "/@octokit/rest"
+  ],
+  "_resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.3.1.tgz",
+  "_shasum": "3a1ace45e6f88b1be4749c5da963b3a3b4a2f120",
+  "_spec": "@octokit/request@^5.0.0",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/@octokit/graphql",
+  "bugs": {
+    "url": "https://github.com/octokit/request.js/issues"
+  },
+  "bundleDependencies": false,
+  "deno": "dist-web/index.js",
+  "dependencies": {
+    "@octokit/endpoint": "^5.5.0",
+    "@octokit/request-error": "^1.0.1",
+    "@octokit/types": "^2.0.0",
+    "deprecation": "^2.0.0",
+    "is-plain-object": "^3.0.0",
+    "node-fetch": "^2.3.0",
+    "once": "^1.4.0",
+    "universal-user-agent": "^4.0.0"
+  },
+  "deprecated": false,
+  "description": "Send parameterized requests to GitHub’s APIs with sensible defaults in browsers and Node",
+  "devDependencies": {
+    "@octokit/auth-app": "^2.1.2",
+    "@pika/pack": "^0.5.0",
+    "@pika/plugin-build-node": "^0.7.0",
+    "@pika/plugin-build-web": "^0.7.0",
+    "@pika/plugin-ts-standard-pkg": "^0.7.0",
+    "@types/fetch-mock": "^7.2.4",
+    "@types/jest": "^24.0.12",
+    "@types/lolex": "^3.1.1",
+    "@types/node": "^12.0.3",
+    "@types/node-fetch": "^2.3.3",
+    "@types/once": "^1.4.0",
+    "fetch-mock": "^7.2.0",
+    "jest": "^24.7.1",
+    "lolex": "^5.0.0",
+    "prettier": "^1.17.0",
+    "semantic-release": "^15.13.27",
+    "semantic-release-plugin-update-version-in-files": "^1.0.0",
+    "ts-jest": "^24.0.2",
+    "typescript": "^3.4.5"
+  },
+  "files": [
+    "dist-*/",
+    "bin/"
+  ],
+  "homepage": "https://github.com/octokit/request.js#readme",
+  "keywords": [
+    "octokit",
+    "github",
+    "api",
+    "request"
+  ],
+  "license": "MIT",
+  "main": "dist-node/index.js",
+  "name": "@octokit/request",
+  "pika": true,
+  "publishConfig": {
+    "access": "public"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/octokit/request.js.git"
+  },
+  "sideEffects": false,
+  "source": "dist-src/index.js",
+  "types": "dist-types/index.d.ts",
+  "version": "5.3.1"
+}
diff --git a/setup-maven/node_modules/@octokit/rest/LICENSE b/setup-maven/node_modules/@octokit/rest/LICENSE
new file mode 100644
index 0000000..4c0d268
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/LICENSE
@@ -0,0 +1,22 @@
+The MIT License
+
+Copyright (c) 2012 Cloud9 IDE, Inc. (Mike de Boer)
+Copyright (c) 2017-2018 Octokit contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/setup-maven/node_modules/@octokit/rest/README.md b/setup-maven/node_modules/@octokit/rest/README.md
new file mode 100644
index 0000000..2a31824
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/README.md
@@ -0,0 +1,46 @@
+# rest.js
+
+> GitHub REST API client for JavaScript
+
+[![@latest](https://img.shields.io/npm/v/@octokit/rest.svg)](https://www.npmjs.com/package/@octokit/rest)
+![Build Status](https://github.com/octokit/rest.js/workflows/Test/badge.svg)
+[![Greenkeeper](https://badges.greenkeeper.io/octokit/rest.js.svg)](https://greenkeeper.io/)
+
+## Installation
+
+```shell
+npm install @octokit/rest
+```
+
+## Usage
+
+```js
+const Octokit = require("@octokit/rest");
+const octokit = new Octokit();
+
+// Compare: https://developer.github.com/v3/repos/#list-organization-repositories
+octokit.repos
+  .listForOrg({
+    org: "octokit",
+    type: "public"
+  })
+  .then(({ data }) => {
+    // handle data
+  });
+```
+
+See https://octokit.github.io/rest.js/ for full documentation.
+
+## Contributing
+
+We would love you to contribute to `@octokit/rest`, pull requests are very welcome! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for more information.
+
+## Credits
+
+`@octokit/rest` was originally created as [`node-github`](https://www.npmjs.com/package/github) in 2012 by Mike de Boer from Cloud9 IDE, Inc.
+
+It was adopted and renamed by GitHub in 2017
+
+## LICENSE
+
+[MIT](LICENSE)
diff --git a/setup-maven/node_modules/@octokit/rest/index.d.ts b/setup-maven/node_modules/@octokit/rest/index.d.ts
new file mode 100644
index 0000000..a455028
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/index.d.ts
@@ -0,0 +1,36064 @@
+/**
+ * This file is generated based on https://github.com/octokit/routes/ & "npm run build:ts".
+ *
+ * DO NOT EDIT MANUALLY.
+ */
+
+/**
+ * This declaration file requires TypeScript 3.1 or above.
+ */
+
+/// <reference lib="esnext.asynciterable" />
+
+import * as http from "http";
+
+declare namespace Octokit {
+  type json = any;
+  type date = string;
+
+  export interface Static {
+    plugin(plugin: Plugin): Static;
+    new (options?: Octokit.Options): Octokit;
+  }
+
+  export interface Response<T> {
+    /** This is the data you would see in https://developer.github.com/v3/ */
+    data: T;
+
+    /** Response status number */
+    status: number;
+
+    /** Response headers */
+    headers: {
+      date: string;
+      "x-ratelimit-limit": string;
+      "x-ratelimit-remaining": string;
+      "x-ratelimit-reset": string;
+      "x-Octokit-request-id": string;
+      "x-Octokit-media-type": string;
+      link: string;
+      "last-modified": string;
+      etag: string;
+      status: string;
+    };
+
+    [Symbol.iterator](): Iterator<any>;
+  }
+
+  export type AnyResponse = Response<any>;
+
+  export interface EmptyParams {}
+
+  export interface Options {
+    auth?:
+      | string
+      | { username: string; password: string; on2fa: () => Promise<string> }
+      | { clientId: string; clientSecret: string }
+      | { (): string | Promise<string> };
+    userAgent?: string;
+    previews?: string[];
+    baseUrl?: string;
+    log?: {
+      debug?: (message: string, info?: object) => void;
+      info?: (message: string, info?: object) => void;
+      warn?: (message: string, info?: object) => void;
+      error?: (message: string, info?: object) => void;
+    };
+    request?: {
+      agent?: http.Agent;
+      timeout?: number;
+    };
+    timeout?: number; // Deprecated
+    headers?: { [header: string]: any }; // Deprecated
+    agent?: http.Agent; // Deprecated
+    [option: string]: any;
+  }
+
+  export type RequestMethod =
+    | "DELETE"
+    | "GET"
+    | "HEAD"
+    | "PATCH"
+    | "POST"
+    | "PUT";
+
+  export interface EndpointOptions {
+    baseUrl?: string;
+    method?: RequestMethod;
+    url?: string;
+    headers?: { [header: string]: any };
+    data?: any;
+    request?: { [option: string]: any };
+    [parameter: string]: any;
+  }
+
+  export interface RequestOptions {
+    method?: RequestMethod;
+    url?: string;
+    headers?: RequestHeaders;
+    body?: any;
+    request?: OctokitRequestOptions;
+    /**
+     * Media type options, see {@link https://developer.github.com/v3/media/|GitHub Developer Guide}
+     */
+    mediaType?: {
+      /**
+       * `json` by default. Can be `raw`, `text`, `html`, `full`, `diff`, `patch`, `sha`, `base64`. Depending on endpoint
+       */
+      format?: string;
+
+      /**
+       * Custom media type names of {@link https://developer.github.com/v3/media/|API Previews} without the `-preview` suffix.
+       * Example for single preview: `['squirrel-girl']`.
+       * Example for multiple previews: `['squirrel-girl', 'mister-fantastic']`.
+       */
+      previews?: string[];
+    };
+  }
+
+  export type RequestHeaders = {
+    /**
+     * Avoid setting `accept`, use `mediaFormat.{format|previews}` instead.
+     */
+    accept?: string;
+    /**
+     * Use `authorization` to send authenticated request, remember `token ` / `bearer ` prefixes. Example: `token 1234567890abcdef1234567890abcdef12345678`
+     */
+    authorization?: string;
+    /**
+     * `user-agent` is set do a default and can be overwritten as needed.
+     */
+    "user-agent"?: string;
+
+    [header: string]: string | number | undefined;
+  };
+
+  export type OctokitRequestOptions = {
+    /**
+     * Node only. Useful for custom proxy, certificate, or dns lookup.
+     */
+    agent?: http.Agent;
+    /**
+     * Custom replacement for built-in fetch method. Useful for testing or request hooks.
+     */
+    fetch?: any;
+    /**
+     * Use an `AbortController` instance to cancel a request. In node you can only cancel streamed requests.
+     */
+    signal?: any;
+    /**
+     * Node only. Request/response timeout in ms, it resets on redirect. 0 to disable (OS limit applies). `options.request.signal` is recommended instead.
+     */
+    timeout?: number;
+
+    [option: string]: any;
+  };
+
+  export interface Log {
+    debug: (message: string, additionalInfo?: object) => void;
+    info: (message: string, additionalInfo?: object) => void;
+    warn: (message: string, additionalInfo?: object) => void;
+    error: (message: string, additionalInfo?: object) => void;
+  }
+
+  export interface Endpoint {
+    (
+      Route: string,
+      EndpointOptions?: Octokit.EndpointOptions
+    ): Octokit.RequestOptions;
+    (EndpointOptions: Octokit.EndpointOptions): Octokit.RequestOptions;
+    /**
+     * Current default options
+     */
+    DEFAULTS: Octokit.EndpointOptions;
+    /**
+     * Get the defaulted endpoint options, but without parsing them into request options:
+     */
+    merge(
+      Route: string,
+      EndpointOptions?: Octokit.EndpointOptions
+    ): Octokit.RequestOptions;
+    merge(EndpointOptions: Octokit.EndpointOptions): Octokit.RequestOptions;
+    /**
+     * Stateless method to turn endpoint options into request options. Calling endpoint(options) is the same as calling endpoint.parse(endpoint.merge(options)).
+     */
+    parse(EndpointOptions: Octokit.EndpointOptions): Octokit.RequestOptions;
+    /**
+     * Merges existing defaults with passed options and returns new endpoint() method with new defaults
+     */
+    defaults(EndpointOptions: Octokit.EndpointOptions): Octokit.Endpoint;
+  }
+
+  export interface Request {
+    (Route: string, EndpointOptions?: Octokit.EndpointOptions): Promise<
+      Octokit.AnyResponse
+    >;
+    (EndpointOptions: Octokit.EndpointOptions): Promise<Octokit.AnyResponse>;
+    endpoint: Octokit.Endpoint;
+  }
+
+  export interface AuthBasic {
+    type: "basic";
+    username: string;
+    password: string;
+  }
+
+  export interface AuthOAuthToken {
+    type: "oauth";
+    token: string;
+  }
+
+  export interface AuthOAuthSecret {
+    type: "oauth";
+    key: string;
+    secret: string;
+  }
+
+  export interface AuthUserToken {
+    type: "token";
+    token: string;
+  }
+
+  export interface AuthJWT {
+    type: "app";
+    token: string;
+  }
+
+  export type Link = { link: string } | { headers: { link: string } } | string;
+
+  export interface Callback<T> {
+    (error: Error | null, result: T): any;
+  }
+
+  export type Plugin = (octokit: Octokit, options: Octokit.Options) => void;
+
+  // See https://github.com/octokit/request.js#request
+  export type HookOptions = {
+    baseUrl: string;
+    headers: { [header: string]: string };
+    method: string;
+    url: string;
+    data: any;
+    // See https://github.com/bitinn/node-fetch#options
+    request: {
+      follow?: number;
+      timeout?: number;
+      compress?: boolean;
+      size?: number;
+      agent?: string | null;
+    };
+    [index: string]: any;
+  };
+
+  export type HookError = Error & {
+    status: number;
+    headers: { [header: string]: string };
+    documentation_url?: string;
+    errors?: [
+      {
+        resource: string;
+        field: string;
+        code: string;
+      }
+    ];
+  };
+
+  export interface Paginate {
+    (
+      Route: string,
+      EndpointOptions?: Octokit.EndpointOptions,
+      callback?: (response: Octokit.AnyResponse, done: () => void) => any
+    ): Promise<any[]>;
+    (
+      EndpointOptions: Octokit.EndpointOptions,
+      callback?: (response: Octokit.AnyResponse, done: () => void) => any
+    ): Promise<any[]>;
+    iterator: (
+      EndpointOptions: Octokit.EndpointOptions
+    ) => AsyncIterableIterator<Octokit.AnyResponse>;
+  }
+
+  // response types
+  type UsersUpdateAuthenticatedResponsePlan = {
+    collaborators: number;
+    name: string;
+    private_repos: number;
+    space: number;
+  };
+  type UsersUpdateAuthenticatedResponse = {
+    avatar_url: string;
+    bio: string;
+    blog: string;
+    collaborators: number;
+    company: string;
+    created_at: string;
+    disk_usage: number;
+    email: string;
+    events_url: string;
+    followers: number;
+    followers_url: string;
+    following: number;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    hireable: boolean;
+    html_url: string;
+    id: number;
+    location: string;
+    login: string;
+    name: string;
+    node_id: string;
+    organizations_url: string;
+    owned_private_repos: number;
+    plan: UsersUpdateAuthenticatedResponsePlan;
+    private_gists: number;
+    public_gists: number;
+    public_repos: number;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    total_private_repos: number;
+    two_factor_authentication: boolean;
+    type: string;
+    updated_at: string;
+    url: string;
+  };
+  type UsersTogglePrimaryEmailVisibilityResponseItem = {
+    email: string;
+    primary: boolean;
+    verified: boolean;
+    visibility: string;
+  };
+  type UsersListPublicKeysForUserResponseItem = { id: number; key: string };
+  type UsersListPublicKeysResponseItem = {
+    created_at: string;
+    id: number;
+    key: string;
+    read_only: boolean;
+    title: string;
+    url: string;
+    verified: boolean;
+  };
+  type UsersListPublicEmailsResponseItem = {
+    email: string;
+    primary: boolean;
+    verified: boolean;
+    visibility: string;
+  };
+  type UsersListGpgKeysForUserResponseItemSubkeysItem = {
+    can_certify: boolean;
+    can_encrypt_comms: boolean;
+    can_encrypt_storage: boolean;
+    can_sign: boolean;
+    created_at: string;
+    emails: Array<any>;
+    expires_at: null;
+    id: number;
+    key_id: string;
+    primary_key_id: number;
+    public_key: string;
+    subkeys: Array<any>;
+  };
+  type UsersListGpgKeysForUserResponseItemEmailsItem = {
+    email: string;
+    verified: boolean;
+  };
+  type UsersListGpgKeysForUserResponseItem = {
+    can_certify: boolean;
+    can_encrypt_comms: boolean;
+    can_encrypt_storage: boolean;
+    can_sign: boolean;
+    created_at: string;
+    emails: Array<UsersListGpgKeysForUserResponseItemEmailsItem>;
+    expires_at: null;
+    id: number;
+    key_id: string;
+    primary_key_id: null;
+    public_key: string;
+    subkeys: Array<UsersListGpgKeysForUserResponseItemSubkeysItem>;
+  };
+  type UsersListGpgKeysResponseItemSubkeysItem = {
+    can_certify: boolean;
+    can_encrypt_comms: boolean;
+    can_encrypt_storage: boolean;
+    can_sign: boolean;
+    created_at: string;
+    emails: Array<any>;
+    expires_at: null;
+    id: number;
+    key_id: string;
+    primary_key_id: number;
+    public_key: string;
+    subkeys: Array<any>;
+  };
+  type UsersListGpgKeysResponseItemEmailsItem = {
+    email: string;
+    verified: boolean;
+  };
+  type UsersListGpgKeysResponseItem = {
+    can_certify: boolean;
+    can_encrypt_comms: boolean;
+    can_encrypt_storage: boolean;
+    can_sign: boolean;
+    created_at: string;
+    emails: Array<UsersListGpgKeysResponseItemEmailsItem>;
+    expires_at: null;
+    id: number;
+    key_id: string;
+    primary_key_id: null;
+    public_key: string;
+    subkeys: Array<UsersListGpgKeysResponseItemSubkeysItem>;
+  };
+  type UsersListFollowingForUserResponseItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type UsersListFollowingForAuthenticatedUserResponseItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type UsersListFollowersForUserResponseItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type UsersListFollowersForAuthenticatedUserResponseItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type UsersListEmailsResponseItem = {
+    email: string;
+    primary: boolean;
+    verified: boolean;
+    visibility: string;
+  };
+  type UsersListBlockedResponseItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type UsersListResponseItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type UsersGetPublicKeyResponse = {
+    created_at: string;
+    id: number;
+    key: string;
+    read_only: boolean;
+    title: string;
+    url: string;
+    verified: boolean;
+  };
+  type UsersGetGpgKeyResponseSubkeysItem = {
+    can_certify: boolean;
+    can_encrypt_comms: boolean;
+    can_encrypt_storage: boolean;
+    can_sign: boolean;
+    created_at: string;
+    emails: Array<any>;
+    expires_at: null;
+    id: number;
+    key_id: string;
+    primary_key_id: number;
+    public_key: string;
+    subkeys: Array<any>;
+  };
+  type UsersGetGpgKeyResponseEmailsItem = { email: string; verified: boolean };
+  type UsersGetGpgKeyResponse = {
+    can_certify: boolean;
+    can_encrypt_comms: boolean;
+    can_encrypt_storage: boolean;
+    can_sign: boolean;
+    created_at: string;
+    emails: Array<UsersGetGpgKeyResponseEmailsItem>;
+    expires_at: null;
+    id: number;
+    key_id: string;
+    primary_key_id: null;
+    public_key: string;
+    subkeys: Array<UsersGetGpgKeyResponseSubkeysItem>;
+  };
+  type UsersGetContextForUserResponseContextsItem = {
+    message: string;
+    octicon: string;
+  };
+  type UsersGetContextForUserResponse = {
+    contexts: Array<UsersGetContextForUserResponseContextsItem>;
+  };
+  type UsersGetByUsernameResponsePlan = {
+    collaborators: number;
+    name: string;
+    private_repos: number;
+    space: number;
+  };
+  type UsersGetByUsernameResponse = {
+    avatar_url: string;
+    bio: string;
+    blog: string;
+    company: string;
+    created_at: string;
+    email: string;
+    events_url: string;
+    followers: number;
+    followers_url: string;
+    following: number;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    hireable: boolean;
+    html_url: string;
+    id: number;
+    location: string;
+    login: string;
+    name: string;
+    node_id: string;
+    organizations_url: string;
+    public_gists: number;
+    public_repos: number;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    updated_at: string;
+    url: string;
+    plan?: UsersGetByUsernameResponsePlan;
+  };
+  type UsersGetAuthenticatedResponsePlan = {
+    collaborators: number;
+    name: string;
+    private_repos: number;
+    space: number;
+  };
+  type UsersGetAuthenticatedResponse = {
+    avatar_url: string;
+    bio: string;
+    blog: string;
+    collaborators?: number;
+    company: string;
+    created_at: string;
+    disk_usage?: number;
+    email: string;
+    events_url: string;
+    followers: number;
+    followers_url: string;
+    following: number;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    hireable: boolean;
+    html_url: string;
+    id: number;
+    location: string;
+    login: string;
+    name: string;
+    node_id: string;
+    organizations_url: string;
+    owned_private_repos?: number;
+    plan?: UsersGetAuthenticatedResponsePlan;
+    private_gists?: number;
+    public_gists: number;
+    public_repos: number;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    total_private_repos?: number;
+    two_factor_authentication?: boolean;
+    type: string;
+    updated_at: string;
+    url: string;
+  };
+  type UsersCreatePublicKeyResponse = {
+    created_at: string;
+    id: number;
+    key: string;
+    read_only: boolean;
+    title: string;
+    url: string;
+    verified: boolean;
+  };
+  type UsersCreateGpgKeyResponseSubkeysItem = {
+    can_certify: boolean;
+    can_encrypt_comms: boolean;
+    can_encrypt_storage: boolean;
+    can_sign: boolean;
+    created_at: string;
+    emails: Array<any>;
+    expires_at: null;
+    id: number;
+    key_id: string;
+    primary_key_id: number;
+    public_key: string;
+    subkeys: Array<any>;
+  };
+  type UsersCreateGpgKeyResponseEmailsItem = {
+    email: string;
+    verified: boolean;
+  };
+  type UsersCreateGpgKeyResponse = {
+    can_certify: boolean;
+    can_encrypt_comms: boolean;
+    can_encrypt_storage: boolean;
+    can_sign: boolean;
+    created_at: string;
+    emails: Array<UsersCreateGpgKeyResponseEmailsItem>;
+    expires_at: null;
+    id: number;
+    key_id: string;
+    primary_key_id: null;
+    public_key: string;
+    subkeys: Array<UsersCreateGpgKeyResponseSubkeysItem>;
+  };
+  type UsersAddEmailsResponseItem = {
+    email: string;
+    primary: boolean;
+    verified: boolean;
+    visibility: string | null;
+  };
+  type TeamsUpdateDiscussionCommentResponseReactions = {
+    "+1": number;
+    "-1": number;
+    confused: number;
+    heart: number;
+    hooray: number;
+    laugh: number;
+    total_count: number;
+    url: string;
+  };
+  type TeamsUpdateDiscussionCommentResponseAuthor = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type TeamsUpdateDiscussionCommentResponse = {
+    author: TeamsUpdateDiscussionCommentResponseAuthor;
+    body: string;
+    body_html: string;
+    body_version: string;
+    created_at: string;
+    discussion_url: string;
+    html_url: string;
+    last_edited_at: string;
+    node_id: string;
+    number: number;
+    reactions: TeamsUpdateDiscussionCommentResponseReactions;
+    updated_at: string;
+    url: string;
+  };
+  type TeamsUpdateDiscussionResponseReactions = {
+    "+1": number;
+    "-1": number;
+    confused: number;
+    heart: number;
+    hooray: number;
+    laugh: number;
+    total_count: number;
+    url: string;
+  };
+  type TeamsUpdateDiscussionResponseAuthor = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type TeamsUpdateDiscussionResponse = {
+    author: TeamsUpdateDiscussionResponseAuthor;
+    body: string;
+    body_html: string;
+    body_version: string;
+    comments_count: number;
+    comments_url: string;
+    created_at: string;
+    html_url: string;
+    last_edited_at: string;
+    node_id: string;
+    number: number;
+    pinned: boolean;
+    private: boolean;
+    reactions: TeamsUpdateDiscussionResponseReactions;
+    team_url: string;
+    title: string;
+    updated_at: string;
+    url: string;
+  };
+  type TeamsUpdateResponseOrganization = {
+    avatar_url: string;
+    blog: string;
+    company: string;
+    created_at: string;
+    description: string;
+    email: string;
+    events_url: string;
+    followers: number;
+    following: number;
+    has_organization_projects: boolean;
+    has_repository_projects: boolean;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_verified: boolean;
+    issues_url: string;
+    location: string;
+    login: string;
+    members_url: string;
+    name: string;
+    node_id: string;
+    public_gists: number;
+    public_members_url: string;
+    public_repos: number;
+    repos_url: string;
+    type: string;
+    url: string;
+  };
+  type TeamsUpdateResponse = {
+    created_at: string;
+    description: string;
+    html_url: string;
+    id: number;
+    members_count: number;
+    members_url: string;
+    name: string;
+    node_id: string;
+    organization: TeamsUpdateResponseOrganization;
+    parent: null;
+    permission: string;
+    privacy: string;
+    repos_count: number;
+    repositories_url: string;
+    slug: string;
+    updated_at: string;
+    url: string;
+  };
+  type TeamsReviewProjectResponsePermissions = {
+    admin: boolean;
+    read: boolean;
+    write: boolean;
+  };
+  type TeamsReviewProjectResponseCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type TeamsReviewProjectResponse = {
+    body: string;
+    columns_url: string;
+    created_at: string;
+    creator: TeamsReviewProjectResponseCreator;
+    html_url: string;
+    id: number;
+    name: string;
+    node_id: string;
+    number: number;
+    organization_permission: string;
+    owner_url: string;
+    permissions: TeamsReviewProjectResponsePermissions;
+    private: boolean;
+    state: string;
+    updated_at: string;
+    url: string;
+  };
+  type TeamsListReposResponseItemPermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type TeamsListReposResponseItemOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type TeamsListReposResponseItemLicense = {
+    key: string;
+    name: string;
+    node_id: string;
+    spdx_id: string;
+    url: string;
+  };
+  type TeamsListReposResponseItem = {
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    license: TeamsListReposResponseItemLicense;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: TeamsListReposResponseItemOwner;
+    permissions: TeamsListReposResponseItemPermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type TeamsListProjectsResponseItemPermissions = {
+    admin: boolean;
+    read: boolean;
+    write: boolean;
+  };
+  type TeamsListProjectsResponseItemCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type TeamsListProjectsResponseItem = {
+    body: string;
+    columns_url: string;
+    created_at: string;
+    creator: TeamsListProjectsResponseItemCreator;
+    html_url: string;
+    id: number;
+    name: string;
+    node_id: string;
+    number: number;
+    organization_permission: string;
+    owner_url: string;
+    permissions: TeamsListProjectsResponseItemPermissions;
+    private: boolean;
+    state: string;
+    updated_at: string;
+    url: string;
+  };
+  type TeamsListPendingInvitationsResponseItemInviter = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type TeamsListPendingInvitationsResponseItem = {
+    created_at: string;
+    email: string;
+    id: number;
+    invitation_team_url: string;
+    inviter: TeamsListPendingInvitationsResponseItemInviter;
+    login: string;
+    role: string;
+    team_count: number;
+  };
+  type TeamsListMembersResponseItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type TeamsListForAuthenticatedUserResponseItemOrganization = {
+    avatar_url: string;
+    blog: string;
+    company: string;
+    created_at: string;
+    description: string;
+    email: string;
+    events_url: string;
+    followers: number;
+    following: number;
+    has_organization_projects: boolean;
+    has_repository_projects: boolean;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_verified: boolean;
+    issues_url: string;
+    location: string;
+    login: string;
+    members_url: string;
+    name: string;
+    node_id: string;
+    public_gists: number;
+    public_members_url: string;
+    public_repos: number;
+    repos_url: string;
+    type: string;
+    url: string;
+  };
+  type TeamsListForAuthenticatedUserResponseItem = {
+    created_at: string;
+    description: string;
+    html_url: string;
+    id: number;
+    members_count: number;
+    members_url: string;
+    name: string;
+    node_id: string;
+    organization: TeamsListForAuthenticatedUserResponseItemOrganization;
+    parent: null;
+    permission: string;
+    privacy: string;
+    repos_count: number;
+    repositories_url: string;
+    slug: string;
+    updated_at: string;
+    url: string;
+  };
+  type TeamsListDiscussionsResponseItemReactions = {
+    "+1": number;
+    "-1": number;
+    confused: number;
+    heart: number;
+    hooray: number;
+    laugh: number;
+    total_count: number;
+    url: string;
+  };
+  type TeamsListDiscussionsResponseItemAuthor = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type TeamsListDiscussionsResponseItem = {
+    author: TeamsListDiscussionsResponseItemAuthor;
+    body: string;
+    body_html: string;
+    body_version: string;
+    comments_count: number;
+    comments_url: string;
+    created_at: string;
+    html_url: string;
+    last_edited_at: null;
+    node_id: string;
+    number: number;
+    pinned: boolean;
+    private: boolean;
+    reactions: TeamsListDiscussionsResponseItemReactions;
+    team_url: string;
+    title: string;
+    updated_at: string;
+    url: string;
+  };
+  type TeamsListDiscussionCommentsResponseItemReactions = {
+    "+1": number;
+    "-1": number;
+    confused: number;
+    heart: number;
+    hooray: number;
+    laugh: number;
+    total_count: number;
+    url: string;
+  };
+  type TeamsListDiscussionCommentsResponseItemAuthor = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type TeamsListDiscussionCommentsResponseItem = {
+    author: TeamsListDiscussionCommentsResponseItemAuthor;
+    body: string;
+    body_html: string;
+    body_version: string;
+    created_at: string;
+    discussion_url: string;
+    html_url: string;
+    last_edited_at: null;
+    node_id: string;
+    number: number;
+    reactions: TeamsListDiscussionCommentsResponseItemReactions;
+    updated_at: string;
+    url: string;
+  };
+  type TeamsListChildResponseItemParent = {
+    description: string;
+    html_url: string;
+    id: number;
+    members_url: string;
+    name: string;
+    node_id: string;
+    parent: null;
+    permission: string;
+    privacy: string;
+    repositories_url: string;
+    slug: string;
+    url: string;
+  };
+  type TeamsListChildResponseItem = {
+    description: string;
+    id: number;
+    members_url: string;
+    name: string;
+    node_id: string;
+    parent: TeamsListChildResponseItemParent;
+    permission: string;
+    privacy: string;
+    repositories_url: string;
+    slug: string;
+    url: string;
+  };
+  type TeamsListResponseItem = {
+    description: string;
+    html_url: string;
+    id: number;
+    members_url: string;
+    name: string;
+    node_id: string;
+    parent: null;
+    permission: string;
+    privacy: string;
+    repositories_url: string;
+    slug: string;
+    url: string;
+  };
+  type TeamsGetMembershipResponse = {
+    role: string;
+    state: string;
+    url: string;
+  };
+  type TeamsGetDiscussionCommentResponseReactions = {
+    "+1": number;
+    "-1": number;
+    confused: number;
+    heart: number;
+    hooray: number;
+    laugh: number;
+    total_count: number;
+    url: string;
+  };
+  type TeamsGetDiscussionCommentResponseAuthor = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type TeamsGetDiscussionCommentResponse = {
+    author: TeamsGetDiscussionCommentResponseAuthor;
+    body: string;
+    body_html: string;
+    body_version: string;
+    created_at: string;
+    discussion_url: string;
+    html_url: string;
+    last_edited_at: null;
+    node_id: string;
+    number: number;
+    reactions: TeamsGetDiscussionCommentResponseReactions;
+    updated_at: string;
+    url: string;
+  };
+  type TeamsGetDiscussionResponseReactions = {
+    "+1": number;
+    "-1": number;
+    confused: number;
+    heart: number;
+    hooray: number;
+    laugh: number;
+    total_count: number;
+    url: string;
+  };
+  type TeamsGetDiscussionResponseAuthor = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type TeamsGetDiscussionResponse = {
+    author: TeamsGetDiscussionResponseAuthor;
+    body: string;
+    body_html: string;
+    body_version: string;
+    comments_count: number;
+    comments_url: string;
+    created_at: string;
+    html_url: string;
+    last_edited_at: null;
+    node_id: string;
+    number: number;
+    pinned: boolean;
+    private: boolean;
+    reactions: TeamsGetDiscussionResponseReactions;
+    team_url: string;
+    title: string;
+    updated_at: string;
+    url: string;
+  };
+  type TeamsGetByNameResponseOrganization = {
+    avatar_url: string;
+    blog: string;
+    company: string;
+    created_at: string;
+    description: string;
+    email: string;
+    events_url: string;
+    followers: number;
+    following: number;
+    has_organization_projects: boolean;
+    has_repository_projects: boolean;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_verified: boolean;
+    issues_url: string;
+    location: string;
+    login: string;
+    members_url: string;
+    name: string;
+    node_id: string;
+    public_gists: number;
+    public_members_url: string;
+    public_repos: number;
+    repos_url: string;
+    type: string;
+    url: string;
+  };
+  type TeamsGetByNameResponse = {
+    created_at: string;
+    description: string;
+    html_url: string;
+    id: number;
+    members_count: number;
+    members_url: string;
+    name: string;
+    node_id: string;
+    organization: TeamsGetByNameResponseOrganization;
+    parent: null;
+    permission: string;
+    privacy: string;
+    repos_count: number;
+    repositories_url: string;
+    slug: string;
+    updated_at: string;
+    url: string;
+  };
+  type TeamsGetResponseOrganization = {
+    avatar_url: string;
+    blog: string;
+    company: string;
+    created_at: string;
+    description: string;
+    email: string;
+    events_url: string;
+    followers: number;
+    following: number;
+    has_organization_projects: boolean;
+    has_repository_projects: boolean;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_verified: boolean;
+    issues_url: string;
+    location: string;
+    login: string;
+    members_url: string;
+    name: string;
+    node_id: string;
+    public_gists: number;
+    public_members_url: string;
+    public_repos: number;
+    repos_url: string;
+    type: string;
+    url: string;
+  };
+  type TeamsGetResponse = {
+    created_at: string;
+    description: string;
+    html_url: string;
+    id: number;
+    members_count: number;
+    members_url: string;
+    name: string;
+    node_id: string;
+    organization: TeamsGetResponseOrganization;
+    parent: null;
+    permission: string;
+    privacy: string;
+    repos_count: number;
+    repositories_url: string;
+    slug: string;
+    updated_at: string;
+    url: string;
+  };
+  type TeamsCreateDiscussionCommentResponseReactions = {
+    "+1": number;
+    "-1": number;
+    confused: number;
+    heart: number;
+    hooray: number;
+    laugh: number;
+    total_count: number;
+    url: string;
+  };
+  type TeamsCreateDiscussionCommentResponseAuthor = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type TeamsCreateDiscussionCommentResponse = {
+    author: TeamsCreateDiscussionCommentResponseAuthor;
+    body: string;
+    body_html: string;
+    body_version: string;
+    created_at: string;
+    discussion_url: string;
+    html_url: string;
+    last_edited_at: null;
+    node_id: string;
+    number: number;
+    reactions: TeamsCreateDiscussionCommentResponseReactions;
+    updated_at: string;
+    url: string;
+  };
+  type TeamsCreateDiscussionResponseReactions = {
+    "+1": number;
+    "-1": number;
+    confused: number;
+    heart: number;
+    hooray: number;
+    laugh: number;
+    total_count: number;
+    url: string;
+  };
+  type TeamsCreateDiscussionResponseAuthor = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type TeamsCreateDiscussionResponse = {
+    author: TeamsCreateDiscussionResponseAuthor;
+    body: string;
+    body_html: string;
+    body_version: string;
+    comments_count: number;
+    comments_url: string;
+    created_at: string;
+    html_url: string;
+    last_edited_at: null;
+    node_id: string;
+    number: number;
+    pinned: boolean;
+    private: boolean;
+    reactions: TeamsCreateDiscussionResponseReactions;
+    team_url: string;
+    title: string;
+    updated_at: string;
+    url: string;
+  };
+  type TeamsCreateResponseOrganization = {
+    avatar_url: string;
+    blog: string;
+    company: string;
+    created_at: string;
+    description: string;
+    email: string;
+    events_url: string;
+    followers: number;
+    following: number;
+    has_organization_projects: boolean;
+    has_repository_projects: boolean;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_verified: boolean;
+    issues_url: string;
+    location: string;
+    login: string;
+    members_url: string;
+    name: string;
+    node_id: string;
+    public_gists: number;
+    public_members_url: string;
+    public_repos: number;
+    repos_url: string;
+    type: string;
+    url: string;
+  };
+  type TeamsCreateResponse = {
+    created_at: string;
+    description: string;
+    html_url: string;
+    id: number;
+    members_count: number;
+    members_url: string;
+    name: string;
+    node_id: string;
+    organization: TeamsCreateResponseOrganization;
+    parent: null;
+    permission: string;
+    privacy: string;
+    repos_count: number;
+    repositories_url: string;
+    slug: string;
+    updated_at: string;
+    url: string;
+  };
+  type TeamsCheckManagesRepoResponsePermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type TeamsCheckManagesRepoResponseOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type TeamsCheckManagesRepoResponse = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: TeamsCheckManagesRepoResponseOwner;
+    permissions: TeamsCheckManagesRepoResponsePermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type TeamsAddOrUpdateProjectResponse = {
+    documentation_url: string;
+    message: string;
+  };
+  type TeamsAddOrUpdateMembershipResponse = {
+    role: string;
+    state: string;
+    url: string;
+  };
+  type TeamsAddMemberResponseErrorsItem = {
+    code: string;
+    field: string;
+    resource: string;
+  };
+  type TeamsAddMemberResponse = {
+    errors: Array<TeamsAddMemberResponseErrorsItem>;
+    message: string;
+  };
+  type SearchUsersResponseItemsItem = {
+    avatar_url: string;
+    followers_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    score: number;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type SearchUsersResponse = {
+    incomplete_results: boolean;
+    items: Array<SearchUsersResponseItemsItem>;
+    total_count: number;
+  };
+  type SearchTopicsResponseItemsItem = {
+    created_at: string;
+    created_by: string;
+    curated: boolean;
+    description: string;
+    display_name: string;
+    featured: boolean;
+    name: string;
+    released: string;
+    score: number;
+    short_description: string;
+    updated_at: string;
+  };
+  type SearchTopicsResponse = {
+    incomplete_results: boolean;
+    items: Array<SearchTopicsResponseItemsItem>;
+    total_count: number;
+  };
+  type SearchReposResponseItemsItemOwner = {
+    avatar_url: string;
+    gravatar_id: string;
+    id: number;
+    login: string;
+    node_id: string;
+    received_events_url: string;
+    type: string;
+    url: string;
+  };
+  type SearchReposResponseItemsItem = {
+    created_at: string;
+    default_branch: string;
+    description: string;
+    fork: boolean;
+    forks_count: number;
+    full_name: string;
+    homepage: string;
+    html_url: string;
+    id: number;
+    language: string;
+    master_branch: string;
+    name: string;
+    node_id: string;
+    open_issues_count: number;
+    owner: SearchReposResponseItemsItemOwner;
+    private: boolean;
+    pushed_at: string;
+    score: number;
+    size: number;
+    stargazers_count: number;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type SearchReposResponse = {
+    incomplete_results: boolean;
+    items: Array<SearchReposResponseItemsItem>;
+    total_count: number;
+  };
+  type SearchLabelsResponseItemsItem = {
+    color: string;
+    default: boolean;
+    description: string;
+    id: number;
+    name: string;
+    node_id: string;
+    score: number;
+    url: string;
+  };
+  type SearchLabelsResponse = {
+    incomplete_results: boolean;
+    items: Array<SearchLabelsResponseItemsItem>;
+    total_count: number;
+  };
+  type SearchIssuesAndPullRequestsResponseItemsItemUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type SearchIssuesAndPullRequestsResponseItemsItemPullRequest = {
+    diff_url: null;
+    html_url: null;
+    patch_url: null;
+  };
+  type SearchIssuesAndPullRequestsResponseItemsItemLabelsItem = {
+    color: string;
+    id: number;
+    name: string;
+    node_id: string;
+    url: string;
+  };
+  type SearchIssuesAndPullRequestsResponseItemsItem = {
+    assignee: null;
+    body: string;
+    closed_at: null;
+    comments: number;
+    comments_url: string;
+    created_at: string;
+    events_url: string;
+    html_url: string;
+    id: number;
+    labels: Array<SearchIssuesAndPullRequestsResponseItemsItemLabelsItem>;
+    labels_url: string;
+    milestone: null;
+    node_id: string;
+    number: number;
+    pull_request: SearchIssuesAndPullRequestsResponseItemsItemPullRequest;
+    repository_url: string;
+    score: number;
+    state: string;
+    title: string;
+    updated_at: string;
+    url: string;
+    user: SearchIssuesAndPullRequestsResponseItemsItemUser;
+  };
+  type SearchIssuesAndPullRequestsResponse = {
+    incomplete_results: boolean;
+    items: Array<SearchIssuesAndPullRequestsResponseItemsItem>;
+    total_count: number;
+  };
+  type SearchIssuesResponseItemsItemUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type SearchIssuesResponseItemsItemPullRequest = {
+    diff_url: null;
+    html_url: null;
+    patch_url: null;
+  };
+  type SearchIssuesResponseItemsItemLabelsItem = {
+    color: string;
+    id: number;
+    name: string;
+    node_id: string;
+    url: string;
+  };
+  type SearchIssuesResponseItemsItem = {
+    assignee: null;
+    body: string;
+    closed_at: null;
+    comments: number;
+    comments_url: string;
+    created_at: string;
+    events_url: string;
+    html_url: string;
+    id: number;
+    labels: Array<SearchIssuesResponseItemsItemLabelsItem>;
+    labels_url: string;
+    milestone: null;
+    node_id: string;
+    number: number;
+    pull_request: SearchIssuesResponseItemsItemPullRequest;
+    repository_url: string;
+    score: number;
+    state: string;
+    title: string;
+    updated_at: string;
+    url: string;
+    user: SearchIssuesResponseItemsItemUser;
+  };
+  type SearchIssuesResponse = {
+    incomplete_results: boolean;
+    items: Array<SearchIssuesResponseItemsItem>;
+    total_count: number;
+  };
+  type SearchCommitsResponseItemsItemRepositoryOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type SearchCommitsResponseItemsItemRepository = {
+    archive_url: string;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    deployments_url: string;
+    description: string;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    name: string;
+    node_id: string;
+    notifications_url: string;
+    owner: SearchCommitsResponseItemsItemRepositoryOwner;
+    private: boolean;
+    pulls_url: string;
+    releases_url: string;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_url: string;
+    subscription_url: string;
+    tags_url: string;
+    teams_url: string;
+    trees_url: string;
+    url: string;
+  };
+  type SearchCommitsResponseItemsItemParentsItem = {
+    html_url: string;
+    sha: string;
+    url: string;
+  };
+  type SearchCommitsResponseItemsItemCommitter = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type SearchCommitsResponseItemsItemCommitTree = { sha: string; url: string };
+  type SearchCommitsResponseItemsItemCommitCommitter = {
+    date: string;
+    email: string;
+    name: string;
+  };
+  type SearchCommitsResponseItemsItemCommitAuthor = {
+    date: string;
+    email: string;
+    name: string;
+  };
+  type SearchCommitsResponseItemsItemCommit = {
+    author: SearchCommitsResponseItemsItemCommitAuthor;
+    comment_count: number;
+    committer: SearchCommitsResponseItemsItemCommitCommitter;
+    message: string;
+    tree: SearchCommitsResponseItemsItemCommitTree;
+    url: string;
+  };
+  type SearchCommitsResponseItemsItemAuthor = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type SearchCommitsResponseItemsItem = {
+    author: SearchCommitsResponseItemsItemAuthor;
+    comments_url: string;
+    commit: SearchCommitsResponseItemsItemCommit;
+    committer: SearchCommitsResponseItemsItemCommitter;
+    html_url: string;
+    parents: Array<SearchCommitsResponseItemsItemParentsItem>;
+    repository: SearchCommitsResponseItemsItemRepository;
+    score: number;
+    sha: string;
+    url: string;
+  };
+  type SearchCommitsResponse = {
+    incomplete_results: boolean;
+    items: Array<SearchCommitsResponseItemsItem>;
+    total_count: number;
+  };
+  type SearchCodeResponseItemsItemRepositoryOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type SearchCodeResponseItemsItemRepository = {
+    archive_url: string;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    description: string;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    name: string;
+    node_id: string;
+    notifications_url: string;
+    owner: SearchCodeResponseItemsItemRepositoryOwner;
+    private: boolean;
+    pulls_url: string;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_url: string;
+    subscription_url: string;
+    tags_url: string;
+    teams_url: string;
+    trees_url: string;
+    url: string;
+  };
+  type SearchCodeResponseItemsItem = {
+    git_url: string;
+    html_url: string;
+    name: string;
+    path: string;
+    repository: SearchCodeResponseItemsItemRepository;
+    score: number;
+    sha: string;
+    url: string;
+  };
+  type SearchCodeResponse = {
+    incomplete_results: boolean;
+    items: Array<SearchCodeResponseItemsItem>;
+    total_count: number;
+  };
+  type ReposUploadReleaseAssetResponseValueUploader = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposUploadReleaseAssetResponseValue = {
+    browser_download_url: string;
+    content_type: string;
+    created_at: string;
+    download_count: number;
+    id: number;
+    label: string;
+    name: string;
+    node_id: string;
+    size: number;
+    state: string;
+    updated_at: string;
+    uploader: ReposUploadReleaseAssetResponseValueUploader;
+    url: string;
+  };
+  type ReposUploadReleaseAssetResponse = {
+    value: ReposUploadReleaseAssetResponseValue;
+  };
+  type ReposUpdateReleaseAssetResponseUploader = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposUpdateReleaseAssetResponse = {
+    browser_download_url: string;
+    content_type: string;
+    created_at: string;
+    download_count: number;
+    id: number;
+    label: string;
+    name: string;
+    node_id: string;
+    size: number;
+    state: string;
+    updated_at: string;
+    uploader: ReposUpdateReleaseAssetResponseUploader;
+    url: string;
+  };
+  type ReposUpdateReleaseResponseAuthor = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposUpdateReleaseResponseAssetsItemUploader = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposUpdateReleaseResponseAssetsItem = {
+    browser_download_url: string;
+    content_type: string;
+    created_at: string;
+    download_count: number;
+    id: number;
+    label: string;
+    name: string;
+    node_id: string;
+    size: number;
+    state: string;
+    updated_at: string;
+    uploader: ReposUpdateReleaseResponseAssetsItemUploader;
+    url: string;
+  };
+  type ReposUpdateReleaseResponse = {
+    assets: Array<ReposUpdateReleaseResponseAssetsItem>;
+    assets_url: string;
+    author: ReposUpdateReleaseResponseAuthor;
+    body: string;
+    created_at: string;
+    draft: boolean;
+    html_url: string;
+    id: number;
+    name: string;
+    node_id: string;
+    prerelease: boolean;
+    published_at: string;
+    tag_name: string;
+    tarball_url: string;
+    target_commitish: string;
+    upload_url: string;
+    url: string;
+    zipball_url: string;
+  };
+  type ReposUpdateProtectedBranchRequiredStatusChecksResponse = {
+    contexts: Array<string>;
+    contexts_url: string;
+    strict: boolean;
+    url: string;
+  };
+  type ReposUpdateProtectedBranchPullRequestReviewEnforcementResponseDismissalRestrictionsUsersItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposUpdateProtectedBranchPullRequestReviewEnforcementResponseDismissalRestrictionsTeamsItem = {
+    description: string;
+    html_url: string;
+    id: number;
+    members_url: string;
+    name: string;
+    node_id: string;
+    parent: null;
+    permission: string;
+    privacy: string;
+    repositories_url: string;
+    slug: string;
+    url: string;
+  };
+  type ReposUpdateProtectedBranchPullRequestReviewEnforcementResponseDismissalRestrictions = {
+    teams: Array<
+      ReposUpdateProtectedBranchPullRequestReviewEnforcementResponseDismissalRestrictionsTeamsItem
+    >;
+    teams_url: string;
+    url: string;
+    users: Array<
+      ReposUpdateProtectedBranchPullRequestReviewEnforcementResponseDismissalRestrictionsUsersItem
+    >;
+    users_url: string;
+  };
+  type ReposUpdateProtectedBranchPullRequestReviewEnforcementResponse = {
+    dismiss_stale_reviews: boolean;
+    dismissal_restrictions: ReposUpdateProtectedBranchPullRequestReviewEnforcementResponseDismissalRestrictions;
+    require_code_owner_reviews: boolean;
+    required_approving_review_count: number;
+    url: string;
+  };
+  type ReposUpdateInvitationResponseRepositoryOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposUpdateInvitationResponseRepository = {
+    archive_url: string;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    deployments_url: string;
+    description: string;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    html_url: string;
+    id: number;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    name: string;
+    node_id: string;
+    notifications_url: string;
+    owner: ReposUpdateInvitationResponseRepositoryOwner;
+    private: boolean;
+    pulls_url: string;
+    releases_url: string;
+    ssh_url: string;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_url: string;
+    subscription_url: string;
+    tags_url: string;
+    teams_url: string;
+    trees_url: string;
+    url: string;
+  };
+  type ReposUpdateInvitationResponseInviter = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposUpdateInvitationResponseInvitee = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposUpdateInvitationResponse = {
+    created_at: string;
+    html_url: string;
+    id: number;
+    invitee: ReposUpdateInvitationResponseInvitee;
+    inviter: ReposUpdateInvitationResponseInviter;
+    permissions: string;
+    repository: ReposUpdateInvitationResponseRepository;
+    url: string;
+  };
+  type ReposUpdateHookResponseLastResponse = {
+    code: null;
+    message: null;
+    status: string;
+  };
+  type ReposUpdateHookResponseConfig = {
+    content_type: string;
+    insecure_ssl: string;
+    url: string;
+  };
+  type ReposUpdateHookResponse = {
+    active: boolean;
+    config: ReposUpdateHookResponseConfig;
+    created_at: string;
+    events: Array<string>;
+    id: number;
+    last_response: ReposUpdateHookResponseLastResponse;
+    name: string;
+    ping_url: string;
+    test_url: string;
+    type: string;
+    updated_at: string;
+    url: string;
+  };
+  type ReposUpdateFileResponseContentLinks = {
+    git: string;
+    html: string;
+    self: string;
+  };
+  type ReposUpdateFileResponseContent = {
+    _links: ReposUpdateFileResponseContentLinks;
+    download_url: string;
+    git_url: string;
+    html_url: string;
+    name: string;
+    path: string;
+    sha: string;
+    size: number;
+    type: string;
+    url: string;
+  };
+  type ReposUpdateFileResponseCommitVerification = {
+    payload: null;
+    reason: string;
+    signature: null;
+    verified: boolean;
+  };
+  type ReposUpdateFileResponseCommitTree = { sha: string; url: string };
+  type ReposUpdateFileResponseCommitParentsItem = {
+    html_url: string;
+    sha: string;
+    url: string;
+  };
+  type ReposUpdateFileResponseCommitCommitter = {
+    date: string;
+    email: string;
+    name: string;
+  };
+  type ReposUpdateFileResponseCommitAuthor = {
+    date: string;
+    email: string;
+    name: string;
+  };
+  type ReposUpdateFileResponseCommit = {
+    author: ReposUpdateFileResponseCommitAuthor;
+    committer: ReposUpdateFileResponseCommitCommitter;
+    html_url: string;
+    message: string;
+    node_id: string;
+    parents: Array<ReposUpdateFileResponseCommitParentsItem>;
+    sha: string;
+    tree: ReposUpdateFileResponseCommitTree;
+    url: string;
+    verification: ReposUpdateFileResponseCommitVerification;
+  };
+  type ReposUpdateFileResponse = {
+    commit: ReposUpdateFileResponseCommit;
+    content: ReposUpdateFileResponseContent;
+  };
+  type ReposUpdateCommitCommentResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposUpdateCommitCommentResponse = {
+    body: string;
+    commit_id: string;
+    created_at: string;
+    html_url: string;
+    id: number;
+    line: number;
+    node_id: string;
+    path: string;
+    position: number;
+    updated_at: string;
+    url: string;
+    user: ReposUpdateCommitCommentResponseUser;
+  };
+  type ReposUpdateBranchProtectionResponseRestrictionsUsersItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposUpdateBranchProtectionResponseRestrictionsTeamsItem = {
+    description: string;
+    html_url: string;
+    id: number;
+    members_url: string;
+    name: string;
+    node_id: string;
+    parent: null;
+    permission: string;
+    privacy: string;
+    repositories_url: string;
+    slug: string;
+    url: string;
+  };
+  type ReposUpdateBranchProtectionResponseRestrictionsAppsItemPermissions = {
+    contents: string;
+    issues: string;
+    metadata: string;
+    single_file: string;
+  };
+  type ReposUpdateBranchProtectionResponseRestrictionsAppsItemOwner = {
+    avatar_url: string;
+    description: string;
+    events_url: string;
+    hooks_url: string;
+    id: number;
+    issues_url: string;
+    login: string;
+    members_url: string;
+    node_id: string;
+    public_members_url: string;
+    repos_url: string;
+    url: string;
+  };
+  type ReposUpdateBranchProtectionResponseRestrictionsAppsItem = {
+    created_at: string;
+    description: string;
+    events: Array<string>;
+    external_url: string;
+    html_url: string;
+    id: number;
+    name: string;
+    node_id: string;
+    owner: ReposUpdateBranchProtectionResponseRestrictionsAppsItemOwner;
+    permissions: ReposUpdateBranchProtectionResponseRestrictionsAppsItemPermissions;
+    slug: string;
+    updated_at: string;
+  };
+  type ReposUpdateBranchProtectionResponseRestrictions = {
+    apps: Array<ReposUpdateBranchProtectionResponseRestrictionsAppsItem>;
+    apps_url: string;
+    teams: Array<ReposUpdateBranchProtectionResponseRestrictionsTeamsItem>;
+    teams_url: string;
+    url: string;
+    users: Array<ReposUpdateBranchProtectionResponseRestrictionsUsersItem>;
+    users_url: string;
+  };
+  type ReposUpdateBranchProtectionResponseRequiredStatusChecks = {
+    contexts: Array<string>;
+    contexts_url: string;
+    strict: boolean;
+    url: string;
+  };
+  type ReposUpdateBranchProtectionResponseRequiredPullRequestReviewsDismissalRestrictionsUsersItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposUpdateBranchProtectionResponseRequiredPullRequestReviewsDismissalRestrictionsTeamsItem = {
+    description: string;
+    html_url: string;
+    id: number;
+    members_url: string;
+    name: string;
+    node_id: string;
+    parent: null;
+    permission: string;
+    privacy: string;
+    repositories_url: string;
+    slug: string;
+    url: string;
+  };
+  type ReposUpdateBranchProtectionResponseRequiredPullRequestReviewsDismissalRestrictions = {
+    teams: Array<
+      ReposUpdateBranchProtectionResponseRequiredPullRequestReviewsDismissalRestrictionsTeamsItem
+    >;
+    teams_url: string;
+    url: string;
+    users: Array<
+      ReposUpdateBranchProtectionResponseRequiredPullRequestReviewsDismissalRestrictionsUsersItem
+    >;
+    users_url: string;
+  };
+  type ReposUpdateBranchProtectionResponseRequiredPullRequestReviews = {
+    dismiss_stale_reviews: boolean;
+    dismissal_restrictions: ReposUpdateBranchProtectionResponseRequiredPullRequestReviewsDismissalRestrictions;
+    require_code_owner_reviews: boolean;
+    required_approving_review_count: number;
+    url: string;
+  };
+  type ReposUpdateBranchProtectionResponseEnforceAdmins = {
+    enabled: boolean;
+    url: string;
+  };
+  type ReposUpdateBranchProtectionResponse = {
+    enforce_admins: ReposUpdateBranchProtectionResponseEnforceAdmins;
+    required_pull_request_reviews: ReposUpdateBranchProtectionResponseRequiredPullRequestReviews;
+    required_status_checks: ReposUpdateBranchProtectionResponseRequiredStatusChecks;
+    restrictions: ReposUpdateBranchProtectionResponseRestrictions;
+    url: string;
+  };
+  type ReposUpdateResponseSourcePermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type ReposUpdateResponseSourceOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposUpdateResponseSource = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: ReposUpdateResponseSourceOwner;
+    permissions: ReposUpdateResponseSourcePermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type ReposUpdateResponsePermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type ReposUpdateResponseParentPermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type ReposUpdateResponseParentOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposUpdateResponseParent = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: ReposUpdateResponseParentOwner;
+    permissions: ReposUpdateResponseParentPermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type ReposUpdateResponseOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposUpdateResponseOrganization = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposUpdateResponse = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    organization: ReposUpdateResponseOrganization;
+    owner: ReposUpdateResponseOwner;
+    parent: ReposUpdateResponseParent;
+    permissions: ReposUpdateResponsePermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    source: ReposUpdateResponseSource;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type ReposTransferResponsePermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type ReposTransferResponseOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposTransferResponse = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: ReposTransferResponseOwner;
+    permissions: ReposTransferResponsePermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type ReposRetrieveCommunityProfileMetricsResponseFilesReadme = {
+    html_url: string;
+    url: string;
+  };
+  type ReposRetrieveCommunityProfileMetricsResponseFilesPullRequestTemplate = {
+    html_url: string;
+    url: string;
+  };
+  type ReposRetrieveCommunityProfileMetricsResponseFilesLicense = {
+    html_url: string;
+    key: string;
+    name: string;
+    spdx_id: string;
+    url: string;
+  };
+  type ReposRetrieveCommunityProfileMetricsResponseFilesIssueTemplate = {
+    html_url: string;
+    url: string;
+  };
+  type ReposRetrieveCommunityProfileMetricsResponseFilesContributing = {
+    html_url: string;
+    url: string;
+  };
+  type ReposRetrieveCommunityProfileMetricsResponseFilesCodeOfConduct = {
+    html_url: string;
+    key: string;
+    name: string;
+    url: string;
+  };
+  type ReposRetrieveCommunityProfileMetricsResponseFiles = {
+    code_of_conduct: ReposRetrieveCommunityProfileMetricsResponseFilesCodeOfConduct;
+    contributing: ReposRetrieveCommunityProfileMetricsResponseFilesContributing;
+    issue_template: ReposRetrieveCommunityProfileMetricsResponseFilesIssueTemplate;
+    license: ReposRetrieveCommunityProfileMetricsResponseFilesLicense;
+    pull_request_template: ReposRetrieveCommunityProfileMetricsResponseFilesPullRequestTemplate;
+    readme: ReposRetrieveCommunityProfileMetricsResponseFilesReadme;
+  };
+  type ReposRetrieveCommunityProfileMetricsResponse = {
+    description: string;
+    documentation: boolean;
+    files: ReposRetrieveCommunityProfileMetricsResponseFiles;
+    health_percentage: number;
+    updated_at: string;
+  };
+  type ReposRequestPageBuildResponse = { status: string; url: string };
+  type ReposReplaceTopicsResponse = { names: Array<string> };
+  type ReposReplaceProtectedBranchUserRestrictionsResponseItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposReplaceProtectedBranchTeamRestrictionsResponseItem = {
+    description: string;
+    html_url: string;
+    id: number;
+    members_url: string;
+    name: string;
+    node_id: string;
+    parent: null;
+    permission: string;
+    privacy: string;
+    repositories_url: string;
+    slug: string;
+    url: string;
+  };
+  type ReposReplaceProtectedBranchAppRestrictionsResponseItemPermissions = {
+    contents: string;
+    issues: string;
+    metadata: string;
+    single_file: string;
+  };
+  type ReposReplaceProtectedBranchAppRestrictionsResponseItemOwner = {
+    avatar_url: string;
+    description: string;
+    events_url: string;
+    hooks_url: string;
+    id: number;
+    issues_url: string;
+    login: string;
+    members_url: string;
+    node_id: string;
+    public_members_url: string;
+    repos_url: string;
+    url: string;
+  };
+  type ReposReplaceProtectedBranchAppRestrictionsResponseItem = {
+    created_at: string;
+    description: string;
+    events: Array<string>;
+    external_url: string;
+    html_url: string;
+    id: number;
+    name: string;
+    node_id: string;
+    owner: ReposReplaceProtectedBranchAppRestrictionsResponseItemOwner;
+    permissions: ReposReplaceProtectedBranchAppRestrictionsResponseItemPermissions;
+    slug: string;
+    updated_at: string;
+  };
+  type ReposRemoveProtectedBranchUserRestrictionsResponseItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposRemoveProtectedBranchTeamRestrictionsResponseItem = {
+    description: string;
+    html_url: string;
+    id: number;
+    members_url: string;
+    name: string;
+    node_id: string;
+    parent: null;
+    permission: string;
+    privacy: string;
+    repositories_url: string;
+    slug: string;
+    url: string;
+  };
+  type ReposRemoveProtectedBranchAppRestrictionsResponseItemPermissions = {
+    contents: string;
+    issues: string;
+    metadata: string;
+    single_file: string;
+  };
+  type ReposRemoveProtectedBranchAppRestrictionsResponseItemOwner = {
+    avatar_url: string;
+    description: string;
+    events_url: string;
+    hooks_url: string;
+    id: number;
+    issues_url: string;
+    login: string;
+    members_url: string;
+    node_id: string;
+    public_members_url: string;
+    repos_url: string;
+    url: string;
+  };
+  type ReposRemoveProtectedBranchAppRestrictionsResponseItem = {
+    created_at: string;
+    description: string;
+    events: Array<string>;
+    external_url: string;
+    html_url: string;
+    id: number;
+    name: string;
+    node_id: string;
+    owner: ReposRemoveProtectedBranchAppRestrictionsResponseItemOwner;
+    permissions: ReposRemoveProtectedBranchAppRestrictionsResponseItemPermissions;
+    slug: string;
+    updated_at: string;
+  };
+  type ReposMergeResponseParentsItem = { sha: string; url: string };
+  type ReposMergeResponseCommitter = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposMergeResponseCommitVerification = {
+    payload: null;
+    reason: string;
+    signature: null;
+    verified: boolean;
+  };
+  type ReposMergeResponseCommitTree = { sha: string; url: string };
+  type ReposMergeResponseCommitCommitter = {
+    date: string;
+    email: string;
+    name: string;
+  };
+  type ReposMergeResponseCommitAuthor = {
+    date: string;
+    email: string;
+    name: string;
+  };
+  type ReposMergeResponseCommit = {
+    author: ReposMergeResponseCommitAuthor;
+    comment_count: number;
+    committer: ReposMergeResponseCommitCommitter;
+    message: string;
+    tree: ReposMergeResponseCommitTree;
+    url: string;
+    verification: ReposMergeResponseCommitVerification;
+  };
+  type ReposMergeResponseAuthor = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposMergeResponse = {
+    author: ReposMergeResponseAuthor;
+    comments_url: string;
+    commit: ReposMergeResponseCommit;
+    committer: ReposMergeResponseCommitter;
+    html_url: string;
+    node_id: string;
+    parents: Array<ReposMergeResponseParentsItem>;
+    sha: string;
+    url: string;
+  };
+  type ReposListUsersWithAccessToProtectedBranchResponseItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposListTopicsResponse = { names: Array<string> };
+  type ReposListTeamsWithAccessToProtectedBranchResponseItem = {
+    description: string;
+    html_url: string;
+    id: number;
+    members_url: string;
+    name: string;
+    node_id: string;
+    parent: null;
+    permission: string;
+    privacy: string;
+    repositories_url: string;
+    slug: string;
+    url: string;
+  };
+  type ReposListTeamsResponseItem = {
+    description: string;
+    html_url: string;
+    id: number;
+    members_url: string;
+    name: string;
+    node_id: string;
+    parent: null;
+    permission: string;
+    privacy: string;
+    repositories_url: string;
+    slug: string;
+    url: string;
+  };
+  type ReposListTagsResponseItemCommit = { sha: string; url: string };
+  type ReposListTagsResponseItem = {
+    commit: ReposListTagsResponseItemCommit;
+    name: string;
+    tarball_url: string;
+    zipball_url: string;
+  };
+  type ReposListStatusesForRefResponseItemCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposListStatusesForRefResponseItem = {
+    avatar_url: string;
+    context: string;
+    created_at: string;
+    creator: ReposListStatusesForRefResponseItemCreator;
+    description: string;
+    id: number;
+    node_id: string;
+    state: string;
+    target_url: string;
+    updated_at: string;
+    url: string;
+  };
+  type ReposListReleasesResponseItemAuthor = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposListReleasesResponseItemAssetsItemUploader = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposListReleasesResponseItemAssetsItem = {
+    browser_download_url: string;
+    content_type: string;
+    created_at: string;
+    download_count: number;
+    id: number;
+    label: string;
+    name: string;
+    node_id: string;
+    size: number;
+    state: string;
+    updated_at: string;
+    uploader: ReposListReleasesResponseItemAssetsItemUploader;
+    url: string;
+  };
+  type ReposListReleasesResponseItem = {
+    assets: Array<ReposListReleasesResponseItemAssetsItem>;
+    assets_url: string;
+    author: ReposListReleasesResponseItemAuthor;
+    body: string;
+    created_at: string;
+    draft: boolean;
+    html_url: string;
+    id: number;
+    name: string;
+    node_id: string;
+    prerelease: boolean;
+    published_at: string;
+    tag_name: string;
+    tarball_url: string;
+    target_commitish: string;
+    upload_url: string;
+    url: string;
+    zipball_url: string;
+  };
+  type ReposListPullRequestsAssociatedWithCommitResponseItemUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposListPullRequestsAssociatedWithCommitResponseItemRequestedTeamsItem = {
+    description: string;
+    html_url: string;
+    id: number;
+    members_url: string;
+    name: string;
+    node_id: string;
+    parent: null;
+    permission: string;
+    privacy: string;
+    repositories_url: string;
+    slug: string;
+    url: string;
+  };
+  type ReposListPullRequestsAssociatedWithCommitResponseItemRequestedReviewersItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposListPullRequestsAssociatedWithCommitResponseItemMilestoneCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposListPullRequestsAssociatedWithCommitResponseItemMilestone = {
+    closed_at: string;
+    closed_issues: number;
+    created_at: string;
+    creator: ReposListPullRequestsAssociatedWithCommitResponseItemMilestoneCreator;
+    description: string;
+    due_on: string;
+    html_url: string;
+    id: number;
+    labels_url: string;
+    node_id: string;
+    number: number;
+    open_issues: number;
+    state: string;
+    title: string;
+    updated_at: string;
+    url: string;
+  };
+  type ReposListPullRequestsAssociatedWithCommitResponseItemLabelsItem = {
+    color: string;
+    default: boolean;
+    description: string;
+    id: number;
+    name: string;
+    node_id: string;
+    url: string;
+  };
+  type ReposListPullRequestsAssociatedWithCommitResponseItemHeadUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposListPullRequestsAssociatedWithCommitResponseItemHeadRepoPermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type ReposListPullRequestsAssociatedWithCommitResponseItemHeadRepoOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposListPullRequestsAssociatedWithCommitResponseItemHeadRepo = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: ReposListPullRequestsAssociatedWithCommitResponseItemHeadRepoOwner;
+    permissions: ReposListPullRequestsAssociatedWithCommitResponseItemHeadRepoPermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type ReposListPullRequestsAssociatedWithCommitResponseItemHead = {
+    label: string;
+    ref: string;
+    repo: ReposListPullRequestsAssociatedWithCommitResponseItemHeadRepo;
+    sha: string;
+    user: ReposListPullRequestsAssociatedWithCommitResponseItemHeadUser;
+  };
+  type ReposListPullRequestsAssociatedWithCommitResponseItemBaseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposListPullRequestsAssociatedWithCommitResponseItemBaseRepoPermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type ReposListPullRequestsAssociatedWithCommitResponseItemBaseRepoOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposListPullRequestsAssociatedWithCommitResponseItemBaseRepo = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: ReposListPullRequestsAssociatedWithCommitResponseItemBaseRepoOwner;
+    permissions: ReposListPullRequestsAssociatedWithCommitResponseItemBaseRepoPermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type ReposListPullRequestsAssociatedWithCommitResponseItemBase = {
+    label: string;
+    ref: string;
+    repo: ReposListPullRequestsAssociatedWithCommitResponseItemBaseRepo;
+    sha: string;
+    user: ReposListPullRequestsAssociatedWithCommitResponseItemBaseUser;
+  };
+  type ReposListPullRequestsAssociatedWithCommitResponseItemAssigneesItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposListPullRequestsAssociatedWithCommitResponseItemAssignee = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposListPullRequestsAssociatedWithCommitResponseItemLinksStatuses = {
+    href: string;
+  };
+  type ReposListPullRequestsAssociatedWithCommitResponseItemLinksSelf = {
+    href: string;
+  };
+  type ReposListPullRequestsAssociatedWithCommitResponseItemLinksReviewComments = {
+    href: string;
+  };
+  type ReposListPullRequestsAssociatedWithCommitResponseItemLinksReviewComment = {
+    href: string;
+  };
+  type ReposListPullRequestsAssociatedWithCommitResponseItemLinksIssue = {
+    href: string;
+  };
+  type ReposListPullRequestsAssociatedWithCommitResponseItemLinksHtml = {
+    href: string;
+  };
+  type ReposListPullRequestsAssociatedWithCommitResponseItemLinksCommits = {
+    href: string;
+  };
+  type ReposListPullRequestsAssociatedWithCommitResponseItemLinksComments = {
+    href: string;
+  };
+  type ReposListPullRequestsAssociatedWithCommitResponseItemLinks = {
+    comments: ReposListPullRequestsAssociatedWithCommitResponseItemLinksComments;
+    commits: ReposListPullRequestsAssociatedWithCommitResponseItemLinksCommits;
+    html: ReposListPullRequestsAssociatedWithCommitResponseItemLinksHtml;
+    issue: ReposListPullRequestsAssociatedWithCommitResponseItemLinksIssue;
+    review_comment: ReposListPullRequestsAssociatedWithCommitResponseItemLinksReviewComment;
+    review_comments: ReposListPullRequestsAssociatedWithCommitResponseItemLinksReviewComments;
+    self: ReposListPullRequestsAssociatedWithCommitResponseItemLinksSelf;
+    statuses: ReposListPullRequestsAssociatedWithCommitResponseItemLinksStatuses;
+  };
+  type ReposListPullRequestsAssociatedWithCommitResponseItem = {
+    _links: ReposListPullRequestsAssociatedWithCommitResponseItemLinks;
+    active_lock_reason: string;
+    assignee: ReposListPullRequestsAssociatedWithCommitResponseItemAssignee;
+    assignees: Array<
+      ReposListPullRequestsAssociatedWithCommitResponseItemAssigneesItem
+    >;
+    author_association: string;
+    base: ReposListPullRequestsAssociatedWithCommitResponseItemBase;
+    body: string;
+    closed_at: string;
+    comments_url: string;
+    commits_url: string;
+    created_at: string;
+    diff_url: string;
+    draft: boolean;
+    head: ReposListPullRequestsAssociatedWithCommitResponseItemHead;
+    html_url: string;
+    id: number;
+    issue_url: string;
+    labels: Array<
+      ReposListPullRequestsAssociatedWithCommitResponseItemLabelsItem
+    >;
+    locked: boolean;
+    merge_commit_sha: string;
+    merged_at: string;
+    milestone: ReposListPullRequestsAssociatedWithCommitResponseItemMilestone;
+    node_id: string;
+    number: number;
+    patch_url: string;
+    requested_reviewers: Array<
+      ReposListPullRequestsAssociatedWithCommitResponseItemRequestedReviewersItem
+    >;
+    requested_teams: Array<
+      ReposListPullRequestsAssociatedWithCommitResponseItemRequestedTeamsItem
+    >;
+    review_comment_url: string;
+    review_comments_url: string;
+    state: string;
+    statuses_url: string;
+    title: string;
+    updated_at: string;
+    url: string;
+    user: ReposListPullRequestsAssociatedWithCommitResponseItemUser;
+  };
+  type ReposListPublicResponseItemOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposListPublicResponseItem = {
+    archive_url: string;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    deployments_url: string;
+    description: string;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    html_url: string;
+    id: number;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    name: string;
+    node_id: string;
+    notifications_url: string;
+    owner: ReposListPublicResponseItemOwner;
+    private: boolean;
+    pulls_url: string;
+    releases_url: string;
+    ssh_url: string;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_url: string;
+    subscription_url: string;
+    tags_url: string;
+    teams_url: string;
+    trees_url: string;
+    url: string;
+  };
+  type ReposListProtectedBranchUserRestrictionsResponseItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposListProtectedBranchTeamRestrictionsResponseItem = {
+    description: string;
+    html_url: string;
+    id: number;
+    members_url: string;
+    name: string;
+    node_id: string;
+    parent: null;
+    permission: string;
+    privacy: string;
+    repositories_url: string;
+    slug: string;
+    url: string;
+  };
+  type ReposListPagesBuildsResponseItemPusher = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposListPagesBuildsResponseItemError = { message: null };
+  type ReposListPagesBuildsResponseItem = {
+    commit: string;
+    created_at: string;
+    duration: number;
+    error: ReposListPagesBuildsResponseItemError;
+    pusher: ReposListPagesBuildsResponseItemPusher;
+    status: string;
+    updated_at: string;
+    url: string;
+  };
+  type ReposListLanguagesResponse = { C: number; Python: number };
+  type ReposListInvitationsForAuthenticatedUserResponseItemRepositoryOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposListInvitationsForAuthenticatedUserResponseItemRepository = {
+    archive_url: string;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    deployments_url: string;
+    description: string;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    html_url: string;
+    id: number;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    name: string;
+    node_id: string;
+    notifications_url: string;
+    owner: ReposListInvitationsForAuthenticatedUserResponseItemRepositoryOwner;
+    private: boolean;
+    pulls_url: string;
+    releases_url: string;
+    ssh_url: string;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_url: string;
+    subscription_url: string;
+    tags_url: string;
+    teams_url: string;
+    trees_url: string;
+    url: string;
+  };
+  type ReposListInvitationsForAuthenticatedUserResponseItemInviter = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposListInvitationsForAuthenticatedUserResponseItemInvitee = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposListInvitationsForAuthenticatedUserResponseItem = {
+    created_at: string;
+    html_url: string;
+    id: number;
+    invitee: ReposListInvitationsForAuthenticatedUserResponseItemInvitee;
+    inviter: ReposListInvitationsForAuthenticatedUserResponseItemInviter;
+    permissions: string;
+    repository: ReposListInvitationsForAuthenticatedUserResponseItemRepository;
+    url: string;
+  };
+  type ReposListInvitationsResponseItemRepositoryOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposListInvitationsResponseItemRepository = {
+    archive_url: string;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    deployments_url: string;
+    description: string;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    html_url: string;
+    id: number;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    name: string;
+    node_id: string;
+    notifications_url: string;
+    owner: ReposListInvitationsResponseItemRepositoryOwner;
+    private: boolean;
+    pulls_url: string;
+    releases_url: string;
+    ssh_url: string;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_url: string;
+    subscription_url: string;
+    tags_url: string;
+    teams_url: string;
+    trees_url: string;
+    url: string;
+  };
+  type ReposListInvitationsResponseItemInviter = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposListInvitationsResponseItemInvitee = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposListInvitationsResponseItem = {
+    created_at: string;
+    html_url: string;
+    id: number;
+    invitee: ReposListInvitationsResponseItemInvitee;
+    inviter: ReposListInvitationsResponseItemInviter;
+    permissions: string;
+    repository: ReposListInvitationsResponseItemRepository;
+    url: string;
+  };
+  type ReposListHooksResponseItemLastResponse = {
+    code: null;
+    message: null;
+    status: string;
+  };
+  type ReposListHooksResponseItemConfig = {
+    content_type: string;
+    insecure_ssl: string;
+    url: string;
+  };
+  type ReposListHooksResponseItem = {
+    active: boolean;
+    config: ReposListHooksResponseItemConfig;
+    created_at: string;
+    events: Array<string>;
+    id: number;
+    last_response: ReposListHooksResponseItemLastResponse;
+    name: string;
+    ping_url: string;
+    test_url: string;
+    type: string;
+    updated_at: string;
+    url: string;
+  };
+  type ReposListForksResponseItemPermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type ReposListForksResponseItemOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposListForksResponseItemLicense = {
+    key: string;
+    name: string;
+    node_id: string;
+    spdx_id: string;
+    url: string;
+  };
+  type ReposListForksResponseItem = {
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    license: ReposListForksResponseItemLicense;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: ReposListForksResponseItemOwner;
+    permissions: ReposListForksResponseItemPermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type ReposListForOrgResponseItemPermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type ReposListForOrgResponseItemOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposListForOrgResponseItemLicense = {
+    key: string;
+    name: string;
+    node_id: string;
+    spdx_id: string;
+    url: string;
+  };
+  type ReposListForOrgResponseItem = {
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    license: ReposListForOrgResponseItemLicense;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: ReposListForOrgResponseItemOwner;
+    permissions: ReposListForOrgResponseItemPermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type ReposListDownloadsResponseItem = {
+    content_type: string;
+    description: string;
+    download_count: number;
+    html_url: string;
+    id: number;
+    name: string;
+    size: number;
+    url: string;
+  };
+  type ReposListDeploymentsResponseItemPayload = { deploy: string };
+  type ReposListDeploymentsResponseItemCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposListDeploymentsResponseItem = {
+    created_at: string;
+    creator: ReposListDeploymentsResponseItemCreator;
+    description: string;
+    environment: string;
+    id: number;
+    node_id: string;
+    original_environment: string;
+    payload: ReposListDeploymentsResponseItemPayload;
+    production_environment: boolean;
+    ref: string;
+    repository_url: string;
+    sha: string;
+    statuses_url: string;
+    task: string;
+    transient_environment: boolean;
+    updated_at: string;
+    url: string;
+  };
+  type ReposListDeploymentStatusesResponseItemCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposListDeploymentStatusesResponseItem = {
+    created_at: string;
+    creator: ReposListDeploymentStatusesResponseItemCreator;
+    deployment_url: string;
+    description: string;
+    environment: string;
+    environment_url: string;
+    id: number;
+    log_url: string;
+    node_id: string;
+    repository_url: string;
+    state: string;
+    target_url: string;
+    updated_at: string;
+    url: string;
+  };
+  type ReposListDeployKeysResponseItem = {
+    created_at: string;
+    id: number;
+    key: string;
+    read_only: boolean;
+    title: string;
+    url: string;
+    verified: boolean;
+  };
+  type ReposListContributorsResponseItem = {
+    avatar_url: string;
+    contributions: number;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposListCommitsResponseItemParentsItem = { sha: string; url: string };
+  type ReposListCommitsResponseItemCommitter = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposListCommitsResponseItemCommitVerification = {
+    payload: null;
+    reason: string;
+    signature: null;
+    verified: boolean;
+  };
+  type ReposListCommitsResponseItemCommitTree = { sha: string; url: string };
+  type ReposListCommitsResponseItemCommitCommitter = {
+    date: string;
+    email: string;
+    name: string;
+  };
+  type ReposListCommitsResponseItemCommitAuthor = {
+    date: string;
+    email: string;
+    name: string;
+  };
+  type ReposListCommitsResponseItemCommit = {
+    author: ReposListCommitsResponseItemCommitAuthor;
+    comment_count: number;
+    committer: ReposListCommitsResponseItemCommitCommitter;
+    message: string;
+    tree: ReposListCommitsResponseItemCommitTree;
+    url: string;
+    verification: ReposListCommitsResponseItemCommitVerification;
+  };
+  type ReposListCommitsResponseItemAuthor = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposListCommitsResponseItem = {
+    author: ReposListCommitsResponseItemAuthor;
+    comments_url: string;
+    commit: ReposListCommitsResponseItemCommit;
+    committer: ReposListCommitsResponseItemCommitter;
+    html_url: string;
+    node_id: string;
+    parents: Array<ReposListCommitsResponseItemParentsItem>;
+    sha: string;
+    url: string;
+  };
+  type ReposListCommitCommentsResponseItemUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposListCommitCommentsResponseItem = {
+    body: string;
+    commit_id: string;
+    created_at: string;
+    html_url: string;
+    id: number;
+    line: number;
+    node_id: string;
+    path: string;
+    position: number;
+    updated_at: string;
+    url: string;
+    user: ReposListCommitCommentsResponseItemUser;
+  };
+  type ReposListCommentsForCommitResponseItemUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposListCommentsForCommitResponseItem = {
+    body: string;
+    commit_id: string;
+    created_at: string;
+    html_url: string;
+    id: number;
+    line: number;
+    node_id: string;
+    path: string;
+    position: number;
+    updated_at: string;
+    url: string;
+    user: ReposListCommentsForCommitResponseItemUser;
+  };
+  type ReposListCollaboratorsResponseItemPermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type ReposListCollaboratorsResponseItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    permissions: ReposListCollaboratorsResponseItemPermissions;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposListBranchesForHeadCommitResponseItemCommit = {
+    sha: string;
+    url: string;
+  };
+  type ReposListBranchesForHeadCommitResponseItem = {
+    commit: ReposListBranchesForHeadCommitResponseItemCommit;
+    name: string;
+    protected: string;
+  };
+  type ReposListBranchesResponseItemProtectionRequiredStatusChecks = {
+    contexts: Array<string>;
+    enforcement_level: string;
+  };
+  type ReposListBranchesResponseItemProtection = {
+    enabled: boolean;
+    required_status_checks: ReposListBranchesResponseItemProtectionRequiredStatusChecks;
+  };
+  type ReposListBranchesResponseItemCommit = { sha: string; url: string };
+  type ReposListBranchesResponseItem = {
+    commit: ReposListBranchesResponseItemCommit;
+    name: string;
+    protected: boolean;
+    protection: ReposListBranchesResponseItemProtection;
+    protection_url: string;
+  };
+  type ReposListAssetsForReleaseResponseItemUploader = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposListAssetsForReleaseResponseItem = {
+    browser_download_url: string;
+    content_type: string;
+    created_at: string;
+    download_count: number;
+    id: number;
+    label: string;
+    name: string;
+    node_id: string;
+    size: number;
+    state: string;
+    updated_at: string;
+    uploader: ReposListAssetsForReleaseResponseItemUploader;
+    url: string;
+  };
+  type ReposListAppsWithAccessToProtectedBranchResponseItemPermissions = {
+    contents: string;
+    issues: string;
+    metadata: string;
+    single_file: string;
+  };
+  type ReposListAppsWithAccessToProtectedBranchResponseItemOwner = {
+    avatar_url: string;
+    description: string;
+    events_url: string;
+    hooks_url: string;
+    id: number;
+    issues_url: string;
+    login: string;
+    members_url: string;
+    node_id: string;
+    public_members_url: string;
+    repos_url: string;
+    url: string;
+  };
+  type ReposListAppsWithAccessToProtectedBranchResponseItem = {
+    created_at: string;
+    description: string;
+    events: Array<string>;
+    external_url: string;
+    html_url: string;
+    id: number;
+    name: string;
+    node_id: string;
+    owner: ReposListAppsWithAccessToProtectedBranchResponseItemOwner;
+    permissions: ReposListAppsWithAccessToProtectedBranchResponseItemPermissions;
+    slug: string;
+    updated_at: string;
+  };
+  type ReposGetViewsResponseViewsItem = {
+    count: number;
+    timestamp: string;
+    uniques: number;
+  };
+  type ReposGetViewsResponse = {
+    count: number;
+    uniques: number;
+    views: Array<ReposGetViewsResponseViewsItem>;
+  };
+  type ReposGetUsersWithAccessToProtectedBranchResponseItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposGetTopReferrersResponseItem = {
+    count: number;
+    referrer: string;
+    uniques: number;
+  };
+  type ReposGetTopPathsResponseItem = {
+    count: number;
+    path: string;
+    title: string;
+    uniques: number;
+  };
+  type ReposGetTeamsWithAccessToProtectedBranchResponseItem = {
+    description: string;
+    html_url: string;
+    id: number;
+    members_url: string;
+    name: string;
+    node_id: string;
+    parent: null;
+    permission: string;
+    privacy: string;
+    repositories_url: string;
+    slug: string;
+    url: string;
+  };
+  type ReposGetReleaseByTagResponseAuthor = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposGetReleaseByTagResponseAssetsItemUploader = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposGetReleaseByTagResponseAssetsItem = {
+    browser_download_url: string;
+    content_type: string;
+    created_at: string;
+    download_count: number;
+    id: number;
+    label: string;
+    name: string;
+    node_id: string;
+    size: number;
+    state: string;
+    updated_at: string;
+    uploader: ReposGetReleaseByTagResponseAssetsItemUploader;
+    url: string;
+  };
+  type ReposGetReleaseByTagResponse = {
+    assets: Array<ReposGetReleaseByTagResponseAssetsItem>;
+    assets_url: string;
+    author: ReposGetReleaseByTagResponseAuthor;
+    body: string;
+    created_at: string;
+    draft: boolean;
+    html_url: string;
+    id: number;
+    name: string;
+    node_id: string;
+    prerelease: boolean;
+    published_at: string;
+    tag_name: string;
+    tarball_url: string;
+    target_commitish: string;
+    upload_url: string;
+    url: string;
+    zipball_url: string;
+  };
+  type ReposGetReleaseAssetResponseUploader = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposGetReleaseAssetResponse = {
+    browser_download_url: string;
+    content_type: string;
+    created_at: string;
+    download_count: number;
+    id: number;
+    label: string;
+    name: string;
+    node_id: string;
+    size: number;
+    state: string;
+    updated_at: string;
+    uploader: ReposGetReleaseAssetResponseUploader;
+    url: string;
+  };
+  type ReposGetReleaseResponseAuthor = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposGetReleaseResponseAssetsItemUploader = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposGetReleaseResponseAssetsItem = {
+    browser_download_url: string;
+    content_type: string;
+    created_at: string;
+    download_count: number;
+    id: number;
+    label: string;
+    name: string;
+    node_id: string;
+    size: number;
+    state: string;
+    updated_at: string;
+    uploader: ReposGetReleaseResponseAssetsItemUploader;
+    url: string;
+  };
+  type ReposGetReleaseResponse = {
+    assets: Array<ReposGetReleaseResponseAssetsItem>;
+    assets_url: string;
+    author: ReposGetReleaseResponseAuthor;
+    body: string;
+    created_at: string;
+    draft: boolean;
+    html_url: string;
+    id: number;
+    name: string;
+    node_id: string;
+    prerelease: boolean;
+    published_at: string;
+    tag_name: string;
+    tarball_url: string;
+    target_commitish: string;
+    upload_url: string;
+    url: string;
+    zipball_url: string;
+  };
+  type ReposGetReadmeResponseLinks = {
+    git: string;
+    html: string;
+    self: string;
+  };
+  type ReposGetReadmeResponse = {
+    _links: ReposGetReadmeResponseLinks;
+    content: string;
+    download_url: string;
+    encoding: string;
+    git_url: string;
+    html_url: string;
+    name: string;
+    path: string;
+    sha: string;
+    size: number;
+    type: string;
+    url: string;
+  };
+  type ReposGetProtectedBranchRestrictionsResponseUsersItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposGetProtectedBranchRestrictionsResponseTeamsItem = {
+    description: string;
+    html_url: string;
+    id: number;
+    members_url: string;
+    name: string;
+    node_id: string;
+    parent: null;
+    permission: string;
+    privacy: string;
+    repositories_url: string;
+    slug: string;
+    url: string;
+  };
+  type ReposGetProtectedBranchRestrictionsResponseAppsItemPermissions = {
+    contents: string;
+    issues: string;
+    metadata: string;
+    single_file: string;
+  };
+  type ReposGetProtectedBranchRestrictionsResponseAppsItemOwner = {
+    avatar_url: string;
+    description: string;
+    events_url: string;
+    hooks_url: string;
+    id: number;
+    issues_url: string;
+    login: string;
+    members_url: string;
+    node_id: string;
+    public_members_url: string;
+    repos_url: string;
+    url: string;
+  };
+  type ReposGetProtectedBranchRestrictionsResponseAppsItem = {
+    created_at: string;
+    description: string;
+    events: Array<string>;
+    external_url: string;
+    html_url: string;
+    id: number;
+    name: string;
+    node_id: string;
+    owner: ReposGetProtectedBranchRestrictionsResponseAppsItemOwner;
+    permissions: ReposGetProtectedBranchRestrictionsResponseAppsItemPermissions;
+    slug: string;
+    updated_at: string;
+  };
+  type ReposGetProtectedBranchRestrictionsResponse = {
+    apps: Array<ReposGetProtectedBranchRestrictionsResponseAppsItem>;
+    apps_url: string;
+    teams: Array<ReposGetProtectedBranchRestrictionsResponseTeamsItem>;
+    teams_url: string;
+    url: string;
+    users: Array<ReposGetProtectedBranchRestrictionsResponseUsersItem>;
+    users_url: string;
+  };
+  type ReposGetProtectedBranchRequiredStatusChecksResponse = {
+    contexts: Array<string>;
+    contexts_url: string;
+    strict: boolean;
+    url: string;
+  };
+  type ReposGetProtectedBranchRequiredSignaturesResponse = {
+    enabled: boolean;
+    url: string;
+  };
+  type ReposGetProtectedBranchPullRequestReviewEnforcementResponseDismissalRestrictionsUsersItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposGetProtectedBranchPullRequestReviewEnforcementResponseDismissalRestrictionsTeamsItem = {
+    description: string;
+    html_url: string;
+    id: number;
+    members_url: string;
+    name: string;
+    node_id: string;
+    parent: null;
+    permission: string;
+    privacy: string;
+    repositories_url: string;
+    slug: string;
+    url: string;
+  };
+  type ReposGetProtectedBranchPullRequestReviewEnforcementResponseDismissalRestrictions = {
+    teams: Array<
+      ReposGetProtectedBranchPullRequestReviewEnforcementResponseDismissalRestrictionsTeamsItem
+    >;
+    teams_url: string;
+    url: string;
+    users: Array<
+      ReposGetProtectedBranchPullRequestReviewEnforcementResponseDismissalRestrictionsUsersItem
+    >;
+    users_url: string;
+  };
+  type ReposGetProtectedBranchPullRequestReviewEnforcementResponse = {
+    dismiss_stale_reviews: boolean;
+    dismissal_restrictions: ReposGetProtectedBranchPullRequestReviewEnforcementResponseDismissalRestrictions;
+    require_code_owner_reviews: boolean;
+    required_approving_review_count: number;
+    url: string;
+  };
+  type ReposGetProtectedBranchAdminEnforcementResponse = {
+    enabled: boolean;
+    url: string;
+  };
+  type ReposGetParticipationStatsResponse = {
+    all: Array<number>;
+    owner: Array<number>;
+  };
+  type ReposGetPagesBuildResponsePusher = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposGetPagesBuildResponseError = { message: null };
+  type ReposGetPagesBuildResponse = {
+    commit: string;
+    created_at: string;
+    duration: number;
+    error: ReposGetPagesBuildResponseError;
+    pusher: ReposGetPagesBuildResponsePusher;
+    status: string;
+    updated_at: string;
+    url: string;
+  };
+  type ReposGetPagesResponseSource = { branch: string; directory: string };
+  type ReposGetPagesResponse = {
+    cname: string;
+    custom_404: boolean;
+    html_url: string;
+    source: ReposGetPagesResponseSource;
+    status: string;
+    url: string;
+  };
+  type ReposGetLatestReleaseResponseAuthor = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposGetLatestReleaseResponseAssetsItemUploader = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposGetLatestReleaseResponseAssetsItem = {
+    browser_download_url: string;
+    content_type: string;
+    created_at: string;
+    download_count: number;
+    id: number;
+    label: string;
+    name: string;
+    node_id: string;
+    size: number;
+    state: string;
+    updated_at: string;
+    uploader: ReposGetLatestReleaseResponseAssetsItemUploader;
+    url: string;
+  };
+  type ReposGetLatestReleaseResponse = {
+    assets: Array<ReposGetLatestReleaseResponseAssetsItem>;
+    assets_url: string;
+    author: ReposGetLatestReleaseResponseAuthor;
+    body: string;
+    created_at: string;
+    draft: boolean;
+    html_url: string;
+    id: number;
+    name: string;
+    node_id: string;
+    prerelease: boolean;
+    published_at: string;
+    tag_name: string;
+    tarball_url: string;
+    target_commitish: string;
+    upload_url: string;
+    url: string;
+    zipball_url: string;
+  };
+  type ReposGetLatestPagesBuildResponsePusher = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposGetLatestPagesBuildResponseError = { message: null };
+  type ReposGetLatestPagesBuildResponse = {
+    commit: string;
+    created_at: string;
+    duration: number;
+    error: ReposGetLatestPagesBuildResponseError;
+    pusher: ReposGetLatestPagesBuildResponsePusher;
+    status: string;
+    updated_at: string;
+    url: string;
+  };
+  type ReposGetHookResponseLastResponse = {
+    code: null;
+    message: null;
+    status: string;
+  };
+  type ReposGetHookResponseConfig = {
+    content_type: string;
+    insecure_ssl: string;
+    url: string;
+  };
+  type ReposGetHookResponse = {
+    active: boolean;
+    config: ReposGetHookResponseConfig;
+    created_at: string;
+    events: Array<string>;
+    id: number;
+    last_response: ReposGetHookResponseLastResponse;
+    name: string;
+    ping_url: string;
+    test_url: string;
+    type: string;
+    updated_at: string;
+    url: string;
+  };
+  type ReposGetDownloadResponse = {
+    content_type: string;
+    description: string;
+    download_count: number;
+    html_url: string;
+    id: number;
+    name: string;
+    size: number;
+    url: string;
+  };
+  type ReposGetDeploymentStatusResponseCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposGetDeploymentStatusResponse = {
+    created_at: string;
+    creator: ReposGetDeploymentStatusResponseCreator;
+    deployment_url: string;
+    description: string;
+    environment: string;
+    environment_url: string;
+    id: number;
+    log_url: string;
+    node_id: string;
+    repository_url: string;
+    state: string;
+    target_url: string;
+    updated_at: string;
+    url: string;
+  };
+  type ReposGetDeploymentResponsePayload = { deploy: string };
+  type ReposGetDeploymentResponseCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposGetDeploymentResponse = {
+    created_at: string;
+    creator: ReposGetDeploymentResponseCreator;
+    description: string;
+    environment: string;
+    id: number;
+    node_id: string;
+    original_environment: string;
+    payload: ReposGetDeploymentResponsePayload;
+    production_environment: boolean;
+    ref: string;
+    repository_url: string;
+    sha: string;
+    statuses_url: string;
+    task: string;
+    transient_environment: boolean;
+    updated_at: string;
+    url: string;
+  };
+  type ReposGetDeployKeyResponse = {
+    created_at: string;
+    id: number;
+    key: string;
+    read_only: boolean;
+    title: string;
+    url: string;
+    verified: boolean;
+  };
+  type ReposGetContributorsStatsResponseItemWeeksItem = {
+    a: number;
+    c: number;
+    d: number;
+    w: string;
+  };
+  type ReposGetContributorsStatsResponseItemAuthor = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposGetContributorsStatsResponseItem = {
+    author: ReposGetContributorsStatsResponseItemAuthor;
+    total: number;
+    weeks: Array<ReposGetContributorsStatsResponseItemWeeksItem>;
+  };
+  type ReposGetContentsResponseItemLinks = {
+    git: string;
+    html: string;
+    self: string;
+  };
+  type ReposGetContentsResponseItem = {
+    _links: ReposGetContentsResponseItemLinks;
+    download_url: string | null;
+    git_url: string;
+    html_url: string;
+    name: string;
+    path: string;
+    sha: string;
+    size: number;
+    type: string;
+    url: string;
+  };
+  type ReposGetContentsResponseLinks = {
+    git: string;
+    html: string;
+    self: string;
+  };
+  type ReposGetContentsResponse =
+    | {
+        _links: ReposGetContentsResponseLinks;
+        content?: string;
+        download_url: string | null;
+        encoding?: string;
+        git_url: string;
+        html_url: string;
+        name: string;
+        path: string;
+        sha: string;
+        size: number;
+        type: string;
+        url: string;
+        target?: string;
+        submodule_git_url?: string;
+      }
+    | Array<ReposGetContentsResponseItem>;
+  type ReposGetCommitCommentResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposGetCommitCommentResponse = {
+    body: string;
+    commit_id: string;
+    created_at: string;
+    html_url: string;
+    id: number;
+    line: number;
+    node_id: string;
+    path: string;
+    position: number;
+    updated_at: string;
+    url: string;
+    user: ReposGetCommitCommentResponseUser;
+  };
+  type ReposGetCommitActivityStatsResponseItem = {
+    days: Array<number>;
+    total: number;
+    week: number;
+  };
+  type ReposGetCommitResponseStats = {
+    additions: number;
+    deletions: number;
+    total: number;
+  };
+  type ReposGetCommitResponseParentsItem = { sha: string; url: string };
+  type ReposGetCommitResponseFilesItem = {
+    additions: number;
+    blob_url: string;
+    changes: number;
+    deletions: number;
+    filename: string;
+    patch: string;
+    raw_url: string;
+    status: string;
+  };
+  type ReposGetCommitResponseCommitter = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposGetCommitResponseCommitVerification = {
+    payload: null;
+    reason: string;
+    signature: null;
+    verified: boolean;
+  };
+  type ReposGetCommitResponseCommitTree = { sha: string; url: string };
+  type ReposGetCommitResponseCommitCommitter = {
+    date: string;
+    email: string;
+    name: string;
+  };
+  type ReposGetCommitResponseCommitAuthor = {
+    date: string;
+    email: string;
+    name: string;
+  };
+  type ReposGetCommitResponseCommit = {
+    author: ReposGetCommitResponseCommitAuthor;
+    comment_count: number;
+    committer: ReposGetCommitResponseCommitCommitter;
+    message: string;
+    tree: ReposGetCommitResponseCommitTree;
+    url: string;
+    verification: ReposGetCommitResponseCommitVerification;
+  };
+  type ReposGetCommitResponseAuthor = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposGetCommitResponse = {
+    author: ReposGetCommitResponseAuthor;
+    comments_url: string;
+    commit: ReposGetCommitResponseCommit;
+    committer: ReposGetCommitResponseCommitter;
+    files: Array<ReposGetCommitResponseFilesItem>;
+    html_url: string;
+    node_id: string;
+    parents: Array<ReposGetCommitResponseParentsItem>;
+    sha: string;
+    stats: ReposGetCommitResponseStats;
+    url: string;
+  };
+  type ReposGetCombinedStatusForRefResponseStatusesItem = {
+    avatar_url: string;
+    context: string;
+    created_at: string;
+    description: string;
+    id: number;
+    node_id: string;
+    state: string;
+    target_url: string;
+    updated_at: string;
+    url: string;
+  };
+  type ReposGetCombinedStatusForRefResponseRepositoryOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposGetCombinedStatusForRefResponseRepository = {
+    archive_url: string;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    deployments_url: string;
+    description: string;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    html_url: string;
+    id: number;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    name: string;
+    node_id: string;
+    notifications_url: string;
+    owner: ReposGetCombinedStatusForRefResponseRepositoryOwner;
+    private: boolean;
+    pulls_url: string;
+    releases_url: string;
+    ssh_url: string;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_url: string;
+    subscription_url: string;
+    tags_url: string;
+    teams_url: string;
+    trees_url: string;
+    url: string;
+  };
+  type ReposGetCombinedStatusForRefResponse = {
+    commit_url: string;
+    repository: ReposGetCombinedStatusForRefResponseRepository;
+    sha: string;
+    state: string;
+    statuses: Array<ReposGetCombinedStatusForRefResponseStatusesItem>;
+    total_count: number;
+    url: string;
+  };
+  type ReposGetCollaboratorPermissionLevelResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposGetCollaboratorPermissionLevelResponse = {
+    permission: string;
+    user: ReposGetCollaboratorPermissionLevelResponseUser;
+  };
+  type ReposGetClonesResponseClonesItem = {
+    count: number;
+    timestamp: string;
+    uniques: number;
+  };
+  type ReposGetClonesResponse = {
+    clones: Array<ReposGetClonesResponseClonesItem>;
+    count: number;
+    uniques: number;
+  };
+  type ReposGetBranchProtectionResponseRestrictionsUsersItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposGetBranchProtectionResponseRestrictionsTeamsItem = {
+    description: string;
+    html_url: string;
+    id: number;
+    members_url: string;
+    name: string;
+    node_id: string;
+    parent: null;
+    permission: string;
+    privacy: string;
+    repositories_url: string;
+    slug: string;
+    url: string;
+  };
+  type ReposGetBranchProtectionResponseRestrictionsAppsItemPermissions = {
+    contents: string;
+    issues: string;
+    metadata: string;
+    single_file: string;
+  };
+  type ReposGetBranchProtectionResponseRestrictionsAppsItemOwner = {
+    avatar_url: string;
+    description: string;
+    events_url: string;
+    hooks_url: string;
+    id: number;
+    issues_url: string;
+    login: string;
+    members_url: string;
+    node_id: string;
+    public_members_url: string;
+    repos_url: string;
+    url: string;
+  };
+  type ReposGetBranchProtectionResponseRestrictionsAppsItem = {
+    created_at: string;
+    description: string;
+    events: Array<string>;
+    external_url: string;
+    html_url: string;
+    id: number;
+    name: string;
+    node_id: string;
+    owner: ReposGetBranchProtectionResponseRestrictionsAppsItemOwner;
+    permissions: ReposGetBranchProtectionResponseRestrictionsAppsItemPermissions;
+    slug: string;
+    updated_at: string;
+  };
+  type ReposGetBranchProtectionResponseRestrictions = {
+    apps: Array<ReposGetBranchProtectionResponseRestrictionsAppsItem>;
+    apps_url: string;
+    teams: Array<ReposGetBranchProtectionResponseRestrictionsTeamsItem>;
+    teams_url: string;
+    url: string;
+    users: Array<ReposGetBranchProtectionResponseRestrictionsUsersItem>;
+    users_url: string;
+  };
+  type ReposGetBranchProtectionResponseRequiredStatusChecks = {
+    contexts: Array<string>;
+    contexts_url: string;
+    strict: boolean;
+    url: string;
+  };
+  type ReposGetBranchProtectionResponseRequiredPullRequestReviewsDismissalRestrictionsUsersItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposGetBranchProtectionResponseRequiredPullRequestReviewsDismissalRestrictionsTeamsItem = {
+    description: string;
+    html_url: string;
+    id: number;
+    members_url: string;
+    name: string;
+    node_id: string;
+    parent: null;
+    permission: string;
+    privacy: string;
+    repositories_url: string;
+    slug: string;
+    url: string;
+  };
+  type ReposGetBranchProtectionResponseRequiredPullRequestReviewsDismissalRestrictions = {
+    teams: Array<
+      ReposGetBranchProtectionResponseRequiredPullRequestReviewsDismissalRestrictionsTeamsItem
+    >;
+    teams_url: string;
+    url: string;
+    users: Array<
+      ReposGetBranchProtectionResponseRequiredPullRequestReviewsDismissalRestrictionsUsersItem
+    >;
+    users_url: string;
+  };
+  type ReposGetBranchProtectionResponseRequiredPullRequestReviews = {
+    dismiss_stale_reviews: boolean;
+    dismissal_restrictions: ReposGetBranchProtectionResponseRequiredPullRequestReviewsDismissalRestrictions;
+    require_code_owner_reviews: boolean;
+    required_approving_review_count: number;
+    url: string;
+  };
+  type ReposGetBranchProtectionResponseEnforceAdmins = {
+    enabled: boolean;
+    url: string;
+  };
+  type ReposGetBranchProtectionResponse = {
+    enforce_admins: ReposGetBranchProtectionResponseEnforceAdmins;
+    required_pull_request_reviews: ReposGetBranchProtectionResponseRequiredPullRequestReviews;
+    required_status_checks: ReposGetBranchProtectionResponseRequiredStatusChecks;
+    restrictions: ReposGetBranchProtectionResponseRestrictions;
+    url: string;
+  };
+  type ReposGetBranchResponseProtectionRequiredStatusChecks = {
+    contexts: Array<string>;
+    enforcement_level: string;
+  };
+  type ReposGetBranchResponseProtection = {
+    enabled: boolean;
+    required_status_checks: ReposGetBranchResponseProtectionRequiredStatusChecks;
+  };
+  type ReposGetBranchResponseCommitParentsItem = { sha: string; url: string };
+  type ReposGetBranchResponseCommitCommitter = {
+    avatar_url: string;
+    gravatar_id: string;
+    id: number;
+    login: string;
+    url: string;
+  };
+  type ReposGetBranchResponseCommitCommitVerification = {
+    payload: null;
+    reason: string;
+    signature: null;
+    verified: boolean;
+  };
+  type ReposGetBranchResponseCommitCommitTree = { sha: string; url: string };
+  type ReposGetBranchResponseCommitCommitCommitter = {
+    date: string;
+    email: string;
+    name: string;
+  };
+  type ReposGetBranchResponseCommitCommitAuthor = {
+    date: string;
+    email: string;
+    name: string;
+  };
+  type ReposGetBranchResponseCommitCommit = {
+    author: ReposGetBranchResponseCommitCommitAuthor;
+    committer: ReposGetBranchResponseCommitCommitCommitter;
+    message: string;
+    tree: ReposGetBranchResponseCommitCommitTree;
+    url: string;
+    verification: ReposGetBranchResponseCommitCommitVerification;
+  };
+  type ReposGetBranchResponseCommitAuthor = {
+    avatar_url: string;
+    gravatar_id: string;
+    id: number;
+    login: string;
+    url: string;
+  };
+  type ReposGetBranchResponseCommit = {
+    author: ReposGetBranchResponseCommitAuthor;
+    commit: ReposGetBranchResponseCommitCommit;
+    committer: ReposGetBranchResponseCommitCommitter;
+    node_id: string;
+    parents: Array<ReposGetBranchResponseCommitParentsItem>;
+    sha: string;
+    url: string;
+  };
+  type ReposGetBranchResponseLinks = { html: string; self: string };
+  type ReposGetBranchResponse = {
+    _links: ReposGetBranchResponseLinks;
+    commit: ReposGetBranchResponseCommit;
+    name: string;
+    protected: boolean;
+    protection: ReposGetBranchResponseProtection;
+    protection_url: string;
+  };
+  type ReposGetAppsWithAccessToProtectedBranchResponseItemPermissions = {
+    contents: string;
+    issues: string;
+    metadata: string;
+    single_file: string;
+  };
+  type ReposGetAppsWithAccessToProtectedBranchResponseItemOwner = {
+    avatar_url: string;
+    description: string;
+    events_url: string;
+    hooks_url: string;
+    id: number;
+    issues_url: string;
+    login: string;
+    members_url: string;
+    node_id: string;
+    public_members_url: string;
+    repos_url: string;
+    url: string;
+  };
+  type ReposGetAppsWithAccessToProtectedBranchResponseItem = {
+    created_at: string;
+    description: string;
+    events: Array<string>;
+    external_url: string;
+    html_url: string;
+    id: number;
+    name: string;
+    node_id: string;
+    owner: ReposGetAppsWithAccessToProtectedBranchResponseItemOwner;
+    permissions: ReposGetAppsWithAccessToProtectedBranchResponseItemPermissions;
+    slug: string;
+    updated_at: string;
+  };
+  type ReposGetResponseSourcePermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type ReposGetResponseSourceOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposGetResponseSource = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: ReposGetResponseSourceOwner;
+    permissions: ReposGetResponseSourcePermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type ReposGetResponsePermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type ReposGetResponseParentPermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type ReposGetResponseParentOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposGetResponseParent = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: ReposGetResponseParentOwner;
+    permissions: ReposGetResponseParentPermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type ReposGetResponseOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposGetResponseOrganization = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposGetResponseLicense = {
+    key: string;
+    name: string;
+    node_id: string;
+    spdx_id: string;
+    url: string;
+  };
+  type ReposGetResponse = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    license: ReposGetResponseLicense;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    organization: ReposGetResponseOrganization;
+    owner: ReposGetResponseOwner;
+    parent: ReposGetResponseParent;
+    permissions: ReposGetResponsePermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    source: ReposGetResponseSource;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type ReposEnablePagesSiteResponseSource = {
+    branch: string;
+    directory: string;
+  };
+  type ReposEnablePagesSiteResponse = {
+    cname: string;
+    custom_404: boolean;
+    html_url: string;
+    source: ReposEnablePagesSiteResponseSource;
+    status: string;
+    url: string;
+  };
+  type ReposDeleteFileResponseCommitVerification = {
+    payload: null;
+    reason: string;
+    signature: null;
+    verified: boolean;
+  };
+  type ReposDeleteFileResponseCommitTree = { sha: string; url: string };
+  type ReposDeleteFileResponseCommitParentsItem = {
+    html_url: string;
+    sha: string;
+    url: string;
+  };
+  type ReposDeleteFileResponseCommitCommitter = {
+    date: string;
+    email: string;
+    name: string;
+  };
+  type ReposDeleteFileResponseCommitAuthor = {
+    date: string;
+    email: string;
+    name: string;
+  };
+  type ReposDeleteFileResponseCommit = {
+    author: ReposDeleteFileResponseCommitAuthor;
+    committer: ReposDeleteFileResponseCommitCommitter;
+    html_url: string;
+    message: string;
+    node_id: string;
+    parents: Array<ReposDeleteFileResponseCommitParentsItem>;
+    sha: string;
+    tree: ReposDeleteFileResponseCommitTree;
+    url: string;
+    verification: ReposDeleteFileResponseCommitVerification;
+  };
+  type ReposDeleteFileResponse = {
+    commit: ReposDeleteFileResponseCommit;
+    content: null;
+  };
+  type ReposDeleteResponse = { documentation_url: string; message: string };
+  type ReposCreateUsingTemplateResponseTemplateRepositoryPermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type ReposCreateUsingTemplateResponseTemplateRepositoryOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposCreateUsingTemplateResponseTemplateRepository = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: ReposCreateUsingTemplateResponseTemplateRepositoryOwner;
+    permissions: ReposCreateUsingTemplateResponseTemplateRepositoryPermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type ReposCreateUsingTemplateResponsePermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type ReposCreateUsingTemplateResponseOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposCreateUsingTemplateResponse = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: ReposCreateUsingTemplateResponseOwner;
+    permissions: ReposCreateUsingTemplateResponsePermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: ReposCreateUsingTemplateResponseTemplateRepository;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type ReposCreateStatusResponseCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposCreateStatusResponse = {
+    avatar_url: string;
+    context: string;
+    created_at: string;
+    creator: ReposCreateStatusResponseCreator;
+    description: string;
+    id: number;
+    node_id: string;
+    state: string;
+    target_url: string;
+    updated_at: string;
+    url: string;
+  };
+  type ReposCreateReleaseResponseAuthor = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposCreateReleaseResponse = {
+    assets: Array<any>;
+    assets_url: string;
+    author: ReposCreateReleaseResponseAuthor;
+    body: string;
+    created_at: string;
+    draft: boolean;
+    html_url: string;
+    id: number;
+    name: string;
+    node_id: string;
+    prerelease: boolean;
+    published_at: string;
+    tag_name: string;
+    tarball_url: string;
+    target_commitish: string;
+    upload_url: string;
+    url: string;
+    zipball_url: string;
+  };
+  type ReposCreateOrUpdateFileResponseContentLinks = {
+    git: string;
+    html: string;
+    self: string;
+  };
+  type ReposCreateOrUpdateFileResponseContent = {
+    _links: ReposCreateOrUpdateFileResponseContentLinks;
+    download_url: string;
+    git_url: string;
+    html_url: string;
+    name: string;
+    path: string;
+    sha: string;
+    size: number;
+    type: string;
+    url: string;
+  };
+  type ReposCreateOrUpdateFileResponseCommitVerification = {
+    payload: null;
+    reason: string;
+    signature: null;
+    verified: boolean;
+  };
+  type ReposCreateOrUpdateFileResponseCommitTree = { sha: string; url: string };
+  type ReposCreateOrUpdateFileResponseCommitParentsItem = {
+    html_url: string;
+    sha: string;
+    url: string;
+  };
+  type ReposCreateOrUpdateFileResponseCommitCommitter = {
+    date: string;
+    email: string;
+    name: string;
+  };
+  type ReposCreateOrUpdateFileResponseCommitAuthor = {
+    date: string;
+    email: string;
+    name: string;
+  };
+  type ReposCreateOrUpdateFileResponseCommit = {
+    author: ReposCreateOrUpdateFileResponseCommitAuthor;
+    committer: ReposCreateOrUpdateFileResponseCommitCommitter;
+    html_url: string;
+    message: string;
+    node_id: string;
+    parents: Array<ReposCreateOrUpdateFileResponseCommitParentsItem>;
+    sha: string;
+    tree: ReposCreateOrUpdateFileResponseCommitTree;
+    url: string;
+    verification: ReposCreateOrUpdateFileResponseCommitVerification;
+  };
+  type ReposCreateOrUpdateFileResponse = {
+    commit: ReposCreateOrUpdateFileResponseCommit;
+    content: ReposCreateOrUpdateFileResponseContent;
+  };
+  type ReposCreateInOrgResponsePermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type ReposCreateInOrgResponseOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposCreateInOrgResponse = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: ReposCreateInOrgResponseOwner;
+    permissions: ReposCreateInOrgResponsePermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type ReposCreateHookResponseLastResponse = {
+    code: null;
+    message: null;
+    status: string;
+  };
+  type ReposCreateHookResponseConfig = {
+    content_type: string;
+    insecure_ssl: string;
+    url: string;
+  };
+  type ReposCreateHookResponse = {
+    active: boolean;
+    config: ReposCreateHookResponseConfig;
+    created_at: string;
+    events: Array<string>;
+    id: number;
+    last_response: ReposCreateHookResponseLastResponse;
+    name: string;
+    ping_url: string;
+    test_url: string;
+    type: string;
+    updated_at: string;
+    url: string;
+  };
+  type ReposCreateForkResponsePermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type ReposCreateForkResponseOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposCreateForkResponse = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: ReposCreateForkResponseOwner;
+    permissions: ReposCreateForkResponsePermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type ReposCreateForAuthenticatedUserResponsePermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type ReposCreateForAuthenticatedUserResponseOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposCreateForAuthenticatedUserResponse = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: ReposCreateForAuthenticatedUserResponseOwner;
+    permissions: ReposCreateForAuthenticatedUserResponsePermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type ReposCreateFileResponseContentLinks = {
+    git: string;
+    html: string;
+    self: string;
+  };
+  type ReposCreateFileResponseContent = {
+    _links: ReposCreateFileResponseContentLinks;
+    download_url: string;
+    git_url: string;
+    html_url: string;
+    name: string;
+    path: string;
+    sha: string;
+    size: number;
+    type: string;
+    url: string;
+  };
+  type ReposCreateFileResponseCommitVerification = {
+    payload: null;
+    reason: string;
+    signature: null;
+    verified: boolean;
+  };
+  type ReposCreateFileResponseCommitTree = { sha: string; url: string };
+  type ReposCreateFileResponseCommitParentsItem = {
+    html_url: string;
+    sha: string;
+    url: string;
+  };
+  type ReposCreateFileResponseCommitCommitter = {
+    date: string;
+    email: string;
+    name: string;
+  };
+  type ReposCreateFileResponseCommitAuthor = {
+    date: string;
+    email: string;
+    name: string;
+  };
+  type ReposCreateFileResponseCommit = {
+    author: ReposCreateFileResponseCommitAuthor;
+    committer: ReposCreateFileResponseCommitCommitter;
+    html_url: string;
+    message: string;
+    node_id: string;
+    parents: Array<ReposCreateFileResponseCommitParentsItem>;
+    sha: string;
+    tree: ReposCreateFileResponseCommitTree;
+    url: string;
+    verification: ReposCreateFileResponseCommitVerification;
+  };
+  type ReposCreateFileResponse = {
+    commit: ReposCreateFileResponseCommit;
+    content: ReposCreateFileResponseContent;
+  };
+  type ReposCreateDeploymentStatusResponseCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposCreateDeploymentStatusResponse = {
+    created_at: string;
+    creator: ReposCreateDeploymentStatusResponseCreator;
+    deployment_url: string;
+    description: string;
+    environment: string;
+    environment_url: string;
+    id: number;
+    log_url: string;
+    node_id: string;
+    repository_url: string;
+    state: string;
+    target_url: string;
+    updated_at: string;
+    url: string;
+  };
+  type ReposCreateDeploymentResponsePayload = { deploy: string };
+  type ReposCreateDeploymentResponseCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposCreateDeploymentResponse = {
+    created_at: string;
+    creator: ReposCreateDeploymentResponseCreator;
+    description: string;
+    environment: string;
+    id: number;
+    node_id: string;
+    original_environment: string;
+    payload: ReposCreateDeploymentResponsePayload;
+    production_environment: boolean;
+    ref: string;
+    repository_url: string;
+    sha: string;
+    statuses_url: string;
+    task: string;
+    transient_environment: boolean;
+    updated_at: string;
+    url: string;
+  };
+  type ReposCreateCommitCommentResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposCreateCommitCommentResponse = {
+    body: string;
+    commit_id: string;
+    created_at: string;
+    html_url: string;
+    id: number;
+    line: number;
+    node_id: string;
+    path: string;
+    position: number;
+    updated_at: string;
+    url: string;
+    user: ReposCreateCommitCommentResponseUser;
+  };
+  type ReposCompareCommitsResponseMergeBaseCommitParentsItem = {
+    sha: string;
+    url: string;
+  };
+  type ReposCompareCommitsResponseMergeBaseCommitCommitter = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposCompareCommitsResponseMergeBaseCommitCommitVerification = {
+    payload: null;
+    reason: string;
+    signature: null;
+    verified: boolean;
+  };
+  type ReposCompareCommitsResponseMergeBaseCommitCommitTree = {
+    sha: string;
+    url: string;
+  };
+  type ReposCompareCommitsResponseMergeBaseCommitCommitCommitter = {
+    date: string;
+    email: string;
+    name: string;
+  };
+  type ReposCompareCommitsResponseMergeBaseCommitCommitAuthor = {
+    date: string;
+    email: string;
+    name: string;
+  };
+  type ReposCompareCommitsResponseMergeBaseCommitCommit = {
+    author: ReposCompareCommitsResponseMergeBaseCommitCommitAuthor;
+    comment_count: number;
+    committer: ReposCompareCommitsResponseMergeBaseCommitCommitCommitter;
+    message: string;
+    tree: ReposCompareCommitsResponseMergeBaseCommitCommitTree;
+    url: string;
+    verification: ReposCompareCommitsResponseMergeBaseCommitCommitVerification;
+  };
+  type ReposCompareCommitsResponseMergeBaseCommitAuthor = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposCompareCommitsResponseMergeBaseCommit = {
+    author: ReposCompareCommitsResponseMergeBaseCommitAuthor;
+    comments_url: string;
+    commit: ReposCompareCommitsResponseMergeBaseCommitCommit;
+    committer: ReposCompareCommitsResponseMergeBaseCommitCommitter;
+    html_url: string;
+    node_id: string;
+    parents: Array<ReposCompareCommitsResponseMergeBaseCommitParentsItem>;
+    sha: string;
+    url: string;
+  };
+  type ReposCompareCommitsResponseFilesItem = {
+    additions: number;
+    blob_url: string;
+    changes: number;
+    contents_url: string;
+    deletions: number;
+    filename: string;
+    patch: string;
+    raw_url: string;
+    sha: string;
+    status: string;
+  };
+  type ReposCompareCommitsResponseCommitsItemParentsItem = {
+    sha: string;
+    url: string;
+  };
+  type ReposCompareCommitsResponseCommitsItemCommitter = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposCompareCommitsResponseCommitsItemCommitVerification = {
+    payload: null;
+    reason: string;
+    signature: null;
+    verified: boolean;
+  };
+  type ReposCompareCommitsResponseCommitsItemCommitTree = {
+    sha: string;
+    url: string;
+  };
+  type ReposCompareCommitsResponseCommitsItemCommitCommitter = {
+    date: string;
+    email: string;
+    name: string;
+  };
+  type ReposCompareCommitsResponseCommitsItemCommitAuthor = {
+    date: string;
+    email: string;
+    name: string;
+  };
+  type ReposCompareCommitsResponseCommitsItemCommit = {
+    author: ReposCompareCommitsResponseCommitsItemCommitAuthor;
+    comment_count: number;
+    committer: ReposCompareCommitsResponseCommitsItemCommitCommitter;
+    message: string;
+    tree: ReposCompareCommitsResponseCommitsItemCommitTree;
+    url: string;
+    verification: ReposCompareCommitsResponseCommitsItemCommitVerification;
+  };
+  type ReposCompareCommitsResponseCommitsItemAuthor = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposCompareCommitsResponseCommitsItem = {
+    author: ReposCompareCommitsResponseCommitsItemAuthor;
+    comments_url: string;
+    commit: ReposCompareCommitsResponseCommitsItemCommit;
+    committer: ReposCompareCommitsResponseCommitsItemCommitter;
+    html_url: string;
+    node_id: string;
+    parents: Array<ReposCompareCommitsResponseCommitsItemParentsItem>;
+    sha: string;
+    url: string;
+  };
+  type ReposCompareCommitsResponseBaseCommitParentsItem = {
+    sha: string;
+    url: string;
+  };
+  type ReposCompareCommitsResponseBaseCommitCommitter = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposCompareCommitsResponseBaseCommitCommitVerification = {
+    payload: null;
+    reason: string;
+    signature: null;
+    verified: boolean;
+  };
+  type ReposCompareCommitsResponseBaseCommitCommitTree = {
+    sha: string;
+    url: string;
+  };
+  type ReposCompareCommitsResponseBaseCommitCommitCommitter = {
+    date: string;
+    email: string;
+    name: string;
+  };
+  type ReposCompareCommitsResponseBaseCommitCommitAuthor = {
+    date: string;
+    email: string;
+    name: string;
+  };
+  type ReposCompareCommitsResponseBaseCommitCommit = {
+    author: ReposCompareCommitsResponseBaseCommitCommitAuthor;
+    comment_count: number;
+    committer: ReposCompareCommitsResponseBaseCommitCommitCommitter;
+    message: string;
+    tree: ReposCompareCommitsResponseBaseCommitCommitTree;
+    url: string;
+    verification: ReposCompareCommitsResponseBaseCommitCommitVerification;
+  };
+  type ReposCompareCommitsResponseBaseCommitAuthor = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposCompareCommitsResponseBaseCommit = {
+    author: ReposCompareCommitsResponseBaseCommitAuthor;
+    comments_url: string;
+    commit: ReposCompareCommitsResponseBaseCommitCommit;
+    committer: ReposCompareCommitsResponseBaseCommitCommitter;
+    html_url: string;
+    node_id: string;
+    parents: Array<ReposCompareCommitsResponseBaseCommitParentsItem>;
+    sha: string;
+    url: string;
+  };
+  type ReposCompareCommitsResponse = {
+    ahead_by: number;
+    base_commit: ReposCompareCommitsResponseBaseCommit;
+    behind_by: number;
+    commits: Array<ReposCompareCommitsResponseCommitsItem>;
+    diff_url: string;
+    files: Array<ReposCompareCommitsResponseFilesItem>;
+    html_url: string;
+    merge_base_commit: ReposCompareCommitsResponseMergeBaseCommit;
+    patch_url: string;
+    permalink_url: string;
+    status: string;
+    total_commits: number;
+    url: string;
+  };
+  type ReposAddProtectedBranchUserRestrictionsResponseItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposAddProtectedBranchTeamRestrictionsResponseItem = {
+    description: string;
+    html_url: string;
+    id: number;
+    members_url: string;
+    name: string;
+    node_id: string;
+    parent: null;
+    permission: string;
+    privacy: string;
+    repositories_url: string;
+    slug: string;
+    url: string;
+  };
+  type ReposAddProtectedBranchRequiredSignaturesResponse = {
+    enabled: boolean;
+    url: string;
+  };
+  type ReposAddProtectedBranchAppRestrictionsResponseItemPermissions = {
+    contents: string;
+    issues: string;
+    metadata: string;
+    single_file: string;
+  };
+  type ReposAddProtectedBranchAppRestrictionsResponseItemOwner = {
+    avatar_url: string;
+    description: string;
+    events_url: string;
+    hooks_url: string;
+    id: number;
+    issues_url: string;
+    login: string;
+    members_url: string;
+    node_id: string;
+    public_members_url: string;
+    repos_url: string;
+    url: string;
+  };
+  type ReposAddProtectedBranchAppRestrictionsResponseItem = {
+    created_at: string;
+    description: string;
+    events: Array<string>;
+    external_url: string;
+    html_url: string;
+    id: number;
+    name: string;
+    node_id: string;
+    owner: ReposAddProtectedBranchAppRestrictionsResponseItemOwner;
+    permissions: ReposAddProtectedBranchAppRestrictionsResponseItemPermissions;
+    slug: string;
+    updated_at: string;
+  };
+  type ReposAddProtectedBranchAdminEnforcementResponse = {
+    enabled: boolean;
+    url: string;
+  };
+  type ReposAddDeployKeyResponse = {
+    created_at: string;
+    id: number;
+    key: string;
+    read_only: boolean;
+    title: string;
+    url: string;
+    verified: boolean;
+  };
+  type ReposAddCollaboratorResponseRepositoryOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposAddCollaboratorResponseRepository = {
+    archive_url: string;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    deployments_url: string;
+    description: string;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    html_url: string;
+    id: number;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    name: string;
+    node_id: string;
+    notifications_url: string;
+    owner: ReposAddCollaboratorResponseRepositoryOwner;
+    private: boolean;
+    pulls_url: string;
+    releases_url: string;
+    ssh_url: string;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_url: string;
+    subscription_url: string;
+    tags_url: string;
+    teams_url: string;
+    trees_url: string;
+    url: string;
+  };
+  type ReposAddCollaboratorResponseInviter = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposAddCollaboratorResponseInvitee = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReposAddCollaboratorResponse = {
+    created_at: string;
+    html_url: string;
+    id: number;
+    invitee: ReposAddCollaboratorResponseInvitee;
+    inviter: ReposAddCollaboratorResponseInviter;
+    permissions: string;
+    repository: ReposAddCollaboratorResponseRepository;
+    url: string;
+  };
+  type ReactionsListForTeamDiscussionCommentResponseItemUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReactionsListForTeamDiscussionCommentResponseItem = {
+    content: string;
+    created_at: string;
+    id: number;
+    node_id: string;
+    user: ReactionsListForTeamDiscussionCommentResponseItemUser;
+  };
+  type ReactionsListForTeamDiscussionResponseItemUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReactionsListForTeamDiscussionResponseItem = {
+    content: string;
+    created_at: string;
+    id: number;
+    node_id: string;
+    user: ReactionsListForTeamDiscussionResponseItemUser;
+  };
+  type ReactionsListForPullRequestReviewCommentResponseItemUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReactionsListForPullRequestReviewCommentResponseItem = {
+    content: string;
+    created_at: string;
+    id: number;
+    node_id: string;
+    user: ReactionsListForPullRequestReviewCommentResponseItemUser;
+  };
+  type ReactionsListForIssueCommentResponseItemUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReactionsListForIssueCommentResponseItem = {
+    content: string;
+    created_at: string;
+    id: number;
+    node_id: string;
+    user: ReactionsListForIssueCommentResponseItemUser;
+  };
+  type ReactionsListForIssueResponseItemUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReactionsListForIssueResponseItem = {
+    content: string;
+    created_at: string;
+    id: number;
+    node_id: string;
+    user: ReactionsListForIssueResponseItemUser;
+  };
+  type ReactionsListForCommitCommentResponseItemUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReactionsListForCommitCommentResponseItem = {
+    content: string;
+    created_at: string;
+    id: number;
+    node_id: string;
+    user: ReactionsListForCommitCommentResponseItemUser;
+  };
+  type ReactionsCreateForTeamDiscussionCommentResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReactionsCreateForTeamDiscussionCommentResponse = {
+    content: string;
+    created_at: string;
+    id: number;
+    node_id: string;
+    user: ReactionsCreateForTeamDiscussionCommentResponseUser;
+  };
+  type ReactionsCreateForTeamDiscussionResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReactionsCreateForTeamDiscussionResponse = {
+    content: string;
+    created_at: string;
+    id: number;
+    node_id: string;
+    user: ReactionsCreateForTeamDiscussionResponseUser;
+  };
+  type ReactionsCreateForPullRequestReviewCommentResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReactionsCreateForPullRequestReviewCommentResponse = {
+    content: string;
+    created_at: string;
+    id: number;
+    node_id: string;
+    user: ReactionsCreateForPullRequestReviewCommentResponseUser;
+  };
+  type ReactionsCreateForIssueCommentResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReactionsCreateForIssueCommentResponse = {
+    content: string;
+    created_at: string;
+    id: number;
+    node_id: string;
+    user: ReactionsCreateForIssueCommentResponseUser;
+  };
+  type ReactionsCreateForIssueResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReactionsCreateForIssueResponse = {
+    content: string;
+    created_at: string;
+    id: number;
+    node_id: string;
+    user: ReactionsCreateForIssueResponseUser;
+  };
+  type ReactionsCreateForCommitCommentResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ReactionsCreateForCommitCommentResponse = {
+    content: string;
+    created_at: string;
+    id: number;
+    node_id: string;
+    user: ReactionsCreateForCommitCommentResponseUser;
+  };
+  type RateLimitGetResponseResourcesSearch = {
+    limit: number;
+    remaining: number;
+    reset: number;
+  };
+  type RateLimitGetResponseResourcesIntegrationManifest = {
+    limit: number;
+    remaining: number;
+    reset: number;
+  };
+  type RateLimitGetResponseResourcesGraphql = {
+    limit: number;
+    remaining: number;
+    reset: number;
+  };
+  type RateLimitGetResponseResourcesCore = {
+    limit: number;
+    remaining: number;
+    reset: number;
+  };
+  type RateLimitGetResponseResources = {
+    core: RateLimitGetResponseResourcesCore;
+    graphql: RateLimitGetResponseResourcesGraphql;
+    integration_manifest: RateLimitGetResponseResourcesIntegrationManifest;
+    search: RateLimitGetResponseResourcesSearch;
+  };
+  type RateLimitGetResponseRate = {
+    limit: number;
+    remaining: number;
+    reset: number;
+  };
+  type RateLimitGetResponse = {
+    rate: RateLimitGetResponseRate;
+    resources: RateLimitGetResponseResources;
+  };
+  type PullsUpdateReviewResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsUpdateReviewResponseLinksPullRequest = { href: string };
+  type PullsUpdateReviewResponseLinksHtml = { href: string };
+  type PullsUpdateReviewResponseLinks = {
+    html: PullsUpdateReviewResponseLinksHtml;
+    pull_request: PullsUpdateReviewResponseLinksPullRequest;
+  };
+  type PullsUpdateReviewResponse = {
+    _links: PullsUpdateReviewResponseLinks;
+    body: string;
+    commit_id: string;
+    html_url: string;
+    id: number;
+    node_id: string;
+    pull_request_url: string;
+    state: string;
+    user: PullsUpdateReviewResponseUser;
+  };
+  type PullsUpdateCommentResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsUpdateCommentResponseLinksSelf = { href: string };
+  type PullsUpdateCommentResponseLinksPullRequest = { href: string };
+  type PullsUpdateCommentResponseLinksHtml = { href: string };
+  type PullsUpdateCommentResponseLinks = {
+    html: PullsUpdateCommentResponseLinksHtml;
+    pull_request: PullsUpdateCommentResponseLinksPullRequest;
+    self: PullsUpdateCommentResponseLinksSelf;
+  };
+  type PullsUpdateCommentResponse = {
+    _links: PullsUpdateCommentResponseLinks;
+    author_association: string;
+    body: string;
+    commit_id: string;
+    created_at: string;
+    diff_hunk: string;
+    html_url: string;
+    id: number;
+    in_reply_to_id: number;
+    line: number;
+    node_id: string;
+    original_commit_id: string;
+    original_line: number;
+    original_position: number;
+    original_start_line: number;
+    path: string;
+    position: number;
+    pull_request_review_id: number;
+    pull_request_url: string;
+    side: string;
+    start_line: number;
+    start_side: string;
+    updated_at: string;
+    url: string;
+    user: PullsUpdateCommentResponseUser;
+  };
+  type PullsUpdateBranchResponse = { message: string; url: string };
+  type PullsUpdateResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsUpdateResponseRequestedTeamsItem = {
+    description: string;
+    html_url: string;
+    id: number;
+    members_url: string;
+    name: string;
+    node_id: string;
+    parent: null;
+    permission: string;
+    privacy: string;
+    repositories_url: string;
+    slug: string;
+    url: string;
+  };
+  type PullsUpdateResponseRequestedReviewersItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsUpdateResponseMilestoneCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsUpdateResponseMilestone = {
+    closed_at: string;
+    closed_issues: number;
+    created_at: string;
+    creator: PullsUpdateResponseMilestoneCreator;
+    description: string;
+    due_on: string;
+    html_url: string;
+    id: number;
+    labels_url: string;
+    node_id: string;
+    number: number;
+    open_issues: number;
+    state: string;
+    title: string;
+    updated_at: string;
+    url: string;
+  };
+  type PullsUpdateResponseMergedBy = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsUpdateResponseLabelsItem = {
+    color: string;
+    default: boolean;
+    description: string;
+    id: number;
+    name: string;
+    node_id: string;
+    url: string;
+  };
+  type PullsUpdateResponseHeadUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsUpdateResponseHeadRepoPermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type PullsUpdateResponseHeadRepoOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsUpdateResponseHeadRepo = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: PullsUpdateResponseHeadRepoOwner;
+    permissions: PullsUpdateResponseHeadRepoPermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type PullsUpdateResponseHead = {
+    label: string;
+    ref: string;
+    repo: PullsUpdateResponseHeadRepo;
+    sha: string;
+    user: PullsUpdateResponseHeadUser;
+  };
+  type PullsUpdateResponseBaseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsUpdateResponseBaseRepoPermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type PullsUpdateResponseBaseRepoOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsUpdateResponseBaseRepo = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: PullsUpdateResponseBaseRepoOwner;
+    permissions: PullsUpdateResponseBaseRepoPermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type PullsUpdateResponseBase = {
+    label: string;
+    ref: string;
+    repo: PullsUpdateResponseBaseRepo;
+    sha: string;
+    user: PullsUpdateResponseBaseUser;
+  };
+  type PullsUpdateResponseAssigneesItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsUpdateResponseAssignee = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsUpdateResponseLinksStatuses = { href: string };
+  type PullsUpdateResponseLinksSelf = { href: string };
+  type PullsUpdateResponseLinksReviewComments = { href: string };
+  type PullsUpdateResponseLinksReviewComment = { href: string };
+  type PullsUpdateResponseLinksIssue = { href: string };
+  type PullsUpdateResponseLinksHtml = { href: string };
+  type PullsUpdateResponseLinksCommits = { href: string };
+  type PullsUpdateResponseLinksComments = { href: string };
+  type PullsUpdateResponseLinks = {
+    comments: PullsUpdateResponseLinksComments;
+    commits: PullsUpdateResponseLinksCommits;
+    html: PullsUpdateResponseLinksHtml;
+    issue: PullsUpdateResponseLinksIssue;
+    review_comment: PullsUpdateResponseLinksReviewComment;
+    review_comments: PullsUpdateResponseLinksReviewComments;
+    self: PullsUpdateResponseLinksSelf;
+    statuses: PullsUpdateResponseLinksStatuses;
+  };
+  type PullsUpdateResponse = {
+    _links: PullsUpdateResponseLinks;
+    active_lock_reason: string;
+    additions: number;
+    assignee: PullsUpdateResponseAssignee;
+    assignees: Array<PullsUpdateResponseAssigneesItem>;
+    author_association: string;
+    base: PullsUpdateResponseBase;
+    body: string;
+    changed_files: number;
+    closed_at: string;
+    comments: number;
+    comments_url: string;
+    commits: number;
+    commits_url: string;
+    created_at: string;
+    deletions: number;
+    diff_url: string;
+    draft: boolean;
+    head: PullsUpdateResponseHead;
+    html_url: string;
+    id: number;
+    issue_url: string;
+    labels: Array<PullsUpdateResponseLabelsItem>;
+    locked: boolean;
+    maintainer_can_modify: boolean;
+    merge_commit_sha: string;
+    mergeable: boolean;
+    mergeable_state: string;
+    merged: boolean;
+    merged_at: string;
+    merged_by: PullsUpdateResponseMergedBy;
+    milestone: PullsUpdateResponseMilestone;
+    node_id: string;
+    number: number;
+    patch_url: string;
+    rebaseable: boolean;
+    requested_reviewers: Array<PullsUpdateResponseRequestedReviewersItem>;
+    requested_teams: Array<PullsUpdateResponseRequestedTeamsItem>;
+    review_comment_url: string;
+    review_comments: number;
+    review_comments_url: string;
+    state: string;
+    statuses_url: string;
+    title: string;
+    updated_at: string;
+    url: string;
+    user: PullsUpdateResponseUser;
+  };
+  type PullsSubmitReviewResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsSubmitReviewResponseLinksPullRequest = { href: string };
+  type PullsSubmitReviewResponseLinksHtml = { href: string };
+  type PullsSubmitReviewResponseLinks = {
+    html: PullsSubmitReviewResponseLinksHtml;
+    pull_request: PullsSubmitReviewResponseLinksPullRequest;
+  };
+  type PullsSubmitReviewResponse = {
+    _links: PullsSubmitReviewResponseLinks;
+    body: string;
+    commit_id: string;
+    html_url: string;
+    id: number;
+    node_id: string;
+    pull_request_url: string;
+    state: string;
+    user: PullsSubmitReviewResponseUser;
+  };
+  type PullsMergeResponse = { merged: boolean; message: string; sha: string };
+  type PullsListReviewsResponseItemUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsListReviewsResponseItemLinksPullRequest = { href: string };
+  type PullsListReviewsResponseItemLinksHtml = { href: string };
+  type PullsListReviewsResponseItemLinks = {
+    html: PullsListReviewsResponseItemLinksHtml;
+    pull_request: PullsListReviewsResponseItemLinksPullRequest;
+  };
+  type PullsListReviewsResponseItem = {
+    _links: PullsListReviewsResponseItemLinks;
+    body: string;
+    commit_id: string;
+    html_url: string;
+    id: number;
+    node_id: string;
+    pull_request_url: string;
+    state: string;
+    user: PullsListReviewsResponseItemUser;
+  };
+  type PullsListReviewRequestsResponseUsersItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsListReviewRequestsResponseTeamsItem = {
+    description: string;
+    html_url: string;
+    id: number;
+    members_url: string;
+    name: string;
+    node_id: string;
+    parent: null;
+    permission: string;
+    privacy: string;
+    repositories_url: string;
+    slug: string;
+    url: string;
+  };
+  type PullsListReviewRequestsResponse = {
+    teams: Array<PullsListReviewRequestsResponseTeamsItem>;
+    users: Array<PullsListReviewRequestsResponseUsersItem>;
+  };
+  type PullsListFilesResponseItem = {
+    additions: number;
+    blob_url: string;
+    changes: number;
+    contents_url: string;
+    deletions: number;
+    filename: string;
+    patch: string;
+    raw_url: string;
+    sha: string;
+    status: string;
+  };
+  type PullsListCommitsResponseItemParentsItem = { sha: string; url: string };
+  type PullsListCommitsResponseItemCommitter = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsListCommitsResponseItemCommitVerification = {
+    payload: null;
+    reason: string;
+    signature: null;
+    verified: boolean;
+  };
+  type PullsListCommitsResponseItemCommitTree = { sha: string; url: string };
+  type PullsListCommitsResponseItemCommitCommitter = {
+    date: string;
+    email: string;
+    name: string;
+  };
+  type PullsListCommitsResponseItemCommitAuthor = {
+    date: string;
+    email: string;
+    name: string;
+  };
+  type PullsListCommitsResponseItemCommit = {
+    author: PullsListCommitsResponseItemCommitAuthor;
+    comment_count: number;
+    committer: PullsListCommitsResponseItemCommitCommitter;
+    message: string;
+    tree: PullsListCommitsResponseItemCommitTree;
+    url: string;
+    verification: PullsListCommitsResponseItemCommitVerification;
+  };
+  type PullsListCommitsResponseItemAuthor = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsListCommitsResponseItem = {
+    author: PullsListCommitsResponseItemAuthor;
+    comments_url: string;
+    commit: PullsListCommitsResponseItemCommit;
+    committer: PullsListCommitsResponseItemCommitter;
+    html_url: string;
+    node_id: string;
+    parents: Array<PullsListCommitsResponseItemParentsItem>;
+    sha: string;
+    url: string;
+  };
+  type PullsListCommentsForRepoResponseItemUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsListCommentsForRepoResponseItemLinksSelf = { href: string };
+  type PullsListCommentsForRepoResponseItemLinksPullRequest = { href: string };
+  type PullsListCommentsForRepoResponseItemLinksHtml = { href: string };
+  type PullsListCommentsForRepoResponseItemLinks = {
+    html: PullsListCommentsForRepoResponseItemLinksHtml;
+    pull_request: PullsListCommentsForRepoResponseItemLinksPullRequest;
+    self: PullsListCommentsForRepoResponseItemLinksSelf;
+  };
+  type PullsListCommentsForRepoResponseItem = {
+    _links: PullsListCommentsForRepoResponseItemLinks;
+    author_association: string;
+    body: string;
+    commit_id: string;
+    created_at: string;
+    diff_hunk: string;
+    html_url: string;
+    id: number;
+    in_reply_to_id: number;
+    line: number;
+    node_id: string;
+    original_commit_id: string;
+    original_line: number;
+    original_position: number;
+    original_start_line: number;
+    path: string;
+    position: number;
+    pull_request_review_id: number;
+    pull_request_url: string;
+    side: string;
+    start_line: number;
+    start_side: string;
+    updated_at: string;
+    url: string;
+    user: PullsListCommentsForRepoResponseItemUser;
+  };
+  type PullsListCommentsResponseItemUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsListCommentsResponseItemLinksSelf = { href: string };
+  type PullsListCommentsResponseItemLinksPullRequest = { href: string };
+  type PullsListCommentsResponseItemLinksHtml = { href: string };
+  type PullsListCommentsResponseItemLinks = {
+    html: PullsListCommentsResponseItemLinksHtml;
+    pull_request: PullsListCommentsResponseItemLinksPullRequest;
+    self: PullsListCommentsResponseItemLinksSelf;
+  };
+  type PullsListCommentsResponseItem = {
+    _links: PullsListCommentsResponseItemLinks;
+    author_association: string;
+    body: string;
+    commit_id: string;
+    created_at: string;
+    diff_hunk: string;
+    html_url: string;
+    id: number;
+    in_reply_to_id: number;
+    line: number;
+    node_id: string;
+    original_commit_id: string;
+    original_line: number;
+    original_position: number;
+    original_start_line: number;
+    path: string;
+    position: number;
+    pull_request_review_id: number;
+    pull_request_url: string;
+    side: string;
+    start_line: number;
+    start_side: string;
+    updated_at: string;
+    url: string;
+    user: PullsListCommentsResponseItemUser;
+  };
+  type PullsListResponseItemUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsListResponseItemRequestedTeamsItem = {
+    description: string;
+    html_url: string;
+    id: number;
+    members_url: string;
+    name: string;
+    node_id: string;
+    parent: null;
+    permission: string;
+    privacy: string;
+    repositories_url: string;
+    slug: string;
+    url: string;
+  };
+  type PullsListResponseItemRequestedReviewersItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsListResponseItemMilestoneCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsListResponseItemMilestone = {
+    closed_at: string;
+    closed_issues: number;
+    created_at: string;
+    creator: PullsListResponseItemMilestoneCreator;
+    description: string;
+    due_on: string;
+    html_url: string;
+    id: number;
+    labels_url: string;
+    node_id: string;
+    number: number;
+    open_issues: number;
+    state: string;
+    title: string;
+    updated_at: string;
+    url: string;
+  };
+  type PullsListResponseItemLabelsItem = {
+    color: string;
+    default: boolean;
+    description: string;
+    id: number;
+    name: string;
+    node_id: string;
+    url: string;
+  };
+  type PullsListResponseItemHeadUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsListResponseItemHeadRepoPermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type PullsListResponseItemHeadRepoOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsListResponseItemHeadRepo = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: PullsListResponseItemHeadRepoOwner;
+    permissions: PullsListResponseItemHeadRepoPermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type PullsListResponseItemHead = {
+    label: string;
+    ref: string;
+    repo: PullsListResponseItemHeadRepo;
+    sha: string;
+    user: PullsListResponseItemHeadUser;
+  };
+  type PullsListResponseItemBaseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsListResponseItemBaseRepoPermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type PullsListResponseItemBaseRepoOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsListResponseItemBaseRepo = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: PullsListResponseItemBaseRepoOwner;
+    permissions: PullsListResponseItemBaseRepoPermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type PullsListResponseItemBase = {
+    label: string;
+    ref: string;
+    repo: PullsListResponseItemBaseRepo;
+    sha: string;
+    user: PullsListResponseItemBaseUser;
+  };
+  type PullsListResponseItemAssigneesItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsListResponseItemAssignee = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsListResponseItemLinksStatuses = { href: string };
+  type PullsListResponseItemLinksSelf = { href: string };
+  type PullsListResponseItemLinksReviewComments = { href: string };
+  type PullsListResponseItemLinksReviewComment = { href: string };
+  type PullsListResponseItemLinksIssue = { href: string };
+  type PullsListResponseItemLinksHtml = { href: string };
+  type PullsListResponseItemLinksCommits = { href: string };
+  type PullsListResponseItemLinksComments = { href: string };
+  type PullsListResponseItemLinks = {
+    comments: PullsListResponseItemLinksComments;
+    commits: PullsListResponseItemLinksCommits;
+    html: PullsListResponseItemLinksHtml;
+    issue: PullsListResponseItemLinksIssue;
+    review_comment: PullsListResponseItemLinksReviewComment;
+    review_comments: PullsListResponseItemLinksReviewComments;
+    self: PullsListResponseItemLinksSelf;
+    statuses: PullsListResponseItemLinksStatuses;
+  };
+  type PullsListResponseItem = {
+    _links: PullsListResponseItemLinks;
+    active_lock_reason: string;
+    assignee: PullsListResponseItemAssignee;
+    assignees: Array<PullsListResponseItemAssigneesItem>;
+    author_association: string;
+    base: PullsListResponseItemBase;
+    body: string;
+    closed_at: string;
+    comments_url: string;
+    commits_url: string;
+    created_at: string;
+    diff_url: string;
+    draft: boolean;
+    head: PullsListResponseItemHead;
+    html_url: string;
+    id: number;
+    issue_url: string;
+    labels: Array<PullsListResponseItemLabelsItem>;
+    locked: boolean;
+    merge_commit_sha: string;
+    merged_at: string;
+    milestone: PullsListResponseItemMilestone;
+    node_id: string;
+    number: number;
+    patch_url: string;
+    requested_reviewers: Array<PullsListResponseItemRequestedReviewersItem>;
+    requested_teams: Array<PullsListResponseItemRequestedTeamsItem>;
+    review_comment_url: string;
+    review_comments_url: string;
+    state: string;
+    statuses_url: string;
+    title: string;
+    updated_at: string;
+    url: string;
+    user: PullsListResponseItemUser;
+  };
+  type PullsGetReviewResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsGetReviewResponseLinksPullRequest = { href: string };
+  type PullsGetReviewResponseLinksHtml = { href: string };
+  type PullsGetReviewResponseLinks = {
+    html: PullsGetReviewResponseLinksHtml;
+    pull_request: PullsGetReviewResponseLinksPullRequest;
+  };
+  type PullsGetReviewResponse = {
+    _links: PullsGetReviewResponseLinks;
+    body: string;
+    commit_id: string;
+    html_url: string;
+    id: number;
+    node_id: string;
+    pull_request_url: string;
+    state: string;
+    user: PullsGetReviewResponseUser;
+  };
+  type PullsGetCommentsForReviewResponseItemUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsGetCommentsForReviewResponseItemLinksSelf = { href: string };
+  type PullsGetCommentsForReviewResponseItemLinksPullRequest = { href: string };
+  type PullsGetCommentsForReviewResponseItemLinksHtml = { href: string };
+  type PullsGetCommentsForReviewResponseItemLinks = {
+    html: PullsGetCommentsForReviewResponseItemLinksHtml;
+    pull_request: PullsGetCommentsForReviewResponseItemLinksPullRequest;
+    self: PullsGetCommentsForReviewResponseItemLinksSelf;
+  };
+  type PullsGetCommentsForReviewResponseItem = {
+    _links: PullsGetCommentsForReviewResponseItemLinks;
+    author_association: string;
+    body: string;
+    commit_id: string;
+    created_at: string;
+    diff_hunk: string;
+    html_url: string;
+    id: number;
+    in_reply_to_id: number;
+    node_id: string;
+    original_commit_id: string;
+    original_position: number;
+    path: string;
+    position: number;
+    pull_request_review_id: number;
+    pull_request_url: string;
+    updated_at: string;
+    url: string;
+    user: PullsGetCommentsForReviewResponseItemUser;
+  };
+  type PullsGetCommentResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsGetCommentResponseLinksSelf = { href: string };
+  type PullsGetCommentResponseLinksPullRequest = { href: string };
+  type PullsGetCommentResponseLinksHtml = { href: string };
+  type PullsGetCommentResponseLinks = {
+    html: PullsGetCommentResponseLinksHtml;
+    pull_request: PullsGetCommentResponseLinksPullRequest;
+    self: PullsGetCommentResponseLinksSelf;
+  };
+  type PullsGetCommentResponse = {
+    _links: PullsGetCommentResponseLinks;
+    author_association: string;
+    body: string;
+    commit_id: string;
+    created_at: string;
+    diff_hunk: string;
+    html_url: string;
+    id: number;
+    in_reply_to_id: number;
+    line: number;
+    node_id: string;
+    original_commit_id: string;
+    original_line: number;
+    original_position: number;
+    original_start_line: number;
+    path: string;
+    position: number;
+    pull_request_review_id: number;
+    pull_request_url: string;
+    side: string;
+    start_line: number;
+    start_side: string;
+    updated_at: string;
+    url: string;
+    user: PullsGetCommentResponseUser;
+  };
+  type PullsGetResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsGetResponseRequestedTeamsItem = {
+    description: string;
+    html_url: string;
+    id: number;
+    members_url: string;
+    name: string;
+    node_id: string;
+    parent: null;
+    permission: string;
+    privacy: string;
+    repositories_url: string;
+    slug: string;
+    url: string;
+  };
+  type PullsGetResponseRequestedReviewersItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsGetResponseMilestoneCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsGetResponseMilestone = {
+    closed_at: string;
+    closed_issues: number;
+    created_at: string;
+    creator: PullsGetResponseMilestoneCreator;
+    description: string;
+    due_on: string;
+    html_url: string;
+    id: number;
+    labels_url: string;
+    node_id: string;
+    number: number;
+    open_issues: number;
+    state: string;
+    title: string;
+    updated_at: string;
+    url: string;
+  };
+  type PullsGetResponseMergedBy = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsGetResponseLabelsItem = {
+    color: string;
+    default: boolean;
+    description: string;
+    id: number;
+    name: string;
+    node_id: string;
+    url: string;
+  };
+  type PullsGetResponseHeadUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsGetResponseHeadRepoPermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type PullsGetResponseHeadRepoOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsGetResponseHeadRepo = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: PullsGetResponseHeadRepoOwner;
+    permissions: PullsGetResponseHeadRepoPermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type PullsGetResponseHead = {
+    label: string;
+    ref: string;
+    repo: PullsGetResponseHeadRepo;
+    sha: string;
+    user: PullsGetResponseHeadUser;
+  };
+  type PullsGetResponseBaseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsGetResponseBaseRepoPermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type PullsGetResponseBaseRepoOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsGetResponseBaseRepo = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: PullsGetResponseBaseRepoOwner;
+    permissions: PullsGetResponseBaseRepoPermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type PullsGetResponseBase = {
+    label: string;
+    ref: string;
+    repo: PullsGetResponseBaseRepo;
+    sha: string;
+    user: PullsGetResponseBaseUser;
+  };
+  type PullsGetResponseAssigneesItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsGetResponseAssignee = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsGetResponseLinksStatuses = { href: string };
+  type PullsGetResponseLinksSelf = { href: string };
+  type PullsGetResponseLinksReviewComments = { href: string };
+  type PullsGetResponseLinksReviewComment = { href: string };
+  type PullsGetResponseLinksIssue = { href: string };
+  type PullsGetResponseLinksHtml = { href: string };
+  type PullsGetResponseLinksCommits = { href: string };
+  type PullsGetResponseLinksComments = { href: string };
+  type PullsGetResponseLinks = {
+    comments: PullsGetResponseLinksComments;
+    commits: PullsGetResponseLinksCommits;
+    html: PullsGetResponseLinksHtml;
+    issue: PullsGetResponseLinksIssue;
+    review_comment: PullsGetResponseLinksReviewComment;
+    review_comments: PullsGetResponseLinksReviewComments;
+    self: PullsGetResponseLinksSelf;
+    statuses: PullsGetResponseLinksStatuses;
+  };
+  type PullsGetResponse = {
+    _links: PullsGetResponseLinks;
+    active_lock_reason: string;
+    additions: number;
+    assignee: PullsGetResponseAssignee;
+    assignees: Array<PullsGetResponseAssigneesItem>;
+    author_association: string;
+    base: PullsGetResponseBase;
+    body: string;
+    changed_files: number;
+    closed_at: string;
+    comments: number;
+    comments_url: string;
+    commits: number;
+    commits_url: string;
+    created_at: string;
+    deletions: number;
+    diff_url: string;
+    draft: boolean;
+    head: PullsGetResponseHead;
+    html_url: string;
+    id: number;
+    issue_url: string;
+    labels: Array<PullsGetResponseLabelsItem>;
+    locked: boolean;
+    maintainer_can_modify: boolean;
+    merge_commit_sha: string;
+    mergeable: boolean;
+    mergeable_state: string;
+    merged: boolean;
+    merged_at: string;
+    merged_by: PullsGetResponseMergedBy;
+    milestone: PullsGetResponseMilestone;
+    node_id: string;
+    number: number;
+    patch_url: string;
+    rebaseable: boolean;
+    requested_reviewers: Array<PullsGetResponseRequestedReviewersItem>;
+    requested_teams: Array<PullsGetResponseRequestedTeamsItem>;
+    review_comment_url: string;
+    review_comments: number;
+    review_comments_url: string;
+    state: string;
+    statuses_url: string;
+    title: string;
+    updated_at: string;
+    url: string;
+    user: PullsGetResponseUser;
+  };
+  type PullsDismissReviewResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsDismissReviewResponseLinksPullRequest = { href: string };
+  type PullsDismissReviewResponseLinksHtml = { href: string };
+  type PullsDismissReviewResponseLinks = {
+    html: PullsDismissReviewResponseLinksHtml;
+    pull_request: PullsDismissReviewResponseLinksPullRequest;
+  };
+  type PullsDismissReviewResponse = {
+    _links: PullsDismissReviewResponseLinks;
+    body: string;
+    commit_id: string;
+    html_url: string;
+    id: number;
+    node_id: string;
+    pull_request_url: string;
+    state: string;
+    user: PullsDismissReviewResponseUser;
+  };
+  type PullsDeletePendingReviewResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsDeletePendingReviewResponseLinksPullRequest = { href: string };
+  type PullsDeletePendingReviewResponseLinksHtml = { href: string };
+  type PullsDeletePendingReviewResponseLinks = {
+    html: PullsDeletePendingReviewResponseLinksHtml;
+    pull_request: PullsDeletePendingReviewResponseLinksPullRequest;
+  };
+  type PullsDeletePendingReviewResponse = {
+    _links: PullsDeletePendingReviewResponseLinks;
+    body: string;
+    commit_id: string;
+    html_url: string;
+    id: number;
+    node_id: string;
+    pull_request_url: string;
+    state: string;
+    user: PullsDeletePendingReviewResponseUser;
+  };
+  type PullsCreateReviewRequestResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsCreateReviewRequestResponseRequestedTeamsItem = {
+    description: string;
+    html_url: string;
+    id: number;
+    members_url: string;
+    name: string;
+    node_id: string;
+    parent: null;
+    permission: string;
+    privacy: string;
+    repositories_url: string;
+    slug: string;
+    url: string;
+  };
+  type PullsCreateReviewRequestResponseRequestedReviewersItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsCreateReviewRequestResponseMilestoneCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsCreateReviewRequestResponseMilestone = {
+    closed_at: string;
+    closed_issues: number;
+    created_at: string;
+    creator: PullsCreateReviewRequestResponseMilestoneCreator;
+    description: string;
+    due_on: string;
+    html_url: string;
+    id: number;
+    labels_url: string;
+    node_id: string;
+    number: number;
+    open_issues: number;
+    state: string;
+    title: string;
+    updated_at: string;
+    url: string;
+  };
+  type PullsCreateReviewRequestResponseLabelsItem = {
+    color: string;
+    default: boolean;
+    description: string;
+    id: number;
+    name: string;
+    node_id: string;
+    url: string;
+  };
+  type PullsCreateReviewRequestResponseHeadUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsCreateReviewRequestResponseHeadRepoPermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type PullsCreateReviewRequestResponseHeadRepoOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsCreateReviewRequestResponseHeadRepo = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: PullsCreateReviewRequestResponseHeadRepoOwner;
+    permissions: PullsCreateReviewRequestResponseHeadRepoPermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type PullsCreateReviewRequestResponseHead = {
+    label: string;
+    ref: string;
+    repo: PullsCreateReviewRequestResponseHeadRepo;
+    sha: string;
+    user: PullsCreateReviewRequestResponseHeadUser;
+  };
+  type PullsCreateReviewRequestResponseBaseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsCreateReviewRequestResponseBaseRepoPermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type PullsCreateReviewRequestResponseBaseRepoOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsCreateReviewRequestResponseBaseRepo = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: PullsCreateReviewRequestResponseBaseRepoOwner;
+    permissions: PullsCreateReviewRequestResponseBaseRepoPermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type PullsCreateReviewRequestResponseBase = {
+    label: string;
+    ref: string;
+    repo: PullsCreateReviewRequestResponseBaseRepo;
+    sha: string;
+    user: PullsCreateReviewRequestResponseBaseUser;
+  };
+  type PullsCreateReviewRequestResponseAssigneesItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsCreateReviewRequestResponseAssignee = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsCreateReviewRequestResponseLinksStatuses = { href: string };
+  type PullsCreateReviewRequestResponseLinksSelf = { href: string };
+  type PullsCreateReviewRequestResponseLinksReviewComments = { href: string };
+  type PullsCreateReviewRequestResponseLinksReviewComment = { href: string };
+  type PullsCreateReviewRequestResponseLinksIssue = { href: string };
+  type PullsCreateReviewRequestResponseLinksHtml = { href: string };
+  type PullsCreateReviewRequestResponseLinksCommits = { href: string };
+  type PullsCreateReviewRequestResponseLinksComments = { href: string };
+  type PullsCreateReviewRequestResponseLinks = {
+    comments: PullsCreateReviewRequestResponseLinksComments;
+    commits: PullsCreateReviewRequestResponseLinksCommits;
+    html: PullsCreateReviewRequestResponseLinksHtml;
+    issue: PullsCreateReviewRequestResponseLinksIssue;
+    review_comment: PullsCreateReviewRequestResponseLinksReviewComment;
+    review_comments: PullsCreateReviewRequestResponseLinksReviewComments;
+    self: PullsCreateReviewRequestResponseLinksSelf;
+    statuses: PullsCreateReviewRequestResponseLinksStatuses;
+  };
+  type PullsCreateReviewRequestResponse = {
+    _links: PullsCreateReviewRequestResponseLinks;
+    active_lock_reason: string;
+    assignee: PullsCreateReviewRequestResponseAssignee;
+    assignees: Array<PullsCreateReviewRequestResponseAssigneesItem>;
+    author_association: string;
+    base: PullsCreateReviewRequestResponseBase;
+    body: string;
+    closed_at: string;
+    comments_url: string;
+    commits_url: string;
+    created_at: string;
+    diff_url: string;
+    draft: boolean;
+    head: PullsCreateReviewRequestResponseHead;
+    html_url: string;
+    id: number;
+    issue_url: string;
+    labels: Array<PullsCreateReviewRequestResponseLabelsItem>;
+    locked: boolean;
+    merge_commit_sha: string;
+    merged_at: string;
+    milestone: PullsCreateReviewRequestResponseMilestone;
+    node_id: string;
+    number: number;
+    patch_url: string;
+    requested_reviewers: Array<
+      PullsCreateReviewRequestResponseRequestedReviewersItem
+    >;
+    requested_teams: Array<PullsCreateReviewRequestResponseRequestedTeamsItem>;
+    review_comment_url: string;
+    review_comments_url: string;
+    state: string;
+    statuses_url: string;
+    title: string;
+    updated_at: string;
+    url: string;
+    user: PullsCreateReviewRequestResponseUser;
+  };
+  type PullsCreateReviewCommentReplyResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsCreateReviewCommentReplyResponseLinksSelf = { href: string };
+  type PullsCreateReviewCommentReplyResponseLinksPullRequest = { href: string };
+  type PullsCreateReviewCommentReplyResponseLinksHtml = { href: string };
+  type PullsCreateReviewCommentReplyResponseLinks = {
+    html: PullsCreateReviewCommentReplyResponseLinksHtml;
+    pull_request: PullsCreateReviewCommentReplyResponseLinksPullRequest;
+    self: PullsCreateReviewCommentReplyResponseLinksSelf;
+  };
+  type PullsCreateReviewCommentReplyResponse = {
+    _links: PullsCreateReviewCommentReplyResponseLinks;
+    author_association: string;
+    body: string;
+    commit_id: string;
+    created_at: string;
+    diff_hunk: string;
+    html_url: string;
+    id: number;
+    node_id: string;
+    original_commit_id: string;
+    original_position: number;
+    path: string;
+    position: number;
+    pull_request_review_id: number;
+    pull_request_url: string;
+    updated_at: string;
+    url: string;
+    user: PullsCreateReviewCommentReplyResponseUser;
+  };
+  type PullsCreateReviewResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsCreateReviewResponseLinksPullRequest = { href: string };
+  type PullsCreateReviewResponseLinksHtml = { href: string };
+  type PullsCreateReviewResponseLinks = {
+    html: PullsCreateReviewResponseLinksHtml;
+    pull_request: PullsCreateReviewResponseLinksPullRequest;
+  };
+  type PullsCreateReviewResponse = {
+    _links: PullsCreateReviewResponseLinks;
+    body: string;
+    commit_id: string;
+    html_url: string;
+    id: number;
+    node_id: string;
+    pull_request_url: string;
+    state: string;
+    user: PullsCreateReviewResponseUser;
+  };
+  type PullsCreateFromIssueResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsCreateFromIssueResponseRequestedTeamsItem = {
+    description: string;
+    html_url: string;
+    id: number;
+    members_url: string;
+    name: string;
+    node_id: string;
+    parent: null;
+    permission: string;
+    privacy: string;
+    repositories_url: string;
+    slug: string;
+    url: string;
+  };
+  type PullsCreateFromIssueResponseRequestedReviewersItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsCreateFromIssueResponseMilestoneCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsCreateFromIssueResponseMilestone = {
+    closed_at: string;
+    closed_issues: number;
+    created_at: string;
+    creator: PullsCreateFromIssueResponseMilestoneCreator;
+    description: string;
+    due_on: string;
+    html_url: string;
+    id: number;
+    labels_url: string;
+    node_id: string;
+    number: number;
+    open_issues: number;
+    state: string;
+    title: string;
+    updated_at: string;
+    url: string;
+  };
+  type PullsCreateFromIssueResponseMergedBy = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsCreateFromIssueResponseLabelsItem = {
+    color: string;
+    default: boolean;
+    description: string;
+    id: number;
+    name: string;
+    node_id: string;
+    url: string;
+  };
+  type PullsCreateFromIssueResponseHeadUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsCreateFromIssueResponseHeadRepoPermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type PullsCreateFromIssueResponseHeadRepoOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsCreateFromIssueResponseHeadRepo = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: PullsCreateFromIssueResponseHeadRepoOwner;
+    permissions: PullsCreateFromIssueResponseHeadRepoPermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type PullsCreateFromIssueResponseHead = {
+    label: string;
+    ref: string;
+    repo: PullsCreateFromIssueResponseHeadRepo;
+    sha: string;
+    user: PullsCreateFromIssueResponseHeadUser;
+  };
+  type PullsCreateFromIssueResponseBaseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsCreateFromIssueResponseBaseRepoPermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type PullsCreateFromIssueResponseBaseRepoOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsCreateFromIssueResponseBaseRepo = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: PullsCreateFromIssueResponseBaseRepoOwner;
+    permissions: PullsCreateFromIssueResponseBaseRepoPermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type PullsCreateFromIssueResponseBase = {
+    label: string;
+    ref: string;
+    repo: PullsCreateFromIssueResponseBaseRepo;
+    sha: string;
+    user: PullsCreateFromIssueResponseBaseUser;
+  };
+  type PullsCreateFromIssueResponseAssigneesItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsCreateFromIssueResponseAssignee = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsCreateFromIssueResponseLinksStatuses = { href: string };
+  type PullsCreateFromIssueResponseLinksSelf = { href: string };
+  type PullsCreateFromIssueResponseLinksReviewComments = { href: string };
+  type PullsCreateFromIssueResponseLinksReviewComment = { href: string };
+  type PullsCreateFromIssueResponseLinksIssue = { href: string };
+  type PullsCreateFromIssueResponseLinksHtml = { href: string };
+  type PullsCreateFromIssueResponseLinksCommits = { href: string };
+  type PullsCreateFromIssueResponseLinksComments = { href: string };
+  type PullsCreateFromIssueResponseLinks = {
+    comments: PullsCreateFromIssueResponseLinksComments;
+    commits: PullsCreateFromIssueResponseLinksCommits;
+    html: PullsCreateFromIssueResponseLinksHtml;
+    issue: PullsCreateFromIssueResponseLinksIssue;
+    review_comment: PullsCreateFromIssueResponseLinksReviewComment;
+    review_comments: PullsCreateFromIssueResponseLinksReviewComments;
+    self: PullsCreateFromIssueResponseLinksSelf;
+    statuses: PullsCreateFromIssueResponseLinksStatuses;
+  };
+  type PullsCreateFromIssueResponse = {
+    _links: PullsCreateFromIssueResponseLinks;
+    active_lock_reason: string;
+    additions: number;
+    assignee: PullsCreateFromIssueResponseAssignee;
+    assignees: Array<PullsCreateFromIssueResponseAssigneesItem>;
+    author_association: string;
+    base: PullsCreateFromIssueResponseBase;
+    body: string;
+    changed_files: number;
+    closed_at: string;
+    comments: number;
+    comments_url: string;
+    commits: number;
+    commits_url: string;
+    created_at: string;
+    deletions: number;
+    diff_url: string;
+    draft: boolean;
+    head: PullsCreateFromIssueResponseHead;
+    html_url: string;
+    id: number;
+    issue_url: string;
+    labels: Array<PullsCreateFromIssueResponseLabelsItem>;
+    locked: boolean;
+    maintainer_can_modify: boolean;
+    merge_commit_sha: string;
+    mergeable: boolean;
+    mergeable_state: string;
+    merged: boolean;
+    merged_at: string;
+    merged_by: PullsCreateFromIssueResponseMergedBy;
+    milestone: PullsCreateFromIssueResponseMilestone;
+    node_id: string;
+    number: number;
+    patch_url: string;
+    rebaseable: boolean;
+    requested_reviewers: Array<
+      PullsCreateFromIssueResponseRequestedReviewersItem
+    >;
+    requested_teams: Array<PullsCreateFromIssueResponseRequestedTeamsItem>;
+    review_comment_url: string;
+    review_comments: number;
+    review_comments_url: string;
+    state: string;
+    statuses_url: string;
+    title: string;
+    updated_at: string;
+    url: string;
+    user: PullsCreateFromIssueResponseUser;
+  };
+  type PullsCreateCommentReplyResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsCreateCommentReplyResponseLinksSelf = { href: string };
+  type PullsCreateCommentReplyResponseLinksPullRequest = { href: string };
+  type PullsCreateCommentReplyResponseLinksHtml = { href: string };
+  type PullsCreateCommentReplyResponseLinks = {
+    html: PullsCreateCommentReplyResponseLinksHtml;
+    pull_request: PullsCreateCommentReplyResponseLinksPullRequest;
+    self: PullsCreateCommentReplyResponseLinksSelf;
+  };
+  type PullsCreateCommentReplyResponse = {
+    _links: PullsCreateCommentReplyResponseLinks;
+    author_association: string;
+    body: string;
+    commit_id: string;
+    created_at: string;
+    diff_hunk: string;
+    html_url: string;
+    id: number;
+    in_reply_to_id: number;
+    line: number;
+    node_id: string;
+    original_commit_id: string;
+    original_line: number;
+    original_position: number;
+    original_start_line: number;
+    path: string;
+    position: number;
+    pull_request_review_id: number;
+    pull_request_url: string;
+    side: string;
+    start_line: number;
+    start_side: string;
+    updated_at: string;
+    url: string;
+    user: PullsCreateCommentReplyResponseUser;
+  };
+  type PullsCreateCommentResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsCreateCommentResponseLinksSelf = { href: string };
+  type PullsCreateCommentResponseLinksPullRequest = { href: string };
+  type PullsCreateCommentResponseLinksHtml = { href: string };
+  type PullsCreateCommentResponseLinks = {
+    html: PullsCreateCommentResponseLinksHtml;
+    pull_request: PullsCreateCommentResponseLinksPullRequest;
+    self: PullsCreateCommentResponseLinksSelf;
+  };
+  type PullsCreateCommentResponse = {
+    _links: PullsCreateCommentResponseLinks;
+    author_association: string;
+    body: string;
+    commit_id: string;
+    created_at: string;
+    diff_hunk: string;
+    html_url: string;
+    id: number;
+    in_reply_to_id: number;
+    line: number;
+    node_id: string;
+    original_commit_id: string;
+    original_line: number;
+    original_position: number;
+    original_start_line: number;
+    path: string;
+    position: number;
+    pull_request_review_id: number;
+    pull_request_url: string;
+    side: string;
+    start_line: number;
+    start_side: string;
+    updated_at: string;
+    url: string;
+    user: PullsCreateCommentResponseUser;
+  };
+  type PullsCreateResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsCreateResponseRequestedTeamsItem = {
+    description: string;
+    html_url: string;
+    id: number;
+    members_url: string;
+    name: string;
+    node_id: string;
+    parent: null;
+    permission: string;
+    privacy: string;
+    repositories_url: string;
+    slug: string;
+    url: string;
+  };
+  type PullsCreateResponseRequestedReviewersItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsCreateResponseMilestoneCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsCreateResponseMilestone = {
+    closed_at: string;
+    closed_issues: number;
+    created_at: string;
+    creator: PullsCreateResponseMilestoneCreator;
+    description: string;
+    due_on: string;
+    html_url: string;
+    id: number;
+    labels_url: string;
+    node_id: string;
+    number: number;
+    open_issues: number;
+    state: string;
+    title: string;
+    updated_at: string;
+    url: string;
+  };
+  type PullsCreateResponseMergedBy = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsCreateResponseLabelsItem = {
+    color: string;
+    default: boolean;
+    description: string;
+    id: number;
+    name: string;
+    node_id: string;
+    url: string;
+  };
+  type PullsCreateResponseHeadUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsCreateResponseHeadRepoPermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type PullsCreateResponseHeadRepoOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsCreateResponseHeadRepo = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: PullsCreateResponseHeadRepoOwner;
+    permissions: PullsCreateResponseHeadRepoPermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type PullsCreateResponseHead = {
+    label: string;
+    ref: string;
+    repo: PullsCreateResponseHeadRepo;
+    sha: string;
+    user: PullsCreateResponseHeadUser;
+  };
+  type PullsCreateResponseBaseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsCreateResponseBaseRepoPermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type PullsCreateResponseBaseRepoOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsCreateResponseBaseRepo = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: PullsCreateResponseBaseRepoOwner;
+    permissions: PullsCreateResponseBaseRepoPermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type PullsCreateResponseBase = {
+    label: string;
+    ref: string;
+    repo: PullsCreateResponseBaseRepo;
+    sha: string;
+    user: PullsCreateResponseBaseUser;
+  };
+  type PullsCreateResponseAssigneesItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsCreateResponseAssignee = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type PullsCreateResponseLinksStatuses = { href: string };
+  type PullsCreateResponseLinksSelf = { href: string };
+  type PullsCreateResponseLinksReviewComments = { href: string };
+  type PullsCreateResponseLinksReviewComment = { href: string };
+  type PullsCreateResponseLinksIssue = { href: string };
+  type PullsCreateResponseLinksHtml = { href: string };
+  type PullsCreateResponseLinksCommits = { href: string };
+  type PullsCreateResponseLinksComments = { href: string };
+  type PullsCreateResponseLinks = {
+    comments: PullsCreateResponseLinksComments;
+    commits: PullsCreateResponseLinksCommits;
+    html: PullsCreateResponseLinksHtml;
+    issue: PullsCreateResponseLinksIssue;
+    review_comment: PullsCreateResponseLinksReviewComment;
+    review_comments: PullsCreateResponseLinksReviewComments;
+    self: PullsCreateResponseLinksSelf;
+    statuses: PullsCreateResponseLinksStatuses;
+  };
+  type PullsCreateResponse = {
+    _links: PullsCreateResponseLinks;
+    active_lock_reason: string;
+    additions: number;
+    assignee: PullsCreateResponseAssignee;
+    assignees: Array<PullsCreateResponseAssigneesItem>;
+    author_association: string;
+    base: PullsCreateResponseBase;
+    body: string;
+    changed_files: number;
+    closed_at: string;
+    comments: number;
+    comments_url: string;
+    commits: number;
+    commits_url: string;
+    created_at: string;
+    deletions: number;
+    diff_url: string;
+    draft: boolean;
+    head: PullsCreateResponseHead;
+    html_url: string;
+    id: number;
+    issue_url: string;
+    labels: Array<PullsCreateResponseLabelsItem>;
+    locked: boolean;
+    maintainer_can_modify: boolean;
+    merge_commit_sha: string;
+    mergeable: boolean;
+    mergeable_state: string;
+    merged: boolean;
+    merged_at: string;
+    merged_by: PullsCreateResponseMergedBy;
+    milestone: PullsCreateResponseMilestone;
+    node_id: string;
+    number: number;
+    patch_url: string;
+    rebaseable: boolean;
+    requested_reviewers: Array<PullsCreateResponseRequestedReviewersItem>;
+    requested_teams: Array<PullsCreateResponseRequestedTeamsItem>;
+    review_comment_url: string;
+    review_comments: number;
+    review_comments_url: string;
+    state: string;
+    statuses_url: string;
+    title: string;
+    updated_at: string;
+    url: string;
+    user: PullsCreateResponseUser;
+  };
+  type ProjectsUpdateColumnResponse = {
+    cards_url: string;
+    created_at: string;
+    id: number;
+    name: string;
+    node_id: string;
+    project_url: string;
+    updated_at: string;
+    url: string;
+  };
+  type ProjectsUpdateCardResponseCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ProjectsUpdateCardResponse = {
+    archived: boolean;
+    column_url: string;
+    content_url: string;
+    created_at: string;
+    creator: ProjectsUpdateCardResponseCreator;
+    id: number;
+    node_id: string;
+    note: string;
+    project_url: string;
+    updated_at: string;
+    url: string;
+  };
+  type ProjectsUpdateResponseCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ProjectsUpdateResponse = {
+    body: string;
+    columns_url: string;
+    created_at: string;
+    creator: ProjectsUpdateResponseCreator;
+    html_url: string;
+    id: number;
+    name: string;
+    node_id: string;
+    number: number;
+    owner_url: string;
+    state: string;
+    updated_at: string;
+    url: string;
+  };
+  type ProjectsReviewUserPermissionLevelResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ProjectsReviewUserPermissionLevelResponse = {
+    permission: string;
+    user: ProjectsReviewUserPermissionLevelResponseUser;
+  };
+  type ProjectsListForUserResponseItemCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ProjectsListForUserResponseItem = {
+    body: string;
+    columns_url: string;
+    created_at: string;
+    creator: ProjectsListForUserResponseItemCreator;
+    html_url: string;
+    id: number;
+    name: string;
+    node_id: string;
+    number: number;
+    owner_url: string;
+    state: string;
+    updated_at: string;
+    url: string;
+  };
+  type ProjectsListForRepoResponseItemCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ProjectsListForRepoResponseItem = {
+    body: string;
+    columns_url: string;
+    created_at: string;
+    creator: ProjectsListForRepoResponseItemCreator;
+    html_url: string;
+    id: number;
+    name: string;
+    node_id: string;
+    number: number;
+    owner_url: string;
+    state: string;
+    updated_at: string;
+    url: string;
+  };
+  type ProjectsListForOrgResponseItemCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ProjectsListForOrgResponseItem = {
+    body: string;
+    columns_url: string;
+    created_at: string;
+    creator: ProjectsListForOrgResponseItemCreator;
+    html_url: string;
+    id: number;
+    name: string;
+    node_id: string;
+    number: number;
+    owner_url: string;
+    state: string;
+    updated_at: string;
+    url: string;
+  };
+  type ProjectsListColumnsResponseItem = {
+    cards_url: string;
+    created_at: string;
+    id: number;
+    name: string;
+    node_id: string;
+    project_url: string;
+    updated_at: string;
+    url: string;
+  };
+  type ProjectsListCollaboratorsResponseItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ProjectsListCardsResponseItemCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ProjectsListCardsResponseItem = {
+    archived: boolean;
+    column_url: string;
+    content_url: string;
+    created_at: string;
+    creator: ProjectsListCardsResponseItemCreator;
+    id: number;
+    node_id: string;
+    note: string;
+    project_url: string;
+    updated_at: string;
+    url: string;
+  };
+  type ProjectsGetColumnResponse = {
+    cards_url: string;
+    created_at: string;
+    id: number;
+    name: string;
+    node_id: string;
+    project_url: string;
+    updated_at: string;
+    url: string;
+  };
+  type ProjectsGetCardResponseCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ProjectsGetCardResponse = {
+    archived: boolean;
+    column_url: string;
+    content_url: string;
+    created_at: string;
+    creator: ProjectsGetCardResponseCreator;
+    id: number;
+    node_id: string;
+    note: string;
+    project_url: string;
+    updated_at: string;
+    url: string;
+  };
+  type ProjectsGetResponseCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ProjectsGetResponse = {
+    body: string;
+    columns_url: string;
+    created_at: string;
+    creator: ProjectsGetResponseCreator;
+    html_url: string;
+    id: number;
+    name: string;
+    node_id: string;
+    number: number;
+    owner_url: string;
+    state: string;
+    updated_at: string;
+    url: string;
+  };
+  type ProjectsCreateForRepoResponseCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ProjectsCreateForRepoResponse = {
+    body: string;
+    columns_url: string;
+    created_at: string;
+    creator: ProjectsCreateForRepoResponseCreator;
+    html_url: string;
+    id: number;
+    name: string;
+    node_id: string;
+    number: number;
+    owner_url: string;
+    state: string;
+    updated_at: string;
+    url: string;
+  };
+  type ProjectsCreateForOrgResponseCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ProjectsCreateForOrgResponse = {
+    body: string;
+    columns_url: string;
+    created_at: string;
+    creator: ProjectsCreateForOrgResponseCreator;
+    html_url: string;
+    id: number;
+    name: string;
+    node_id: string;
+    number: number;
+    owner_url: string;
+    state: string;
+    updated_at: string;
+    url: string;
+  };
+  type ProjectsCreateForAuthenticatedUserResponseCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ProjectsCreateForAuthenticatedUserResponse = {
+    body: string;
+    columns_url: string;
+    created_at: string;
+    creator: ProjectsCreateForAuthenticatedUserResponseCreator;
+    html_url: string;
+    id: number;
+    name: string;
+    node_id: string;
+    number: number;
+    owner_url: string;
+    state: string;
+    updated_at: string;
+    url: string;
+  };
+  type ProjectsCreateColumnResponse = {
+    cards_url: string;
+    created_at: string;
+    id: number;
+    name: string;
+    node_id: string;
+    project_url: string;
+    updated_at: string;
+    url: string;
+  };
+  type ProjectsCreateCardResponseCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ProjectsCreateCardResponse = {
+    archived: boolean;
+    column_url: string;
+    content_url: string;
+    created_at: string;
+    creator: ProjectsCreateCardResponseCreator;
+    id: number;
+    node_id: string;
+    note: string;
+    project_url: string;
+    updated_at: string;
+    url: string;
+  };
+  type OrgsUpdateMembershipResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type OrgsUpdateMembershipResponseOrganization = {
+    avatar_url: string;
+    description: string;
+    events_url: string;
+    hooks_url: string;
+    id: number;
+    issues_url: string;
+    login: string;
+    members_url: string;
+    node_id: string;
+    public_members_url: string;
+    repos_url: string;
+    url: string;
+  };
+  type OrgsUpdateMembershipResponse = {
+    organization: OrgsUpdateMembershipResponseOrganization;
+    organization_url: string;
+    role: string;
+    state: string;
+    url: string;
+    user: OrgsUpdateMembershipResponseUser;
+  };
+  type OrgsUpdateHookResponseConfig = { content_type: string; url: string };
+  type OrgsUpdateHookResponse = {
+    active: boolean;
+    config: OrgsUpdateHookResponseConfig;
+    created_at: string;
+    events: Array<string>;
+    id: number;
+    name: string;
+    ping_url: string;
+    updated_at: string;
+    url: string;
+  };
+  type OrgsUpdateResponsePlan = {
+    name: string;
+    private_repos: number;
+    space: number;
+  };
+  type OrgsUpdateResponse = {
+    avatar_url: string;
+    billing_email: string;
+    blog: string;
+    collaborators: number;
+    company: string;
+    created_at: string;
+    default_repository_settings: string;
+    description: string;
+    disk_usage: number;
+    email: string;
+    events_url: string;
+    followers: number;
+    following: number;
+    has_organization_projects: boolean;
+    has_repository_projects: boolean;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_verified: boolean;
+    issues_url: string;
+    location: string;
+    login: string;
+    members_allowed_repository_creation_type: string;
+    members_can_create_repositories: boolean;
+    members_url: string;
+    name: string;
+    node_id: string;
+    owned_private_repos: number;
+    plan: OrgsUpdateResponsePlan;
+    private_gists: number;
+    public_gists: number;
+    public_members_url: string;
+    public_repos: number;
+    repos_url: string;
+    total_private_repos: number;
+    two_factor_requirement_enabled: boolean;
+    type: string;
+    url: string;
+  };
+  type OrgsRemoveOutsideCollaboratorResponse = {
+    documentation_url: string;
+    message: string;
+  };
+  type OrgsListPublicMembersResponseItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type OrgsListPendingInvitationsResponseItemInviter = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type OrgsListPendingInvitationsResponseItem = {
+    created_at: string;
+    email: string;
+    id: number;
+    invitation_team_url: string;
+    inviter: OrgsListPendingInvitationsResponseItemInviter;
+    login: string;
+    role: string;
+    team_count: number;
+  };
+  type OrgsListOutsideCollaboratorsResponseItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type OrgsListMembershipsResponseItemUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type OrgsListMembershipsResponseItemOrganization = {
+    avatar_url: string;
+    description: string;
+    events_url: string;
+    hooks_url: string;
+    id: number;
+    issues_url: string;
+    login: string;
+    members_url: string;
+    node_id: string;
+    public_members_url: string;
+    repos_url: string;
+    url: string;
+  };
+  type OrgsListMembershipsResponseItem = {
+    organization: OrgsListMembershipsResponseItemOrganization;
+    organization_url: string;
+    role: string;
+    state: string;
+    url: string;
+    user: OrgsListMembershipsResponseItemUser;
+  };
+  type OrgsListMembersResponseItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type OrgsListInvitationTeamsResponseItem = {
+    description: string;
+    html_url: string;
+    id: number;
+    members_url: string;
+    name: string;
+    node_id: string;
+    parent: null;
+    permission: string;
+    privacy: string;
+    repositories_url: string;
+    slug: string;
+    url: string;
+  };
+  type OrgsListInstallationsResponseInstallationsItemPermissions = {
+    deployments: string;
+    metadata: string;
+    pull_requests: string;
+    statuses: string;
+  };
+  type OrgsListInstallationsResponseInstallationsItemAccount = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type OrgsListInstallationsResponseInstallationsItem = {
+    access_tokens_url: string;
+    account: OrgsListInstallationsResponseInstallationsItemAccount;
+    app_id: number;
+    created_at: string;
+    events: Array<string>;
+    html_url: string;
+    id: number;
+    permissions: OrgsListInstallationsResponseInstallationsItemPermissions;
+    repositories_url: string;
+    repository_selection: string;
+    single_file_name: null;
+    target_id: number;
+    target_type: string;
+    updated_at: string;
+  };
+  type OrgsListInstallationsResponse = {
+    installations: Array<OrgsListInstallationsResponseInstallationsItem>;
+    total_count: number;
+  };
+  type OrgsListHooksResponseItemConfig = { content_type: string; url: string };
+  type OrgsListHooksResponseItem = {
+    active: boolean;
+    config: OrgsListHooksResponseItemConfig;
+    created_at: string;
+    events: Array<string>;
+    id: number;
+    name: string;
+    ping_url: string;
+    updated_at: string;
+    url: string;
+  };
+  type OrgsListForUserResponseItem = {
+    avatar_url: string;
+    description: string;
+    events_url: string;
+    hooks_url: string;
+    id: number;
+    issues_url: string;
+    login: string;
+    members_url: string;
+    node_id: string;
+    public_members_url: string;
+    repos_url: string;
+    url: string;
+  };
+  type OrgsListForAuthenticatedUserResponseItem = {
+    avatar_url: string;
+    description: string;
+    events_url: string;
+    hooks_url: string;
+    id: number;
+    issues_url: string;
+    login: string;
+    members_url: string;
+    node_id: string;
+    public_members_url: string;
+    repos_url: string;
+    url: string;
+  };
+  type OrgsListBlockedUsersResponseItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type OrgsListResponseItem = {
+    avatar_url: string;
+    description: string;
+    events_url: string;
+    hooks_url: string;
+    id: number;
+    issues_url: string;
+    login: string;
+    members_url: string;
+    node_id: string;
+    public_members_url: string;
+    repos_url: string;
+    url: string;
+  };
+  type OrgsGetMembershipForAuthenticatedUserResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type OrgsGetMembershipForAuthenticatedUserResponseOrganization = {
+    avatar_url: string;
+    description: string;
+    events_url: string;
+    hooks_url: string;
+    id: number;
+    issues_url: string;
+    login: string;
+    members_url: string;
+    node_id: string;
+    public_members_url: string;
+    repos_url: string;
+    url: string;
+  };
+  type OrgsGetMembershipForAuthenticatedUserResponse = {
+    organization: OrgsGetMembershipForAuthenticatedUserResponseOrganization;
+    organization_url: string;
+    role: string;
+    state: string;
+    url: string;
+    user: OrgsGetMembershipForAuthenticatedUserResponseUser;
+  };
+  type OrgsGetMembershipResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type OrgsGetMembershipResponseOrganization = {
+    avatar_url: string;
+    description: string;
+    events_url: string;
+    hooks_url: string;
+    id: number;
+    issues_url: string;
+    login: string;
+    members_url: string;
+    node_id: string;
+    public_members_url: string;
+    repos_url: string;
+    url: string;
+  };
+  type OrgsGetMembershipResponse = {
+    organization: OrgsGetMembershipResponseOrganization;
+    organization_url: string;
+    role: string;
+    state: string;
+    url: string;
+    user: OrgsGetMembershipResponseUser;
+  };
+  type OrgsGetHookResponseConfig = { content_type: string; url: string };
+  type OrgsGetHookResponse = {
+    active: boolean;
+    config: OrgsGetHookResponseConfig;
+    created_at: string;
+    events: Array<string>;
+    id: number;
+    name: string;
+    ping_url: string;
+    updated_at: string;
+    url: string;
+  };
+  type OrgsGetResponsePlan = {
+    name: string;
+    private_repos: number;
+    space: number;
+    filled_seats?: number;
+    seats?: number;
+  };
+  type OrgsGetResponse = {
+    avatar_url: string;
+    billing_email?: string;
+    blog: string;
+    collaborators?: number;
+    company: string;
+    created_at: string;
+    default_repository_settings?: string;
+    description: string;
+    disk_usage?: number;
+    email: string;
+    events_url: string;
+    followers: number;
+    following: number;
+    has_organization_projects: boolean;
+    has_repository_projects: boolean;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_verified: boolean;
+    issues_url: string;
+    location: string;
+    login: string;
+    members_allowed_repository_creation_type?: string;
+    members_can_create_repositories?: boolean;
+    members_url: string;
+    name: string;
+    node_id: string;
+    owned_private_repos?: number;
+    plan: OrgsGetResponsePlan;
+    private_gists?: number;
+    public_gists: number;
+    public_members_url: string;
+    public_repos: number;
+    repos_url: string;
+    total_private_repos?: number;
+    two_factor_requirement_enabled?: boolean;
+    type: string;
+    url: string;
+  };
+  type OrgsCreateInvitationResponseInviter = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type OrgsCreateInvitationResponse = {
+    created_at: string;
+    email: string;
+    id: number;
+    invitation_team_url: string;
+    inviter: OrgsCreateInvitationResponseInviter;
+    login: string;
+    role: string;
+    team_count: number;
+  };
+  type OrgsCreateHookResponseConfig = { content_type: string; url: string };
+  type OrgsCreateHookResponse = {
+    active: boolean;
+    config: OrgsCreateHookResponseConfig;
+    created_at: string;
+    events: Array<string>;
+    id: number;
+    name: string;
+    ping_url: string;
+    updated_at: string;
+    url: string;
+  };
+  type OrgsConvertMemberToOutsideCollaboratorResponse = {
+    documentation_url: string;
+    message: string;
+  };
+  type OrgsAddOrUpdateMembershipResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type OrgsAddOrUpdateMembershipResponseOrganization = {
+    avatar_url: string;
+    description: string;
+    events_url: string;
+    hooks_url: string;
+    id: number;
+    issues_url: string;
+    login: string;
+    members_url: string;
+    node_id: string;
+    public_members_url: string;
+    repos_url: string;
+    url: string;
+  };
+  type OrgsAddOrUpdateMembershipResponse = {
+    organization: OrgsAddOrUpdateMembershipResponseOrganization;
+    organization_url: string;
+    role: string;
+    state: string;
+    url: string;
+    user: OrgsAddOrUpdateMembershipResponseUser;
+  };
+  type OauthAuthorizationsUpdateAuthorizationResponseApp = {
+    client_id: string;
+    name: string;
+    url: string;
+  };
+  type OauthAuthorizationsUpdateAuthorizationResponse = {
+    app: OauthAuthorizationsUpdateAuthorizationResponseApp;
+    created_at: string;
+    fingerprint: string;
+    hashed_token: string;
+    id: number;
+    note: string;
+    note_url: string;
+    scopes: Array<string>;
+    token: string;
+    token_last_eight: string;
+    updated_at: string;
+    url: string;
+  };
+  type OauthAuthorizationsResetAuthorizationResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type OauthAuthorizationsResetAuthorizationResponseApp = {
+    client_id: string;
+    name: string;
+    url: string;
+  };
+  type OauthAuthorizationsResetAuthorizationResponse = {
+    app: OauthAuthorizationsResetAuthorizationResponseApp;
+    created_at: string;
+    fingerprint: string;
+    hashed_token: string;
+    id: number;
+    note: string;
+    note_url: string;
+    scopes: Array<string>;
+    token: string;
+    token_last_eight: string;
+    updated_at: string;
+    url: string;
+    user: OauthAuthorizationsResetAuthorizationResponseUser;
+  };
+  type OauthAuthorizationsListGrantsResponseItemApp = {
+    client_id: string;
+    name: string;
+    url: string;
+  };
+  type OauthAuthorizationsListGrantsResponseItem = {
+    app: OauthAuthorizationsListGrantsResponseItemApp;
+    created_at: string;
+    id: number;
+    scopes: Array<string>;
+    updated_at: string;
+    url: string;
+  };
+  type OauthAuthorizationsListAuthorizationsResponseItemApp = {
+    client_id: string;
+    name: string;
+    url: string;
+  };
+  type OauthAuthorizationsListAuthorizationsResponseItem = {
+    app: OauthAuthorizationsListAuthorizationsResponseItemApp;
+    created_at: string;
+    fingerprint: string;
+    hashed_token: string;
+    id: number;
+    note: string;
+    note_url: string;
+    scopes: Array<string>;
+    token: string;
+    token_last_eight: string;
+    updated_at: string;
+    url: string;
+  };
+  type OauthAuthorizationsGetOrCreateAuthorizationForAppFingerprintResponseApp = {
+    client_id: string;
+    name: string;
+    url: string;
+  };
+  type OauthAuthorizationsGetOrCreateAuthorizationForAppFingerprintResponse = {
+    app: OauthAuthorizationsGetOrCreateAuthorizationForAppFingerprintResponseApp;
+    created_at: string;
+    fingerprint: string;
+    hashed_token: string;
+    id: number;
+    note: string;
+    note_url: string;
+    scopes: Array<string>;
+    token: string;
+    token_last_eight: string;
+    updated_at: string;
+    url: string;
+  };
+  type OauthAuthorizationsGetOrCreateAuthorizationForAppAndFingerprintResponseApp = {
+    client_id: string;
+    name: string;
+    url: string;
+  };
+  type OauthAuthorizationsGetOrCreateAuthorizationForAppAndFingerprintResponse = {
+    app: OauthAuthorizationsGetOrCreateAuthorizationForAppAndFingerprintResponseApp;
+    created_at: string;
+    fingerprint: string;
+    hashed_token: string;
+    id: number;
+    note: string;
+    note_url: string;
+    scopes: Array<string>;
+    token: string;
+    token_last_eight: string;
+    updated_at: string;
+    url: string;
+  };
+  type OauthAuthorizationsGetOrCreateAuthorizationForAppResponseApp = {
+    client_id: string;
+    name: string;
+    url: string;
+  };
+  type OauthAuthorizationsGetOrCreateAuthorizationForAppResponse = {
+    app: OauthAuthorizationsGetOrCreateAuthorizationForAppResponseApp;
+    created_at: string;
+    fingerprint: string;
+    hashed_token: string;
+    id: number;
+    note: string;
+    note_url: string;
+    scopes: Array<string>;
+    token: string;
+    token_last_eight: string;
+    updated_at: string;
+    url: string;
+  };
+  type OauthAuthorizationsGetGrantResponseApp = {
+    client_id: string;
+    name: string;
+    url: string;
+  };
+  type OauthAuthorizationsGetGrantResponse = {
+    app: OauthAuthorizationsGetGrantResponseApp;
+    created_at: string;
+    id: number;
+    scopes: Array<string>;
+    updated_at: string;
+    url: string;
+  };
+  type OauthAuthorizationsGetAuthorizationResponseApp = {
+    client_id: string;
+    name: string;
+    url: string;
+  };
+  type OauthAuthorizationsGetAuthorizationResponse = {
+    app: OauthAuthorizationsGetAuthorizationResponseApp;
+    created_at: string;
+    fingerprint: string;
+    hashed_token: string;
+    id: number;
+    note: string;
+    note_url: string;
+    scopes: Array<string>;
+    token: string;
+    token_last_eight: string;
+    updated_at: string;
+    url: string;
+  };
+  type OauthAuthorizationsCreateAuthorizationResponseApp = {
+    client_id: string;
+    name: string;
+    url: string;
+  };
+  type OauthAuthorizationsCreateAuthorizationResponse = {
+    app: OauthAuthorizationsCreateAuthorizationResponseApp;
+    created_at: string;
+    fingerprint: string;
+    hashed_token: string;
+    id: number;
+    note: string;
+    note_url: string;
+    scopes: Array<string>;
+    token: string;
+    token_last_eight: string;
+    updated_at: string;
+    url: string;
+  };
+  type OauthAuthorizationsCheckAuthorizationResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type OauthAuthorizationsCheckAuthorizationResponseApp = {
+    client_id: string;
+    name: string;
+    url: string;
+  };
+  type OauthAuthorizationsCheckAuthorizationResponse = {
+    app: OauthAuthorizationsCheckAuthorizationResponseApp;
+    created_at: string;
+    fingerprint: string;
+    hashed_token: string;
+    id: number;
+    note: string;
+    note_url: string;
+    scopes: Array<string>;
+    token: string;
+    token_last_eight: string;
+    updated_at: string;
+    url: string;
+    user: OauthAuthorizationsCheckAuthorizationResponseUser;
+  };
+  type MigrationsUpdateImportResponse = {
+    authors_url: string;
+    html_url: string;
+    repository_url: string;
+    status: string;
+    url: string;
+    use_lfs: string;
+    vcs: string;
+    vcs_url: string;
+    authors_count?: number;
+    commit_count?: number;
+    has_large_files?: boolean;
+    large_files_count?: number;
+    large_files_size?: number;
+    percent?: number;
+    status_text?: string;
+    tfvc_project?: string;
+  };
+  type MigrationsStartImportResponse = {
+    authors_count: number;
+    authors_url: string;
+    commit_count: number;
+    has_large_files: boolean;
+    html_url: string;
+    large_files_count: number;
+    large_files_size: number;
+    percent: number;
+    repository_url: string;
+    status: string;
+    status_text: string;
+    url: string;
+    use_lfs: string;
+    vcs: string;
+    vcs_url: string;
+  };
+  type MigrationsStartForOrgResponseRepositoriesItemPermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type MigrationsStartForOrgResponseRepositoriesItemOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type MigrationsStartForOrgResponseRepositoriesItem = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: MigrationsStartForOrgResponseRepositoriesItemOwner;
+    permissions: MigrationsStartForOrgResponseRepositoriesItemPermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type MigrationsStartForOrgResponseOwner = {
+    avatar_url: string;
+    description: string;
+    events_url: string;
+    hooks_url: string;
+    id: number;
+    issues_url: string;
+    login: string;
+    members_url: string;
+    node_id: string;
+    public_members_url: string;
+    repos_url: string;
+    url: string;
+  };
+  type MigrationsStartForOrgResponse = {
+    created_at: string;
+    exclude_attachments: boolean;
+    guid: string;
+    id: number;
+    lock_repositories: boolean;
+    owner: MigrationsStartForOrgResponseOwner;
+    repositories: Array<MigrationsStartForOrgResponseRepositoriesItem>;
+    state: string;
+    updated_at: string;
+    url: string;
+  };
+  type MigrationsStartForAuthenticatedUserResponseRepositoriesItemPermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type MigrationsStartForAuthenticatedUserResponseRepositoriesItemOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type MigrationsStartForAuthenticatedUserResponseRepositoriesItem = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: MigrationsStartForAuthenticatedUserResponseRepositoriesItemOwner;
+    permissions: MigrationsStartForAuthenticatedUserResponseRepositoriesItemPermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type MigrationsStartForAuthenticatedUserResponseOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type MigrationsStartForAuthenticatedUserResponse = {
+    created_at: string;
+    exclude_attachments: boolean;
+    guid: string;
+    id: number;
+    lock_repositories: boolean;
+    owner: MigrationsStartForAuthenticatedUserResponseOwner;
+    repositories: Array<
+      MigrationsStartForAuthenticatedUserResponseRepositoriesItem
+    >;
+    state: string;
+    updated_at: string;
+    url: string;
+  };
+  type MigrationsSetLfsPreferenceResponse = {
+    authors_count: number;
+    authors_url: string;
+    has_large_files: boolean;
+    html_url: string;
+    large_files_count: number;
+    large_files_size: number;
+    repository_url: string;
+    status: string;
+    status_text: string;
+    url: string;
+    use_lfs: string;
+    vcs: string;
+    vcs_url: string;
+  };
+  type MigrationsMapCommitAuthorResponse = {
+    email: string;
+    id: number;
+    import_url: string;
+    name: string;
+    remote_id: string;
+    remote_name: string;
+    url: string;
+  };
+  type MigrationsListForOrgResponseItemRepositoriesItemPermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type MigrationsListForOrgResponseItemRepositoriesItemOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type MigrationsListForOrgResponseItemRepositoriesItem = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: MigrationsListForOrgResponseItemRepositoriesItemOwner;
+    permissions: MigrationsListForOrgResponseItemRepositoriesItemPermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type MigrationsListForOrgResponseItemOwner = {
+    avatar_url: string;
+    description: string;
+    events_url: string;
+    hooks_url: string;
+    id: number;
+    issues_url: string;
+    login: string;
+    members_url: string;
+    node_id: string;
+    public_members_url: string;
+    repos_url: string;
+    url: string;
+  };
+  type MigrationsListForOrgResponseItem = {
+    created_at: string;
+    exclude_attachments: boolean;
+    guid: string;
+    id: number;
+    lock_repositories: boolean;
+    owner: MigrationsListForOrgResponseItemOwner;
+    repositories: Array<MigrationsListForOrgResponseItemRepositoriesItem>;
+    state: string;
+    updated_at: string;
+    url: string;
+  };
+  type MigrationsListForAuthenticatedUserResponseItemRepositoriesItemPermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type MigrationsListForAuthenticatedUserResponseItemRepositoriesItemOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type MigrationsListForAuthenticatedUserResponseItemRepositoriesItem = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: MigrationsListForAuthenticatedUserResponseItemRepositoriesItemOwner;
+    permissions: MigrationsListForAuthenticatedUserResponseItemRepositoriesItemPermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type MigrationsListForAuthenticatedUserResponseItemOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type MigrationsListForAuthenticatedUserResponseItem = {
+    created_at: string;
+    exclude_attachments: boolean;
+    guid: string;
+    id: number;
+    lock_repositories: boolean;
+    owner: MigrationsListForAuthenticatedUserResponseItemOwner;
+    repositories: Array<
+      MigrationsListForAuthenticatedUserResponseItemRepositoriesItem
+    >;
+    state: string;
+    updated_at: string;
+    url: string;
+  };
+  type MigrationsGetStatusForOrgResponseRepositoriesItemPermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type MigrationsGetStatusForOrgResponseRepositoriesItemOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type MigrationsGetStatusForOrgResponseRepositoriesItem = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: MigrationsGetStatusForOrgResponseRepositoriesItemOwner;
+    permissions: MigrationsGetStatusForOrgResponseRepositoriesItemPermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type MigrationsGetStatusForOrgResponseOwner = {
+    avatar_url: string;
+    description: string;
+    events_url: string;
+    hooks_url: string;
+    id: number;
+    issues_url: string;
+    login: string;
+    members_url: string;
+    node_id: string;
+    public_members_url: string;
+    repos_url: string;
+    url: string;
+  };
+  type MigrationsGetStatusForOrgResponse = {
+    created_at: string;
+    exclude_attachments: boolean;
+    guid: string;
+    id: number;
+    lock_repositories: boolean;
+    owner: MigrationsGetStatusForOrgResponseOwner;
+    repositories: Array<MigrationsGetStatusForOrgResponseRepositoriesItem>;
+    state: string;
+    updated_at: string;
+    url: string;
+  };
+  type MigrationsGetStatusForAuthenticatedUserResponseRepositoriesItemPermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type MigrationsGetStatusForAuthenticatedUserResponseRepositoriesItemOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type MigrationsGetStatusForAuthenticatedUserResponseRepositoriesItem = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: MigrationsGetStatusForAuthenticatedUserResponseRepositoriesItemOwner;
+    permissions: MigrationsGetStatusForAuthenticatedUserResponseRepositoriesItemPermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type MigrationsGetStatusForAuthenticatedUserResponseOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type MigrationsGetStatusForAuthenticatedUserResponse = {
+    created_at: string;
+    exclude_attachments: boolean;
+    guid: string;
+    id: number;
+    lock_repositories: boolean;
+    owner: MigrationsGetStatusForAuthenticatedUserResponseOwner;
+    repositories: Array<
+      MigrationsGetStatusForAuthenticatedUserResponseRepositoriesItem
+    >;
+    state: string;
+    updated_at: string;
+    url: string;
+  };
+  type MigrationsGetLargeFilesResponseItem = {
+    oid: string;
+    path: string;
+    ref_name: string;
+    size: number;
+  };
+  type MigrationsGetImportProgressResponse = {
+    authors_count: number;
+    authors_url: string;
+    has_large_files: boolean;
+    html_url: string;
+    large_files_count: number;
+    large_files_size: number;
+    repository_url: string;
+    status: string;
+    status_text: string;
+    url: string;
+    use_lfs: string;
+    vcs: string;
+    vcs_url: string;
+  };
+  type MigrationsGetCommitAuthorsResponseItem = {
+    email: string;
+    id: number;
+    import_url: string;
+    name: string;
+    remote_id: string;
+    remote_name: string;
+    url: string;
+  };
+  type MetaGetResponse = {
+    git: Array<string>;
+    hooks: Array<string>;
+    importer: Array<string>;
+    pages: Array<string>;
+    verifiable_password_authentication: boolean;
+  };
+  type LicensesListCommonlyUsedResponseItem = {
+    key: string;
+    name: string;
+    node_id?: string;
+    spdx_id: string;
+    url: string;
+  };
+  type LicensesListResponseItem = {
+    key: string;
+    name: string;
+    node_id?: string;
+    spdx_id: string;
+    url: string;
+  };
+  type LicensesGetForRepoResponseLicense = {
+    key: string;
+    name: string;
+    node_id: string;
+    spdx_id: string;
+    url: string;
+  };
+  type LicensesGetForRepoResponseLinks = {
+    git: string;
+    html: string;
+    self: string;
+  };
+  type LicensesGetForRepoResponse = {
+    _links: LicensesGetForRepoResponseLinks;
+    content: string;
+    download_url: string;
+    encoding: string;
+    git_url: string;
+    html_url: string;
+    license: LicensesGetForRepoResponseLicense;
+    name: string;
+    path: string;
+    sha: string;
+    size: number;
+    type: string;
+    url: string;
+  };
+  type LicensesGetResponse = {
+    body: string;
+    conditions: Array<string>;
+    description: string;
+    featured: boolean;
+    html_url: string;
+    implementation: string;
+    key: string;
+    limitations: Array<string>;
+    name: string;
+    node_id: string;
+    permissions: Array<string>;
+    spdx_id: string;
+    url: string;
+  };
+  type IssuesUpdateMilestoneResponseCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesUpdateMilestoneResponse = {
+    closed_at: string;
+    closed_issues: number;
+    created_at: string;
+    creator: IssuesUpdateMilestoneResponseCreator;
+    description: string;
+    due_on: string;
+    html_url: string;
+    id: number;
+    labels_url: string;
+    node_id: string;
+    number: number;
+    open_issues: number;
+    state: string;
+    title: string;
+    updated_at: string;
+    url: string;
+  };
+  type IssuesUpdateLabelResponse = {
+    color: string;
+    default: boolean;
+    description: string;
+    id: number;
+    name: string;
+    node_id: string;
+    url: string;
+  };
+  type IssuesUpdateCommentResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesUpdateCommentResponse = {
+    body: string;
+    created_at: string;
+    html_url: string;
+    id: number;
+    node_id: string;
+    updated_at: string;
+    url: string;
+    user: IssuesUpdateCommentResponseUser;
+  };
+  type IssuesUpdateResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesUpdateResponsePullRequest = {
+    diff_url: string;
+    html_url: string;
+    patch_url: string;
+    url: string;
+  };
+  type IssuesUpdateResponseMilestoneCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesUpdateResponseMilestone = {
+    closed_at: string;
+    closed_issues: number;
+    created_at: string;
+    creator: IssuesUpdateResponseMilestoneCreator;
+    description: string;
+    due_on: string;
+    html_url: string;
+    id: number;
+    labels_url: string;
+    node_id: string;
+    number: number;
+    open_issues: number;
+    state: string;
+    title: string;
+    updated_at: string;
+    url: string;
+  };
+  type IssuesUpdateResponseLabelsItem = {
+    color: string;
+    default: boolean;
+    description: string;
+    id: number;
+    name: string;
+    node_id: string;
+    url: string;
+  };
+  type IssuesUpdateResponseClosedBy = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesUpdateResponseAssigneesItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesUpdateResponseAssignee = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesUpdateResponse = {
+    active_lock_reason: string;
+    assignee: IssuesUpdateResponseAssignee;
+    assignees: Array<IssuesUpdateResponseAssigneesItem>;
+    body: string;
+    closed_at: null;
+    closed_by: IssuesUpdateResponseClosedBy;
+    comments: number;
+    comments_url: string;
+    created_at: string;
+    events_url: string;
+    html_url: string;
+    id: number;
+    labels: Array<IssuesUpdateResponseLabelsItem>;
+    labels_url: string;
+    locked: boolean;
+    milestone: IssuesUpdateResponseMilestone;
+    node_id: string;
+    number: number;
+    pull_request: IssuesUpdateResponsePullRequest;
+    repository_url: string;
+    state: string;
+    title: string;
+    updated_at: string;
+    url: string;
+    user: IssuesUpdateResponseUser;
+  };
+  type IssuesReplaceLabelsResponseItem = {
+    color: string;
+    default: boolean;
+    description: string;
+    id: number;
+    name: string;
+    node_id: string;
+    url: string;
+  };
+  type IssuesRemoveLabelResponseItem = {
+    color: string;
+    default: boolean;
+    description: string;
+    id: number;
+    name: string;
+    node_id: string;
+    url: string;
+  };
+  type IssuesRemoveAssigneesResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesRemoveAssigneesResponsePullRequest = {
+    diff_url: string;
+    html_url: string;
+    patch_url: string;
+    url: string;
+  };
+  type IssuesRemoveAssigneesResponseMilestoneCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesRemoveAssigneesResponseMilestone = {
+    closed_at: string;
+    closed_issues: number;
+    created_at: string;
+    creator: IssuesRemoveAssigneesResponseMilestoneCreator;
+    description: string;
+    due_on: string;
+    html_url: string;
+    id: number;
+    labels_url: string;
+    node_id: string;
+    number: number;
+    open_issues: number;
+    state: string;
+    title: string;
+    updated_at: string;
+    url: string;
+  };
+  type IssuesRemoveAssigneesResponseLabelsItem = {
+    color: string;
+    default: boolean;
+    description: string;
+    id: number;
+    name: string;
+    node_id: string;
+    url: string;
+  };
+  type IssuesRemoveAssigneesResponseAssigneesItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesRemoveAssigneesResponseAssignee = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesRemoveAssigneesResponse = {
+    active_lock_reason: string;
+    assignee: IssuesRemoveAssigneesResponseAssignee;
+    assignees: Array<IssuesRemoveAssigneesResponseAssigneesItem>;
+    body: string;
+    closed_at: null;
+    comments: number;
+    comments_url: string;
+    created_at: string;
+    events_url: string;
+    html_url: string;
+    id: number;
+    labels: Array<IssuesRemoveAssigneesResponseLabelsItem>;
+    labels_url: string;
+    locked: boolean;
+    milestone: IssuesRemoveAssigneesResponseMilestone;
+    node_id: string;
+    number: number;
+    pull_request: IssuesRemoveAssigneesResponsePullRequest;
+    repository_url: string;
+    state: string;
+    title: string;
+    updated_at: string;
+    url: string;
+    user: IssuesRemoveAssigneesResponseUser;
+  };
+  type IssuesListMilestonesForRepoResponseItemCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesListMilestonesForRepoResponseItem = {
+    closed_at: string;
+    closed_issues: number;
+    created_at: string;
+    creator: IssuesListMilestonesForRepoResponseItemCreator;
+    description: string;
+    due_on: string;
+    html_url: string;
+    id: number;
+    labels_url: string;
+    node_id: string;
+    number: number;
+    open_issues: number;
+    state: string;
+    title: string;
+    updated_at: string;
+    url: string;
+  };
+  type IssuesListLabelsOnIssueResponseItem = {
+    color: string;
+    default: boolean;
+    description: string;
+    id: number;
+    name: string;
+    node_id: string;
+    url: string;
+  };
+  type IssuesListLabelsForRepoResponseItem = {
+    color: string;
+    default: boolean;
+    description: string;
+    id: number;
+    name: string;
+    node_id: string;
+    url: string;
+  };
+  type IssuesListLabelsForMilestoneResponseItem = {
+    color: string;
+    default: boolean;
+    description: string;
+    id: number;
+    name: string;
+    node_id: string;
+    url: string;
+  };
+  type IssuesListForRepoResponseItemUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesListForRepoResponseItemPullRequest = {
+    diff_url: string;
+    html_url: string;
+    patch_url: string;
+    url: string;
+  };
+  type IssuesListForRepoResponseItemMilestoneCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesListForRepoResponseItemMilestone = {
+    closed_at: string;
+    closed_issues: number;
+    created_at: string;
+    creator: IssuesListForRepoResponseItemMilestoneCreator;
+    description: string;
+    due_on: string;
+    html_url: string;
+    id: number;
+    labels_url: string;
+    node_id: string;
+    number: number;
+    open_issues: number;
+    state: string;
+    title: string;
+    updated_at: string;
+    url: string;
+  };
+  type IssuesListForRepoResponseItemLabelsItem = {
+    color: string;
+    default: boolean;
+    description: string;
+    id: number;
+    name: string;
+    node_id: string;
+    url: string;
+  };
+  type IssuesListForRepoResponseItemAssigneesItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesListForRepoResponseItemAssignee = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesListForRepoResponseItem = {
+    active_lock_reason: string;
+    assignee: IssuesListForRepoResponseItemAssignee;
+    assignees: Array<IssuesListForRepoResponseItemAssigneesItem>;
+    body: string;
+    closed_at: null;
+    comments: number;
+    comments_url: string;
+    created_at: string;
+    events_url: string;
+    html_url: string;
+    id: number;
+    labels: Array<IssuesListForRepoResponseItemLabelsItem>;
+    labels_url: string;
+    locked: boolean;
+    milestone: IssuesListForRepoResponseItemMilestone;
+    node_id: string;
+    number: number;
+    pull_request: IssuesListForRepoResponseItemPullRequest;
+    repository_url: string;
+    state: string;
+    title: string;
+    updated_at: string;
+    url: string;
+    user: IssuesListForRepoResponseItemUser;
+  };
+  type IssuesListForOrgResponseItemUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesListForOrgResponseItemRepositoryPermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type IssuesListForOrgResponseItemRepositoryOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesListForOrgResponseItemRepository = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: IssuesListForOrgResponseItemRepositoryOwner;
+    permissions: IssuesListForOrgResponseItemRepositoryPermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type IssuesListForOrgResponseItemPullRequest = {
+    diff_url: string;
+    html_url: string;
+    patch_url: string;
+    url: string;
+  };
+  type IssuesListForOrgResponseItemMilestoneCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesListForOrgResponseItemMilestone = {
+    closed_at: string;
+    closed_issues: number;
+    created_at: string;
+    creator: IssuesListForOrgResponseItemMilestoneCreator;
+    description: string;
+    due_on: string;
+    html_url: string;
+    id: number;
+    labels_url: string;
+    node_id: string;
+    number: number;
+    open_issues: number;
+    state: string;
+    title: string;
+    updated_at: string;
+    url: string;
+  };
+  type IssuesListForOrgResponseItemLabelsItem = {
+    color: string;
+    default: boolean;
+    description: string;
+    id: number;
+    name: string;
+    node_id: string;
+    url: string;
+  };
+  type IssuesListForOrgResponseItemAssigneesItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesListForOrgResponseItemAssignee = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesListForOrgResponseItem = {
+    active_lock_reason: string;
+    assignee: IssuesListForOrgResponseItemAssignee;
+    assignees: Array<IssuesListForOrgResponseItemAssigneesItem>;
+    body: string;
+    closed_at: null;
+    comments: number;
+    comments_url: string;
+    created_at: string;
+    events_url: string;
+    html_url: string;
+    id: number;
+    labels: Array<IssuesListForOrgResponseItemLabelsItem>;
+    labels_url: string;
+    locked: boolean;
+    milestone: IssuesListForOrgResponseItemMilestone;
+    node_id: string;
+    number: number;
+    pull_request: IssuesListForOrgResponseItemPullRequest;
+    repository: IssuesListForOrgResponseItemRepository;
+    repository_url: string;
+    state: string;
+    title: string;
+    updated_at: string;
+    url: string;
+    user: IssuesListForOrgResponseItemUser;
+  };
+  type IssuesListForAuthenticatedUserResponseItemUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesListForAuthenticatedUserResponseItemRepositoryPermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type IssuesListForAuthenticatedUserResponseItemRepositoryOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesListForAuthenticatedUserResponseItemRepository = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: IssuesListForAuthenticatedUserResponseItemRepositoryOwner;
+    permissions: IssuesListForAuthenticatedUserResponseItemRepositoryPermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type IssuesListForAuthenticatedUserResponseItemPullRequest = {
+    diff_url: string;
+    html_url: string;
+    patch_url: string;
+    url: string;
+  };
+  type IssuesListForAuthenticatedUserResponseItemMilestoneCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesListForAuthenticatedUserResponseItemMilestone = {
+    closed_at: string;
+    closed_issues: number;
+    created_at: string;
+    creator: IssuesListForAuthenticatedUserResponseItemMilestoneCreator;
+    description: string;
+    due_on: string;
+    html_url: string;
+    id: number;
+    labels_url: string;
+    node_id: string;
+    number: number;
+    open_issues: number;
+    state: string;
+    title: string;
+    updated_at: string;
+    url: string;
+  };
+  type IssuesListForAuthenticatedUserResponseItemLabelsItem = {
+    color: string;
+    default: boolean;
+    description: string;
+    id: number;
+    name: string;
+    node_id: string;
+    url: string;
+  };
+  type IssuesListForAuthenticatedUserResponseItemAssigneesItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesListForAuthenticatedUserResponseItemAssignee = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesListForAuthenticatedUserResponseItem = {
+    active_lock_reason: string;
+    assignee: IssuesListForAuthenticatedUserResponseItemAssignee;
+    assignees: Array<IssuesListForAuthenticatedUserResponseItemAssigneesItem>;
+    body: string;
+    closed_at: null;
+    comments: number;
+    comments_url: string;
+    created_at: string;
+    events_url: string;
+    html_url: string;
+    id: number;
+    labels: Array<IssuesListForAuthenticatedUserResponseItemLabelsItem>;
+    labels_url: string;
+    locked: boolean;
+    milestone: IssuesListForAuthenticatedUserResponseItemMilestone;
+    node_id: string;
+    number: number;
+    pull_request: IssuesListForAuthenticatedUserResponseItemPullRequest;
+    repository: IssuesListForAuthenticatedUserResponseItemRepository;
+    repository_url: string;
+    state: string;
+    title: string;
+    updated_at: string;
+    url: string;
+    user: IssuesListForAuthenticatedUserResponseItemUser;
+  };
+  type IssuesListEventsForTimelineResponseItemActor = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesListEventsForTimelineResponseItem = {
+    actor: IssuesListEventsForTimelineResponseItemActor;
+    commit_id: string;
+    commit_url: string;
+    created_at: string;
+    event: string;
+    id: number;
+    node_id: string;
+    url: string;
+  };
+  type IssuesListEventsForRepoResponseItemIssueUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesListEventsForRepoResponseItemIssuePullRequest = {
+    diff_url: string;
+    html_url: string;
+    patch_url: string;
+    url: string;
+  };
+  type IssuesListEventsForRepoResponseItemIssueMilestoneCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesListEventsForRepoResponseItemIssueMilestone = {
+    closed_at: string;
+    closed_issues: number;
+    created_at: string;
+    creator: IssuesListEventsForRepoResponseItemIssueMilestoneCreator;
+    description: string;
+    due_on: string;
+    html_url: string;
+    id: number;
+    labels_url: string;
+    node_id: string;
+    number: number;
+    open_issues: number;
+    state: string;
+    title: string;
+    updated_at: string;
+    url: string;
+  };
+  type IssuesListEventsForRepoResponseItemIssueLabelsItem = {
+    color: string;
+    default: boolean;
+    description: string;
+    id: number;
+    name: string;
+    node_id: string;
+    url: string;
+  };
+  type IssuesListEventsForRepoResponseItemIssueAssigneesItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesListEventsForRepoResponseItemIssueAssignee = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesListEventsForRepoResponseItemIssue = {
+    active_lock_reason: string;
+    assignee: IssuesListEventsForRepoResponseItemIssueAssignee;
+    assignees: Array<IssuesListEventsForRepoResponseItemIssueAssigneesItem>;
+    body: string;
+    closed_at: null;
+    comments: number;
+    comments_url: string;
+    created_at: string;
+    events_url: string;
+    html_url: string;
+    id: number;
+    labels: Array<IssuesListEventsForRepoResponseItemIssueLabelsItem>;
+    labels_url: string;
+    locked: boolean;
+    milestone: IssuesListEventsForRepoResponseItemIssueMilestone;
+    node_id: string;
+    number: number;
+    pull_request: IssuesListEventsForRepoResponseItemIssuePullRequest;
+    repository_url: string;
+    state: string;
+    title: string;
+    updated_at: string;
+    url: string;
+    user: IssuesListEventsForRepoResponseItemIssueUser;
+  };
+  type IssuesListEventsForRepoResponseItemActor = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesListEventsForRepoResponseItem = {
+    actor: IssuesListEventsForRepoResponseItemActor;
+    commit_id: string;
+    commit_url: string;
+    created_at: string;
+    event: string;
+    id: number;
+    issue: IssuesListEventsForRepoResponseItemIssue;
+    node_id: string;
+    url: string;
+  };
+  type IssuesListEventsResponseItemActor = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesListEventsResponseItem = {
+    actor: IssuesListEventsResponseItemActor;
+    commit_id: string;
+    commit_url: string;
+    created_at: string;
+    event: string;
+    id: number;
+    node_id: string;
+    url: string;
+  };
+  type IssuesListCommentsForRepoResponseItemUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesListCommentsForRepoResponseItem = {
+    body: string;
+    created_at: string;
+    html_url: string;
+    id: number;
+    node_id: string;
+    updated_at: string;
+    url: string;
+    user: IssuesListCommentsForRepoResponseItemUser;
+  };
+  type IssuesListCommentsResponseItemUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesListCommentsResponseItem = {
+    body: string;
+    created_at: string;
+    html_url: string;
+    id: number;
+    node_id: string;
+    updated_at: string;
+    url: string;
+    user: IssuesListCommentsResponseItemUser;
+  };
+  type IssuesListAssigneesResponseItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesListResponseItemUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesListResponseItemRepositoryPermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type IssuesListResponseItemRepositoryOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesListResponseItemRepository = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: IssuesListResponseItemRepositoryOwner;
+    permissions: IssuesListResponseItemRepositoryPermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type IssuesListResponseItemPullRequest = {
+    diff_url: string;
+    html_url: string;
+    patch_url: string;
+    url: string;
+  };
+  type IssuesListResponseItemMilestoneCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesListResponseItemMilestone = {
+    closed_at: string;
+    closed_issues: number;
+    created_at: string;
+    creator: IssuesListResponseItemMilestoneCreator;
+    description: string;
+    due_on: string;
+    html_url: string;
+    id: number;
+    labels_url: string;
+    node_id: string;
+    number: number;
+    open_issues: number;
+    state: string;
+    title: string;
+    updated_at: string;
+    url: string;
+  };
+  type IssuesListResponseItemLabelsItem = {
+    color: string;
+    default: boolean;
+    description: string;
+    id: number;
+    name: string;
+    node_id: string;
+    url: string;
+  };
+  type IssuesListResponseItemAssigneesItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesListResponseItemAssignee = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesListResponseItem = {
+    active_lock_reason: string;
+    assignee: IssuesListResponseItemAssignee;
+    assignees: Array<IssuesListResponseItemAssigneesItem>;
+    body: string;
+    closed_at: null;
+    comments: number;
+    comments_url: string;
+    created_at: string;
+    events_url: string;
+    html_url: string;
+    id: number;
+    labels: Array<IssuesListResponseItemLabelsItem>;
+    labels_url: string;
+    locked: boolean;
+    milestone: IssuesListResponseItemMilestone;
+    node_id: string;
+    number: number;
+    pull_request: IssuesListResponseItemPullRequest;
+    repository: IssuesListResponseItemRepository;
+    repository_url: string;
+    state: string;
+    title: string;
+    updated_at: string;
+    url: string;
+    user: IssuesListResponseItemUser;
+  };
+  type IssuesGetMilestoneResponseCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesGetMilestoneResponse = {
+    closed_at: string;
+    closed_issues: number;
+    created_at: string;
+    creator: IssuesGetMilestoneResponseCreator;
+    description: string;
+    due_on: string;
+    html_url: string;
+    id: number;
+    labels_url: string;
+    node_id: string;
+    number: number;
+    open_issues: number;
+    state: string;
+    title: string;
+    updated_at: string;
+    url: string;
+  };
+  type IssuesGetLabelResponse = {
+    color: string;
+    default: boolean;
+    description: string;
+    id: number;
+    name: string;
+    node_id: string;
+    url: string;
+  };
+  type IssuesGetEventResponseIssueUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesGetEventResponseIssuePullRequest = {
+    diff_url: string;
+    html_url: string;
+    patch_url: string;
+    url: string;
+  };
+  type IssuesGetEventResponseIssueMilestoneCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesGetEventResponseIssueMilestone = {
+    closed_at: string;
+    closed_issues: number;
+    created_at: string;
+    creator: IssuesGetEventResponseIssueMilestoneCreator;
+    description: string;
+    due_on: string;
+    html_url: string;
+    id: number;
+    labels_url: string;
+    node_id: string;
+    number: number;
+    open_issues: number;
+    state: string;
+    title: string;
+    updated_at: string;
+    url: string;
+  };
+  type IssuesGetEventResponseIssueLabelsItem = {
+    color: string;
+    default: boolean;
+    description: string;
+    id: number;
+    name: string;
+    node_id: string;
+    url: string;
+  };
+  type IssuesGetEventResponseIssueAssigneesItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesGetEventResponseIssueAssignee = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesGetEventResponseIssue = {
+    active_lock_reason: string;
+    assignee: IssuesGetEventResponseIssueAssignee;
+    assignees: Array<IssuesGetEventResponseIssueAssigneesItem>;
+    body: string;
+    closed_at: null;
+    comments: number;
+    comments_url: string;
+    created_at: string;
+    events_url: string;
+    html_url: string;
+    id: number;
+    labels: Array<IssuesGetEventResponseIssueLabelsItem>;
+    labels_url: string;
+    locked: boolean;
+    milestone: IssuesGetEventResponseIssueMilestone;
+    node_id: string;
+    number: number;
+    pull_request: IssuesGetEventResponseIssuePullRequest;
+    repository_url: string;
+    state: string;
+    title: string;
+    updated_at: string;
+    url: string;
+    user: IssuesGetEventResponseIssueUser;
+  };
+  type IssuesGetEventResponseActor = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesGetEventResponse = {
+    actor: IssuesGetEventResponseActor;
+    commit_id: string;
+    commit_url: string;
+    created_at: string;
+    event: string;
+    id: number;
+    issue: IssuesGetEventResponseIssue;
+    node_id: string;
+    url: string;
+  };
+  type IssuesGetCommentResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesGetCommentResponse = {
+    body: string;
+    created_at: string;
+    html_url: string;
+    id: number;
+    node_id: string;
+    updated_at: string;
+    url: string;
+    user: IssuesGetCommentResponseUser;
+  };
+  type IssuesGetResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesGetResponsePullRequest = {
+    diff_url: string;
+    html_url: string;
+    patch_url: string;
+    url: string;
+  };
+  type IssuesGetResponseMilestoneCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesGetResponseMilestone = {
+    closed_at: string;
+    closed_issues: number;
+    created_at: string;
+    creator: IssuesGetResponseMilestoneCreator;
+    description: string;
+    due_on: string;
+    html_url: string;
+    id: number;
+    labels_url: string;
+    node_id: string;
+    number: number;
+    open_issues: number;
+    state: string;
+    title: string;
+    updated_at: string;
+    url: string;
+  };
+  type IssuesGetResponseLabelsItem = {
+    color: string;
+    default: boolean;
+    description: string;
+    id: number;
+    name: string;
+    node_id: string;
+    url: string;
+  };
+  type IssuesGetResponseClosedBy = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesGetResponseAssigneesItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesGetResponseAssignee = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesGetResponse = {
+    active_lock_reason: string;
+    assignee: IssuesGetResponseAssignee;
+    assignees: Array<IssuesGetResponseAssigneesItem>;
+    body: string;
+    closed_at: null;
+    closed_by: IssuesGetResponseClosedBy;
+    comments: number;
+    comments_url: string;
+    created_at: string;
+    events_url: string;
+    html_url: string;
+    id: number;
+    labels: Array<IssuesGetResponseLabelsItem>;
+    labels_url: string;
+    locked: boolean;
+    milestone: IssuesGetResponseMilestone;
+    node_id: string;
+    number: number;
+    pull_request: IssuesGetResponsePullRequest;
+    repository_url: string;
+    state: string;
+    title: string;
+    updated_at: string;
+    url: string;
+    user: IssuesGetResponseUser;
+  };
+  type IssuesCreateMilestoneResponseCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesCreateMilestoneResponse = {
+    closed_at: string;
+    closed_issues: number;
+    created_at: string;
+    creator: IssuesCreateMilestoneResponseCreator;
+    description: string;
+    due_on: string;
+    html_url: string;
+    id: number;
+    labels_url: string;
+    node_id: string;
+    number: number;
+    open_issues: number;
+    state: string;
+    title: string;
+    updated_at: string;
+    url: string;
+  };
+  type IssuesCreateLabelResponse = {
+    color: string;
+    default: boolean;
+    description: string;
+    id: number;
+    name: string;
+    node_id: string;
+    url: string;
+  };
+  type IssuesCreateCommentResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesCreateCommentResponse = {
+    body: string;
+    created_at: string;
+    html_url: string;
+    id: number;
+    node_id: string;
+    updated_at: string;
+    url: string;
+    user: IssuesCreateCommentResponseUser;
+  };
+  type IssuesCreateResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesCreateResponsePullRequest = {
+    diff_url: string;
+    html_url: string;
+    patch_url: string;
+    url: string;
+  };
+  type IssuesCreateResponseMilestoneCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesCreateResponseMilestone = {
+    closed_at: string;
+    closed_issues: number;
+    created_at: string;
+    creator: IssuesCreateResponseMilestoneCreator;
+    description: string;
+    due_on: string;
+    html_url: string;
+    id: number;
+    labels_url: string;
+    node_id: string;
+    number: number;
+    open_issues: number;
+    state: string;
+    title: string;
+    updated_at: string;
+    url: string;
+  };
+  type IssuesCreateResponseLabelsItem = {
+    color: string;
+    default: boolean;
+    description: string;
+    id: number;
+    name: string;
+    node_id: string;
+    url: string;
+  };
+  type IssuesCreateResponseClosedBy = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesCreateResponseAssigneesItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesCreateResponseAssignee = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesCreateResponse = {
+    active_lock_reason: string;
+    assignee: IssuesCreateResponseAssignee;
+    assignees: Array<IssuesCreateResponseAssigneesItem>;
+    body: string;
+    closed_at: null;
+    closed_by: IssuesCreateResponseClosedBy;
+    comments: number;
+    comments_url: string;
+    created_at: string;
+    events_url: string;
+    html_url: string;
+    id: number;
+    labels: Array<IssuesCreateResponseLabelsItem>;
+    labels_url: string;
+    locked: boolean;
+    milestone: IssuesCreateResponseMilestone;
+    node_id: string;
+    number: number;
+    pull_request: IssuesCreateResponsePullRequest;
+    repository_url: string;
+    state: string;
+    title: string;
+    updated_at: string;
+    url: string;
+    user: IssuesCreateResponseUser;
+  };
+  type IssuesAddLabelsResponseItem = {
+    color: string;
+    default: boolean;
+    description: string;
+    id: number;
+    name: string;
+    node_id: string;
+    url: string;
+  };
+  type IssuesAddAssigneesResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesAddAssigneesResponsePullRequest = {
+    diff_url: string;
+    html_url: string;
+    patch_url: string;
+    url: string;
+  };
+  type IssuesAddAssigneesResponseMilestoneCreator = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesAddAssigneesResponseMilestone = {
+    closed_at: string;
+    closed_issues: number;
+    created_at: string;
+    creator: IssuesAddAssigneesResponseMilestoneCreator;
+    description: string;
+    due_on: string;
+    html_url: string;
+    id: number;
+    labels_url: string;
+    node_id: string;
+    number: number;
+    open_issues: number;
+    state: string;
+    title: string;
+    updated_at: string;
+    url: string;
+  };
+  type IssuesAddAssigneesResponseLabelsItem = {
+    color: string;
+    default: boolean;
+    description: string;
+    id: number;
+    name: string;
+    node_id: string;
+    url: string;
+  };
+  type IssuesAddAssigneesResponseAssigneesItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesAddAssigneesResponseAssignee = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type IssuesAddAssigneesResponse = {
+    active_lock_reason: string;
+    assignee: IssuesAddAssigneesResponseAssignee;
+    assignees: Array<IssuesAddAssigneesResponseAssigneesItem>;
+    body: string;
+    closed_at: null;
+    comments: number;
+    comments_url: string;
+    created_at: string;
+    events_url: string;
+    html_url: string;
+    id: number;
+    labels: Array<IssuesAddAssigneesResponseLabelsItem>;
+    labels_url: string;
+    locked: boolean;
+    milestone: IssuesAddAssigneesResponseMilestone;
+    node_id: string;
+    number: number;
+    pull_request: IssuesAddAssigneesResponsePullRequest;
+    repository_url: string;
+    state: string;
+    title: string;
+    updated_at: string;
+    url: string;
+    user: IssuesAddAssigneesResponseUser;
+  };
+  type InteractionsGetRestrictionsForRepoResponse = {
+    expires_at: string;
+    limit: string;
+    origin: string;
+  };
+  type InteractionsGetRestrictionsForOrgResponse = {
+    expires_at: string;
+    limit: string;
+    origin: string;
+  };
+  type InteractionsAddOrUpdateRestrictionsForRepoResponse = {
+    expires_at: string;
+    limit: string;
+    origin: string;
+  };
+  type InteractionsAddOrUpdateRestrictionsForOrgResponse = {
+    expires_at: string;
+    limit: string;
+    origin: string;
+  };
+  type GitignoreGetTemplateResponse = { name: string; source: string };
+  type GitUpdateRefResponseObject = { sha: string; type: string; url: string };
+  type GitUpdateRefResponse = {
+    node_id: string;
+    object: GitUpdateRefResponseObject;
+    ref: string;
+    url: string;
+  };
+  type GitListMatchingRefsResponseItemObject = {
+    sha: string;
+    type: string;
+    url: string;
+  };
+  type GitListMatchingRefsResponseItem = {
+    node_id: string;
+    object: GitListMatchingRefsResponseItemObject;
+    ref: string;
+    url: string;
+  };
+  type GitGetTagResponseVerification = {
+    payload: null;
+    reason: string;
+    signature: null;
+    verified: boolean;
+  };
+  type GitGetTagResponseTagger = { date: string; email: string; name: string };
+  type GitGetTagResponseObject = { sha: string; type: string; url: string };
+  type GitGetTagResponse = {
+    message: string;
+    node_id: string;
+    object: GitGetTagResponseObject;
+    sha: string;
+    tag: string;
+    tagger: GitGetTagResponseTagger;
+    url: string;
+    verification: GitGetTagResponseVerification;
+  };
+  type GitGetRefResponseObject = { sha: string; type: string; url: string };
+  type GitGetRefResponse = {
+    node_id: string;
+    object: GitGetRefResponseObject;
+    ref: string;
+    url: string;
+  };
+  type GitGetCommitResponseVerification = {
+    payload: null;
+    reason: string;
+    signature: null;
+    verified: boolean;
+  };
+  type GitGetCommitResponseTree = { sha: string; url: string };
+  type GitGetCommitResponseParentsItem = { sha: string; url: string };
+  type GitGetCommitResponseCommitter = {
+    date: string;
+    email: string;
+    name: string;
+  };
+  type GitGetCommitResponseAuthor = {
+    date: string;
+    email: string;
+    name: string;
+  };
+  type GitGetCommitResponse = {
+    author: GitGetCommitResponseAuthor;
+    committer: GitGetCommitResponseCommitter;
+    message: string;
+    parents: Array<GitGetCommitResponseParentsItem>;
+    sha: string;
+    tree: GitGetCommitResponseTree;
+    url: string;
+    verification: GitGetCommitResponseVerification;
+  };
+  type GitGetBlobResponse = {
+    content: string;
+    encoding: string;
+    sha: string;
+    size: number;
+    url: string;
+  };
+  type GitCreateTreeResponseTreeItem = {
+    mode: string;
+    path: string;
+    sha: string;
+    size: number;
+    type: string;
+    url: string;
+  };
+  type GitCreateTreeResponse = {
+    sha: string;
+    tree: Array<GitCreateTreeResponseTreeItem>;
+    url: string;
+  };
+  type GitCreateTagResponseVerification = {
+    payload: null;
+    reason: string;
+    signature: null;
+    verified: boolean;
+  };
+  type GitCreateTagResponseTagger = {
+    date: string;
+    email: string;
+    name: string;
+  };
+  type GitCreateTagResponseObject = { sha: string; type: string; url: string };
+  type GitCreateTagResponse = {
+    message: string;
+    node_id: string;
+    object: GitCreateTagResponseObject;
+    sha: string;
+    tag: string;
+    tagger: GitCreateTagResponseTagger;
+    url: string;
+    verification: GitCreateTagResponseVerification;
+  };
+  type GitCreateRefResponseObject = { sha: string; type: string; url: string };
+  type GitCreateRefResponse = {
+    node_id: string;
+    object: GitCreateRefResponseObject;
+    ref: string;
+    url: string;
+  };
+  type GitCreateCommitResponseVerification = {
+    payload: null;
+    reason: string;
+    signature: null;
+    verified: boolean;
+  };
+  type GitCreateCommitResponseTree = { sha: string; url: string };
+  type GitCreateCommitResponseParentsItem = { sha: string; url: string };
+  type GitCreateCommitResponseCommitter = {
+    date: string;
+    email: string;
+    name: string;
+  };
+  type GitCreateCommitResponseAuthor = {
+    date: string;
+    email: string;
+    name: string;
+  };
+  type GitCreateCommitResponse = {
+    author: GitCreateCommitResponseAuthor;
+    committer: GitCreateCommitResponseCommitter;
+    message: string;
+    node_id: string;
+    parents: Array<GitCreateCommitResponseParentsItem>;
+    sha: string;
+    tree: GitCreateCommitResponseTree;
+    url: string;
+    verification: GitCreateCommitResponseVerification;
+  };
+  type GitCreateBlobResponse = { sha: string; url: string };
+  type GistsUpdateCommentResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type GistsUpdateCommentResponse = {
+    body: string;
+    created_at: string;
+    id: number;
+    node_id: string;
+    updated_at: string;
+    url: string;
+    user: GistsUpdateCommentResponseUser;
+  };
+  type GistsUpdateResponseOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type GistsUpdateResponseHistoryItemUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type GistsUpdateResponseHistoryItemChangeStatus = {
+    additions: number;
+    deletions: number;
+    total: number;
+  };
+  type GistsUpdateResponseHistoryItem = {
+    change_status: GistsUpdateResponseHistoryItemChangeStatus;
+    committed_at: string;
+    url: string;
+    user: GistsUpdateResponseHistoryItemUser;
+    version: string;
+  };
+  type GistsUpdateResponseForksItemUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type GistsUpdateResponseForksItem = {
+    created_at: string;
+    id: string;
+    updated_at: string;
+    url: string;
+    user: GistsUpdateResponseForksItemUser;
+  };
+  type GistsUpdateResponseFilesNewFileTxt = {
+    content: string;
+    filename: string;
+    language: string;
+    raw_url: string;
+    size: number;
+    truncated: boolean;
+    type: string;
+  };
+  type GistsUpdateResponseFilesHelloWorldRb = {
+    content: string;
+    filename: string;
+    language: string;
+    raw_url: string;
+    size: number;
+    truncated: boolean;
+    type: string;
+  };
+  type GistsUpdateResponseFilesHelloWorldPy = {
+    content: string;
+    filename: string;
+    language: string;
+    raw_url: string;
+    size: number;
+    truncated: boolean;
+    type: string;
+  };
+  type GistsUpdateResponseFilesHelloWorldMd = {
+    content: string;
+    filename: string;
+    language: string;
+    raw_url: string;
+    size: number;
+    truncated: boolean;
+    type: string;
+  };
+  type GistsUpdateResponseFiles = {
+    "hello_world.md": GistsUpdateResponseFilesHelloWorldMd;
+    "hello_world.py": GistsUpdateResponseFilesHelloWorldPy;
+    "hello_world.rb": GistsUpdateResponseFilesHelloWorldRb;
+    "new_file.txt": GistsUpdateResponseFilesNewFileTxt;
+  };
+  type GistsUpdateResponse = {
+    comments: number;
+    comments_url: string;
+    commits_url: string;
+    created_at: string;
+    description: string;
+    files: GistsUpdateResponseFiles;
+    forks: Array<GistsUpdateResponseForksItem>;
+    forks_url: string;
+    git_pull_url: string;
+    git_push_url: string;
+    history: Array<GistsUpdateResponseHistoryItem>;
+    html_url: string;
+    id: string;
+    node_id: string;
+    owner: GistsUpdateResponseOwner;
+    public: boolean;
+    truncated: boolean;
+    updated_at: string;
+    url: string;
+    user: null;
+  };
+  type GistsListStarredResponseItemOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type GistsListStarredResponseItemFilesHelloWorldRb = {
+    filename: string;
+    language: string;
+    raw_url: string;
+    size: number;
+    type: string;
+  };
+  type GistsListStarredResponseItemFiles = {
+    "hello_world.rb": GistsListStarredResponseItemFilesHelloWorldRb;
+  };
+  type GistsListStarredResponseItem = {
+    comments: number;
+    comments_url: string;
+    commits_url: string;
+    created_at: string;
+    description: string;
+    files: GistsListStarredResponseItemFiles;
+    forks_url: string;
+    git_pull_url: string;
+    git_push_url: string;
+    html_url: string;
+    id: string;
+    node_id: string;
+    owner: GistsListStarredResponseItemOwner;
+    public: boolean;
+    truncated: boolean;
+    updated_at: string;
+    url: string;
+    user: null;
+  };
+  type GistsListPublicForUserResponseItemOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type GistsListPublicForUserResponseItemFilesHelloWorldRb = {
+    filename: string;
+    language: string;
+    raw_url: string;
+    size: number;
+    type: string;
+  };
+  type GistsListPublicForUserResponseItemFiles = {
+    "hello_world.rb": GistsListPublicForUserResponseItemFilesHelloWorldRb;
+  };
+  type GistsListPublicForUserResponseItem = {
+    comments: number;
+    comments_url: string;
+    commits_url: string;
+    created_at: string;
+    description: string;
+    files: GistsListPublicForUserResponseItemFiles;
+    forks_url: string;
+    git_pull_url: string;
+    git_push_url: string;
+    html_url: string;
+    id: string;
+    node_id: string;
+    owner: GistsListPublicForUserResponseItemOwner;
+    public: boolean;
+    truncated: boolean;
+    updated_at: string;
+    url: string;
+    user: null;
+  };
+  type GistsListPublicResponseItemOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type GistsListPublicResponseItemFilesHelloWorldRb = {
+    filename: string;
+    language: string;
+    raw_url: string;
+    size: number;
+    type: string;
+  };
+  type GistsListPublicResponseItemFiles = {
+    "hello_world.rb": GistsListPublicResponseItemFilesHelloWorldRb;
+  };
+  type GistsListPublicResponseItem = {
+    comments: number;
+    comments_url: string;
+    commits_url: string;
+    created_at: string;
+    description: string;
+    files: GistsListPublicResponseItemFiles;
+    forks_url: string;
+    git_pull_url: string;
+    git_push_url: string;
+    html_url: string;
+    id: string;
+    node_id: string;
+    owner: GistsListPublicResponseItemOwner;
+    public: boolean;
+    truncated: boolean;
+    updated_at: string;
+    url: string;
+    user: null;
+  };
+  type GistsListForksResponseItemUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type GistsListForksResponseItem = {
+    created_at: string;
+    id: string;
+    updated_at: string;
+    url: string;
+    user: GistsListForksResponseItemUser;
+  };
+  type GistsListCommitsResponseItemUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type GistsListCommitsResponseItemChangeStatus = {
+    additions: number;
+    deletions: number;
+    total: number;
+  };
+  type GistsListCommitsResponseItem = {
+    change_status: GistsListCommitsResponseItemChangeStatus;
+    committed_at: string;
+    url: string;
+    user: GistsListCommitsResponseItemUser;
+    version: string;
+  };
+  type GistsListCommentsResponseItemUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type GistsListCommentsResponseItem = {
+    body: string;
+    created_at: string;
+    id: number;
+    node_id: string;
+    updated_at: string;
+    url: string;
+    user: GistsListCommentsResponseItemUser;
+  };
+  type GistsListResponseItemOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type GistsListResponseItemFilesHelloWorldRb = {
+    filename: string;
+    language: string;
+    raw_url: string;
+    size: number;
+    type: string;
+  };
+  type GistsListResponseItemFiles = {
+    "hello_world.rb": GistsListResponseItemFilesHelloWorldRb;
+  };
+  type GistsListResponseItem = {
+    comments: number;
+    comments_url: string;
+    commits_url: string;
+    created_at: string;
+    description: string;
+    files: GistsListResponseItemFiles;
+    forks_url: string;
+    git_pull_url: string;
+    git_push_url: string;
+    html_url: string;
+    id: string;
+    node_id: string;
+    owner: GistsListResponseItemOwner;
+    public: boolean;
+    truncated: boolean;
+    updated_at: string;
+    url: string;
+    user: null;
+  };
+  type GistsGetRevisionResponseOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type GistsGetRevisionResponseHistoryItemUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type GistsGetRevisionResponseHistoryItemChangeStatus = {
+    additions: number;
+    deletions: number;
+    total: number;
+  };
+  type GistsGetRevisionResponseHistoryItem = {
+    change_status: GistsGetRevisionResponseHistoryItemChangeStatus;
+    committed_at: string;
+    url: string;
+    user: GistsGetRevisionResponseHistoryItemUser;
+    version: string;
+  };
+  type GistsGetRevisionResponseForksItemUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type GistsGetRevisionResponseForksItem = {
+    created_at: string;
+    id: string;
+    updated_at: string;
+    url: string;
+    user: GistsGetRevisionResponseForksItemUser;
+  };
+  type GistsGetRevisionResponseFilesHelloWorldRubyTxt = {
+    content: string;
+    filename: string;
+    language: string;
+    raw_url: string;
+    size: number;
+    truncated: boolean;
+    type: string;
+  };
+  type GistsGetRevisionResponseFilesHelloWorldPythonTxt = {
+    content: string;
+    filename: string;
+    language: string;
+    raw_url: string;
+    size: number;
+    truncated: boolean;
+    type: string;
+  };
+  type GistsGetRevisionResponseFilesHelloWorldRb = {
+    content: string;
+    filename: string;
+    language: string;
+    raw_url: string;
+    size: number;
+    truncated: boolean;
+    type: string;
+  };
+  type GistsGetRevisionResponseFilesHelloWorldPy = {
+    content: string;
+    filename: string;
+    language: string;
+    raw_url: string;
+    size: number;
+    truncated: boolean;
+    type: string;
+  };
+  type GistsGetRevisionResponseFiles = {
+    "hello_world.py": GistsGetRevisionResponseFilesHelloWorldPy;
+    "hello_world.rb": GistsGetRevisionResponseFilesHelloWorldRb;
+    "hello_world_python.txt": GistsGetRevisionResponseFilesHelloWorldPythonTxt;
+    "hello_world_ruby.txt": GistsGetRevisionResponseFilesHelloWorldRubyTxt;
+  };
+  type GistsGetRevisionResponse = {
+    comments: number;
+    comments_url: string;
+    commits_url: string;
+    created_at: string;
+    description: string;
+    files: GistsGetRevisionResponseFiles;
+    forks: Array<GistsGetRevisionResponseForksItem>;
+    forks_url: string;
+    git_pull_url: string;
+    git_push_url: string;
+    history: Array<GistsGetRevisionResponseHistoryItem>;
+    html_url: string;
+    id: string;
+    node_id: string;
+    owner: GistsGetRevisionResponseOwner;
+    public: boolean;
+    truncated: boolean;
+    updated_at: string;
+    url: string;
+    user: null;
+  };
+  type GistsGetCommentResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type GistsGetCommentResponse = {
+    body: string;
+    created_at: string;
+    id: number;
+    node_id: string;
+    updated_at: string;
+    url: string;
+    user: GistsGetCommentResponseUser;
+  };
+  type GistsGetResponseOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type GistsGetResponseHistoryItemUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type GistsGetResponseHistoryItemChangeStatus = {
+    additions: number;
+    deletions: number;
+    total: number;
+  };
+  type GistsGetResponseHistoryItem = {
+    change_status: GistsGetResponseHistoryItemChangeStatus;
+    committed_at: string;
+    url: string;
+    user: GistsGetResponseHistoryItemUser;
+    version: string;
+  };
+  type GistsGetResponseForksItemUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type GistsGetResponseForksItem = {
+    created_at: string;
+    id: string;
+    updated_at: string;
+    url: string;
+    user: GistsGetResponseForksItemUser;
+  };
+  type GistsGetResponseFilesHelloWorldRubyTxt = {
+    content: string;
+    filename: string;
+    language: string;
+    raw_url: string;
+    size: number;
+    truncated: boolean;
+    type: string;
+  };
+  type GistsGetResponseFilesHelloWorldPythonTxt = {
+    content: string;
+    filename: string;
+    language: string;
+    raw_url: string;
+    size: number;
+    truncated: boolean;
+    type: string;
+  };
+  type GistsGetResponseFilesHelloWorldRb = {
+    content: string;
+    filename: string;
+    language: string;
+    raw_url: string;
+    size: number;
+    truncated: boolean;
+    type: string;
+  };
+  type GistsGetResponseFilesHelloWorldPy = {
+    content: string;
+    filename: string;
+    language: string;
+    raw_url: string;
+    size: number;
+    truncated: boolean;
+    type: string;
+  };
+  type GistsGetResponseFiles = {
+    "hello_world.py": GistsGetResponseFilesHelloWorldPy;
+    "hello_world.rb": GistsGetResponseFilesHelloWorldRb;
+    "hello_world_python.txt": GistsGetResponseFilesHelloWorldPythonTxt;
+    "hello_world_ruby.txt": GistsGetResponseFilesHelloWorldRubyTxt;
+  };
+  type GistsGetResponse = {
+    comments: number;
+    comments_url: string;
+    commits_url: string;
+    created_at: string;
+    description: string;
+    files: GistsGetResponseFiles;
+    forks: Array<GistsGetResponseForksItem>;
+    forks_url: string;
+    git_pull_url: string;
+    git_push_url: string;
+    history: Array<GistsGetResponseHistoryItem>;
+    html_url: string;
+    id: string;
+    node_id: string;
+    owner: GistsGetResponseOwner;
+    public: boolean;
+    truncated: boolean;
+    updated_at: string;
+    url: string;
+    user: null;
+  };
+  type GistsForkResponseOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type GistsForkResponseFilesHelloWorldRb = {
+    filename: string;
+    language: string;
+    raw_url: string;
+    size: number;
+    type: string;
+  };
+  type GistsForkResponseFiles = {
+    "hello_world.rb": GistsForkResponseFilesHelloWorldRb;
+  };
+  type GistsForkResponse = {
+    comments: number;
+    comments_url: string;
+    commits_url: string;
+    created_at: string;
+    description: string;
+    files: GistsForkResponseFiles;
+    forks_url: string;
+    git_pull_url: string;
+    git_push_url: string;
+    html_url: string;
+    id: string;
+    node_id: string;
+    owner: GistsForkResponseOwner;
+    public: boolean;
+    truncated: boolean;
+    updated_at: string;
+    url: string;
+    user: null;
+  };
+  type GistsCreateCommentResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type GistsCreateCommentResponse = {
+    body: string;
+    created_at: string;
+    id: number;
+    node_id: string;
+    updated_at: string;
+    url: string;
+    user: GistsCreateCommentResponseUser;
+  };
+  type GistsCreateResponseOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type GistsCreateResponseHistoryItemUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type GistsCreateResponseHistoryItemChangeStatus = {
+    additions: number;
+    deletions: number;
+    total: number;
+  };
+  type GistsCreateResponseHistoryItem = {
+    change_status: GistsCreateResponseHistoryItemChangeStatus;
+    committed_at: string;
+    url: string;
+    user: GistsCreateResponseHistoryItemUser;
+    version: string;
+  };
+  type GistsCreateResponseForksItemUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type GistsCreateResponseForksItem = {
+    created_at: string;
+    id: string;
+    updated_at: string;
+    url: string;
+    user: GistsCreateResponseForksItemUser;
+  };
+  type GistsCreateResponseFilesHelloWorldRubyTxt = {
+    content: string;
+    filename: string;
+    language: string;
+    raw_url: string;
+    size: number;
+    truncated: boolean;
+    type: string;
+  };
+  type GistsCreateResponseFilesHelloWorldPythonTxt = {
+    content: string;
+    filename: string;
+    language: string;
+    raw_url: string;
+    size: number;
+    truncated: boolean;
+    type: string;
+  };
+  type GistsCreateResponseFilesHelloWorldRb = {
+    content: string;
+    filename: string;
+    language: string;
+    raw_url: string;
+    size: number;
+    truncated: boolean;
+    type: string;
+  };
+  type GistsCreateResponseFilesHelloWorldPy = {
+    content: string;
+    filename: string;
+    language: string;
+    raw_url: string;
+    size: number;
+    truncated: boolean;
+    type: string;
+  };
+  type GistsCreateResponseFiles = {
+    "hello_world.py": GistsCreateResponseFilesHelloWorldPy;
+    "hello_world.rb": GistsCreateResponseFilesHelloWorldRb;
+    "hello_world_python.txt": GistsCreateResponseFilesHelloWorldPythonTxt;
+    "hello_world_ruby.txt": GistsCreateResponseFilesHelloWorldRubyTxt;
+  };
+  type GistsCreateResponse = {
+    comments: number;
+    comments_url: string;
+    commits_url: string;
+    created_at: string;
+    description: string;
+    files: GistsCreateResponseFiles;
+    forks: Array<GistsCreateResponseForksItem>;
+    forks_url: string;
+    git_pull_url: string;
+    git_push_url: string;
+    history: Array<GistsCreateResponseHistoryItem>;
+    html_url: string;
+    id: string;
+    node_id: string;
+    owner: GistsCreateResponseOwner;
+    public: boolean;
+    truncated: boolean;
+    updated_at: string;
+    url: string;
+    user: null;
+  };
+  type CodesOfConductListConductCodesResponseItem = {
+    key: string;
+    name: string;
+    url: string;
+  };
+  type CodesOfConductGetForRepoResponse = {
+    body: string;
+    key: string;
+    name: string;
+    url: string;
+  };
+  type CodesOfConductGetConductCodeResponse = {
+    body: string;
+    key: string;
+    name: string;
+    url: string;
+  };
+  type ChecksUpdateResponsePullRequestsItemHeadRepo = {
+    id: number;
+    name: string;
+    url: string;
+  };
+  type ChecksUpdateResponsePullRequestsItemHead = {
+    ref: string;
+    repo: ChecksUpdateResponsePullRequestsItemHeadRepo;
+    sha: string;
+  };
+  type ChecksUpdateResponsePullRequestsItemBaseRepo = {
+    id: number;
+    name: string;
+    url: string;
+  };
+  type ChecksUpdateResponsePullRequestsItemBase = {
+    ref: string;
+    repo: ChecksUpdateResponsePullRequestsItemBaseRepo;
+    sha: string;
+  };
+  type ChecksUpdateResponsePullRequestsItem = {
+    base: ChecksUpdateResponsePullRequestsItemBase;
+    head: ChecksUpdateResponsePullRequestsItemHead;
+    id: number;
+    number: number;
+    url: string;
+  };
+  type ChecksUpdateResponseOutput = {
+    annotations_count: number;
+    annotations_url: string;
+    summary: string;
+    text: string;
+    title: string;
+  };
+  type ChecksUpdateResponseCheckSuite = { id: number };
+  type ChecksUpdateResponseAppPermissions = {
+    contents: string;
+    issues: string;
+    metadata: string;
+    single_file: string;
+  };
+  type ChecksUpdateResponseAppOwner = {
+    avatar_url: string;
+    description: string;
+    events_url: string;
+    hooks_url: string;
+    id: number;
+    issues_url: string;
+    login: string;
+    members_url: string;
+    node_id: string;
+    public_members_url: string;
+    repos_url: string;
+    url: string;
+  };
+  type ChecksUpdateResponseApp = {
+    created_at: string;
+    description: string;
+    events: Array<string>;
+    external_url: string;
+    html_url: string;
+    id: number;
+    name: string;
+    node_id: string;
+    owner: ChecksUpdateResponseAppOwner;
+    permissions: ChecksUpdateResponseAppPermissions;
+    slug: string;
+    updated_at: string;
+  };
+  type ChecksUpdateResponse = {
+    app: ChecksUpdateResponseApp;
+    check_suite: ChecksUpdateResponseCheckSuite;
+    completed_at: string;
+    conclusion: string;
+    details_url: string;
+    external_id: string;
+    head_sha: string;
+    html_url: string;
+    id: number;
+    name: string;
+    node_id: string;
+    output: ChecksUpdateResponseOutput;
+    pull_requests: Array<ChecksUpdateResponsePullRequestsItem>;
+    started_at: string;
+    status: string;
+    url: string;
+  };
+  type ChecksSetSuitesPreferencesResponseRepositoryPermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type ChecksSetSuitesPreferencesResponseRepositoryOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ChecksSetSuitesPreferencesResponseRepository = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: ChecksSetSuitesPreferencesResponseRepositoryOwner;
+    permissions: ChecksSetSuitesPreferencesResponseRepositoryPermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type ChecksSetSuitesPreferencesResponsePreferencesAutoTriggerChecksItem = {
+    app_id: number;
+    setting: boolean;
+  };
+  type ChecksSetSuitesPreferencesResponsePreferences = {
+    auto_trigger_checks: Array<
+      ChecksSetSuitesPreferencesResponsePreferencesAutoTriggerChecksItem
+    >;
+  };
+  type ChecksSetSuitesPreferencesResponse = {
+    preferences: ChecksSetSuitesPreferencesResponsePreferences;
+    repository: ChecksSetSuitesPreferencesResponseRepository;
+  };
+  type ChecksListSuitesForRefResponseCheckSuitesItemRepositoryPermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type ChecksListSuitesForRefResponseCheckSuitesItemRepositoryOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ChecksListSuitesForRefResponseCheckSuitesItemRepository = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: ChecksListSuitesForRefResponseCheckSuitesItemRepositoryOwner;
+    permissions: ChecksListSuitesForRefResponseCheckSuitesItemRepositoryPermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type ChecksListSuitesForRefResponseCheckSuitesItemAppPermissions = {
+    contents: string;
+    issues: string;
+    metadata: string;
+    single_file: string;
+  };
+  type ChecksListSuitesForRefResponseCheckSuitesItemAppOwner = {
+    avatar_url: string;
+    description: string;
+    events_url: string;
+    hooks_url: string;
+    id: number;
+    issues_url: string;
+    login: string;
+    members_url: string;
+    node_id: string;
+    public_members_url: string;
+    repos_url: string;
+    url: string;
+  };
+  type ChecksListSuitesForRefResponseCheckSuitesItemApp = {
+    created_at: string;
+    description: string;
+    events: Array<string>;
+    external_url: string;
+    html_url: string;
+    id: number;
+    name: string;
+    node_id: string;
+    owner: ChecksListSuitesForRefResponseCheckSuitesItemAppOwner;
+    permissions: ChecksListSuitesForRefResponseCheckSuitesItemAppPermissions;
+    slug: string;
+    updated_at: string;
+  };
+  type ChecksListSuitesForRefResponseCheckSuitesItem = {
+    after: string;
+    app: ChecksListSuitesForRefResponseCheckSuitesItemApp;
+    before: string;
+    conclusion: string;
+    head_branch: string;
+    head_sha: string;
+    id: number;
+    node_id: string;
+    pull_requests: Array<any>;
+    repository: ChecksListSuitesForRefResponseCheckSuitesItemRepository;
+    status: string;
+    url: string;
+  };
+  type ChecksListSuitesForRefResponse = {
+    check_suites: Array<ChecksListSuitesForRefResponseCheckSuitesItem>;
+    total_count: number;
+  };
+  type ChecksListForSuiteResponseCheckRunsItemPullRequestsItemHeadRepo = {
+    id: number;
+    name: string;
+    url: string;
+  };
+  type ChecksListForSuiteResponseCheckRunsItemPullRequestsItemHead = {
+    ref: string;
+    repo: ChecksListForSuiteResponseCheckRunsItemPullRequestsItemHeadRepo;
+    sha: string;
+  };
+  type ChecksListForSuiteResponseCheckRunsItemPullRequestsItemBaseRepo = {
+    id: number;
+    name: string;
+    url: string;
+  };
+  type ChecksListForSuiteResponseCheckRunsItemPullRequestsItemBase = {
+    ref: string;
+    repo: ChecksListForSuiteResponseCheckRunsItemPullRequestsItemBaseRepo;
+    sha: string;
+  };
+  type ChecksListForSuiteResponseCheckRunsItemPullRequestsItem = {
+    base: ChecksListForSuiteResponseCheckRunsItemPullRequestsItemBase;
+    head: ChecksListForSuiteResponseCheckRunsItemPullRequestsItemHead;
+    id: number;
+    number: number;
+    url: string;
+  };
+  type ChecksListForSuiteResponseCheckRunsItemOutput = {
+    annotations_count: number;
+    annotations_url: string;
+    summary: string;
+    text: string;
+    title: string;
+  };
+  type ChecksListForSuiteResponseCheckRunsItemCheckSuite = { id: number };
+  type ChecksListForSuiteResponseCheckRunsItemAppPermissions = {
+    contents: string;
+    issues: string;
+    metadata: string;
+    single_file: string;
+  };
+  type ChecksListForSuiteResponseCheckRunsItemAppOwner = {
+    avatar_url: string;
+    description: string;
+    events_url: string;
+    hooks_url: string;
+    id: number;
+    issues_url: string;
+    login: string;
+    members_url: string;
+    node_id: string;
+    public_members_url: string;
+    repos_url: string;
+    url: string;
+  };
+  type ChecksListForSuiteResponseCheckRunsItemApp = {
+    created_at: string;
+    description: string;
+    events: Array<string>;
+    external_url: string;
+    html_url: string;
+    id: number;
+    name: string;
+    node_id: string;
+    owner: ChecksListForSuiteResponseCheckRunsItemAppOwner;
+    permissions: ChecksListForSuiteResponseCheckRunsItemAppPermissions;
+    slug: string;
+    updated_at: string;
+  };
+  type ChecksListForSuiteResponseCheckRunsItem = {
+    app: ChecksListForSuiteResponseCheckRunsItemApp;
+    check_suite: ChecksListForSuiteResponseCheckRunsItemCheckSuite;
+    completed_at: string;
+    conclusion: string;
+    details_url: string;
+    external_id: string;
+    head_sha: string;
+    html_url: string;
+    id: number;
+    name: string;
+    node_id: string;
+    output: ChecksListForSuiteResponseCheckRunsItemOutput;
+    pull_requests: Array<
+      ChecksListForSuiteResponseCheckRunsItemPullRequestsItem
+    >;
+    started_at: string;
+    status: string;
+    url: string;
+  };
+  type ChecksListForSuiteResponse = {
+    check_runs: Array<ChecksListForSuiteResponseCheckRunsItem>;
+    total_count: number;
+  };
+  type ChecksListForRefResponseCheckRunsItemPullRequestsItemHeadRepo = {
+    id: number;
+    name: string;
+    url: string;
+  };
+  type ChecksListForRefResponseCheckRunsItemPullRequestsItemHead = {
+    ref: string;
+    repo: ChecksListForRefResponseCheckRunsItemPullRequestsItemHeadRepo;
+    sha: string;
+  };
+  type ChecksListForRefResponseCheckRunsItemPullRequestsItemBaseRepo = {
+    id: number;
+    name: string;
+    url: string;
+  };
+  type ChecksListForRefResponseCheckRunsItemPullRequestsItemBase = {
+    ref: string;
+    repo: ChecksListForRefResponseCheckRunsItemPullRequestsItemBaseRepo;
+    sha: string;
+  };
+  type ChecksListForRefResponseCheckRunsItemPullRequestsItem = {
+    base: ChecksListForRefResponseCheckRunsItemPullRequestsItemBase;
+    head: ChecksListForRefResponseCheckRunsItemPullRequestsItemHead;
+    id: number;
+    number: number;
+    url: string;
+  };
+  type ChecksListForRefResponseCheckRunsItemOutput = {
+    annotations_count: number;
+    annotations_url: string;
+    summary: string;
+    text: string;
+    title: string;
+  };
+  type ChecksListForRefResponseCheckRunsItemCheckSuite = { id: number };
+  type ChecksListForRefResponseCheckRunsItemAppPermissions = {
+    contents: string;
+    issues: string;
+    metadata: string;
+    single_file: string;
+  };
+  type ChecksListForRefResponseCheckRunsItemAppOwner = {
+    avatar_url: string;
+    description: string;
+    events_url: string;
+    hooks_url: string;
+    id: number;
+    issues_url: string;
+    login: string;
+    members_url: string;
+    node_id: string;
+    public_members_url: string;
+    repos_url: string;
+    url: string;
+  };
+  type ChecksListForRefResponseCheckRunsItemApp = {
+    created_at: string;
+    description: string;
+    events: Array<string>;
+    external_url: string;
+    html_url: string;
+    id: number;
+    name: string;
+    node_id: string;
+    owner: ChecksListForRefResponseCheckRunsItemAppOwner;
+    permissions: ChecksListForRefResponseCheckRunsItemAppPermissions;
+    slug: string;
+    updated_at: string;
+  };
+  type ChecksListForRefResponseCheckRunsItem = {
+    app: ChecksListForRefResponseCheckRunsItemApp;
+    check_suite: ChecksListForRefResponseCheckRunsItemCheckSuite;
+    completed_at: string;
+    conclusion: string;
+    details_url: string;
+    external_id: string;
+    head_sha: string;
+    html_url: string;
+    id: number;
+    name: string;
+    node_id: string;
+    output: ChecksListForRefResponseCheckRunsItemOutput;
+    pull_requests: Array<ChecksListForRefResponseCheckRunsItemPullRequestsItem>;
+    started_at: string;
+    status: string;
+    url: string;
+  };
+  type ChecksListForRefResponse = {
+    check_runs: Array<ChecksListForRefResponseCheckRunsItem>;
+    total_count: number;
+  };
+  type ChecksListAnnotationsResponseItem = {
+    annotation_level: string;
+    end_column: number;
+    end_line: number;
+    message: string;
+    path: string;
+    raw_details: string;
+    start_column: number;
+    start_line: number;
+    title: string;
+  };
+  type ChecksGetSuiteResponseRepositoryPermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type ChecksGetSuiteResponseRepositoryOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ChecksGetSuiteResponseRepository = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: ChecksGetSuiteResponseRepositoryOwner;
+    permissions: ChecksGetSuiteResponseRepositoryPermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type ChecksGetSuiteResponseAppPermissions = {
+    contents: string;
+    issues: string;
+    metadata: string;
+    single_file: string;
+  };
+  type ChecksGetSuiteResponseAppOwner = {
+    avatar_url: string;
+    description: string;
+    events_url: string;
+    hooks_url: string;
+    id: number;
+    issues_url: string;
+    login: string;
+    members_url: string;
+    node_id: string;
+    public_members_url: string;
+    repos_url: string;
+    url: string;
+  };
+  type ChecksGetSuiteResponseApp = {
+    created_at: string;
+    description: string;
+    events: Array<string>;
+    external_url: string;
+    html_url: string;
+    id: number;
+    name: string;
+    node_id: string;
+    owner: ChecksGetSuiteResponseAppOwner;
+    permissions: ChecksGetSuiteResponseAppPermissions;
+    slug: string;
+    updated_at: string;
+  };
+  type ChecksGetSuiteResponse = {
+    after: string;
+    app: ChecksGetSuiteResponseApp;
+    before: string;
+    conclusion: string;
+    head_branch: string;
+    head_sha: string;
+    id: number;
+    node_id: string;
+    pull_requests: Array<any>;
+    repository: ChecksGetSuiteResponseRepository;
+    status: string;
+    url: string;
+  };
+  type ChecksGetResponsePullRequestsItemHeadRepo = {
+    id: number;
+    name: string;
+    url: string;
+  };
+  type ChecksGetResponsePullRequestsItemHead = {
+    ref: string;
+    repo: ChecksGetResponsePullRequestsItemHeadRepo;
+    sha: string;
+  };
+  type ChecksGetResponsePullRequestsItemBaseRepo = {
+    id: number;
+    name: string;
+    url: string;
+  };
+  type ChecksGetResponsePullRequestsItemBase = {
+    ref: string;
+    repo: ChecksGetResponsePullRequestsItemBaseRepo;
+    sha: string;
+  };
+  type ChecksGetResponsePullRequestsItem = {
+    base: ChecksGetResponsePullRequestsItemBase;
+    head: ChecksGetResponsePullRequestsItemHead;
+    id: number;
+    number: number;
+    url: string;
+  };
+  type ChecksGetResponseOutput = {
+    annotations_count: number;
+    annotations_url: string;
+    summary: string;
+    text: string;
+    title: string;
+  };
+  type ChecksGetResponseCheckSuite = { id: number };
+  type ChecksGetResponseAppPermissions = {
+    contents: string;
+    issues: string;
+    metadata: string;
+    single_file: string;
+  };
+  type ChecksGetResponseAppOwner = {
+    avatar_url: string;
+    description: string;
+    events_url: string;
+    hooks_url: string;
+    id: number;
+    issues_url: string;
+    login: string;
+    members_url: string;
+    node_id: string;
+    public_members_url: string;
+    repos_url: string;
+    url: string;
+  };
+  type ChecksGetResponseApp = {
+    created_at: string;
+    description: string;
+    events: Array<string>;
+    external_url: string;
+    html_url: string;
+    id: number;
+    name: string;
+    node_id: string;
+    owner: ChecksGetResponseAppOwner;
+    permissions: ChecksGetResponseAppPermissions;
+    slug: string;
+    updated_at: string;
+  };
+  type ChecksGetResponse = {
+    app: ChecksGetResponseApp;
+    check_suite: ChecksGetResponseCheckSuite;
+    completed_at: string;
+    conclusion: string;
+    details_url: string;
+    external_id: string;
+    head_sha: string;
+    html_url: string;
+    id: number;
+    name: string;
+    node_id: string;
+    output: ChecksGetResponseOutput;
+    pull_requests: Array<ChecksGetResponsePullRequestsItem>;
+    started_at: string;
+    status: string;
+    url: string;
+  };
+  type ChecksCreateSuiteResponseRepositoryPermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type ChecksCreateSuiteResponseRepositoryOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ChecksCreateSuiteResponseRepository = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: ChecksCreateSuiteResponseRepositoryOwner;
+    permissions: ChecksCreateSuiteResponseRepositoryPermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type ChecksCreateSuiteResponseAppPermissions = {
+    contents: string;
+    issues: string;
+    metadata: string;
+    single_file: string;
+  };
+  type ChecksCreateSuiteResponseAppOwner = {
+    avatar_url: string;
+    description: string;
+    events_url: string;
+    hooks_url: string;
+    id: number;
+    issues_url: string;
+    login: string;
+    members_url: string;
+    node_id: string;
+    public_members_url: string;
+    repos_url: string;
+    url: string;
+  };
+  type ChecksCreateSuiteResponseApp = {
+    created_at: string;
+    description: string;
+    events: Array<string>;
+    external_url: string;
+    html_url: string;
+    id: number;
+    name: string;
+    node_id: string;
+    owner: ChecksCreateSuiteResponseAppOwner;
+    permissions: ChecksCreateSuiteResponseAppPermissions;
+    slug: string;
+    updated_at: string;
+  };
+  type ChecksCreateSuiteResponse = {
+    after: string;
+    app: ChecksCreateSuiteResponseApp;
+    before: string;
+    conclusion: string;
+    head_branch: string;
+    head_sha: string;
+    id: number;
+    node_id: string;
+    pull_requests: Array<any>;
+    repository: ChecksCreateSuiteResponseRepository;
+    status: string;
+    url: string;
+  };
+  type ChecksCreateResponsePullRequestsItemHeadRepo = {
+    id: number;
+    name: string;
+    url: string;
+  };
+  type ChecksCreateResponsePullRequestsItemHead = {
+    ref: string;
+    repo: ChecksCreateResponsePullRequestsItemHeadRepo;
+    sha: string;
+  };
+  type ChecksCreateResponsePullRequestsItemBaseRepo = {
+    id: number;
+    name: string;
+    url: string;
+  };
+  type ChecksCreateResponsePullRequestsItemBase = {
+    ref: string;
+    repo: ChecksCreateResponsePullRequestsItemBaseRepo;
+    sha: string;
+  };
+  type ChecksCreateResponsePullRequestsItem = {
+    base: ChecksCreateResponsePullRequestsItemBase;
+    head: ChecksCreateResponsePullRequestsItemHead;
+    id: number;
+    number: number;
+    url: string;
+  };
+  type ChecksCreateResponseOutput = {
+    summary: string;
+    text: string;
+    title: string;
+    annotations_count?: number;
+    annotations_url?: string;
+  };
+  type ChecksCreateResponseCheckSuite = { id: number };
+  type ChecksCreateResponseAppPermissions = {
+    contents: string;
+    issues: string;
+    metadata: string;
+    single_file: string;
+  };
+  type ChecksCreateResponseAppOwner = {
+    avatar_url: string;
+    description: string;
+    events_url: string;
+    hooks_url: string;
+    id: number;
+    issues_url: string;
+    login: string;
+    members_url: string;
+    node_id: string;
+    public_members_url: string;
+    repos_url: string;
+    url: string;
+  };
+  type ChecksCreateResponseApp = {
+    created_at: string;
+    description: string;
+    events: Array<string>;
+    external_url: string;
+    html_url: string;
+    id: number;
+    name: string;
+    node_id: string;
+    owner: ChecksCreateResponseAppOwner;
+    permissions: ChecksCreateResponseAppPermissions;
+    slug: string;
+    updated_at: string;
+  };
+  type ChecksCreateResponse = {
+    app: ChecksCreateResponseApp;
+    check_suite: ChecksCreateResponseCheckSuite;
+    completed_at: null | string;
+    conclusion: null | string;
+    details_url: string;
+    external_id: string;
+    head_sha: string;
+    html_url: string;
+    id: number;
+    name: string;
+    node_id: string;
+    output: ChecksCreateResponseOutput;
+    pull_requests: Array<ChecksCreateResponsePullRequestsItem>;
+    started_at: string;
+    status: string;
+    url: string;
+  };
+  type AppsResetTokenResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type AppsResetTokenResponseApp = {
+    client_id: string;
+    name: string;
+    url: string;
+  };
+  type AppsResetTokenResponse = {
+    app: AppsResetTokenResponseApp;
+    created_at: string;
+    fingerprint: string;
+    hashed_token: string;
+    id: number;
+    note: string;
+    note_url: string;
+    scopes: Array<string>;
+    token: string;
+    token_last_eight: string;
+    updated_at: string;
+    url: string;
+    user: AppsResetTokenResponseUser;
+  };
+  type AppsResetAuthorizationResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type AppsResetAuthorizationResponseApp = {
+    client_id: string;
+    name: string;
+    url: string;
+  };
+  type AppsResetAuthorizationResponse = {
+    app: AppsResetAuthorizationResponseApp;
+    created_at: string;
+    fingerprint: string;
+    hashed_token: string;
+    id: number;
+    note: string;
+    note_url: string;
+    scopes: Array<string>;
+    token: string;
+    token_last_eight: string;
+    updated_at: string;
+    url: string;
+    user: AppsResetAuthorizationResponseUser;
+  };
+  type AppsListReposResponseRepositoriesItemOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type AppsListReposResponseRepositoriesItem = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: AppsListReposResponseRepositoriesItemOwner;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type AppsListReposResponse = {
+    repositories: Array<AppsListReposResponseRepositoriesItem>;
+    total_count: number;
+  };
+  type AppsListPlansStubbedResponseItem = {
+    accounts_url: string;
+    bullets: Array<string>;
+    description: string;
+    has_free_trial: boolean;
+    id: number;
+    monthly_price_in_cents: number;
+    name: string;
+    number: number;
+    price_model: string;
+    state: string;
+    unit_name: null;
+    url: string;
+    yearly_price_in_cents: number;
+  };
+  type AppsListPlansResponseItem = {
+    accounts_url: string;
+    bullets: Array<string>;
+    description: string;
+    has_free_trial: boolean;
+    id: number;
+    monthly_price_in_cents: number;
+    name: string;
+    number: number;
+    price_model: string;
+    state: string;
+    unit_name: null;
+    url: string;
+    yearly_price_in_cents: number;
+  };
+  type AppsListMarketplacePurchasesForAuthenticatedUserStubbedResponseItemPlan = {
+    accounts_url: string;
+    bullets: Array<string>;
+    description: string;
+    has_free_trial: boolean;
+    id: number;
+    monthly_price_in_cents: number;
+    name: string;
+    number: number;
+    price_model: string;
+    state: string;
+    unit_name: null;
+    url: string;
+    yearly_price_in_cents: number;
+  };
+  type AppsListMarketplacePurchasesForAuthenticatedUserStubbedResponseItemAccount = {
+    email: null;
+    id: number;
+    login: string;
+    organization_billing_email: string;
+    type: string;
+    url: string;
+  };
+  type AppsListMarketplacePurchasesForAuthenticatedUserStubbedResponseItem = {
+    account: AppsListMarketplacePurchasesForAuthenticatedUserStubbedResponseItemAccount;
+    billing_cycle: string;
+    free_trial_ends_on: string;
+    next_billing_date: string;
+    on_free_trial: boolean;
+    plan: AppsListMarketplacePurchasesForAuthenticatedUserStubbedResponseItemPlan;
+    unit_count: null;
+    updated_at: string;
+  };
+  type AppsListMarketplacePurchasesForAuthenticatedUserResponseItemPlan = {
+    accounts_url: string;
+    bullets: Array<string>;
+    description: string;
+    has_free_trial: boolean;
+    id: number;
+    monthly_price_in_cents: number;
+    name: string;
+    number: number;
+    price_model: string;
+    state: string;
+    unit_name: null;
+    url: string;
+    yearly_price_in_cents: number;
+  };
+  type AppsListMarketplacePurchasesForAuthenticatedUserResponseItemAccount = {
+    email: null;
+    id: number;
+    login: string;
+    organization_billing_email: string;
+    type: string;
+    url: string;
+  };
+  type AppsListMarketplacePurchasesForAuthenticatedUserResponseItem = {
+    account: AppsListMarketplacePurchasesForAuthenticatedUserResponseItemAccount;
+    billing_cycle: string;
+    free_trial_ends_on: string;
+    next_billing_date: string;
+    on_free_trial: boolean;
+    plan: AppsListMarketplacePurchasesForAuthenticatedUserResponseItemPlan;
+    unit_count: null;
+    updated_at: string;
+  };
+  type AppsListInstallationsForAuthenticatedUserResponseInstallationsItemPermissions = {
+    contents: string;
+    issues: string;
+    metadata: string;
+    single_file: string;
+  };
+  type AppsListInstallationsForAuthenticatedUserResponseInstallationsItemAccount = {
+    avatar_url: string;
+    description?: string;
+    events_url: string;
+    hooks_url?: string;
+    id: number;
+    issues_url?: string;
+    login: string;
+    members_url?: string;
+    node_id: string;
+    public_members_url?: string;
+    repos_url: string;
+    url: string;
+    followers_url?: string;
+    following_url?: string;
+    gists_url?: string;
+    gravatar_id?: string;
+    html_url?: string;
+    organizations_url?: string;
+    received_events_url?: string;
+    site_admin?: boolean;
+    starred_url?: string;
+    subscriptions_url?: string;
+    type?: string;
+  };
+  type AppsListInstallationsForAuthenticatedUserResponseInstallationsItem = {
+    access_tokens_url: string;
+    account: AppsListInstallationsForAuthenticatedUserResponseInstallationsItemAccount;
+    app_id: number;
+    events: Array<string>;
+    html_url: string;
+    id: number;
+    permissions: AppsListInstallationsForAuthenticatedUserResponseInstallationsItemPermissions;
+    repositories_url: string;
+    single_file_name: string;
+    target_id: number;
+    target_type: string;
+  };
+  type AppsListInstallationsForAuthenticatedUserResponse = {
+    installations: Array<
+      AppsListInstallationsForAuthenticatedUserResponseInstallationsItem
+    >;
+    total_count: number;
+  };
+  type AppsListInstallationsResponseItemPermissions = {
+    contents: string;
+    issues: string;
+    metadata: string;
+    single_file: string;
+  };
+  type AppsListInstallationsResponseItemAccount = {
+    avatar_url: string;
+    description: string;
+    events_url: string;
+    hooks_url: string;
+    id: number;
+    issues_url: string;
+    login: string;
+    members_url: string;
+    node_id: string;
+    public_members_url: string;
+    repos_url: string;
+    url: string;
+  };
+  type AppsListInstallationsResponseItem = {
+    access_tokens_url: string;
+    account: AppsListInstallationsResponseItemAccount;
+    app_id: number;
+    events: Array<string>;
+    html_url: string;
+    id: number;
+    permissions: AppsListInstallationsResponseItemPermissions;
+    repositories_url: string;
+    repository_selection: string;
+    single_file_name: string;
+    target_id: number;
+    target_type: string;
+  };
+  type AppsListInstallationReposForAuthenticatedUserResponseRepositoriesItemPermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type AppsListInstallationReposForAuthenticatedUserResponseRepositoriesItemOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type AppsListInstallationReposForAuthenticatedUserResponseRepositoriesItem = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: AppsListInstallationReposForAuthenticatedUserResponseRepositoriesItemOwner;
+    permissions: AppsListInstallationReposForAuthenticatedUserResponseRepositoriesItemPermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type AppsListInstallationReposForAuthenticatedUserResponse = {
+    repositories: Array<
+      AppsListInstallationReposForAuthenticatedUserResponseRepositoriesItem
+    >;
+    total_count: number;
+  };
+  type AppsListAccountsUserOrOrgOnPlanStubbedResponseItemMarketplacePurchasePlan = {
+    accounts_url: string;
+    bullets: Array<string>;
+    description: string;
+    has_free_trial: boolean;
+    id: number;
+    monthly_price_in_cents: number;
+    name: string;
+    number: number;
+    price_model: string;
+    state: string;
+    unit_name: null;
+    url: string;
+    yearly_price_in_cents: number;
+  };
+  type AppsListAccountsUserOrOrgOnPlanStubbedResponseItemMarketplacePurchase = {
+    billing_cycle: string;
+    free_trial_ends_on: string;
+    next_billing_date: string;
+    on_free_trial: boolean;
+    plan: AppsListAccountsUserOrOrgOnPlanStubbedResponseItemMarketplacePurchasePlan;
+    unit_count: null;
+    updated_at: string;
+  };
+  type AppsListAccountsUserOrOrgOnPlanStubbedResponseItemMarketplacePendingChangePlan = {
+    accounts_url: string;
+    bullets: Array<string>;
+    description: string;
+    has_free_trial: boolean;
+    id: number;
+    monthly_price_in_cents: number;
+    name: string;
+    number: number;
+    price_model: string;
+    state: string;
+    unit_name: null;
+    url: string;
+    yearly_price_in_cents: number;
+  };
+  type AppsListAccountsUserOrOrgOnPlanStubbedResponseItemMarketplacePendingChange = {
+    effective_date: string;
+    id: number;
+    plan: AppsListAccountsUserOrOrgOnPlanStubbedResponseItemMarketplacePendingChangePlan;
+    unit_count: null;
+  };
+  type AppsListAccountsUserOrOrgOnPlanStubbedResponseItem = {
+    email: null;
+    id: number;
+    login: string;
+    marketplace_pending_change: AppsListAccountsUserOrOrgOnPlanStubbedResponseItemMarketplacePendingChange;
+    marketplace_purchase: AppsListAccountsUserOrOrgOnPlanStubbedResponseItemMarketplacePurchase;
+    organization_billing_email: string;
+    type: string;
+    url: string;
+  };
+  type AppsListAccountsUserOrOrgOnPlanResponseItemMarketplacePurchasePlan = {
+    accounts_url: string;
+    bullets: Array<string>;
+    description: string;
+    has_free_trial: boolean;
+    id: number;
+    monthly_price_in_cents: number;
+    name: string;
+    number: number;
+    price_model: string;
+    state: string;
+    unit_name: null;
+    url: string;
+    yearly_price_in_cents: number;
+  };
+  type AppsListAccountsUserOrOrgOnPlanResponseItemMarketplacePurchase = {
+    billing_cycle: string;
+    free_trial_ends_on: string;
+    next_billing_date: string;
+    on_free_trial: boolean;
+    plan: AppsListAccountsUserOrOrgOnPlanResponseItemMarketplacePurchasePlan;
+    unit_count: null;
+    updated_at: string;
+  };
+  type AppsListAccountsUserOrOrgOnPlanResponseItemMarketplacePendingChangePlan = {
+    accounts_url: string;
+    bullets: Array<string>;
+    description: string;
+    has_free_trial: boolean;
+    id: number;
+    monthly_price_in_cents: number;
+    name: string;
+    number: number;
+    price_model: string;
+    state: string;
+    unit_name: null;
+    url: string;
+    yearly_price_in_cents: number;
+  };
+  type AppsListAccountsUserOrOrgOnPlanResponseItemMarketplacePendingChange = {
+    effective_date: string;
+    id: number;
+    plan: AppsListAccountsUserOrOrgOnPlanResponseItemMarketplacePendingChangePlan;
+    unit_count: null;
+  };
+  type AppsListAccountsUserOrOrgOnPlanResponseItem = {
+    email: null;
+    id: number;
+    login: string;
+    marketplace_pending_change: AppsListAccountsUserOrOrgOnPlanResponseItemMarketplacePendingChange;
+    marketplace_purchase: AppsListAccountsUserOrOrgOnPlanResponseItemMarketplacePurchase;
+    organization_billing_email: string;
+    type: string;
+    url: string;
+  };
+  type AppsGetUserInstallationResponsePermissions = {
+    checks: string;
+    contents: string;
+    metadata: string;
+  };
+  type AppsGetUserInstallationResponseAccount = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type AppsGetUserInstallationResponse = {
+    access_tokens_url: string;
+    account: AppsGetUserInstallationResponseAccount;
+    app_id: number;
+    created_at: string;
+    events: Array<string>;
+    html_url: string;
+    id: number;
+    permissions: AppsGetUserInstallationResponsePermissions;
+    repositories_url: string;
+    repository_selection: string;
+    single_file_name: null;
+    target_id: number;
+    target_type: string;
+    updated_at: string;
+  };
+  type AppsGetRepoInstallationResponsePermissions = {
+    checks: string;
+    contents: string;
+    metadata: string;
+  };
+  type AppsGetRepoInstallationResponseAccount = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type AppsGetRepoInstallationResponse = {
+    access_tokens_url: string;
+    account: AppsGetRepoInstallationResponseAccount;
+    app_id: number;
+    created_at: string;
+    events: Array<string>;
+    html_url: string;
+    id: number;
+    permissions: AppsGetRepoInstallationResponsePermissions;
+    repositories_url: string;
+    repository_selection: string;
+    single_file_name: null;
+    target_id: number;
+    target_type: string;
+    updated_at: string;
+  };
+  type AppsGetOrgInstallationResponsePermissions = {
+    checks: string;
+    contents: string;
+    metadata: string;
+  };
+  type AppsGetOrgInstallationResponseAccount = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type AppsGetOrgInstallationResponse = {
+    access_tokens_url: string;
+    account: AppsGetOrgInstallationResponseAccount;
+    app_id: number;
+    created_at: string;
+    events: Array<string>;
+    html_url: string;
+    id: number;
+    permissions: AppsGetOrgInstallationResponsePermissions;
+    repositories_url: string;
+    repository_selection: string;
+    single_file_name: null;
+    target_id: number;
+    target_type: string;
+    updated_at: string;
+  };
+  type AppsGetInstallationResponsePermissions = {
+    contents: string;
+    issues: string;
+    metadata: string;
+    single_file: string;
+  };
+  type AppsGetInstallationResponseAccount = {
+    avatar_url: string;
+    description: string;
+    events_url: string;
+    hooks_url: string;
+    id: number;
+    issues_url: string;
+    login: string;
+    members_url: string;
+    node_id: string;
+    public_members_url: string;
+    repos_url: string;
+    url: string;
+  };
+  type AppsGetInstallationResponse = {
+    access_tokens_url: string;
+    account: AppsGetInstallationResponseAccount;
+    app_id: number;
+    events: Array<string>;
+    html_url: string;
+    id: number;
+    permissions: AppsGetInstallationResponsePermissions;
+    repositories_url: string;
+    repository_selection: string;
+    single_file_name: string;
+    target_id: number;
+    target_type: string;
+  };
+  type AppsGetBySlugResponsePermissions = {
+    contents: string;
+    issues: string;
+    metadata: string;
+    single_file: string;
+  };
+  type AppsGetBySlugResponseOwner = {
+    avatar_url: string;
+    description: string;
+    events_url: string;
+    hooks_url: string;
+    id: number;
+    issues_url: string;
+    login: string;
+    members_url: string;
+    node_id: string;
+    public_members_url: string;
+    repos_url: string;
+    url: string;
+  };
+  type AppsGetBySlugResponse = {
+    created_at: string;
+    description: string;
+    events: Array<string>;
+    external_url: string;
+    html_url: string;
+    id: number;
+    name: string;
+    node_id: string;
+    owner: AppsGetBySlugResponseOwner;
+    permissions: AppsGetBySlugResponsePermissions;
+    slug: string;
+    updated_at: string;
+  };
+  type AppsGetAuthenticatedResponsePermissions = {
+    contents: string;
+    issues: string;
+    metadata: string;
+    single_file: string;
+  };
+  type AppsGetAuthenticatedResponseOwner = {
+    avatar_url: string;
+    description: string;
+    events_url: string;
+    hooks_url: string;
+    id: number;
+    issues_url: string;
+    login: string;
+    members_url: string;
+    node_id: string;
+    public_members_url: string;
+    repos_url: string;
+    url: string;
+  };
+  type AppsGetAuthenticatedResponse = {
+    created_at: string;
+    description: string;
+    events: Array<string>;
+    external_url: string;
+    html_url: string;
+    id: number;
+    installations_count: number;
+    name: string;
+    node_id: string;
+    owner: AppsGetAuthenticatedResponseOwner;
+    permissions: AppsGetAuthenticatedResponsePermissions;
+    slug: string;
+    updated_at: string;
+  };
+  type AppsFindUserInstallationResponsePermissions = {
+    checks: string;
+    contents: string;
+    metadata: string;
+  };
+  type AppsFindUserInstallationResponseAccount = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type AppsFindUserInstallationResponse = {
+    access_tokens_url: string;
+    account: AppsFindUserInstallationResponseAccount;
+    app_id: number;
+    created_at: string;
+    events: Array<string>;
+    html_url: string;
+    id: number;
+    permissions: AppsFindUserInstallationResponsePermissions;
+    repositories_url: string;
+    repository_selection: string;
+    single_file_name: null;
+    target_id: number;
+    target_type: string;
+    updated_at: string;
+  };
+  type AppsFindRepoInstallationResponsePermissions = {
+    checks: string;
+    contents: string;
+    metadata: string;
+  };
+  type AppsFindRepoInstallationResponseAccount = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type AppsFindRepoInstallationResponse = {
+    access_tokens_url: string;
+    account: AppsFindRepoInstallationResponseAccount;
+    app_id: number;
+    created_at: string;
+    events: Array<string>;
+    html_url: string;
+    id: number;
+    permissions: AppsFindRepoInstallationResponsePermissions;
+    repositories_url: string;
+    repository_selection: string;
+    single_file_name: null;
+    target_id: number;
+    target_type: string;
+    updated_at: string;
+  };
+  type AppsFindOrgInstallationResponsePermissions = {
+    checks: string;
+    contents: string;
+    metadata: string;
+  };
+  type AppsFindOrgInstallationResponseAccount = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type AppsFindOrgInstallationResponse = {
+    access_tokens_url: string;
+    account: AppsFindOrgInstallationResponseAccount;
+    app_id: number;
+    created_at: string;
+    events: Array<string>;
+    html_url: string;
+    id: number;
+    permissions: AppsFindOrgInstallationResponsePermissions;
+    repositories_url: string;
+    repository_selection: string;
+    single_file_name: null;
+    target_id: number;
+    target_type: string;
+    updated_at: string;
+  };
+  type AppsCreateInstallationTokenResponseRepositoriesItemPermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type AppsCreateInstallationTokenResponseRepositoriesItemOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type AppsCreateInstallationTokenResponseRepositoriesItem = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: AppsCreateInstallationTokenResponseRepositoriesItemOwner;
+    permissions: AppsCreateInstallationTokenResponseRepositoriesItemPermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type AppsCreateInstallationTokenResponsePermissions = {
+    contents: string;
+    issues: string;
+  };
+  type AppsCreateInstallationTokenResponse = {
+    expires_at: string;
+    permissions: AppsCreateInstallationTokenResponsePermissions;
+    repositories: Array<AppsCreateInstallationTokenResponseRepositoriesItem>;
+    token: string;
+  };
+  type AppsCreateFromManifestResponseOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type AppsCreateFromManifestResponse = {
+    client_id: string;
+    client_secret: string;
+    created_at: string;
+    description: null;
+    external_url: string;
+    html_url: string;
+    id: number;
+    name: string;
+    node_id: string;
+    owner: AppsCreateFromManifestResponseOwner;
+    pem: string;
+    updated_at: string;
+    webhook_secret: string;
+  };
+  type AppsCreateContentAttachmentResponse = {
+    body: string;
+    id: number;
+    title: string;
+  };
+  type AppsCheckTokenResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type AppsCheckTokenResponseApp = {
+    client_id: string;
+    name: string;
+    url: string;
+  };
+  type AppsCheckTokenResponse = {
+    app: AppsCheckTokenResponseApp;
+    created_at: string;
+    fingerprint: string;
+    hashed_token: string;
+    id: number;
+    note: string;
+    note_url: string;
+    scopes: Array<string>;
+    token: string;
+    token_last_eight: string;
+    updated_at: string;
+    url: string;
+    user: AppsCheckTokenResponseUser;
+  };
+  type AppsCheckAuthorizationResponseUser = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type AppsCheckAuthorizationResponseApp = {
+    client_id: string;
+    name: string;
+    url: string;
+  };
+  type AppsCheckAuthorizationResponse = {
+    app: AppsCheckAuthorizationResponseApp;
+    created_at: string;
+    fingerprint: string;
+    hashed_token: string;
+    id: number;
+    note: string;
+    note_url: string;
+    scopes: Array<string>;
+    token: string;
+    token_last_eight: string;
+    updated_at: string;
+    url: string;
+    user: AppsCheckAuthorizationResponseUser;
+  };
+  type AppsCheckAccountIsAssociatedWithAnyStubbedResponseMarketplacePurchasePlan = {
+    accounts_url: string;
+    bullets: Array<string>;
+    description: string;
+    has_free_trial: boolean;
+    id: number;
+    monthly_price_in_cents: number;
+    name: string;
+    number: number;
+    price_model: string;
+    state: string;
+    unit_name: null;
+    url: string;
+    yearly_price_in_cents: number;
+  };
+  type AppsCheckAccountIsAssociatedWithAnyStubbedResponseMarketplacePurchase = {
+    billing_cycle: string;
+    free_trial_ends_on: string;
+    next_billing_date: string;
+    on_free_trial: boolean;
+    plan: AppsCheckAccountIsAssociatedWithAnyStubbedResponseMarketplacePurchasePlan;
+    unit_count: null;
+    updated_at: string;
+  };
+  type AppsCheckAccountIsAssociatedWithAnyStubbedResponseMarketplacePendingChangePlan = {
+    accounts_url: string;
+    bullets: Array<string>;
+    description: string;
+    has_free_trial: boolean;
+    id: number;
+    monthly_price_in_cents: number;
+    name: string;
+    number: number;
+    price_model: string;
+    state: string;
+    unit_name: null;
+    url: string;
+    yearly_price_in_cents: number;
+  };
+  type AppsCheckAccountIsAssociatedWithAnyStubbedResponseMarketplacePendingChange = {
+    effective_date: string;
+    id: number;
+    plan: AppsCheckAccountIsAssociatedWithAnyStubbedResponseMarketplacePendingChangePlan;
+    unit_count: null;
+  };
+  type AppsCheckAccountIsAssociatedWithAnyStubbedResponse = {
+    email: null;
+    id: number;
+    login: string;
+    marketplace_pending_change: AppsCheckAccountIsAssociatedWithAnyStubbedResponseMarketplacePendingChange;
+    marketplace_purchase: AppsCheckAccountIsAssociatedWithAnyStubbedResponseMarketplacePurchase;
+    organization_billing_email: string;
+    type: string;
+    url: string;
+  };
+  type AppsCheckAccountIsAssociatedWithAnyResponseMarketplacePurchasePlan = {
+    accounts_url: string;
+    bullets: Array<string>;
+    description: string;
+    has_free_trial: boolean;
+    id: number;
+    monthly_price_in_cents: number;
+    name: string;
+    number: number;
+    price_model: string;
+    state: string;
+    unit_name: null;
+    url: string;
+    yearly_price_in_cents: number;
+  };
+  type AppsCheckAccountIsAssociatedWithAnyResponseMarketplacePurchase = {
+    billing_cycle: string;
+    free_trial_ends_on: string;
+    next_billing_date: string;
+    on_free_trial: boolean;
+    plan: AppsCheckAccountIsAssociatedWithAnyResponseMarketplacePurchasePlan;
+    unit_count: null;
+    updated_at: string;
+  };
+  type AppsCheckAccountIsAssociatedWithAnyResponseMarketplacePendingChangePlan = {
+    accounts_url: string;
+    bullets: Array<string>;
+    description: string;
+    has_free_trial: boolean;
+    id: number;
+    monthly_price_in_cents: number;
+    name: string;
+    number: number;
+    price_model: string;
+    state: string;
+    unit_name: null;
+    url: string;
+    yearly_price_in_cents: number;
+  };
+  type AppsCheckAccountIsAssociatedWithAnyResponseMarketplacePendingChange = {
+    effective_date: string;
+    id: number;
+    plan: AppsCheckAccountIsAssociatedWithAnyResponseMarketplacePendingChangePlan;
+    unit_count: null;
+  };
+  type AppsCheckAccountIsAssociatedWithAnyResponse = {
+    email: null;
+    id: number;
+    login: string;
+    marketplace_pending_change: AppsCheckAccountIsAssociatedWithAnyResponseMarketplacePendingChange;
+    marketplace_purchase: AppsCheckAccountIsAssociatedWithAnyResponseMarketplacePurchase;
+    organization_billing_email: string;
+    type: string;
+    url: string;
+  };
+  type ActivitySetThreadSubscriptionResponse = {
+    created_at: string;
+    ignored: boolean;
+    reason: null;
+    subscribed: boolean;
+    thread_url: string;
+    url: string;
+  };
+  type ActivitySetRepoSubscriptionResponse = {
+    created_at: string;
+    ignored: boolean;
+    reason: null;
+    repository_url: string;
+    subscribed: boolean;
+    url: string;
+  };
+  type ActivityListWatchersForRepoResponseItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ActivityListWatchedReposForAuthenticatedUserResponseItemPermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type ActivityListWatchedReposForAuthenticatedUserResponseItemOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ActivityListWatchedReposForAuthenticatedUserResponseItemLicense = {
+    key: string;
+    name: string;
+    node_id: string;
+    spdx_id: string;
+    url: string;
+  };
+  type ActivityListWatchedReposForAuthenticatedUserResponseItem = {
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    license: ActivityListWatchedReposForAuthenticatedUserResponseItemLicense;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: ActivityListWatchedReposForAuthenticatedUserResponseItemOwner;
+    permissions: ActivityListWatchedReposForAuthenticatedUserResponseItemPermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type ActivityListStargazersForRepoResponseItem = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ActivityListReposWatchedByUserResponseItemPermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type ActivityListReposWatchedByUserResponseItemOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ActivityListReposWatchedByUserResponseItemLicense = {
+    key: string;
+    name: string;
+    node_id: string;
+    spdx_id: string;
+    url: string;
+  };
+  type ActivityListReposWatchedByUserResponseItem = {
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    license: ActivityListReposWatchedByUserResponseItemLicense;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: ActivityListReposWatchedByUserResponseItemOwner;
+    permissions: ActivityListReposWatchedByUserResponseItemPermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type ActivityListReposStarredByUserResponseItemPermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type ActivityListReposStarredByUserResponseItemOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ActivityListReposStarredByUserResponseItem = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: ActivityListReposStarredByUserResponseItemOwner;
+    permissions: ActivityListReposStarredByUserResponseItemPermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type ActivityListReposStarredByAuthenticatedUserResponseItemPermissions = {
+    admin: boolean;
+    pull: boolean;
+    push: boolean;
+  };
+  type ActivityListReposStarredByAuthenticatedUserResponseItemOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ActivityListReposStarredByAuthenticatedUserResponseItem = {
+    allow_merge_commit: boolean;
+    allow_rebase_merge: boolean;
+    allow_squash_merge: boolean;
+    archive_url: string;
+    archived: boolean;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    clone_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    created_at: string;
+    default_branch: string;
+    deployments_url: string;
+    description: string;
+    disabled: boolean;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_count: number;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    has_downloads: boolean;
+    has_issues: boolean;
+    has_pages: boolean;
+    has_projects: boolean;
+    has_wiki: boolean;
+    homepage: string;
+    hooks_url: string;
+    html_url: string;
+    id: number;
+    is_template: boolean;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    language: null;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    mirror_url: string;
+    name: string;
+    network_count: number;
+    node_id: string;
+    notifications_url: string;
+    open_issues_count: number;
+    owner: ActivityListReposStarredByAuthenticatedUserResponseItemOwner;
+    permissions: ActivityListReposStarredByAuthenticatedUserResponseItemPermissions;
+    private: boolean;
+    pulls_url: string;
+    pushed_at: string;
+    releases_url: string;
+    size: number;
+    ssh_url: string;
+    stargazers_count: number;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_count: number;
+    subscribers_url: string;
+    subscription_url: string;
+    svn_url: string;
+    tags_url: string;
+    teams_url: string;
+    template_repository: null;
+    topics: Array<string>;
+    trees_url: string;
+    updated_at: string;
+    url: string;
+    watchers_count: number;
+  };
+  type ActivityListNotificationsForRepoResponseItemSubject = {
+    latest_comment_url: string;
+    title: string;
+    type: string;
+    url: string;
+  };
+  type ActivityListNotificationsForRepoResponseItemRepositoryOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ActivityListNotificationsForRepoResponseItemRepository = {
+    archive_url: string;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    deployments_url: string;
+    description: string;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    html_url: string;
+    id: number;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    name: string;
+    node_id: string;
+    notifications_url: string;
+    owner: ActivityListNotificationsForRepoResponseItemRepositoryOwner;
+    private: boolean;
+    pulls_url: string;
+    releases_url: string;
+    ssh_url: string;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_url: string;
+    subscription_url: string;
+    tags_url: string;
+    teams_url: string;
+    trees_url: string;
+    url: string;
+  };
+  type ActivityListNotificationsForRepoResponseItem = {
+    id: string;
+    last_read_at: string;
+    reason: string;
+    repository: ActivityListNotificationsForRepoResponseItemRepository;
+    subject: ActivityListNotificationsForRepoResponseItemSubject;
+    unread: boolean;
+    updated_at: string;
+    url: string;
+  };
+  type ActivityListNotificationsResponseItemSubject = {
+    latest_comment_url: string;
+    title: string;
+    type: string;
+    url: string;
+  };
+  type ActivityListNotificationsResponseItemRepositoryOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ActivityListNotificationsResponseItemRepository = {
+    archive_url: string;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    deployments_url: string;
+    description: string;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    html_url: string;
+    id: number;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    name: string;
+    node_id: string;
+    notifications_url: string;
+    owner: ActivityListNotificationsResponseItemRepositoryOwner;
+    private: boolean;
+    pulls_url: string;
+    releases_url: string;
+    ssh_url: string;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_url: string;
+    subscription_url: string;
+    tags_url: string;
+    teams_url: string;
+    trees_url: string;
+    url: string;
+  };
+  type ActivityListNotificationsResponseItem = {
+    id: string;
+    last_read_at: string;
+    reason: string;
+    repository: ActivityListNotificationsResponseItemRepository;
+    subject: ActivityListNotificationsResponseItemSubject;
+    unread: boolean;
+    updated_at: string;
+    url: string;
+  };
+  type ActivityListFeedsResponseLinksUser = { href: string; type: string };
+  type ActivityListFeedsResponseLinksTimeline = { href: string; type: string };
+  type ActivityListFeedsResponseLinksSecurityAdvisories = {
+    href: string;
+    type: string;
+  };
+  type ActivityListFeedsResponseLinksCurrentUserPublic = {
+    href: string;
+    type: string;
+  };
+  type ActivityListFeedsResponseLinksCurrentUserOrganizationsItem = {
+    href: string;
+    type: string;
+  };
+  type ActivityListFeedsResponseLinksCurrentUserOrganization = {
+    href: string;
+    type: string;
+  };
+  type ActivityListFeedsResponseLinksCurrentUserActor = {
+    href: string;
+    type: string;
+  };
+  type ActivityListFeedsResponseLinksCurrentUser = {
+    href: string;
+    type: string;
+  };
+  type ActivityListFeedsResponseLinks = {
+    current_user: ActivityListFeedsResponseLinksCurrentUser;
+    current_user_actor: ActivityListFeedsResponseLinksCurrentUserActor;
+    current_user_organization: ActivityListFeedsResponseLinksCurrentUserOrganization;
+    current_user_organizations: Array<
+      ActivityListFeedsResponseLinksCurrentUserOrganizationsItem
+    >;
+    current_user_public: ActivityListFeedsResponseLinksCurrentUserPublic;
+    security_advisories: ActivityListFeedsResponseLinksSecurityAdvisories;
+    timeline: ActivityListFeedsResponseLinksTimeline;
+    user: ActivityListFeedsResponseLinksUser;
+  };
+  type ActivityListFeedsResponse = {
+    _links: ActivityListFeedsResponseLinks;
+    current_user_actor_url: string;
+    current_user_organization_url: string;
+    current_user_organization_urls: Array<string>;
+    current_user_public_url: string;
+    current_user_url: string;
+    security_advisories_url: string;
+    timeline_url: string;
+    user_url: string;
+  };
+  type ActivityGetThreadSubscriptionResponse = {
+    created_at: string;
+    ignored: boolean;
+    reason: null;
+    subscribed: boolean;
+    thread_url: string;
+    url: string;
+  };
+  type ActivityGetThreadResponseSubject = {
+    latest_comment_url: string;
+    title: string;
+    type: string;
+    url: string;
+  };
+  type ActivityGetThreadResponseRepositoryOwner = {
+    avatar_url: string;
+    events_url: string;
+    followers_url: string;
+    following_url: string;
+    gists_url: string;
+    gravatar_id: string;
+    html_url: string;
+    id: number;
+    login: string;
+    node_id: string;
+    organizations_url: string;
+    received_events_url: string;
+    repos_url: string;
+    site_admin: boolean;
+    starred_url: string;
+    subscriptions_url: string;
+    type: string;
+    url: string;
+  };
+  type ActivityGetThreadResponseRepository = {
+    archive_url: string;
+    assignees_url: string;
+    blobs_url: string;
+    branches_url: string;
+    collaborators_url: string;
+    comments_url: string;
+    commits_url: string;
+    compare_url: string;
+    contents_url: string;
+    contributors_url: string;
+    deployments_url: string;
+    description: string;
+    downloads_url: string;
+    events_url: string;
+    fork: boolean;
+    forks_url: string;
+    full_name: string;
+    git_commits_url: string;
+    git_refs_url: string;
+    git_tags_url: string;
+    git_url: string;
+    html_url: string;
+    id: number;
+    issue_comment_url: string;
+    issue_events_url: string;
+    issues_url: string;
+    keys_url: string;
+    labels_url: string;
+    languages_url: string;
+    merges_url: string;
+    milestones_url: string;
+    name: string;
+    node_id: string;
+    notifications_url: string;
+    owner: ActivityGetThreadResponseRepositoryOwner;
+    private: boolean;
+    pulls_url: string;
+    releases_url: string;
+    ssh_url: string;
+    stargazers_url: string;
+    statuses_url: string;
+    subscribers_url: string;
+    subscription_url: string;
+    tags_url: string;
+    teams_url: string;
+    trees_url: string;
+    url: string;
+  };
+  type ActivityGetThreadResponse = {
+    id: string;
+    last_read_at: string;
+    reason: string;
+    repository: ActivityGetThreadResponseRepository;
+    subject: ActivityGetThreadResponseSubject;
+    unread: boolean;
+    updated_at: string;
+    url: string;
+  };
+  type ActivityGetRepoSubscriptionResponse = {
+    created_at: string;
+    ignored: boolean;
+    reason: null;
+    repository_url: string;
+    subscribed: boolean;
+    url: string;
+  };
+  type ActivityListNotificationsResponse = Array<
+    ActivityListNotificationsResponseItem
+  >;
+  type ActivityListNotificationsForRepoResponse = Array<
+    ActivityListNotificationsForRepoResponseItem
+  >;
+  type ActivityListReposStarredByAuthenticatedUserResponse = Array<
+    ActivityListReposStarredByAuthenticatedUserResponseItem
+  >;
+  type ActivityListReposStarredByUserResponse = Array<
+    ActivityListReposStarredByUserResponseItem
+  >;
+  type ActivityListReposWatchedByUserResponse = Array<
+    ActivityListReposWatchedByUserResponseItem
+  >;
+  type ActivityListStargazersForRepoResponse = Array<
+    ActivityListStargazersForRepoResponseItem
+  >;
+  type ActivityListWatchedReposForAuthenticatedUserResponse = Array<
+    ActivityListWatchedReposForAuthenticatedUserResponseItem
+  >;
+  type ActivityListWatchersForRepoResponse = Array<
+    ActivityListWatchersForRepoResponseItem
+  >;
+  type AppsListAccountsUserOrOrgOnPlanResponse = Array<
+    AppsListAccountsUserOrOrgOnPlanResponseItem
+  >;
+  type AppsListAccountsUserOrOrgOnPlanStubbedResponse = Array<
+    AppsListAccountsUserOrOrgOnPlanStubbedResponseItem
+  >;
+  type AppsListInstallationsResponse = Array<AppsListInstallationsResponseItem>;
+  type AppsListMarketplacePurchasesForAuthenticatedUserResponse = Array<
+    AppsListMarketplacePurchasesForAuthenticatedUserResponseItem
+  >;
+  type AppsListMarketplacePurchasesForAuthenticatedUserStubbedResponse = Array<
+    AppsListMarketplacePurchasesForAuthenticatedUserStubbedResponseItem
+  >;
+  type AppsListPlansResponse = Array<AppsListPlansResponseItem>;
+  type AppsListPlansStubbedResponse = Array<AppsListPlansStubbedResponseItem>;
+  type ChecksListAnnotationsResponse = Array<ChecksListAnnotationsResponseItem>;
+  type CodesOfConductListConductCodesResponse = Array<
+    CodesOfConductListConductCodesResponseItem
+  >;
+  type GistsListResponse = Array<GistsListResponseItem>;
+  type GistsListCommentsResponse = Array<GistsListCommentsResponseItem>;
+  type GistsListCommitsResponse = Array<GistsListCommitsResponseItem>;
+  type GistsListForksResponse = Array<GistsListForksResponseItem>;
+  type GistsListPublicResponse = Array<GistsListPublicResponseItem>;
+  type GistsListPublicForUserResponse = Array<
+    GistsListPublicForUserResponseItem
+  >;
+  type GistsListStarredResponse = Array<GistsListStarredResponseItem>;
+  type GitListMatchingRefsResponse = Array<GitListMatchingRefsResponseItem>;
+  type GitignoreListTemplatesResponse = Array<string>;
+  type IssuesAddLabelsResponse = Array<IssuesAddLabelsResponseItem>;
+  type IssuesListResponse = Array<IssuesListResponseItem>;
+  type IssuesListAssigneesResponse = Array<IssuesListAssigneesResponseItem>;
+  type IssuesListCommentsResponse = Array<IssuesListCommentsResponseItem>;
+  type IssuesListCommentsForRepoResponse = Array<
+    IssuesListCommentsForRepoResponseItem
+  >;
+  type IssuesListEventsResponse = Array<IssuesListEventsResponseItem>;
+  type IssuesListEventsForRepoResponse = Array<
+    IssuesListEventsForRepoResponseItem
+  >;
+  type IssuesListEventsForTimelineResponse = Array<
+    IssuesListEventsForTimelineResponseItem
+  >;
+  type IssuesListForAuthenticatedUserResponse = Array<
+    IssuesListForAuthenticatedUserResponseItem
+  >;
+  type IssuesListForOrgResponse = Array<IssuesListForOrgResponseItem>;
+  type IssuesListForRepoResponse = Array<IssuesListForRepoResponseItem>;
+  type IssuesListLabelsForMilestoneResponse = Array<
+    IssuesListLabelsForMilestoneResponseItem
+  >;
+  type IssuesListLabelsForRepoResponse = Array<
+    IssuesListLabelsForRepoResponseItem
+  >;
+  type IssuesListLabelsOnIssueResponse = Array<
+    IssuesListLabelsOnIssueResponseItem
+  >;
+  type IssuesListMilestonesForRepoResponse = Array<
+    IssuesListMilestonesForRepoResponseItem
+  >;
+  type IssuesRemoveLabelResponse = Array<IssuesRemoveLabelResponseItem>;
+  type IssuesReplaceLabelsResponse = Array<IssuesReplaceLabelsResponseItem>;
+  type LicensesListResponse = Array<LicensesListResponseItem>;
+  type LicensesListCommonlyUsedResponse = Array<
+    LicensesListCommonlyUsedResponseItem
+  >;
+  type MigrationsGetCommitAuthorsResponse = Array<
+    MigrationsGetCommitAuthorsResponseItem
+  >;
+  type MigrationsGetLargeFilesResponse = Array<
+    MigrationsGetLargeFilesResponseItem
+  >;
+  type MigrationsListForAuthenticatedUserResponse = Array<
+    MigrationsListForAuthenticatedUserResponseItem
+  >;
+  type MigrationsListForOrgResponse = Array<MigrationsListForOrgResponseItem>;
+  type OauthAuthorizationsListAuthorizationsResponse = Array<
+    OauthAuthorizationsListAuthorizationsResponseItem
+  >;
+  type OauthAuthorizationsListGrantsResponse = Array<
+    OauthAuthorizationsListGrantsResponseItem
+  >;
+  type OrgsListResponse = Array<OrgsListResponseItem>;
+  type OrgsListBlockedUsersResponse = Array<OrgsListBlockedUsersResponseItem>;
+  type OrgsListForAuthenticatedUserResponse = Array<
+    OrgsListForAuthenticatedUserResponseItem
+  >;
+  type OrgsListForUserResponse = Array<OrgsListForUserResponseItem>;
+  type OrgsListHooksResponse = Array<OrgsListHooksResponseItem>;
+  type OrgsListInvitationTeamsResponse = Array<
+    OrgsListInvitationTeamsResponseItem
+  >;
+  type OrgsListMembersResponse = Array<OrgsListMembersResponseItem>;
+  type OrgsListMembershipsResponse = Array<OrgsListMembershipsResponseItem>;
+  type OrgsListOutsideCollaboratorsResponse = Array<
+    OrgsListOutsideCollaboratorsResponseItem
+  >;
+  type OrgsListPendingInvitationsResponse = Array<
+    OrgsListPendingInvitationsResponseItem
+  >;
+  type OrgsListPublicMembersResponse = Array<OrgsListPublicMembersResponseItem>;
+  type ProjectsListCardsResponse = Array<ProjectsListCardsResponseItem>;
+  type ProjectsListCollaboratorsResponse = Array<
+    ProjectsListCollaboratorsResponseItem
+  >;
+  type ProjectsListColumnsResponse = Array<ProjectsListColumnsResponseItem>;
+  type ProjectsListForOrgResponse = Array<ProjectsListForOrgResponseItem>;
+  type ProjectsListForRepoResponse = Array<ProjectsListForRepoResponseItem>;
+  type ProjectsListForUserResponse = Array<ProjectsListForUserResponseItem>;
+  type PullsGetCommentsForReviewResponse = Array<
+    PullsGetCommentsForReviewResponseItem
+  >;
+  type PullsListResponse = Array<PullsListResponseItem>;
+  type PullsListCommentsResponse = Array<PullsListCommentsResponseItem>;
+  type PullsListCommentsForRepoResponse = Array<
+    PullsListCommentsForRepoResponseItem
+  >;
+  type PullsListCommitsResponse = Array<PullsListCommitsResponseItem>;
+  type PullsListFilesResponse = Array<PullsListFilesResponseItem>;
+  type PullsListReviewsResponse = Array<PullsListReviewsResponseItem>;
+  type ReactionsListForCommitCommentResponse = Array<
+    ReactionsListForCommitCommentResponseItem
+  >;
+  type ReactionsListForIssueResponse = Array<ReactionsListForIssueResponseItem>;
+  type ReactionsListForIssueCommentResponse = Array<
+    ReactionsListForIssueCommentResponseItem
+  >;
+  type ReactionsListForPullRequestReviewCommentResponse = Array<
+    ReactionsListForPullRequestReviewCommentResponseItem
+  >;
+  type ReactionsListForTeamDiscussionResponse = Array<
+    ReactionsListForTeamDiscussionResponseItem
+  >;
+  type ReactionsListForTeamDiscussionCommentResponse = Array<
+    ReactionsListForTeamDiscussionCommentResponseItem
+  >;
+  type ReposAddProtectedBranchAppRestrictionsResponse = Array<
+    ReposAddProtectedBranchAppRestrictionsResponseItem
+  >;
+  type ReposAddProtectedBranchRequiredStatusChecksContextsResponse = Array<
+    string
+  >;
+  type ReposAddProtectedBranchTeamRestrictionsResponse = Array<
+    ReposAddProtectedBranchTeamRestrictionsResponseItem
+  >;
+  type ReposAddProtectedBranchUserRestrictionsResponse = Array<
+    ReposAddProtectedBranchUserRestrictionsResponseItem
+  >;
+  type ReposGetAppsWithAccessToProtectedBranchResponse = Array<
+    ReposGetAppsWithAccessToProtectedBranchResponseItem
+  >;
+  type ReposGetCodeFrequencyStatsResponse = Array<Array<number>>;
+  type ReposGetCommitActivityStatsResponse = Array<
+    ReposGetCommitActivityStatsResponseItem
+  >;
+  type ReposGetContributorsStatsResponse = Array<
+    ReposGetContributorsStatsResponseItem
+  >;
+  type ReposGetPunchCardStatsResponse = Array<Array<number>>;
+  type ReposGetTeamsWithAccessToProtectedBranchResponse = Array<
+    ReposGetTeamsWithAccessToProtectedBranchResponseItem
+  >;
+  type ReposGetTopPathsResponse = Array<ReposGetTopPathsResponseItem>;
+  type ReposGetTopReferrersResponse = Array<ReposGetTopReferrersResponseItem>;
+  type ReposGetUsersWithAccessToProtectedBranchResponse = Array<
+    ReposGetUsersWithAccessToProtectedBranchResponseItem
+  >;
+  type ReposListAppsWithAccessToProtectedBranchResponse = Array<
+    ReposListAppsWithAccessToProtectedBranchResponseItem
+  >;
+  type ReposListAssetsForReleaseResponse = Array<
+    ReposListAssetsForReleaseResponseItem
+  >;
+  type ReposListBranchesResponse = Array<ReposListBranchesResponseItem>;
+  type ReposListBranchesForHeadCommitResponse = Array<
+    ReposListBranchesForHeadCommitResponseItem
+  >;
+  type ReposListCollaboratorsResponse = Array<
+    ReposListCollaboratorsResponseItem
+  >;
+  type ReposListCommentsForCommitResponse = Array<
+    ReposListCommentsForCommitResponseItem
+  >;
+  type ReposListCommitCommentsResponse = Array<
+    ReposListCommitCommentsResponseItem
+  >;
+  type ReposListCommitsResponse = Array<ReposListCommitsResponseItem>;
+  type ReposListContributorsResponse = Array<ReposListContributorsResponseItem>;
+  type ReposListDeployKeysResponse = Array<ReposListDeployKeysResponseItem>;
+  type ReposListDeploymentStatusesResponse = Array<
+    ReposListDeploymentStatusesResponseItem
+  >;
+  type ReposListDeploymentsResponse = Array<ReposListDeploymentsResponseItem>;
+  type ReposListDownloadsResponse = Array<ReposListDownloadsResponseItem>;
+  type ReposListForOrgResponse = Array<ReposListForOrgResponseItem>;
+  type ReposListForksResponse = Array<ReposListForksResponseItem>;
+  type ReposListHooksResponse = Array<ReposListHooksResponseItem>;
+  type ReposListInvitationsResponse = Array<ReposListInvitationsResponseItem>;
+  type ReposListInvitationsForAuthenticatedUserResponse = Array<
+    ReposListInvitationsForAuthenticatedUserResponseItem
+  >;
+  type ReposListPagesBuildsResponse = Array<ReposListPagesBuildsResponseItem>;
+  type ReposListProtectedBranchRequiredStatusChecksContextsResponse = Array<
+    string
+  >;
+  type ReposListProtectedBranchTeamRestrictionsResponse = Array<
+    ReposListProtectedBranchTeamRestrictionsResponseItem
+  >;
+  type ReposListProtectedBranchUserRestrictionsResponse = Array<
+    ReposListProtectedBranchUserRestrictionsResponseItem
+  >;
+  type ReposListPublicResponse = Array<ReposListPublicResponseItem>;
+  type ReposListPullRequestsAssociatedWithCommitResponse = Array<
+    ReposListPullRequestsAssociatedWithCommitResponseItem
+  >;
+  type ReposListReleasesResponse = Array<ReposListReleasesResponseItem>;
+  type ReposListStatusesForRefResponse = Array<
+    ReposListStatusesForRefResponseItem
+  >;
+  type ReposListTagsResponse = Array<ReposListTagsResponseItem>;
+  type ReposListTeamsResponse = Array<ReposListTeamsResponseItem>;
+  type ReposListTeamsWithAccessToProtectedBranchResponse = Array<
+    ReposListTeamsWithAccessToProtectedBranchResponseItem
+  >;
+  type ReposListUsersWithAccessToProtectedBranchResponse = Array<
+    ReposListUsersWithAccessToProtectedBranchResponseItem
+  >;
+  type ReposRemoveProtectedBranchAppRestrictionsResponse = Array<
+    ReposRemoveProtectedBranchAppRestrictionsResponseItem
+  >;
+  type ReposRemoveProtectedBranchRequiredStatusChecksContextsResponse = Array<
+    string
+  >;
+  type ReposRemoveProtectedBranchTeamRestrictionsResponse = Array<
+    ReposRemoveProtectedBranchTeamRestrictionsResponseItem
+  >;
+  type ReposRemoveProtectedBranchUserRestrictionsResponse = Array<
+    ReposRemoveProtectedBranchUserRestrictionsResponseItem
+  >;
+  type ReposReplaceProtectedBranchAppRestrictionsResponse = Array<
+    ReposReplaceProtectedBranchAppRestrictionsResponseItem
+  >;
+  type ReposReplaceProtectedBranchRequiredStatusChecksContextsResponse = Array<
+    string
+  >;
+  type ReposReplaceProtectedBranchTeamRestrictionsResponse = Array<
+    ReposReplaceProtectedBranchTeamRestrictionsResponseItem
+  >;
+  type ReposReplaceProtectedBranchUserRestrictionsResponse = Array<
+    ReposReplaceProtectedBranchUserRestrictionsResponseItem
+  >;
+  type TeamsListResponse = Array<TeamsListResponseItem>;
+  type TeamsListChildResponse = Array<TeamsListChildResponseItem>;
+  type TeamsListDiscussionCommentsResponse = Array<
+    TeamsListDiscussionCommentsResponseItem
+  >;
+  type TeamsListDiscussionsResponse = Array<TeamsListDiscussionsResponseItem>;
+  type TeamsListForAuthenticatedUserResponse = Array<
+    TeamsListForAuthenticatedUserResponseItem
+  >;
+  type TeamsListMembersResponse = Array<TeamsListMembersResponseItem>;
+  type TeamsListPendingInvitationsResponse = Array<
+    TeamsListPendingInvitationsResponseItem
+  >;
+  type TeamsListProjectsResponse = Array<TeamsListProjectsResponseItem>;
+  type TeamsListReposResponse = Array<TeamsListReposResponseItem>;
+  type UsersAddEmailsResponse = Array<UsersAddEmailsResponseItem>;
+  type UsersListResponse = Array<UsersListResponseItem>;
+  type UsersListBlockedResponse = Array<UsersListBlockedResponseItem>;
+  type UsersListEmailsResponse = Array<UsersListEmailsResponseItem>;
+  type UsersListFollowersForAuthenticatedUserResponse = Array<
+    UsersListFollowersForAuthenticatedUserResponseItem
+  >;
+  type UsersListFollowersForUserResponse = Array<
+    UsersListFollowersForUserResponseItem
+  >;
+  type UsersListFollowingForAuthenticatedUserResponse = Array<
+    UsersListFollowingForAuthenticatedUserResponseItem
+  >;
+  type UsersListFollowingForUserResponse = Array<
+    UsersListFollowingForUserResponseItem
+  >;
+  type UsersListGpgKeysResponse = Array<UsersListGpgKeysResponseItem>;
+  type UsersListGpgKeysForUserResponse = Array<
+    UsersListGpgKeysForUserResponseItem
+  >;
+  type UsersListPublicEmailsResponse = Array<UsersListPublicEmailsResponseItem>;
+  type UsersListPublicKeysResponse = Array<UsersListPublicKeysResponseItem>;
+  type UsersListPublicKeysForUserResponse = Array<
+    UsersListPublicKeysForUserResponseItem
+  >;
+  type UsersTogglePrimaryEmailVisibilityResponse = Array<
+    UsersTogglePrimaryEmailVisibilityResponseItem
+  >;
+
+  // param types
+  export type ActivityCheckStarringRepoParams = {
+    owner: string;
+
+    repo: string;
+  };
+  export type ActivityDeleteRepoSubscriptionParams = {
+    owner: string;
+
+    repo: string;
+  };
+  export type ActivityDeleteThreadSubscriptionParams = {
+    thread_id: number;
+  };
+  export type ActivityGetRepoSubscriptionParams = {
+    owner: string;
+
+    repo: string;
+  };
+  export type ActivityGetThreadParams = {
+    thread_id: number;
+  };
+  export type ActivityGetThreadSubscriptionParams = {
+    thread_id: number;
+  };
+  export type ActivityListEventsForOrgParams = {
+    org: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    username: string;
+  };
+  export type ActivityListEventsForUserParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    username: string;
+  };
+  export type ActivityListNotificationsParams = {
+    /**
+     * If `true`, show notifications marked as read.
+     */
+    all?: boolean;
+    /**
+     * Only show notifications updated before the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
+     */
+    before?: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * If `true`, only shows notifications in which the user is directly participating or mentioned.
+     */
+    participating?: boolean;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+    /**
+     * Only show notifications updated after the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
+     */
+    since?: string;
+  };
+  export type ActivityListNotificationsForRepoParams = {
+    /**
+     * If `true`, show notifications marked as read.
+     */
+    all?: boolean;
+    /**
+     * Only show notifications updated before the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
+     */
+    before?: string;
+
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * If `true`, only shows notifications in which the user is directly participating or mentioned.
+     */
+    participating?: boolean;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+    /**
+     * Only show notifications updated after the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
+     */
+    since?: string;
+  };
+  export type ActivityListPublicEventsParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+  };
+  export type ActivityListPublicEventsForOrgParams = {
+    org: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+  };
+  export type ActivityListPublicEventsForRepoNetworkParams = {
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+  };
+  export type ActivityListPublicEventsForUserParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    username: string;
+  };
+  export type ActivityListReceivedEventsForUserParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    username: string;
+  };
+  export type ActivityListReceivedPublicEventsForUserParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    username: string;
+  };
+  export type ActivityListRepoEventsParams = {
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+  };
+  export type ActivityListReposStarredByAuthenticatedUserParams = {
+    /**
+     * One of `asc` (ascending) or `desc` (descending).
+     */
+    direction?: "asc" | "desc";
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+    /**
+     * One of `created` (when the repository was starred) or `updated` (when it was last pushed to).
+     */
+    sort?: "created" | "updated";
+  };
+  export type ActivityListReposStarredByUserParams = {
+    /**
+     * One of `asc` (ascending) or `desc` (descending).
+     */
+    direction?: "asc" | "desc";
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+    /**
+     * One of `created` (when the repository was starred) or `updated` (when it was last pushed to).
+     */
+    sort?: "created" | "updated";
+
+    username: string;
+  };
+  export type ActivityListReposWatchedByUserParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    username: string;
+  };
+  export type ActivityListStargazersForRepoParams = {
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+  };
+  export type ActivityListWatchedReposForAuthenticatedUserParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+  };
+  export type ActivityListWatchersForRepoParams = {
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+  };
+  export type ActivityMarkAsReadParams = {
+    /**
+     * Describes the last point that notifications were checked. Anything updated since this time will not be updated. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Default: The current timestamp.
+     */
+    last_read_at?: string;
+  };
+  export type ActivityMarkNotificationsAsReadForRepoParams = {
+    /**
+     * Describes the last point that notifications were checked. Anything updated since this time will not be updated. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Default: The current timestamp.
+     */
+    last_read_at?: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ActivityMarkThreadAsReadParams = {
+    thread_id: number;
+  };
+  export type ActivitySetRepoSubscriptionParams = {
+    /**
+     * Determines if all notifications should be blocked from this repository.
+     */
+    ignored?: boolean;
+
+    owner: string;
+
+    repo: string;
+    /**
+     * Determines if notifications should be received from this repository.
+     */
+    subscribed?: boolean;
+  };
+  export type ActivitySetThreadSubscriptionParams = {
+    /**
+     * Unsubscribes and subscribes you to a conversation. Set `ignored` to `true` to block all notifications from this thread.
+     */
+    ignored?: boolean;
+
+    thread_id: number;
+  };
+  export type ActivityStarRepoParams = {
+    owner: string;
+
+    repo: string;
+  };
+  export type ActivityUnstarRepoParams = {
+    owner: string;
+
+    repo: string;
+  };
+  export type AppsAddRepoToInstallationParams = {
+    installation_id: number;
+
+    repository_id: number;
+  };
+  export type AppsCheckAccountIsAssociatedWithAnyParams = {
+    account_id: number;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+  };
+  export type AppsCheckAccountIsAssociatedWithAnyStubbedParams = {
+    account_id: number;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+  };
+  export type AppsCheckAuthorizationParams = {
+    access_token: string;
+
+    client_id: string;
+  };
+  export type AppsCheckTokenParams = {
+    /**
+     * The OAuth access token used to authenticate to the GitHub API.
+     */
+    access_token?: string;
+
+    client_id: string;
+  };
+  export type AppsCreateContentAttachmentParams = {
+    /**
+     * The body text of the content attachment displayed in the body or comment of an issue or pull request. This parameter supports markdown.
+     */
+    body: string;
+
+    content_reference_id: number;
+    /**
+     * The title of the content attachment displayed in the body or comment of an issue or pull request.
+     */
+    title: string;
+  };
+  export type AppsCreateFromManifestParams = {
+    code: string;
+  };
+  export type AppsCreateInstallationTokenParams = {
+    installation_id: number;
+    /**
+     * The permissions granted to the access token. The permissions object includes the permission names and their access type. For a complete list of permissions and allowable values, see "[GitHub App permissions](https://developer.github.com/apps/building-github-apps/creating-github-apps-using-url-parameters/#github-app-permissions)."
+     */
+    permissions?: AppsCreateInstallationTokenParamsPermissions;
+    /**
+     * The `id`s of the repositories that the installation token can access. Providing repository `id`s restricts the access of an installation token to specific repositories. You can use the "[List repositories](https://developer.github.com/v3/apps/installations/#list-repositories)" endpoint to get the `id` of all repositories that an installation can access. For example, you can select specific repositories when creating an installation token to restrict the number of repositories that can be cloned using the token.
+     */
+    repository_ids?: number[];
+  };
+  export type AppsDeleteAuthorizationParams = {
+    /**
+     * The OAuth access token used to authenticate to the GitHub API.
+     */
+    access_token?: string;
+
+    client_id: string;
+  };
+  export type AppsDeleteInstallationParams = {
+    installation_id: number;
+  };
+  export type AppsDeleteTokenParams = {
+    /**
+     * The OAuth access token used to authenticate to the GitHub API.
+     */
+    access_token?: string;
+
+    client_id: string;
+  };
+  export type AppsFindOrgInstallationParams = {
+    org: string;
+  };
+  export type AppsFindRepoInstallationParams = {
+    owner: string;
+
+    repo: string;
+  };
+  export type AppsFindUserInstallationParams = {
+    username: string;
+  };
+  export type AppsGetBySlugParams = {
+    app_slug: string;
+  };
+  export type AppsGetInstallationParams = {
+    installation_id: number;
+  };
+  export type AppsGetOrgInstallationParams = {
+    org: string;
+  };
+  export type AppsGetRepoInstallationParams = {
+    owner: string;
+
+    repo: string;
+  };
+  export type AppsGetUserInstallationParams = {
+    username: string;
+  };
+  export type AppsListAccountsUserOrOrgOnPlanParams = {
+    /**
+     * To return the oldest accounts first, set to `asc`. Can be one of `asc` or `desc`. Ignored without the `sort` parameter.
+     */
+    direction?: "asc" | "desc";
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    plan_id: number;
+    /**
+     * Sorts the GitHub accounts by the date they were created or last updated. Can be one of `created` or `updated`.
+     */
+    sort?: "created" | "updated";
+  };
+  export type AppsListAccountsUserOrOrgOnPlanStubbedParams = {
+    /**
+     * To return the oldest accounts first, set to `asc`. Can be one of `asc` or `desc`. Ignored without the `sort` parameter.
+     */
+    direction?: "asc" | "desc";
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    plan_id: number;
+    /**
+     * Sorts the GitHub accounts by the date they were created or last updated. Can be one of `created` or `updated`.
+     */
+    sort?: "created" | "updated";
+  };
+  export type AppsListInstallationReposForAuthenticatedUserParams = {
+    installation_id: number;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+  };
+  export type AppsListInstallationsParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+  };
+  export type AppsListInstallationsForAuthenticatedUserParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+  };
+  export type AppsListMarketplacePurchasesForAuthenticatedUserParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+  };
+  export type AppsListMarketplacePurchasesForAuthenticatedUserStubbedParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+  };
+  export type AppsListPlansParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+  };
+  export type AppsListPlansStubbedParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+  };
+  export type AppsListReposParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+  };
+  export type AppsRemoveRepoFromInstallationParams = {
+    installation_id: number;
+
+    repository_id: number;
+  };
+  export type AppsResetAuthorizationParams = {
+    access_token: string;
+
+    client_id: string;
+  };
+  export type AppsResetTokenParams = {
+    /**
+     * The OAuth access token used to authenticate to the GitHub API.
+     */
+    access_token?: string;
+
+    client_id: string;
+  };
+  export type AppsRevokeAuthorizationForApplicationParams = {
+    access_token: string;
+
+    client_id: string;
+  };
+  export type AppsRevokeGrantForApplicationParams = {
+    access_token: string;
+
+    client_id: string;
+  };
+  export type ChecksCreateParams = {
+    /**
+     * Displays a button on GitHub that can be clicked to alert your app to do additional tasks. For example, a code linting app can display a button that automatically fixes detected errors. The button created in this object is displayed after the check run completes. When a user clicks the button, GitHub sends the [`check_run.requested_action` webhook](https://developer.github.com/v3/activity/events/types/#checkrunevent) to your app. Each action includes a `label`, `identifier` and `description`. A maximum of three actions are accepted. See the [`actions` object](https://developer.github.com/v3/checks/runs/#actions-object) description. To learn more about check runs and requested actions, see "[Check runs and requested actions](https://developer.github.com/v3/checks/runs/#check-runs-and-requested-actions)." To learn more about check runs and requested actions, see "[Check runs and requested actions](https://developer.github.com/v3/checks/runs/#check-runs-and-requested-actions)."
+     */
+    actions?: ChecksCreateParamsActions[];
+    /**
+     * The time the check completed. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
+     */
+    completed_at?: string;
+    /**
+     * **Required if you provide `completed_at` or a `status` of `completed`**. The final conclusion of the check. Can be one of `success`, `failure`, `neutral`, `cancelled`, `timed_out`, or `action_required`. When the conclusion is `action_required`, additional details should be provided on the site specified by `details_url`.
+     * **Note:** Providing `conclusion` will automatically set the `status` parameter to `completed`.
+     */
+    conclusion?:
+      | "success"
+      | "failure"
+      | "neutral"
+      | "cancelled"
+      | "timed_out"
+      | "action_required";
+    /**
+     * The URL of the integrator's site that has the full details of the check.
+     */
+    details_url?: string;
+    /**
+     * A reference for the run on the integrator's system.
+     */
+    external_id?: string;
+    /**
+     * The SHA of the commit.
+     */
+    head_sha: string;
+    /**
+     * The name of the check. For example, "code-coverage".
+     */
+    name: string;
+    /**
+     * Check runs can accept a variety of data in the `output` object, including a `title` and `summary` and can optionally provide descriptive details about the run. See the [`output` object](https://developer.github.com/v3/checks/runs/#output-object) description.
+     */
+    output?: ChecksCreateParamsOutput;
+
+    owner: string;
+
+    repo: string;
+    /**
+     * The time that the check run began. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
+     */
+    started_at?: string;
+    /**
+     * The current status. Can be one of `queued`, `in_progress`, or `completed`.
+     */
+    status?: "queued" | "in_progress" | "completed";
+  };
+  export type ChecksCreateSuiteParams = {
+    /**
+     * The sha of the head commit.
+     */
+    head_sha: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ChecksGetParams = {
+    check_run_id: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ChecksGetSuiteParams = {
+    check_suite_id: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ChecksListAnnotationsParams = {
+    check_run_id: number;
+
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+  };
+  export type ChecksListForRefParams = {
+    /**
+     * Returns check runs with the specified `name`.
+     */
+    check_name?: string;
+    /**
+     * Filters check runs by their `completed_at` timestamp. Can be one of `latest` (returning the most recent check runs) or `all`.
+     */
+    filter?: "latest" | "all";
+
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    ref: string;
+
+    repo: string;
+    /**
+     * Returns check runs with the specified `status`. Can be one of `queued`, `in_progress`, or `completed`.
+     */
+    status?: "queued" | "in_progress" | "completed";
+  };
+  export type ChecksListForSuiteParams = {
+    /**
+     * Returns check runs with the specified `name`.
+     */
+    check_name?: string;
+
+    check_suite_id: number;
+    /**
+     * Filters check runs by their `completed_at` timestamp. Can be one of `latest` (returning the most recent check runs) or `all`.
+     */
+    filter?: "latest" | "all";
+
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+    /**
+     * Returns check runs with the specified `status`. Can be one of `queued`, `in_progress`, or `completed`.
+     */
+    status?: "queued" | "in_progress" | "completed";
+  };
+  export type ChecksListSuitesForRefParams = {
+    /**
+     * Filters check suites by GitHub App `id`.
+     */
+    app_id?: number;
+    /**
+     * Filters checks suites by the name of the [check run](https://developer.github.com/v3/checks/runs/).
+     */
+    check_name?: string;
+
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    ref: string;
+
+    repo: string;
+  };
+  export type ChecksRerequestSuiteParams = {
+    check_suite_id: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ChecksSetSuitesPreferencesParams = {
+    /**
+     * Enables or disables automatic creation of CheckSuite events upon pushes to the repository. Enabled by default. See the [`auto_trigger_checks` object](https://developer.github.com/v3/checks/suites/#auto_trigger_checks-object) description for details.
+     */
+    auto_trigger_checks?: ChecksSetSuitesPreferencesParamsAutoTriggerChecks[];
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ChecksUpdateParams = {
+    /**
+     * Possible further actions the integrator can perform, which a user may trigger. Each action includes a `label`, `identifier` and `description`. A maximum of three actions are accepted. See the [`actions` object](https://developer.github.com/v3/checks/runs/#actions-object) description. To learn more about check runs and requested actions, see "[Check runs and requested actions](https://developer.github.com/v3/checks/runs/#check-runs-and-requested-actions)."
+     */
+    actions?: ChecksUpdateParamsActions[];
+
+    check_run_id: number;
+    /**
+     * The time the check completed. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
+     */
+    completed_at?: string;
+    /**
+     * **Required if you provide `completed_at` or a `status` of `completed`**. The final conclusion of the check. Can be one of `success`, `failure`, `neutral`, `cancelled`, `timed_out`, or `action_required`.
+     * **Note:** Providing `conclusion` will automatically set the `status` parameter to `completed`.
+     */
+    conclusion?:
+      | "success"
+      | "failure"
+      | "neutral"
+      | "cancelled"
+      | "timed_out"
+      | "action_required";
+    /**
+     * The URL of the integrator's site that has the full details of the check.
+     */
+    details_url?: string;
+    /**
+     * A reference for the run on the integrator's system.
+     */
+    external_id?: string;
+    /**
+     * The name of the check. For example, "code-coverage".
+     */
+    name?: string;
+    /**
+     * Check runs can accept a variety of data in the `output` object, including a `title` and `summary` and can optionally provide descriptive details about the run. See the [`output` object](https://developer.github.com/v3/checks/runs/#output-object-1) description.
+     */
+    output?: ChecksUpdateParamsOutput;
+
+    owner: string;
+
+    repo: string;
+    /**
+     * This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
+     */
+    started_at?: string;
+    /**
+     * The current status. Can be one of `queued`, `in_progress`, or `completed`.
+     */
+    status?: "queued" | "in_progress" | "completed";
+  };
+  export type CodesOfConductGetConductCodeParams = {
+    key: string;
+  };
+  export type CodesOfConductGetForRepoParams = {
+    owner: string;
+
+    repo: string;
+  };
+  export type GistsCheckIsStarredParams = {
+    gist_id: string;
+  };
+  export type GistsCreateParams = {
+    /**
+     * A descriptive name for this gist.
+     */
+    description?: string;
+    /**
+     * The filenames and content of each file in the gist. The keys in the `files` object represent the filename and have the type `string`.
+     */
+    files: GistsCreateParamsFiles;
+    /**
+     * When `true`, the gist will be public and available for anyone to see.
+     */
+    public?: boolean;
+  };
+  export type GistsCreateCommentParams = {
+    /**
+     * The comment text.
+     */
+    body: string;
+
+    gist_id: string;
+  };
+  export type GistsDeleteParams = {
+    gist_id: string;
+  };
+  export type GistsDeleteCommentParams = {
+    comment_id: number;
+
+    gist_id: string;
+  };
+  export type GistsForkParams = {
+    gist_id: string;
+  };
+  export type GistsGetParams = {
+    gist_id: string;
+  };
+  export type GistsGetCommentParams = {
+    comment_id: number;
+
+    gist_id: string;
+  };
+  export type GistsGetRevisionParams = {
+    gist_id: string;
+
+    sha: string;
+  };
+  export type GistsListParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+    /**
+     * This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Only gists updated at or after this time are returned.
+     */
+    since?: string;
+  };
+  export type GistsListCommentsParams = {
+    gist_id: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+  };
+  export type GistsListCommitsParams = {
+    gist_id: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+  };
+  export type GistsListForksParams = {
+    gist_id: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+  };
+  export type GistsListPublicParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+    /**
+     * This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Only gists updated at or after this time are returned.
+     */
+    since?: string;
+  };
+  export type GistsListPublicForUserParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+    /**
+     * This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Only gists updated at or after this time are returned.
+     */
+    since?: string;
+
+    username: string;
+  };
+  export type GistsListStarredParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+    /**
+     * This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Only gists updated at or after this time are returned.
+     */
+    since?: string;
+  };
+  export type GistsStarParams = {
+    gist_id: string;
+  };
+  export type GistsUnstarParams = {
+    gist_id: string;
+  };
+  export type GistsUpdateParams = {
+    /**
+     * A descriptive name for this gist.
+     */
+    description?: string;
+    /**
+     * The filenames and content that make up this gist.
+     */
+    files?: GistsUpdateParamsFiles;
+
+    gist_id: string;
+  };
+  export type GistsUpdateCommentParams = {
+    /**
+     * The comment text.
+     */
+    body: string;
+
+    comment_id: number;
+
+    gist_id: string;
+  };
+  export type GitCreateBlobParams = {
+    /**
+     * The new blob's content.
+     */
+    content: string;
+    /**
+     * The encoding used for `content`. Currently, `"utf-8"` and `"base64"` are supported.
+     */
+    encoding?: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type GitCreateCommitParams = {
+    /**
+     * Information about the author of the commit. By default, the `author` will be the authenticated user and the current date. See the `author` and `committer` object below for details.
+     */
+    author?: GitCreateCommitParamsAuthor;
+    /**
+     * Information about the person who is making the commit. By default, `committer` will use the information set in `author`. See the `author` and `committer` object below for details.
+     */
+    committer?: GitCreateCommitParamsCommitter;
+    /**
+     * The commit message
+     */
+    message: string;
+
+    owner: string;
+    /**
+     * The SHAs of the commits that were the parents of this commit. If omitted or empty, the commit will be written as a root commit. For a single parent, an array of one SHA should be provided; for a merge commit, an array of more than one should be provided.
+     */
+    parents: string[];
+
+    repo: string;
+    /**
+     * The [PGP signature](https://en.wikipedia.org/wiki/Pretty_Good_Privacy) of the commit. GitHub adds the signature to the `gpgsig` header of the created commit. For a commit signature to be verifiable by Git or GitHub, it must be an ASCII-armored detached PGP signature over the string commit as it would be written to the object database. To pass a `signature` parameter, you need to first manually create a valid PGP signature, which can be complicated. You may find it easier to [use the command line](https://git-scm.com/book/id/v2/Git-Tools-Signing-Your-Work) to create signed commits.
+     */
+    signature?: string;
+    /**
+     * The SHA of the tree object this commit points to
+     */
+    tree: string;
+  };
+  export type GitCreateRefParams = {
+    owner: string;
+    /**
+     * The name of the fully qualified reference (ie: `refs/heads/master`). If it doesn't start with 'refs' and have at least two slashes, it will be rejected.
+     */
+    ref: string;
+
+    repo: string;
+    /**
+     * The SHA1 value for this reference.
+     */
+    sha: string;
+  };
+  export type GitCreateTagParams = {
+    /**
+     * The tag message.
+     */
+    message: string;
+    /**
+     * The SHA of the git object this is tagging.
+     */
+    object: string;
+
+    owner: string;
+
+    repo: string;
+    /**
+     * The tag's name. This is typically a version (e.g., "v0.0.1").
+     */
+    tag: string;
+    /**
+     * An object with information about the individual creating the tag.
+     */
+    tagger?: GitCreateTagParamsTagger;
+    /**
+     * The type of the object we're tagging. Normally this is a `commit` but it can also be a `tree` or a `blob`.
+     */
+    type: "commit" | "tree" | "blob";
+  };
+  export type GitCreateTreeParams = {
+    /**
+     * The SHA1 of the tree you want to update with new data. If you don't set this, the commit will be created on top of everything; however, it will only contain your change, the rest of your files will show up as deleted.
+     */
+    base_tree?: string;
+
+    owner: string;
+
+    repo: string;
+    /**
+     * Objects (of `path`, `mode`, `type`, and `sha`) specifying a tree structure.
+     */
+    tree: GitCreateTreeParamsTree[];
+  };
+  export type GitDeleteRefParams = {
+    owner: string;
+
+    ref: string;
+
+    repo: string;
+  };
+  export type GitGetBlobParams = {
+    file_sha: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type GitGetCommitParams = {
+    commit_sha: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type GitGetRefParams = {
+    owner: string;
+
+    ref: string;
+
+    repo: string;
+  };
+  export type GitGetTagParams = {
+    owner: string;
+
+    repo: string;
+
+    tag_sha: string;
+  };
+  export type GitGetTreeParams = {
+    owner: string;
+
+    recursive?: "1";
+
+    repo: string;
+
+    tree_sha: string;
+  };
+  export type GitListMatchingRefsParams = {
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    ref: string;
+
+    repo: string;
+  };
+  export type GitListRefsParams = {
+    /**
+     * Filter by sub-namespace (reference prefix). Most commen examples would be `'heads/'` and `'tags/'` to retrieve branches or tags
+     */
+    namespace?: string;
+
+    owner: string;
+
+    page?: number;
+
+    per_page?: number;
+
+    repo: string;
+  };
+  export type GitUpdateRefParams = {
+    /**
+     * Indicates whether to force the update or to make sure the update is a fast-forward update. Leaving this out or setting it to `false` will make sure you're not overwriting work.
+     */
+    force?: boolean;
+
+    owner: string;
+
+    ref: string;
+
+    repo: string;
+    /**
+     * The SHA1 value to set this reference to
+     */
+    sha: string;
+  };
+  export type GitignoreGetTemplateParams = {
+    name: string;
+  };
+  export type InteractionsAddOrUpdateRestrictionsForOrgParams = {
+    /**
+     * Specifies the group of GitHub users who can comment, open issues, or create pull requests in public repositories for the given organization. Must be one of: `existing_users`, `contributors_only`, or `collaborators_only`.
+     */
+    limit: "existing_users" | "contributors_only" | "collaborators_only";
+
+    org: string;
+  };
+  export type InteractionsAddOrUpdateRestrictionsForRepoParams = {
+    /**
+     * Specifies the group of GitHub users who can comment, open issues, or create pull requests for the given repository. Must be one of: `existing_users`, `contributors_only`, or `collaborators_only`.
+     */
+    limit: "existing_users" | "contributors_only" | "collaborators_only";
+
+    owner: string;
+
+    repo: string;
+  };
+  export type InteractionsGetRestrictionsForOrgParams = {
+    org: string;
+  };
+  export type InteractionsGetRestrictionsForRepoParams = {
+    owner: string;
+
+    repo: string;
+  };
+  export type InteractionsRemoveRestrictionsForOrgParams = {
+    org: string;
+  };
+  export type InteractionsRemoveRestrictionsForRepoParams = {
+    owner: string;
+
+    repo: string;
+  };
+  export type IssuesAddAssigneesParamsDeprecatedNumber = {
+    /**
+     * Usernames of people to assign this issue to. _NOTE: Only users with push access can add assignees to an issue. Assignees are silently ignored otherwise._
+     */
+    assignees?: string[];
+    /**
+     * @deprecated "number" parameter renamed to "issue_number"
+     */
+    number: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type IssuesAddAssigneesParams = {
+    /**
+     * Usernames of people to assign this issue to. _NOTE: Only users with push access can add assignees to an issue. Assignees are silently ignored otherwise._
+     */
+    assignees?: string[];
+
+    issue_number: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type IssuesAddLabelsParamsDeprecatedNumber = {
+    /**
+     * The name of the label to add to the issue. Must contain at least one label. **Note:** Alternatively, you can pass a single label as a `string` or an `array` of labels directly, but GitHub recommends passing an object with the `labels` key.
+     */
+    labels: string[];
+    /**
+     * @deprecated "number" parameter renamed to "issue_number"
+     */
+    number: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type IssuesAddLabelsParams = {
+    issue_number: number;
+    /**
+     * The name of the label to add to the issue. Must contain at least one label. **Note:** Alternatively, you can pass a single label as a `string` or an `array` of labels directly, but GitHub recommends passing an object with the `labels` key.
+     */
+    labels: string[];
+
+    owner: string;
+
+    repo: string;
+  };
+  export type IssuesCheckAssigneeParams = {
+    assignee: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type IssuesCreateParamsDeprecatedAssignee = {
+    /**
+     * Login for the user that this issue should be assigned to. _NOTE: Only users with push access can set the assignee for new issues. The assignee is silently dropped otherwise. **This field is deprecated.**_
+     * @deprecated "assignee" parameter has been deprecated and will be removed in future
+     */
+    assignee?: string;
+    /**
+     * Logins for Users to assign to this issue. _NOTE: Only users with push access can set assignees for new issues. Assignees are silently dropped otherwise._
+     */
+    assignees?: string[];
+    /**
+     * The contents of the issue.
+     */
+    body?: string;
+    /**
+     * Labels to associate with this issue. _NOTE: Only users with push access can set labels for new issues. Labels are silently dropped otherwise._
+     */
+    labels?: string[];
+    /**
+     * The `number` of the milestone to associate this issue with. _NOTE: Only users with push access can set the milestone for new issues. The milestone is silently dropped otherwise._
+     */
+    milestone?: number;
+
+    owner: string;
+
+    repo: string;
+    /**
+     * The title of the issue.
+     */
+    title: string;
+  };
+  export type IssuesCreateParams = {
+    /**
+     * Logins for Users to assign to this issue. _NOTE: Only users with push access can set assignees for new issues. Assignees are silently dropped otherwise._
+     */
+    assignees?: string[];
+    /**
+     * The contents of the issue.
+     */
+    body?: string;
+    /**
+     * Labels to associate with this issue. _NOTE: Only users with push access can set labels for new issues. Labels are silently dropped otherwise._
+     */
+    labels?: string[];
+    /**
+     * The `number` of the milestone to associate this issue with. _NOTE: Only users with push access can set the milestone for new issues. The milestone is silently dropped otherwise._
+     */
+    milestone?: number;
+
+    owner: string;
+
+    repo: string;
+    /**
+     * The title of the issue.
+     */
+    title: string;
+  };
+  export type IssuesCreateCommentParamsDeprecatedNumber = {
+    /**
+     * The contents of the comment.
+     */
+    body: string;
+    /**
+     * @deprecated "number" parameter renamed to "issue_number"
+     */
+    number: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type IssuesCreateCommentParams = {
+    /**
+     * The contents of the comment.
+     */
+    body: string;
+
+    issue_number: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type IssuesCreateLabelParams = {
+    /**
+     * The [hexadecimal color code](http://www.color-hex.com/) for the label, without the leading `#`.
+     */
+    color: string;
+    /**
+     * A short description of the label.
+     */
+    description?: string;
+    /**
+     * The name of the label. Emoji can be added to label names, using either native emoji or colon-style markup. For example, typing `:strawberry:` will render the emoji ![:strawberry:](https://github.githubassets.com/images/icons/emoji/unicode/1f353.png ":strawberry:"). For a full list of available emoji and codes, see [emoji-cheat-sheet.com](http://emoji-cheat-sheet.com/).
+     */
+    name: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type IssuesCreateMilestoneParams = {
+    /**
+     * A description of the milestone.
+     */
+    description?: string;
+    /**
+     * The milestone due date. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
+     */
+    due_on?: string;
+
+    owner: string;
+
+    repo: string;
+    /**
+     * The state of the milestone. Either `open` or `closed`.
+     */
+    state?: "open" | "closed";
+    /**
+     * The title of the milestone.
+     */
+    title: string;
+  };
+  export type IssuesDeleteCommentParams = {
+    comment_id: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type IssuesDeleteLabelParams = {
+    name: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type IssuesDeleteMilestoneParamsDeprecatedNumber = {
+    /**
+     * @deprecated "number" parameter renamed to "milestone_number"
+     */
+    number: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type IssuesDeleteMilestoneParams = {
+    milestone_number: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type IssuesGetParamsDeprecatedNumber = {
+    /**
+     * @deprecated "number" parameter renamed to "issue_number"
+     */
+    number: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type IssuesGetParams = {
+    issue_number: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type IssuesGetCommentParams = {
+    comment_id: number;
+
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+  };
+  export type IssuesGetEventParams = {
+    event_id: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type IssuesGetLabelParams = {
+    name: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type IssuesGetMilestoneParamsDeprecatedNumber = {
+    /**
+     * @deprecated "number" parameter renamed to "milestone_number"
+     */
+    number: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type IssuesGetMilestoneParams = {
+    milestone_number: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type IssuesListParams = {
+    /**
+     * The direction of the sort. Can be either `asc` or `desc`.
+     */
+    direction?: "asc" | "desc";
+    /**
+     * Indicates which sorts of issues to return. Can be one of:
+     * \* `assigned`: Issues assigned to you
+     * \* `created`: Issues created by you
+     * \* `mentioned`: Issues mentioning you
+     * \* `subscribed`: Issues you're subscribed to updates for
+     * \* `all`: All issues the authenticated user can see, regardless of participation or creation
+     */
+    filter?: "assigned" | "created" | "mentioned" | "subscribed" | "all";
+    /**
+     * A list of comma separated label names. Example: `bug,ui,@high`
+     */
+    labels?: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+    /**
+     * Only issues updated at or after this time are returned. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
+     */
+    since?: string;
+    /**
+     * What to sort results by. Can be either `created`, `updated`, `comments`.
+     */
+    sort?: "created" | "updated" | "comments";
+    /**
+     * Indicates the state of the issues to return. Can be either `open`, `closed`, or `all`.
+     */
+    state?: "open" | "closed" | "all";
+  };
+  export type IssuesListAssigneesParams = {
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+  };
+  export type IssuesListCommentsParamsDeprecatedNumber = {
+    /**
+     * @deprecated "number" parameter renamed to "issue_number"
+     */
+    number: number;
+
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+    /**
+     * Only comments updated at or after this time are returned. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
+     */
+    since?: string;
+  };
+  export type IssuesListCommentsParams = {
+    issue_number: number;
+
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+    /**
+     * Only comments updated at or after this time are returned. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
+     */
+    since?: string;
+  };
+  export type IssuesListCommentsForRepoParams = {
+    /**
+     * Either `asc` or `desc`. Ignored without the `sort` parameter.
+     */
+    direction?: "asc" | "desc";
+
+    owner: string;
+
+    repo: string;
+    /**
+     * Only comments updated at or after this time are returned. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
+     */
+    since?: string;
+    /**
+     * Either `created` or `updated`.
+     */
+    sort?: "created" | "updated";
+  };
+  export type IssuesListEventsParamsDeprecatedNumber = {
+    /**
+     * @deprecated "number" parameter renamed to "issue_number"
+     */
+    number: number;
+
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+  };
+  export type IssuesListEventsParams = {
+    issue_number: number;
+
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+  };
+  export type IssuesListEventsForRepoParams = {
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+  };
+  export type IssuesListEventsForTimelineParamsDeprecatedNumber = {
+    /**
+     * @deprecated "number" parameter renamed to "issue_number"
+     */
+    number: number;
+
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+  };
+  export type IssuesListEventsForTimelineParams = {
+    issue_number: number;
+
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+  };
+  export type IssuesListForAuthenticatedUserParams = {
+    /**
+     * The direction of the sort. Can be either `asc` or `desc`.
+     */
+    direction?: "asc" | "desc";
+    /**
+     * Indicates which sorts of issues to return. Can be one of:
+     * \* `assigned`: Issues assigned to you
+     * \* `created`: Issues created by you
+     * \* `mentioned`: Issues mentioning you
+     * \* `subscribed`: Issues you're subscribed to updates for
+     * \* `all`: All issues the authenticated user can see, regardless of participation or creation
+     */
+    filter?: "assigned" | "created" | "mentioned" | "subscribed" | "all";
+    /**
+     * A list of comma separated label names. Example: `bug,ui,@high`
+     */
+    labels?: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+    /**
+     * Only issues updated at or after this time are returned. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
+     */
+    since?: string;
+    /**
+     * What to sort results by. Can be either `created`, `updated`, `comments`.
+     */
+    sort?: "created" | "updated" | "comments";
+    /**
+     * Indicates the state of the issues to return. Can be either `open`, `closed`, or `all`.
+     */
+    state?: "open" | "closed" | "all";
+  };
+  export type IssuesListForOrgParams = {
+    /**
+     * The direction of the sort. Can be either `asc` or `desc`.
+     */
+    direction?: "asc" | "desc";
+    /**
+     * Indicates which sorts of issues to return. Can be one of:
+     * \* `assigned`: Issues assigned to you
+     * \* `created`: Issues created by you
+     * \* `mentioned`: Issues mentioning you
+     * \* `subscribed`: Issues you're subscribed to updates for
+     * \* `all`: All issues the authenticated user can see, regardless of participation or creation
+     */
+    filter?: "assigned" | "created" | "mentioned" | "subscribed" | "all";
+    /**
+     * A list of comma separated label names. Example: `bug,ui,@high`
+     */
+    labels?: string;
+
+    org: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+    /**
+     * Only issues updated at or after this time are returned. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
+     */
+    since?: string;
+    /**
+     * What to sort results by. Can be either `created`, `updated`, `comments`.
+     */
+    sort?: "created" | "updated" | "comments";
+    /**
+     * Indicates the state of the issues to return. Can be either `open`, `closed`, or `all`.
+     */
+    state?: "open" | "closed" | "all";
+  };
+  export type IssuesListForRepoParams = {
+    /**
+     * Can be the name of a user. Pass in `none` for issues with no assigned user, and `*` for issues assigned to any user.
+     */
+    assignee?: string;
+    /**
+     * The user that created the issue.
+     */
+    creator?: string;
+    /**
+     * The direction of the sort. Can be either `asc` or `desc`.
+     */
+    direction?: "asc" | "desc";
+    /**
+     * A list of comma separated label names. Example: `bug,ui,@high`
+     */
+    labels?: string;
+    /**
+     * A user that's mentioned in the issue.
+     */
+    mentioned?: string;
+    /**
+     * If an `integer` is passed, it should refer to a milestone by its `number` field. If the string `*` is passed, issues with any milestone are accepted. If the string `none` is passed, issues without milestones are returned.
+     */
+    milestone?: string;
+
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+    /**
+     * Only issues updated at or after this time are returned. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
+     */
+    since?: string;
+    /**
+     * What to sort results by. Can be either `created`, `updated`, `comments`.
+     */
+    sort?: "created" | "updated" | "comments";
+    /**
+     * Indicates the state of the issues to return. Can be either `open`, `closed`, or `all`.
+     */
+    state?: "open" | "closed" | "all";
+  };
+  export type IssuesListLabelsForMilestoneParamsDeprecatedNumber = {
+    /**
+     * @deprecated "number" parameter renamed to "milestone_number"
+     */
+    number: number;
+
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+  };
+  export type IssuesListLabelsForMilestoneParams = {
+    milestone_number: number;
+
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+  };
+  export type IssuesListLabelsForRepoParams = {
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+  };
+  export type IssuesListLabelsOnIssueParamsDeprecatedNumber = {
+    /**
+     * @deprecated "number" parameter renamed to "issue_number"
+     */
+    number: number;
+
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+  };
+  export type IssuesListLabelsOnIssueParams = {
+    issue_number: number;
+
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+  };
+  export type IssuesListMilestonesForRepoParams = {
+    /**
+     * The direction of the sort. Either `asc` or `desc`.
+     */
+    direction?: "asc" | "desc";
+
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+    /**
+     * What to sort results by. Either `due_on` or `completeness`.
+     */
+    sort?: "due_on" | "completeness";
+    /**
+     * The state of the milestone. Either `open`, `closed`, or `all`.
+     */
+    state?: "open" | "closed" | "all";
+  };
+  export type IssuesLockParamsDeprecatedNumber = {
+    /**
+     * The reason for locking the issue or pull request conversation. Lock will fail if you don't use one of these reasons:
+     * \* `off-topic`
+     * \* `too heated`
+     * \* `resolved`
+     * \* `spam`
+     */
+    lock_reason?: "off-topic" | "too heated" | "resolved" | "spam";
+    /**
+     * @deprecated "number" parameter renamed to "issue_number"
+     */
+    number: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type IssuesLockParams = {
+    issue_number: number;
+    /**
+     * The reason for locking the issue or pull request conversation. Lock will fail if you don't use one of these reasons:
+     * \* `off-topic`
+     * \* `too heated`
+     * \* `resolved`
+     * \* `spam`
+     */
+    lock_reason?: "off-topic" | "too heated" | "resolved" | "spam";
+
+    owner: string;
+
+    repo: string;
+  };
+  export type IssuesRemoveAssigneesParamsDeprecatedNumber = {
+    /**
+     * Usernames of assignees to remove from an issue. _NOTE: Only users with push access can remove assignees from an issue. Assignees are silently ignored otherwise._
+     */
+    assignees?: string[];
+    /**
+     * @deprecated "number" parameter renamed to "issue_number"
+     */
+    number: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type IssuesRemoveAssigneesParams = {
+    /**
+     * Usernames of assignees to remove from an issue. _NOTE: Only users with push access can remove assignees from an issue. Assignees are silently ignored otherwise._
+     */
+    assignees?: string[];
+
+    issue_number: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type IssuesRemoveLabelParamsDeprecatedNumber = {
+    name: string;
+    /**
+     * @deprecated "number" parameter renamed to "issue_number"
+     */
+    number: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type IssuesRemoveLabelParams = {
+    issue_number: number;
+
+    name: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type IssuesRemoveLabelsParamsDeprecatedNumber = {
+    /**
+     * @deprecated "number" parameter renamed to "issue_number"
+     */
+    number: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type IssuesRemoveLabelsParams = {
+    issue_number: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type IssuesReplaceLabelsParamsDeprecatedNumber = {
+    /**
+     * The names of the labels to add to the issue. You can pass an empty array to remove all labels. **Note:** Alternatively, you can pass a single label as a `string` or an `array` of labels directly, but GitHub recommends passing an object with the `labels` key.
+     */
+    labels?: string[];
+    /**
+     * @deprecated "number" parameter renamed to "issue_number"
+     */
+    number: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type IssuesReplaceLabelsParams = {
+    issue_number: number;
+    /**
+     * The names of the labels to add to the issue. You can pass an empty array to remove all labels. **Note:** Alternatively, you can pass a single label as a `string` or an `array` of labels directly, but GitHub recommends passing an object with the `labels` key.
+     */
+    labels?: string[];
+
+    owner: string;
+
+    repo: string;
+  };
+  export type IssuesUnlockParamsDeprecatedNumber = {
+    /**
+     * @deprecated "number" parameter renamed to "issue_number"
+     */
+    number: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type IssuesUnlockParams = {
+    issue_number: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type IssuesUpdateParamsDeprecatedNumber = {
+    /**
+     * Logins for Users to assign to this issue. Pass one or more user logins to _replace_ the set of assignees on this Issue. Send an empty array (`[]`) to clear all assignees from the Issue. _NOTE: Only users with push access can set assignees for new issues. Assignees are silently dropped otherwise._
+     */
+    assignees?: string[];
+    /**
+     * The contents of the issue.
+     */
+    body?: string;
+    /**
+     * Labels to associate with this issue. Pass one or more Labels to _replace_ the set of Labels on this Issue. Send an empty array (`[]`) to clear all Labels from the Issue. _NOTE: Only users with push access can set labels for issues. Labels are silently dropped otherwise._
+     */
+    labels?: string[];
+    /**
+     * The `number` of the milestone to associate this issue with or `null` to remove current. _NOTE: Only users with push access can set the milestone for issues. The milestone is silently dropped otherwise._
+     */
+    milestone?: number | null;
+    /**
+     * @deprecated "number" parameter renamed to "issue_number"
+     */
+    number: number;
+
+    owner: string;
+
+    repo: string;
+    /**
+     * State of the issue. Either `open` or `closed`.
+     */
+    state?: "open" | "closed";
+    /**
+     * The title of the issue.
+     */
+    title?: string;
+  };
+  export type IssuesUpdateParamsDeprecatedAssignee = {
+    /**
+     * Login for the user that this issue should be assigned to. **This field is deprecated.**
+     * @deprecated "assignee" parameter has been deprecated and will be removed in future
+     */
+    assignee?: string;
+    /**
+     * Logins for Users to assign to this issue. Pass one or more user logins to _replace_ the set of assignees on this Issue. Send an empty array (`[]`) to clear all assignees from the Issue. _NOTE: Only users with push access can set assignees for new issues. Assignees are silently dropped otherwise._
+     */
+    assignees?: string[];
+    /**
+     * The contents of the issue.
+     */
+    body?: string;
+
+    issue_number: number;
+    /**
+     * Labels to associate with this issue. Pass one or more Labels to _replace_ the set of Labels on this Issue. Send an empty array (`[]`) to clear all Labels from the Issue. _NOTE: Only users with push access can set labels for issues. Labels are silently dropped otherwise._
+     */
+    labels?: string[];
+    /**
+     * The `number` of the milestone to associate this issue with or `null` to remove current. _NOTE: Only users with push access can set the milestone for issues. The milestone is silently dropped otherwise._
+     */
+    milestone?: number | null;
+
+    owner: string;
+
+    repo: string;
+    /**
+     * State of the issue. Either `open` or `closed`.
+     */
+    state?: "open" | "closed";
+    /**
+     * The title of the issue.
+     */
+    title?: string;
+  };
+  export type IssuesUpdateParams = {
+    /**
+     * Logins for Users to assign to this issue. Pass one or more user logins to _replace_ the set of assignees on this Issue. Send an empty array (`[]`) to clear all assignees from the Issue. _NOTE: Only users with push access can set assignees for new issues. Assignees are silently dropped otherwise._
+     */
+    assignees?: string[];
+    /**
+     * The contents of the issue.
+     */
+    body?: string;
+
+    issue_number: number;
+    /**
+     * Labels to associate with this issue. Pass one or more Labels to _replace_ the set of Labels on this Issue. Send an empty array (`[]`) to clear all Labels from the Issue. _NOTE: Only users with push access can set labels for issues. Labels are silently dropped otherwise._
+     */
+    labels?: string[];
+    /**
+     * The `number` of the milestone to associate this issue with or `null` to remove current. _NOTE: Only users with push access can set the milestone for issues. The milestone is silently dropped otherwise._
+     */
+    milestone?: number | null;
+
+    owner: string;
+
+    repo: string;
+    /**
+     * State of the issue. Either `open` or `closed`.
+     */
+    state?: "open" | "closed";
+    /**
+     * The title of the issue.
+     */
+    title?: string;
+  };
+  export type IssuesUpdateCommentParams = {
+    /**
+     * The contents of the comment.
+     */
+    body: string;
+
+    comment_id: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type IssuesUpdateLabelParams = {
+    /**
+     * The [hexadecimal color code](http://www.color-hex.com/) for the label, without the leading `#`.
+     */
+    color?: string;
+
+    current_name: string;
+    /**
+     * A short description of the label.
+     */
+    description?: string;
+    /**
+     * The new name of the label. Emoji can be added to label names, using either native emoji or colon-style markup. For example, typing `:strawberry:` will render the emoji ![:strawberry:](https://github.githubassets.com/images/icons/emoji/unicode/1f353.png ":strawberry:"). For a full list of available emoji and codes, see [emoji-cheat-sheet.com](http://emoji-cheat-sheet.com/).
+     */
+    name?: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type IssuesUpdateMilestoneParamsDeprecatedNumber = {
+    /**
+     * A description of the milestone.
+     */
+    description?: string;
+    /**
+     * The milestone due date. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
+     */
+    due_on?: string;
+    /**
+     * @deprecated "number" parameter renamed to "milestone_number"
+     */
+    number: number;
+
+    owner: string;
+
+    repo: string;
+    /**
+     * The state of the milestone. Either `open` or `closed`.
+     */
+    state?: "open" | "closed";
+    /**
+     * The title of the milestone.
+     */
+    title?: string;
+  };
+  export type IssuesUpdateMilestoneParams = {
+    /**
+     * A description of the milestone.
+     */
+    description?: string;
+    /**
+     * The milestone due date. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
+     */
+    due_on?: string;
+
+    milestone_number: number;
+
+    owner: string;
+
+    repo: string;
+    /**
+     * The state of the milestone. Either `open` or `closed`.
+     */
+    state?: "open" | "closed";
+    /**
+     * The title of the milestone.
+     */
+    title?: string;
+  };
+  export type LicensesGetParams = {
+    license: string;
+  };
+  export type LicensesGetForRepoParams = {
+    owner: string;
+
+    repo: string;
+  };
+  export type MarkdownRenderParams = {
+    /**
+     * The repository context to use when creating references in `gfm` mode. Omit this parameter when using `markdown` mode.
+     */
+    context?: string;
+    /**
+     * The rendering mode. Can be either:
+     * \* `markdown` to render a document in plain Markdown, just like README.md files are rendered.
+     * \* `gfm` to render a document in [GitHub Flavored Markdown](https://github.github.com/gfm/), which creates links for user mentions as well as references to SHA-1 hashes, issues, and pull requests.
+     */
+    mode?: "markdown" | "gfm";
+    /**
+     * The Markdown text to render in HTML. Markdown content must be 400 KB or less.
+     */
+    text: string;
+  };
+  export type MarkdownRenderRawParams = {
+    data: string;
+  };
+  export type MigrationsCancelImportParams = {
+    owner: string;
+
+    repo: string;
+  };
+  export type MigrationsDeleteArchiveForAuthenticatedUserParams = {
+    migration_id: number;
+  };
+  export type MigrationsDeleteArchiveForOrgParams = {
+    migration_id: number;
+
+    org: string;
+  };
+  export type MigrationsGetArchiveForAuthenticatedUserParams = {
+    migration_id: number;
+  };
+  export type MigrationsGetArchiveForOrgParams = {
+    migration_id: number;
+
+    org: string;
+  };
+  export type MigrationsGetCommitAuthorsParams = {
+    owner: string;
+
+    repo: string;
+    /**
+     * Only authors found after this id are returned. Provide the highest author ID you've seen so far. New authors may be added to the list at any point while the importer is performing the `raw` step.
+     */
+    since?: string;
+  };
+  export type MigrationsGetImportProgressParams = {
+    owner: string;
+
+    repo: string;
+  };
+  export type MigrationsGetLargeFilesParams = {
+    owner: string;
+
+    repo: string;
+  };
+  export type MigrationsGetStatusForAuthenticatedUserParams = {
+    migration_id: number;
+  };
+  export type MigrationsGetStatusForOrgParams = {
+    migration_id: number;
+
+    org: string;
+  };
+  export type MigrationsListForAuthenticatedUserParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+  };
+  export type MigrationsListForOrgParams = {
+    org: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+  };
+  export type MigrationsMapCommitAuthorParams = {
+    author_id: number;
+    /**
+     * The new Git author email.
+     */
+    email?: string;
+    /**
+     * The new Git author name.
+     */
+    name?: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type MigrationsSetLfsPreferenceParams = {
+    owner: string;
+
+    repo: string;
+    /**
+     * Can be one of `opt_in` (large files will be stored using Git LFS) or `opt_out` (large files will be removed during the import).
+     */
+    use_lfs: "opt_in" | "opt_out";
+  };
+  export type MigrationsStartForAuthenticatedUserParams = {
+    /**
+     * Does not include attachments uploaded to GitHub.com in the migration data when set to `true`. Excluding attachments will reduce the migration archive file size.
+     */
+    exclude_attachments?: boolean;
+    /**
+     * Locks the `repositories` to prevent changes during the migration when set to `true`.
+     */
+    lock_repositories?: boolean;
+    /**
+     * An array of repositories to include in the migration.
+     */
+    repositories: string[];
+  };
+  export type MigrationsStartForOrgParams = {
+    /**
+     * Indicates whether attachments should be excluded from the migration (to reduce migration archive file size).
+     */
+    exclude_attachments?: boolean;
+    /**
+     * Indicates whether repositories should be locked (to prevent manipulation) while migrating data.
+     */
+    lock_repositories?: boolean;
+
+    org: string;
+    /**
+     * A list of arrays indicating which repositories should be migrated.
+     */
+    repositories: string[];
+  };
+  export type MigrationsStartImportParams = {
+    owner: string;
+
+    repo: string;
+    /**
+     * For a tfvc import, the name of the project that is being imported.
+     */
+    tfvc_project?: string;
+    /**
+     * The originating VCS type. Can be one of `subversion`, `git`, `mercurial`, or `tfvc`. Please be aware that without this parameter, the import job will take additional time to detect the VCS type before beginning the import. This detection step will be reflected in the response.
+     */
+    vcs?: "subversion" | "git" | "mercurial" | "tfvc";
+    /**
+     * If authentication is required, the password to provide to `vcs_url`.
+     */
+    vcs_password?: string;
+    /**
+     * The URL of the originating repository.
+     */
+    vcs_url: string;
+    /**
+     * If authentication is required, the username to provide to `vcs_url`.
+     */
+    vcs_username?: string;
+  };
+  export type MigrationsUnlockRepoForAuthenticatedUserParams = {
+    migration_id: number;
+
+    repo_name: string;
+  };
+  export type MigrationsUnlockRepoForOrgParams = {
+    migration_id: number;
+
+    org: string;
+
+    repo_name: string;
+  };
+  export type MigrationsUpdateImportParams = {
+    owner: string;
+
+    repo: string;
+    /**
+     * The password to provide to the originating repository.
+     */
+    vcs_password?: string;
+    /**
+     * The username to provide to the originating repository.
+     */
+    vcs_username?: string;
+  };
+  export type OauthAuthorizationsCheckAuthorizationParams = {
+    access_token: string;
+
+    client_id: string;
+  };
+  export type OauthAuthorizationsCreateAuthorizationParams = {
+    /**
+     * The 20 character OAuth app client key for which to create the token.
+     */
+    client_id?: string;
+    /**
+     * The 40 character OAuth app client secret for which to create the token.
+     */
+    client_secret?: string;
+    /**
+     * A unique string to distinguish an authorization from others created for the same client ID and user.
+     */
+    fingerprint?: string;
+    /**
+     * A note to remind you what the OAuth token is for. Tokens not associated with a specific OAuth application (i.e. personal access tokens) must have a unique note.
+     */
+    note: string;
+    /**
+     * A URL to remind you what app the OAuth token is for.
+     */
+    note_url?: string;
+    /**
+     * A list of scopes that this authorization is in.
+     */
+    scopes?: string[];
+  };
+  export type OauthAuthorizationsDeleteAuthorizationParams = {
+    authorization_id: number;
+  };
+  export type OauthAuthorizationsDeleteGrantParams = {
+    grant_id: number;
+  };
+  export type OauthAuthorizationsGetAuthorizationParams = {
+    authorization_id: number;
+  };
+  export type OauthAuthorizationsGetGrantParams = {
+    grant_id: number;
+  };
+  export type OauthAuthorizationsGetOrCreateAuthorizationForAppParams = {
+    client_id: string;
+    /**
+     * The 40 character OAuth app client secret associated with the client ID specified in the URL.
+     */
+    client_secret: string;
+    /**
+     * A unique string to distinguish an authorization from others created for the same client and user. If provided, this API is functionally equivalent to [Get-or-create an authorization for a specific app and fingerprint](https://developer.github.com/v3/oauth_authorizations/#get-or-create-an-authorization-for-a-specific-app-and-fingerprint).
+     */
+    fingerprint?: string;
+    /**
+     * A note to remind you what the OAuth token is for.
+     */
+    note?: string;
+    /**
+     * A URL to remind you what app the OAuth token is for.
+     */
+    note_url?: string;
+    /**
+     * A list of scopes that this authorization is in.
+     */
+    scopes?: string[];
+  };
+  export type OauthAuthorizationsGetOrCreateAuthorizationForAppAndFingerprintParams = {
+    client_id: string;
+    /**
+     * The 40 character OAuth app client secret associated with the client ID specified in the URL.
+     */
+    client_secret: string;
+
+    fingerprint: string;
+    /**
+     * A note to remind you what the OAuth token is for.
+     */
+    note?: string;
+    /**
+     * A URL to remind you what app the OAuth token is for.
+     */
+    note_url?: string;
+    /**
+     * A list of scopes that this authorization is in.
+     */
+    scopes?: string[];
+  };
+  export type OauthAuthorizationsGetOrCreateAuthorizationForAppFingerprintParams = {
+    client_id: string;
+    /**
+     * The 40 character OAuth app client secret associated with the client ID specified in the URL.
+     */
+    client_secret: string;
+
+    fingerprint: string;
+    /**
+     * A note to remind you what the OAuth token is for.
+     */
+    note?: string;
+    /**
+     * A URL to remind you what app the OAuth token is for.
+     */
+    note_url?: string;
+    /**
+     * A list of scopes that this authorization is in.
+     */
+    scopes?: string[];
+  };
+  export type OauthAuthorizationsListAuthorizationsParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+  };
+  export type OauthAuthorizationsListGrantsParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+  };
+  export type OauthAuthorizationsResetAuthorizationParams = {
+    access_token: string;
+
+    client_id: string;
+  };
+  export type OauthAuthorizationsRevokeAuthorizationForApplicationParams = {
+    access_token: string;
+
+    client_id: string;
+  };
+  export type OauthAuthorizationsRevokeGrantForApplicationParams = {
+    access_token: string;
+
+    client_id: string;
+  };
+  export type OauthAuthorizationsUpdateAuthorizationParams = {
+    /**
+     * A list of scopes to add to this authorization.
+     */
+    add_scopes?: string[];
+
+    authorization_id: number;
+    /**
+     * A unique string to distinguish an authorization from others created for the same client ID and user.
+     */
+    fingerprint?: string;
+    /**
+     * A note to remind you what the OAuth token is for. Tokens not associated with a specific OAuth application (i.e. personal access tokens) must have a unique note.
+     */
+    note?: string;
+    /**
+     * A URL to remind you what app the OAuth token is for.
+     */
+    note_url?: string;
+    /**
+     * A list of scopes to remove from this authorization.
+     */
+    remove_scopes?: string[];
+    /**
+     * Replaces the authorization scopes with these.
+     */
+    scopes?: string[];
+  };
+  export type OrgsAddOrUpdateMembershipParams = {
+    org: string;
+    /**
+     * The role to give the user in the organization. Can be one of:
+     * \* `admin` - The user will become an owner of the organization.
+     * \* `member` - The user will become a non-owner member of the organization.
+     */
+    role?: "admin" | "member";
+
+    username: string;
+  };
+  export type OrgsBlockUserParams = {
+    org: string;
+
+    username: string;
+  };
+  export type OrgsCheckBlockedUserParams = {
+    org: string;
+
+    username: string;
+  };
+  export type OrgsCheckMembershipParams = {
+    org: string;
+
+    username: string;
+  };
+  export type OrgsCheckPublicMembershipParams = {
+    org: string;
+
+    username: string;
+  };
+  export type OrgsConcealMembershipParams = {
+    org: string;
+
+    username: string;
+  };
+  export type OrgsConvertMemberToOutsideCollaboratorParams = {
+    org: string;
+
+    username: string;
+  };
+  export type OrgsCreateHookParams = {
+    /**
+     * Determines if notifications are sent when the webhook is triggered. Set to `true` to send notifications.
+     */
+    active?: boolean;
+    /**
+     * Key/value pairs to provide settings for this webhook. [These are defined below](https://developer.github.com/v3/orgs/hooks/#create-hook-config-params).
+     */
+    config: OrgsCreateHookParamsConfig;
+    /**
+     * Determines what [events](https://developer.github.com/v3/activity/events/types/) the hook is triggered for.
+     */
+    events?: string[];
+    /**
+     * Must be passed as "web".
+     */
+    name: string;
+
+    org: string;
+  };
+  export type OrgsCreateInvitationParams = {
+    /**
+     * **Required unless you provide `invitee_id`**. Email address of the person you are inviting, which can be an existing GitHub user.
+     */
+    email?: string;
+    /**
+     * **Required unless you provide `email`**. GitHub user ID for the person you are inviting.
+     */
+    invitee_id?: number;
+
+    org: string;
+    /**
+     * Specify role for new member. Can be one of:
+     * \* `admin` - Organization owners with full administrative rights to the organization and complete access to all repositories and teams.
+     * \* `direct_member` - Non-owner organization members with ability to see other members and join teams by invitation.
+     * \* `billing_manager` - Non-owner organization members with ability to manage the billing settings of your organization.
+     */
+    role?: "admin" | "direct_member" | "billing_manager";
+    /**
+     * Specify IDs for the teams you want to invite new members to.
+     */
+    team_ids?: number[];
+  };
+  export type OrgsDeleteHookParams = {
+    hook_id: number;
+
+    org: string;
+  };
+  export type OrgsGetParams = {
+    org: string;
+  };
+  export type OrgsGetHookParams = {
+    hook_id: number;
+
+    org: string;
+  };
+  export type OrgsGetMembershipParams = {
+    org: string;
+
+    username: string;
+  };
+  export type OrgsGetMembershipForAuthenticatedUserParams = {
+    org: string;
+  };
+  export type OrgsListParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+    /**
+     * The integer ID of the last Organization that you've seen.
+     */
+    since?: string;
+  };
+  export type OrgsListBlockedUsersParams = {
+    org: string;
+  };
+  export type OrgsListForAuthenticatedUserParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+  };
+  export type OrgsListForUserParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    username: string;
+  };
+  export type OrgsListHooksParams = {
+    org: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+  };
+  export type OrgsListInstallationsParams = {
+    org: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+  };
+  export type OrgsListInvitationTeamsParams = {
+    invitation_id: number;
+
+    org: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+  };
+  export type OrgsListMembersParams = {
+    /**
+     * Filter members returned in the list. Can be one of:
+     * \* `2fa_disabled` - Members without [two-factor authentication](https://github.com/blog/1614-two-factor-authentication) enabled. Available for organization owners.
+     * \* `all` - All members the authenticated user can see.
+     */
+    filter?: "2fa_disabled" | "all";
+
+    org: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+    /**
+     * Filter members returned by their role. Can be one of:
+     * \* `all` - All members of the organization, regardless of role.
+     * \* `admin` - Organization owners.
+     * \* `member` - Non-owner organization members.
+     */
+    role?: "all" | "admin" | "member";
+  };
+  export type OrgsListMembershipsParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+    /**
+     * Indicates the state of the memberships to return. Can be either `active` or `pending`. If not specified, the API returns both active and pending memberships.
+     */
+    state?: "active" | "pending";
+  };
+  export type OrgsListOutsideCollaboratorsParams = {
+    /**
+     * Filter the list of outside collaborators. Can be one of:
+     * \* `2fa_disabled`: Outside collaborators without [two-factor authentication](https://github.com/blog/1614-two-factor-authentication) enabled.
+     * \* `all`: All outside collaborators.
+     */
+    filter?: "2fa_disabled" | "all";
+
+    org: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+  };
+  export type OrgsListPendingInvitationsParams = {
+    org: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+  };
+  export type OrgsListPublicMembersParams = {
+    org: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+  };
+  export type OrgsPingHookParams = {
+    hook_id: number;
+
+    org: string;
+  };
+  export type OrgsPublicizeMembershipParams = {
+    org: string;
+
+    username: string;
+  };
+  export type OrgsRemoveMemberParams = {
+    org: string;
+
+    username: string;
+  };
+  export type OrgsRemoveMembershipParams = {
+    org: string;
+
+    username: string;
+  };
+  export type OrgsRemoveOutsideCollaboratorParams = {
+    org: string;
+
+    username: string;
+  };
+  export type OrgsUnblockUserParams = {
+    org: string;
+
+    username: string;
+  };
+  export type OrgsUpdateParams = {
+    /**
+     * Billing email address. This address is not publicized.
+     */
+    billing_email?: string;
+    /**
+     * The company name.
+     */
+    company?: string;
+    /**
+     * Default permission level members have for organization repositories:
+     * \* `read` - can pull, but not push to or administer this repository.
+     * \* `write` - can pull and push, but not administer this repository.
+     * \* `admin` - can pull, push, and administer this repository.
+     * \* `none` - no permissions granted by default.
+     */
+    default_repository_permission?: "read" | "write" | "admin" | "none";
+    /**
+     * The description of the company.
+     */
+    description?: string;
+    /**
+     * The publicly visible email address.
+     */
+    email?: string;
+    /**
+     * Toggles whether organization projects are enabled for the organization.
+     */
+    has_organization_projects?: boolean;
+    /**
+     * Toggles whether repository projects are enabled for repositories that belong to the organization.
+     */
+    has_repository_projects?: boolean;
+    /**
+     * The location.
+     */
+    location?: string;
+    /**
+     * Specifies which types of repositories non-admin organization members can create. Can be one of:
+     * \* `all` - all organization members can create public and private repositories.
+     * \* `private` - members can create private repositories. This option is only available to repositories that are part of an organization on [GitHub Business Cloud](https://github.com/pricing/business-cloud).
+     * \* `none` - only admin members can create repositories.
+     * **Note:** Using this parameter will override values set in `members_can_create_repositories`. See [this note](https://developer.github.com/v3/orgs/#members_can_create_repositories) for details.
+     */
+    members_allowed_repository_creation_type?: "all" | "private" | "none";
+    /**
+     * Toggles the ability of non-admin organization members to create repositories. Can be one of:
+     * \* `true` - all organization members can create repositories.
+     * \* `false` - only admin members can create repositories.
+     * Default: `true`
+     * **Note:** Another parameter can override the this parameter. See [this note](https://developer.github.com/v3/orgs/#members_can_create_repositories) for details. **Note:** Another parameter can override the this parameter. See [this note](https://developer.github.com/v3/orgs/#members_can_create_repositories) for details.
+     */
+    members_can_create_repositories?: boolean;
+    /**
+     * The shorthand name of the company.
+     */
+    name?: string;
+
+    org: string;
+  };
+  export type OrgsUpdateHookParams = {
+    /**
+     * Determines if notifications are sent when the webhook is triggered. Set to `true` to send notifications.
+     */
+    active?: boolean;
+    /**
+     * Key/value pairs to provide settings for this webhook. [These are defined below](https://developer.github.com/v3/orgs/hooks/#update-hook-config-params).
+     */
+    config?: OrgsUpdateHookParamsConfig;
+    /**
+     * Determines what [events](https://developer.github.com/v3/activity/events/types/) the hook is triggered for.
+     */
+    events?: string[];
+
+    hook_id: number;
+
+    org: string;
+  };
+  export type OrgsUpdateMembershipParams = {
+    org: string;
+    /**
+     * The state that the membership should be in. Only `"active"` will be accepted.
+     */
+    state: "active";
+  };
+  export type ProjectsAddCollaboratorParams = {
+    /**
+     * The permission to grant the collaborator. Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://developer.github.com/v3/#http-verbs)." Can be one of:
+     * \* `read` - can read, but not write to or administer this project.
+     * \* `write` - can read and write, but not administer this project.
+     * \* `admin` - can read, write and administer this project.
+     */
+    permission?: "read" | "write" | "admin";
+
+    project_id: number;
+
+    username: string;
+  };
+  export type ProjectsCreateCardParams = {
+    column_id: number;
+    /**
+     * The issue or pull request id you want to associate with this card. You can use the [List issues for a repository](https://developer.github.com/v3/issues/#list-issues-for-a-repository) and [List pull requests](https://developer.github.com/v3/pulls/#list-pull-requests) endpoints to find this id.
+     * **Note:** Depending on whether you use the issue id or pull request id, you will need to specify `Issue` or `PullRequest` as the `content_type`.
+     */
+    content_id?: number;
+    /**
+     * **Required if you provide `content_id`**. The type of content you want to associate with this card. Use `Issue` when `content_id` is an issue id and use `PullRequest` when `content_id` is a pull request id.
+     */
+    content_type?: string;
+    /**
+     * The card's note content. Only valid for cards without another type of content, so you must omit when specifying `content_id` and `content_type`.
+     */
+    note?: string;
+  };
+  export type ProjectsCreateColumnParams = {
+    /**
+     * The name of the column.
+     */
+    name: string;
+
+    project_id: number;
+  };
+  export type ProjectsCreateForAuthenticatedUserParams = {
+    /**
+     * The description of the project.
+     */
+    body?: string;
+    /**
+     * The name of the project.
+     */
+    name: string;
+  };
+  export type ProjectsCreateForOrgParams = {
+    /**
+     * The description of the project.
+     */
+    body?: string;
+    /**
+     * The name of the project.
+     */
+    name: string;
+
+    org: string;
+  };
+  export type ProjectsCreateForRepoParams = {
+    /**
+     * The description of the project.
+     */
+    body?: string;
+    /**
+     * The name of the project.
+     */
+    name: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ProjectsDeleteParams = {
+    project_id: number;
+  };
+  export type ProjectsDeleteCardParams = {
+    card_id: number;
+  };
+  export type ProjectsDeleteColumnParams = {
+    column_id: number;
+  };
+  export type ProjectsGetParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    project_id: number;
+  };
+  export type ProjectsGetCardParams = {
+    card_id: number;
+  };
+  export type ProjectsGetColumnParams = {
+    column_id: number;
+  };
+  export type ProjectsListCardsParams = {
+    /**
+     * Filters the project cards that are returned by the card's state. Can be one of `all`,`archived`, or `not_archived`.
+     */
+    archived_state?: "all" | "archived" | "not_archived";
+
+    column_id: number;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+  };
+  export type ProjectsListCollaboratorsParams = {
+    /**
+     * Filters the collaborators by their affiliation. Can be one of:
+     * \* `outside`: Outside collaborators of a project that are not a member of the project's organization.
+     * \* `direct`: Collaborators with permissions to a project, regardless of organization membership status.
+     * \* `all`: All collaborators the authenticated user can see.
+     */
+    affiliation?: "outside" | "direct" | "all";
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    project_id: number;
+  };
+  export type ProjectsListColumnsParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    project_id: number;
+  };
+  export type ProjectsListForOrgParams = {
+    org: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+    /**
+     * Indicates the state of the projects to return. Can be either `open`, `closed`, or `all`.
+     */
+    state?: "open" | "closed" | "all";
+  };
+  export type ProjectsListForRepoParams = {
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+    /**
+     * Indicates the state of the projects to return. Can be either `open`, `closed`, or `all`.
+     */
+    state?: "open" | "closed" | "all";
+  };
+  export type ProjectsListForUserParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+    /**
+     * Indicates the state of the projects to return. Can be either `open`, `closed`, or `all`.
+     */
+    state?: "open" | "closed" | "all";
+
+    username: string;
+  };
+  export type ProjectsMoveCardParams = {
+    card_id: number;
+    /**
+     * The `id` value of a column in the same project.
+     */
+    column_id?: number;
+    /**
+     * Can be one of `top`, `bottom`, or `after:<card_id>`, where `<card_id>` is the `id` value of a card in the same column, or in the new column specified by `column_id`.
+     */
+    position: string;
+  };
+  export type ProjectsMoveColumnParams = {
+    column_id: number;
+    /**
+     * Can be one of `first`, `last`, or `after:<column_id>`, where `<column_id>` is the `id` value of a column in the same project.
+     */
+    position: string;
+  };
+  export type ProjectsRemoveCollaboratorParams = {
+    project_id: number;
+
+    username: string;
+  };
+  export type ProjectsReviewUserPermissionLevelParams = {
+    project_id: number;
+
+    username: string;
+  };
+  export type ProjectsUpdateParams = {
+    /**
+     * The description of the project.
+     */
+    body?: string;
+    /**
+     * The name of the project.
+     */
+    name?: string;
+    /**
+     * The permission level that determines whether all members of the project's organization can see and/or make changes to the project. Setting `organization_permission` is only available for organization projects. If an organization member belongs to a team with a higher level of access or is a collaborator with a higher level of access, their permission level is not lowered by `organization_permission`. For information on changing access for a team or collaborator, see [Add or update team project](https://developer.github.com/v3/teams/#add-or-update-team-project) or [Add user as a collaborator](https://developer.github.com/v3/projects/collaborators/#add-user-as-a-collaborator).
+     *
+     * **Note:** Updating a project's `organization_permission` requires `admin` access to the project.
+     *
+     * Can be one of:
+     * \* `read` - Organization members can read, but not write to or administer this project.
+     * \* `write` - Organization members can read and write, but not administer this project.
+     * \* `admin` - Organization members can read, write and administer this project.
+     * \* `none` - Organization members can only see this project if it is public.
+     */
+    organization_permission?: string;
+    /**
+     * Sets the visibility of a project board. Setting `private` is only available for organization and user projects. **Note:** Updating a project's visibility requires `admin` access to the project.
+     *
+     * Can be one of:
+     * \* `false` - Anyone can see the project.
+     * \* `true` - Only the user can view a project board created on a user account. Organization members with the appropriate `organization_permission` can see project boards in an organization account.
+     */
+    private?: boolean;
+
+    project_id: number;
+    /**
+     * State of the project. Either `open` or `closed`.
+     */
+    state?: "open" | "closed";
+  };
+  export type ProjectsUpdateCardParams = {
+    /**
+     * Use `true` to archive a project card. Specify `false` if you need to restore a previously archived project card.
+     */
+    archived?: boolean;
+
+    card_id: number;
+    /**
+     * The card's note content. Only valid for cards without another type of content, so this cannot be specified if the card already has a `content_id` and `content_type`.
+     */
+    note?: string;
+  };
+  export type ProjectsUpdateColumnParams = {
+    column_id: number;
+    /**
+     * The new name of the column.
+     */
+    name: string;
+  };
+  export type PullsCheckIfMergedParamsDeprecatedNumber = {
+    /**
+     * @deprecated "number" parameter renamed to "pull_number"
+     */
+    number: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type PullsCheckIfMergedParams = {
+    owner: string;
+
+    pull_number: number;
+
+    repo: string;
+  };
+  export type PullsCreateParams = {
+    /**
+     * The name of the branch you want the changes pulled into. This should be an existing branch on the current repository. You cannot submit a pull request to one repository that requests a merge to a base of another repository.
+     */
+    base: string;
+    /**
+     * The contents of the pull request.
+     */
+    body?: string;
+    /**
+     * Indicates whether the pull request is a draft. See "[Draft Pull Requests](https://help.github.com/en/articles/about-pull-requests#draft-pull-requests)" in the GitHub Help documentation to learn more.
+     */
+    draft?: boolean;
+    /**
+     * The name of the branch where your changes are implemented. For cross-repository pull requests in the same network, namespace `head` with a user like this: `username:branch`.
+     */
+    head: string;
+    /**
+     * Indicates whether [maintainers can modify](https://help.github.com/articles/allowing-changes-to-a-pull-request-branch-created-from-a-fork/) the pull request.
+     */
+    maintainer_can_modify?: boolean;
+
+    owner: string;
+
+    repo: string;
+    /**
+     * The title of the new pull request.
+     */
+    title: string;
+  };
+  export type PullsCreateCommentParamsDeprecatedNumber = {
+    /**
+     * The text of the review comment.
+     */
+    body: string;
+    /**
+     * The SHA of the commit needing a comment. Not using the latest commit SHA may render your comment outdated if a subsequent commit modifies the line you specify as the `position`.
+     */
+    commit_id: string;
+    /**
+     * **Required with `comfort-fade` preview**. The line of the blob in the pull request diff that the comment applies to. For a multi-line comment, the last line of the range that your comment applies to.
+     */
+    line?: number;
+    /**
+     * @deprecated "number" parameter renamed to "pull_number"
+     */
+    number: number;
+
+    owner: string;
+    /**
+     * The relative path to the file that necessitates a comment.
+     */
+    path: string;
+    /**
+     * **Required without `comfort-fade` preview**. The position in the diff where you want to add a review comment. Note this value is not the same as the line number in the file. For help finding the position value, read the note above.
+     */
+    position?: number;
+
+    repo: string;
+    /**
+     * **Required with `comfort-fade` preview**. In a split diff view, the side of the diff that the pull request's changes appear on. Can be `LEFT` or `RIGHT`. Use `LEFT` for deletions that appear in red. Use `RIGHT` for additions that appear in green or unchanged lines that appear in white and are shown for context. For a multi-line comment, side represents whether the last line of the comment range is a deletion or addition. For more information, see "[Diff view options](https://help.github.com/en/articles/about-comparing-branches-in-pull-requests#diff-view-options)" in the GitHub Help documentation.
+     */
+    side?: "LEFT" | "RIGHT";
+    /**
+     * **Required when using multi-line comments**. To create multi-line comments, you must use the `comfort-fade` preview header. The `start_line` is the first line in the pull request diff that your multi-line comment applies to. To learn more about multi-line comments, see "[Commenting on a pull request](https://help.github.com/en/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)" in the GitHub Help documentation.
+     */
+    start_line?: number;
+    /**
+     * **Required when using multi-line comments**. To create multi-line comments, you must use the `comfort-fade` preview header. The `start_side` is the starting side of the diff that the comment applies to. Can be `LEFT` or `RIGHT`. To learn more about multi-line comments, see "[Commenting on a pull request](https://help.github.com/en/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)" in the GitHub Help documentation. See `side` in this table for additional context.
+     */
+    start_side?: "LEFT" | "RIGHT" | "side";
+  };
+  export type PullsCreateCommentParamsDeprecatedInReplyTo = {
+    /**
+     * The text of the review comment.
+     */
+    body: string;
+    /**
+     * The SHA of the commit needing a comment. Not using the latest commit SHA may render your comment outdated if a subsequent commit modifies the line you specify as the `position`.
+     */
+    commit_id: string;
+    /**
+     * The comment ID to reply to. **Note**: This must be the ID of a top-level comment, not a reply to that comment. Replies to replies are not supported.
+     * @deprecated "in_reply_to" parameter has been deprecated and will be removed in future
+     */
+    in_reply_to?: number;
+    /**
+     * **Required with `comfort-fade` preview**. The line of the blob in the pull request diff that the comment applies to. For a multi-line comment, the last line of the range that your comment applies to.
+     */
+    line?: number;
+
+    owner: string;
+    /**
+     * The relative path to the file that necessitates a comment.
+     */
+    path: string;
+    /**
+     * **Required without `comfort-fade` preview**. The position in the diff where you want to add a review comment. Note this value is not the same as the line number in the file. For help finding the position value, read the note above.
+     */
+    position?: number;
+
+    pull_number: number;
+
+    repo: string;
+    /**
+     * **Required with `comfort-fade` preview**. In a split diff view, the side of the diff that the pull request's changes appear on. Can be `LEFT` or `RIGHT`. Use `LEFT` for deletions that appear in red. Use `RIGHT` for additions that appear in green or unchanged lines that appear in white and are shown for context. For a multi-line comment, side represents whether the last line of the comment range is a deletion or addition. For more information, see "[Diff view options](https://help.github.com/en/articles/about-comparing-branches-in-pull-requests#diff-view-options)" in the GitHub Help documentation.
+     */
+    side?: "LEFT" | "RIGHT";
+    /**
+     * **Required when using multi-line comments**. To create multi-line comments, you must use the `comfort-fade` preview header. The `start_line` is the first line in the pull request diff that your multi-line comment applies to. To learn more about multi-line comments, see "[Commenting on a pull request](https://help.github.com/en/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)" in the GitHub Help documentation.
+     */
+    start_line?: number;
+    /**
+     * **Required when using multi-line comments**. To create multi-line comments, you must use the `comfort-fade` preview header. The `start_side` is the starting side of the diff that the comment applies to. Can be `LEFT` or `RIGHT`. To learn more about multi-line comments, see "[Commenting on a pull request](https://help.github.com/en/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)" in the GitHub Help documentation. See `side` in this table for additional context.
+     */
+    start_side?: "LEFT" | "RIGHT" | "side";
+  };
+  export type PullsCreateCommentParams = {
+    /**
+     * The text of the review comment.
+     */
+    body: string;
+    /**
+     * The SHA of the commit needing a comment. Not using the latest commit SHA may render your comment outdated if a subsequent commit modifies the line you specify as the `position`.
+     */
+    commit_id: string;
+    /**
+     * **Required with `comfort-fade` preview**. The line of the blob in the pull request diff that the comment applies to. For a multi-line comment, the last line of the range that your comment applies to.
+     */
+    line?: number;
+
+    owner: string;
+    /**
+     * The relative path to the file that necessitates a comment.
+     */
+    path: string;
+    /**
+     * **Required without `comfort-fade` preview**. The position in the diff where you want to add a review comment. Note this value is not the same as the line number in the file. For help finding the position value, read the note above.
+     */
+    position?: number;
+
+    pull_number: number;
+
+    repo: string;
+    /**
+     * **Required with `comfort-fade` preview**. In a split diff view, the side of the diff that the pull request's changes appear on. Can be `LEFT` or `RIGHT`. Use `LEFT` for deletions that appear in red. Use `RIGHT` for additions that appear in green or unchanged lines that appear in white and are shown for context. For a multi-line comment, side represents whether the last line of the comment range is a deletion or addition. For more information, see "[Diff view options](https://help.github.com/en/articles/about-comparing-branches-in-pull-requests#diff-view-options)" in the GitHub Help documentation.
+     */
+    side?: "LEFT" | "RIGHT";
+    /**
+     * **Required when using multi-line comments**. To create multi-line comments, you must use the `comfort-fade` preview header. The `start_line` is the first line in the pull request diff that your multi-line comment applies to. To learn more about multi-line comments, see "[Commenting on a pull request](https://help.github.com/en/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)" in the GitHub Help documentation.
+     */
+    start_line?: number;
+    /**
+     * **Required when using multi-line comments**. To create multi-line comments, you must use the `comfort-fade` preview header. The `start_side` is the starting side of the diff that the comment applies to. Can be `LEFT` or `RIGHT`. To learn more about multi-line comments, see "[Commenting on a pull request](https://help.github.com/en/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)" in the GitHub Help documentation. See `side` in this table for additional context.
+     */
+    start_side?: "LEFT" | "RIGHT" | "side";
+  };
+  export type PullsCreateCommentReplyParamsDeprecatedNumber = {
+    /**
+     * The text of the review comment.
+     */
+    body: string;
+    /**
+     * The SHA of the commit needing a comment. Not using the latest commit SHA may render your comment outdated if a subsequent commit modifies the line you specify as the `position`.
+     */
+    commit_id: string;
+    /**
+     * **Required with `comfort-fade` preview**. The line of the blob in the pull request diff that the comment applies to. For a multi-line comment, the last line of the range that your comment applies to.
+     */
+    line?: number;
+    /**
+     * @deprecated "number" parameter renamed to "pull_number"
+     */
+    number: number;
+
+    owner: string;
+    /**
+     * The relative path to the file that necessitates a comment.
+     */
+    path: string;
+    /**
+     * **Required without `comfort-fade` preview**. The position in the diff where you want to add a review comment. Note this value is not the same as the line number in the file. For help finding the position value, read the note above.
+     */
+    position?: number;
+
+    repo: string;
+    /**
+     * **Required with `comfort-fade` preview**. In a split diff view, the side of the diff that the pull request's changes appear on. Can be `LEFT` or `RIGHT`. Use `LEFT` for deletions that appear in red. Use `RIGHT` for additions that appear in green or unchanged lines that appear in white and are shown for context. For a multi-line comment, side represents whether the last line of the comment range is a deletion or addition. For more information, see "[Diff view options](https://help.github.com/en/articles/about-comparing-branches-in-pull-requests#diff-view-options)" in the GitHub Help documentation.
+     */
+    side?: "LEFT" | "RIGHT";
+    /**
+     * **Required when using multi-line comments**. To create multi-line comments, you must use the `comfort-fade` preview header. The `start_line` is the first line in the pull request diff that your multi-line comment applies to. To learn more about multi-line comments, see "[Commenting on a pull request](https://help.github.com/en/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)" in the GitHub Help documentation.
+     */
+    start_line?: number;
+    /**
+     * **Required when using multi-line comments**. To create multi-line comments, you must use the `comfort-fade` preview header. The `start_side` is the starting side of the diff that the comment applies to. Can be `LEFT` or `RIGHT`. To learn more about multi-line comments, see "[Commenting on a pull request](https://help.github.com/en/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)" in the GitHub Help documentation. See `side` in this table for additional context.
+     */
+    start_side?: "LEFT" | "RIGHT" | "side";
+  };
+  export type PullsCreateCommentReplyParamsDeprecatedInReplyTo = {
+    /**
+     * The text of the review comment.
+     */
+    body: string;
+    /**
+     * The SHA of the commit needing a comment. Not using the latest commit SHA may render your comment outdated if a subsequent commit modifies the line you specify as the `position`.
+     */
+    commit_id: string;
+    /**
+     * The comment ID to reply to. **Note**: This must be the ID of a top-level comment, not a reply to that comment. Replies to replies are not supported.
+     * @deprecated "in_reply_to" parameter has been deprecated and will be removed in future
+     */
+    in_reply_to?: number;
+    /**
+     * **Required with `comfort-fade` preview**. The line of the blob in the pull request diff that the comment applies to. For a multi-line comment, the last line of the range that your comment applies to.
+     */
+    line?: number;
+
+    owner: string;
+    /**
+     * The relative path to the file that necessitates a comment.
+     */
+    path: string;
+    /**
+     * **Required without `comfort-fade` preview**. The position in the diff where you want to add a review comment. Note this value is not the same as the line number in the file. For help finding the position value, read the note above.
+     */
+    position?: number;
+
+    pull_number: number;
+
+    repo: string;
+    /**
+     * **Required with `comfort-fade` preview**. In a split diff view, the side of the diff that the pull request's changes appear on. Can be `LEFT` or `RIGHT`. Use `LEFT` for deletions that appear in red. Use `RIGHT` for additions that appear in green or unchanged lines that appear in white and are shown for context. For a multi-line comment, side represents whether the last line of the comment range is a deletion or addition. For more information, see "[Diff view options](https://help.github.com/en/articles/about-comparing-branches-in-pull-requests#diff-view-options)" in the GitHub Help documentation.
+     */
+    side?: "LEFT" | "RIGHT";
+    /**
+     * **Required when using multi-line comments**. To create multi-line comments, you must use the `comfort-fade` preview header. The `start_line` is the first line in the pull request diff that your multi-line comment applies to. To learn more about multi-line comments, see "[Commenting on a pull request](https://help.github.com/en/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)" in the GitHub Help documentation.
+     */
+    start_line?: number;
+    /**
+     * **Required when using multi-line comments**. To create multi-line comments, you must use the `comfort-fade` preview header. The `start_side` is the starting side of the diff that the comment applies to. Can be `LEFT` or `RIGHT`. To learn more about multi-line comments, see "[Commenting on a pull request](https://help.github.com/en/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)" in the GitHub Help documentation. See `side` in this table for additional context.
+     */
+    start_side?: "LEFT" | "RIGHT" | "side";
+  };
+  export type PullsCreateCommentReplyParams = {
+    /**
+     * The text of the review comment.
+     */
+    body: string;
+    /**
+     * The SHA of the commit needing a comment. Not using the latest commit SHA may render your comment outdated if a subsequent commit modifies the line you specify as the `position`.
+     */
+    commit_id: string;
+    /**
+     * **Required with `comfort-fade` preview**. The line of the blob in the pull request diff that the comment applies to. For a multi-line comment, the last line of the range that your comment applies to.
+     */
+    line?: number;
+
+    owner: string;
+    /**
+     * The relative path to the file that necessitates a comment.
+     */
+    path: string;
+    /**
+     * **Required without `comfort-fade` preview**. The position in the diff where you want to add a review comment. Note this value is not the same as the line number in the file. For help finding the position value, read the note above.
+     */
+    position?: number;
+
+    pull_number: number;
+
+    repo: string;
+    /**
+     * **Required with `comfort-fade` preview**. In a split diff view, the side of the diff that the pull request's changes appear on. Can be `LEFT` or `RIGHT`. Use `LEFT` for deletions that appear in red. Use `RIGHT` for additions that appear in green or unchanged lines that appear in white and are shown for context. For a multi-line comment, side represents whether the last line of the comment range is a deletion or addition. For more information, see "[Diff view options](https://help.github.com/en/articles/about-comparing-branches-in-pull-requests#diff-view-options)" in the GitHub Help documentation.
+     */
+    side?: "LEFT" | "RIGHT";
+    /**
+     * **Required when using multi-line comments**. To create multi-line comments, you must use the `comfort-fade` preview header. The `start_line` is the first line in the pull request diff that your multi-line comment applies to. To learn more about multi-line comments, see "[Commenting on a pull request](https://help.github.com/en/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)" in the GitHub Help documentation.
+     */
+    start_line?: number;
+    /**
+     * **Required when using multi-line comments**. To create multi-line comments, you must use the `comfort-fade` preview header. The `start_side` is the starting side of the diff that the comment applies to. Can be `LEFT` or `RIGHT`. To learn more about multi-line comments, see "[Commenting on a pull request](https://help.github.com/en/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)" in the GitHub Help documentation. See `side` in this table for additional context.
+     */
+    start_side?: "LEFT" | "RIGHT" | "side";
+  };
+  export type PullsCreateFromIssueParams = {
+    base: string;
+
+    draft?: boolean;
+
+    head: string;
+
+    issue: number;
+
+    maintainer_can_modify?: boolean;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type PullsCreateReviewParamsDeprecatedNumber = {
+    /**
+     * **Required** when using `REQUEST_CHANGES` or `COMMENT` for the `event` parameter. The body text of the pull request review.
+     */
+    body?: string;
+    /**
+     * Use the following table to specify the location, destination, and contents of the draft review comment.
+     */
+    comments?: PullsCreateReviewParamsComments[];
+    /**
+     * The SHA of the commit that needs a review. Not using the latest commit SHA may render your review comment outdated if a subsequent commit modifies the line you specify as the `position`. Defaults to the most recent commit in the pull request when you do not specify a value.
+     */
+    commit_id?: string;
+    /**
+     * The review action you want to perform. The review actions include: `APPROVE`, `REQUEST_CHANGES`, or `COMMENT`. By leaving this blank, you set the review action state to `PENDING`, which means you will need to [submit the pull request review](https://developer.github.com/v3/pulls/reviews/#submit-a-pull-request-review) when you are ready.
+     */
+    event?: "APPROVE" | "REQUEST_CHANGES" | "COMMENT";
+    /**
+     * @deprecated "number" parameter renamed to "pull_number"
+     */
+    number: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type PullsCreateReviewParams = {
+    /**
+     * **Required** when using `REQUEST_CHANGES` or `COMMENT` for the `event` parameter. The body text of the pull request review.
+     */
+    body?: string;
+    /**
+     * Use the following table to specify the location, destination, and contents of the draft review comment.
+     */
+    comments?: PullsCreateReviewParamsComments[];
+    /**
+     * The SHA of the commit that needs a review. Not using the latest commit SHA may render your review comment outdated if a subsequent commit modifies the line you specify as the `position`. Defaults to the most recent commit in the pull request when you do not specify a value.
+     */
+    commit_id?: string;
+    /**
+     * The review action you want to perform. The review actions include: `APPROVE`, `REQUEST_CHANGES`, or `COMMENT`. By leaving this blank, you set the review action state to `PENDING`, which means you will need to [submit the pull request review](https://developer.github.com/v3/pulls/reviews/#submit-a-pull-request-review) when you are ready.
+     */
+    event?: "APPROVE" | "REQUEST_CHANGES" | "COMMENT";
+
+    owner: string;
+
+    pull_number: number;
+
+    repo: string;
+  };
+  export type PullsCreateReviewCommentReplyParams = {
+    /**
+     * The text of the review comment.
+     */
+    body: string;
+
+    comment_id: number;
+
+    owner: string;
+
+    pull_number: number;
+
+    repo: string;
+  };
+  export type PullsCreateReviewRequestParamsDeprecatedNumber = {
+    /**
+     * @deprecated "number" parameter renamed to "pull_number"
+     */
+    number: number;
+
+    owner: string;
+
+    repo: string;
+    /**
+     * An array of user `login`s that will be requested.
+     */
+    reviewers?: string[];
+    /**
+     * An array of team `slug`s that will be requested.
+     */
+    team_reviewers?: string[];
+  };
+  export type PullsCreateReviewRequestParams = {
+    owner: string;
+
+    pull_number: number;
+
+    repo: string;
+    /**
+     * An array of user `login`s that will be requested.
+     */
+    reviewers?: string[];
+    /**
+     * An array of team `slug`s that will be requested.
+     */
+    team_reviewers?: string[];
+  };
+  export type PullsDeleteCommentParams = {
+    comment_id: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type PullsDeletePendingReviewParamsDeprecatedNumber = {
+    /**
+     * @deprecated "number" parameter renamed to "pull_number"
+     */
+    number: number;
+
+    owner: string;
+
+    repo: string;
+
+    review_id: number;
+  };
+  export type PullsDeletePendingReviewParams = {
+    owner: string;
+
+    pull_number: number;
+
+    repo: string;
+
+    review_id: number;
+  };
+  export type PullsDeleteReviewRequestParamsDeprecatedNumber = {
+    /**
+     * @deprecated "number" parameter renamed to "pull_number"
+     */
+    number: number;
+
+    owner: string;
+
+    repo: string;
+    /**
+     * An array of user `login`s that will be removed.
+     */
+    reviewers?: string[];
+    /**
+     * An array of team `slug`s that will be removed.
+     */
+    team_reviewers?: string[];
+  };
+  export type PullsDeleteReviewRequestParams = {
+    owner: string;
+
+    pull_number: number;
+
+    repo: string;
+    /**
+     * An array of user `login`s that will be removed.
+     */
+    reviewers?: string[];
+    /**
+     * An array of team `slug`s that will be removed.
+     */
+    team_reviewers?: string[];
+  };
+  export type PullsDismissReviewParamsDeprecatedNumber = {
+    /**
+     * The message for the pull request review dismissal
+     */
+    message: string;
+    /**
+     * @deprecated "number" parameter renamed to "pull_number"
+     */
+    number: number;
+
+    owner: string;
+
+    repo: string;
+
+    review_id: number;
+  };
+  export type PullsDismissReviewParams = {
+    /**
+     * The message for the pull request review dismissal
+     */
+    message: string;
+
+    owner: string;
+
+    pull_number: number;
+
+    repo: string;
+
+    review_id: number;
+  };
+  export type PullsGetParamsDeprecatedNumber = {
+    /**
+     * @deprecated "number" parameter renamed to "pull_number"
+     */
+    number: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type PullsGetParams = {
+    owner: string;
+
+    pull_number: number;
+
+    repo: string;
+  };
+  export type PullsGetCommentParams = {
+    comment_id: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type PullsGetCommentsForReviewParamsDeprecatedNumber = {
+    /**
+     * @deprecated "number" parameter renamed to "pull_number"
+     */
+    number: number;
+
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+
+    review_id: number;
+  };
+  export type PullsGetCommentsForReviewParams = {
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    pull_number: number;
+
+    repo: string;
+
+    review_id: number;
+  };
+  export type PullsGetReviewParamsDeprecatedNumber = {
+    /**
+     * @deprecated "number" parameter renamed to "pull_number"
+     */
+    number: number;
+
+    owner: string;
+
+    repo: string;
+
+    review_id: number;
+  };
+  export type PullsGetReviewParams = {
+    owner: string;
+
+    pull_number: number;
+
+    repo: string;
+
+    review_id: number;
+  };
+  export type PullsListParams = {
+    /**
+     * Filter pulls by base branch name. Example: `gh-pages`.
+     */
+    base?: string;
+    /**
+     * The direction of the sort. Can be either `asc` or `desc`. Default: `desc` when sort is `created` or sort is not specified, otherwise `asc`.
+     */
+    direction?: "asc" | "desc";
+    /**
+     * Filter pulls by head user or head organization and branch name in the format of `user:ref-name` or `organization:ref-name`. For example: `github:new-script-format` or `octocat:test-branch`.
+     */
+    head?: string;
+
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+    /**
+     * What to sort results by. Can be either `created`, `updated`, `popularity` (comment count) or `long-running` (age, filtering by pulls updated in the last month).
+     */
+    sort?: "created" | "updated" | "popularity" | "long-running";
+    /**
+     * Either `open`, `closed`, or `all` to filter by state.
+     */
+    state?: "open" | "closed" | "all";
+  };
+  export type PullsListCommentsParamsDeprecatedNumber = {
+    /**
+     * Can be either `asc` or `desc`. Ignored without `sort` parameter.
+     */
+    direction?: "asc" | "desc";
+    /**
+     * @deprecated "number" parameter renamed to "pull_number"
+     */
+    number: number;
+
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+    /**
+     * This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Only returns comments `updated` at or after this time.
+     */
+    since?: string;
+    /**
+     * Can be either `created` or `updated` comments.
+     */
+    sort?: "created" | "updated";
+  };
+  export type PullsListCommentsParams = {
+    /**
+     * Can be either `asc` or `desc`. Ignored without `sort` parameter.
+     */
+    direction?: "asc" | "desc";
+
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    pull_number: number;
+
+    repo: string;
+    /**
+     * This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Only returns comments `updated` at or after this time.
+     */
+    since?: string;
+    /**
+     * Can be either `created` or `updated` comments.
+     */
+    sort?: "created" | "updated";
+  };
+  export type PullsListCommentsForRepoParams = {
+    /**
+     * Can be either `asc` or `desc`. Ignored without `sort` parameter.
+     */
+    direction?: "asc" | "desc";
+
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+    /**
+     * This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Only returns comments `updated` at or after this time.
+     */
+    since?: string;
+    /**
+     * Can be either `created` or `updated` comments.
+     */
+    sort?: "created" | "updated";
+  };
+  export type PullsListCommitsParamsDeprecatedNumber = {
+    /**
+     * @deprecated "number" parameter renamed to "pull_number"
+     */
+    number: number;
+
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+  };
+  export type PullsListCommitsParams = {
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    pull_number: number;
+
+    repo: string;
+  };
+  export type PullsListFilesParamsDeprecatedNumber = {
+    /**
+     * @deprecated "number" parameter renamed to "pull_number"
+     */
+    number: number;
+
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+  };
+  export type PullsListFilesParams = {
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    pull_number: number;
+
+    repo: string;
+  };
+  export type PullsListReviewRequestsParamsDeprecatedNumber = {
+    /**
+     * @deprecated "number" parameter renamed to "pull_number"
+     */
+    number: number;
+
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+  };
+  export type PullsListReviewRequestsParams = {
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    pull_number: number;
+
+    repo: string;
+  };
+  export type PullsListReviewsParamsDeprecatedNumber = {
+    /**
+     * @deprecated "number" parameter renamed to "pull_number"
+     */
+    number: number;
+
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+  };
+  export type PullsListReviewsParams = {
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    pull_number: number;
+
+    repo: string;
+  };
+  export type PullsMergeParamsDeprecatedNumber = {
+    /**
+     * Extra detail to append to automatic commit message.
+     */
+    commit_message?: string;
+    /**
+     * Title for the automatic commit message.
+     */
+    commit_title?: string;
+    /**
+     * Merge method to use. Possible values are `merge`, `squash` or `rebase`. Default is `merge`.
+     */
+    merge_method?: "merge" | "squash" | "rebase";
+    /**
+     * @deprecated "number" parameter renamed to "pull_number"
+     */
+    number: number;
+
+    owner: string;
+
+    repo: string;
+    /**
+     * SHA that pull request head must match to allow merge.
+     */
+    sha?: string;
+  };
+  export type PullsMergeParams = {
+    /**
+     * Extra detail to append to automatic commit message.
+     */
+    commit_message?: string;
+    /**
+     * Title for the automatic commit message.
+     */
+    commit_title?: string;
+    /**
+     * Merge method to use. Possible values are `merge`, `squash` or `rebase`. Default is `merge`.
+     */
+    merge_method?: "merge" | "squash" | "rebase";
+
+    owner: string;
+
+    pull_number: number;
+
+    repo: string;
+    /**
+     * SHA that pull request head must match to allow merge.
+     */
+    sha?: string;
+  };
+  export type PullsSubmitReviewParamsDeprecatedNumber = {
+    /**
+     * The body text of the pull request review
+     */
+    body?: string;
+    /**
+     * The review action you want to perform. The review actions include: `APPROVE`, `REQUEST_CHANGES`, or `COMMENT`. When you leave this blank, the API returns _HTTP 422 (Unrecognizable entity)_ and sets the review action state to `PENDING`, which means you will need to re-submit the pull request review using a review action.
+     */
+    event: "APPROVE" | "REQUEST_CHANGES" | "COMMENT";
+    /**
+     * @deprecated "number" parameter renamed to "pull_number"
+     */
+    number: number;
+
+    owner: string;
+
+    repo: string;
+
+    review_id: number;
+  };
+  export type PullsSubmitReviewParams = {
+    /**
+     * The body text of the pull request review
+     */
+    body?: string;
+    /**
+     * The review action you want to perform. The review actions include: `APPROVE`, `REQUEST_CHANGES`, or `COMMENT`. When you leave this blank, the API returns _HTTP 422 (Unrecognizable entity)_ and sets the review action state to `PENDING`, which means you will need to re-submit the pull request review using a review action.
+     */
+    event: "APPROVE" | "REQUEST_CHANGES" | "COMMENT";
+
+    owner: string;
+
+    pull_number: number;
+
+    repo: string;
+
+    review_id: number;
+  };
+  export type PullsUpdateParamsDeprecatedNumber = {
+    /**
+     * The name of the branch you want your changes pulled into. This should be an existing branch on the current repository. You cannot update the base branch on a pull request to point to another repository.
+     */
+    base?: string;
+    /**
+     * The contents of the pull request.
+     */
+    body?: string;
+    /**
+     * Indicates whether [maintainers can modify](https://help.github.com/articles/allowing-changes-to-a-pull-request-branch-created-from-a-fork/) the pull request.
+     */
+    maintainer_can_modify?: boolean;
+    /**
+     * @deprecated "number" parameter renamed to "pull_number"
+     */
+    number: number;
+
+    owner: string;
+
+    repo: string;
+    /**
+     * State of this Pull Request. Either `open` or `closed`.
+     */
+    state?: "open" | "closed";
+    /**
+     * The title of the pull request.
+     */
+    title?: string;
+  };
+  export type PullsUpdateParams = {
+    /**
+     * The name of the branch you want your changes pulled into. This should be an existing branch on the current repository. You cannot update the base branch on a pull request to point to another repository.
+     */
+    base?: string;
+    /**
+     * The contents of the pull request.
+     */
+    body?: string;
+    /**
+     * Indicates whether [maintainers can modify](https://help.github.com/articles/allowing-changes-to-a-pull-request-branch-created-from-a-fork/) the pull request.
+     */
+    maintainer_can_modify?: boolean;
+
+    owner: string;
+
+    pull_number: number;
+
+    repo: string;
+    /**
+     * State of this Pull Request. Either `open` or `closed`.
+     */
+    state?: "open" | "closed";
+    /**
+     * The title of the pull request.
+     */
+    title?: string;
+  };
+  export type PullsUpdateBranchParams = {
+    /**
+     * The expected SHA of the pull request's HEAD ref. This is the most recent commit on the pull request's branch. If the expected SHA does not match the pull request's HEAD, you will receive a `422 Unprocessable Entity` status. You can use the "[List commits on a repository](https://developer.github.com/v3/repos/commits/#list-commits-on-a-repository)" endpoint to find the most recent commit SHA. Default: SHA of the pull request's current HEAD ref.
+     */
+    expected_head_sha?: string;
+
+    owner: string;
+
+    pull_number: number;
+
+    repo: string;
+  };
+  export type PullsUpdateCommentParams = {
+    /**
+     * The text of the reply to the review comment.
+     */
+    body: string;
+
+    comment_id: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type PullsUpdateReviewParamsDeprecatedNumber = {
+    /**
+     * The body text of the pull request review.
+     */
+    body: string;
+    /**
+     * @deprecated "number" parameter renamed to "pull_number"
+     */
+    number: number;
+
+    owner: string;
+
+    repo: string;
+
+    review_id: number;
+  };
+  export type PullsUpdateReviewParams = {
+    /**
+     * The body text of the pull request review.
+     */
+    body: string;
+
+    owner: string;
+
+    pull_number: number;
+
+    repo: string;
+
+    review_id: number;
+  };
+  export type ReactionsCreateForCommitCommentParams = {
+    comment_id: number;
+    /**
+     * The [reaction type](https://developer.github.com/v3/reactions/#reaction-types) to add to the commit comment.
+     */
+    content:
+      | "+1"
+      | "-1"
+      | "laugh"
+      | "confused"
+      | "heart"
+      | "hooray"
+      | "rocket"
+      | "eyes";
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReactionsCreateForIssueParamsDeprecatedNumber = {
+    /**
+     * The [reaction type](https://developer.github.com/v3/reactions/#reaction-types) to add to the issue.
+     */
+    content:
+      | "+1"
+      | "-1"
+      | "laugh"
+      | "confused"
+      | "heart"
+      | "hooray"
+      | "rocket"
+      | "eyes";
+    /**
+     * @deprecated "number" parameter renamed to "issue_number"
+     */
+    number: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReactionsCreateForIssueParams = {
+    /**
+     * The [reaction type](https://developer.github.com/v3/reactions/#reaction-types) to add to the issue.
+     */
+    content:
+      | "+1"
+      | "-1"
+      | "laugh"
+      | "confused"
+      | "heart"
+      | "hooray"
+      | "rocket"
+      | "eyes";
+
+    issue_number: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReactionsCreateForIssueCommentParams = {
+    comment_id: number;
+    /**
+     * The [reaction type](https://developer.github.com/v3/reactions/#reaction-types) to add to the issue comment.
+     */
+    content:
+      | "+1"
+      | "-1"
+      | "laugh"
+      | "confused"
+      | "heart"
+      | "hooray"
+      | "rocket"
+      | "eyes";
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReactionsCreateForPullRequestReviewCommentParams = {
+    comment_id: number;
+    /**
+     * The [reaction type](https://developer.github.com/v3/reactions/#reaction-types) to add to the pull request review comment.
+     */
+    content:
+      | "+1"
+      | "-1"
+      | "laugh"
+      | "confused"
+      | "heart"
+      | "hooray"
+      | "rocket"
+      | "eyes";
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReactionsCreateForTeamDiscussionParams = {
+    /**
+     * The [reaction type](https://developer.github.com/v3/reactions/#reaction-types) to add to the team discussion.
+     */
+    content:
+      | "+1"
+      | "-1"
+      | "laugh"
+      | "confused"
+      | "heart"
+      | "hooray"
+      | "rocket"
+      | "eyes";
+
+    discussion_number: number;
+
+    team_id: number;
+  };
+  export type ReactionsCreateForTeamDiscussionCommentParams = {
+    comment_number: number;
+    /**
+     * The [reaction type](https://developer.github.com/v3/reactions/#reaction-types) to add to the team discussion comment.
+     */
+    content:
+      | "+1"
+      | "-1"
+      | "laugh"
+      | "confused"
+      | "heart"
+      | "hooray"
+      | "rocket"
+      | "eyes";
+
+    discussion_number: number;
+
+    team_id: number;
+  };
+  export type ReactionsDeleteParams = {
+    reaction_id: number;
+  };
+  export type ReactionsListForCommitCommentParams = {
+    comment_id: number;
+    /**
+     * Returns a single [reaction type](https://developer.github.com/v3/reactions/#reaction-types). Omit this parameter to list all reactions to a commit comment.
+     */
+    content?:
+      | "+1"
+      | "-1"
+      | "laugh"
+      | "confused"
+      | "heart"
+      | "hooray"
+      | "rocket"
+      | "eyes";
+
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+  };
+  export type ReactionsListForIssueParamsDeprecatedNumber = {
+    /**
+     * Returns a single [reaction type](https://developer.github.com/v3/reactions/#reaction-types). Omit this parameter to list all reactions to an issue.
+     */
+    content?:
+      | "+1"
+      | "-1"
+      | "laugh"
+      | "confused"
+      | "heart"
+      | "hooray"
+      | "rocket"
+      | "eyes";
+    /**
+     * @deprecated "number" parameter renamed to "issue_number"
+     */
+    number: number;
+
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+  };
+  export type ReactionsListForIssueParams = {
+    /**
+     * Returns a single [reaction type](https://developer.github.com/v3/reactions/#reaction-types). Omit this parameter to list all reactions to an issue.
+     */
+    content?:
+      | "+1"
+      | "-1"
+      | "laugh"
+      | "confused"
+      | "heart"
+      | "hooray"
+      | "rocket"
+      | "eyes";
+
+    issue_number: number;
+
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+  };
+  export type ReactionsListForIssueCommentParams = {
+    comment_id: number;
+    /**
+     * Returns a single [reaction type](https://developer.github.com/v3/reactions/#reaction-types). Omit this parameter to list all reactions to an issue comment.
+     */
+    content?:
+      | "+1"
+      | "-1"
+      | "laugh"
+      | "confused"
+      | "heart"
+      | "hooray"
+      | "rocket"
+      | "eyes";
+
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+  };
+  export type ReactionsListForPullRequestReviewCommentParams = {
+    comment_id: number;
+    /**
+     * Returns a single [reaction type](https://developer.github.com/v3/reactions/#reaction-types). Omit this parameter to list all reactions to a pull request review comment.
+     */
+    content?:
+      | "+1"
+      | "-1"
+      | "laugh"
+      | "confused"
+      | "heart"
+      | "hooray"
+      | "rocket"
+      | "eyes";
+
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+  };
+  export type ReactionsListForTeamDiscussionParams = {
+    /**
+     * Returns a single [reaction type](https://developer.github.com/v3/reactions/#reaction-types). Omit this parameter to list all reactions to a team discussion.
+     */
+    content?:
+      | "+1"
+      | "-1"
+      | "laugh"
+      | "confused"
+      | "heart"
+      | "hooray"
+      | "rocket"
+      | "eyes";
+
+    discussion_number: number;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    team_id: number;
+  };
+  export type ReactionsListForTeamDiscussionCommentParams = {
+    comment_number: number;
+    /**
+     * Returns a single [reaction type](https://developer.github.com/v3/reactions/#reaction-types). Omit this parameter to list all reactions to a team discussion comment.
+     */
+    content?:
+      | "+1"
+      | "-1"
+      | "laugh"
+      | "confused"
+      | "heart"
+      | "hooray"
+      | "rocket"
+      | "eyes";
+
+    discussion_number: number;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    team_id: number;
+  };
+  export type ReposAcceptInvitationParams = {
+    invitation_id: number;
+  };
+  export type ReposAddCollaboratorParams = {
+    owner: string;
+    /**
+     * The permission to grant the collaborator. **Only valid on organization-owned repositories.** Can be one of:
+     * \* `pull` - can pull, but not push to or administer this repository.
+     * \* `push` - can pull and push, but not administer this repository.
+     * \* `admin` - can pull, push and administer this repository.
+     */
+    permission?: "pull" | "push" | "admin";
+
+    repo: string;
+
+    username: string;
+  };
+  export type ReposAddDeployKeyParams = {
+    /**
+     * The contents of the key.
+     */
+    key: string;
+
+    owner: string;
+    /**
+     * If `true`, the key will only be able to read repository contents. Otherwise, the key will be able to read and write.
+     *
+     * Deploy keys with write access can perform the same actions as an organization member with admin access, or a collaborator on a personal repository. For more information, see "[Repository permission levels for an organization](https://help.github.com/articles/repository-permission-levels-for-an-organization/)" and "[Permission levels for a user account repository](https://help.github.com/articles/permission-levels-for-a-user-account-repository/)."
+     */
+    read_only?: boolean;
+
+    repo: string;
+    /**
+     * A name for the key.
+     */
+    title?: string;
+  };
+  export type ReposAddProtectedBranchAdminEnforcementParams = {
+    branch: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposAddProtectedBranchAppRestrictionsParams = {
+    apps: string[];
+
+    branch: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposAddProtectedBranchRequiredSignaturesParams = {
+    branch: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposAddProtectedBranchRequiredStatusChecksContextsParams = {
+    branch: string;
+
+    contexts: string[];
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposAddProtectedBranchTeamRestrictionsParams = {
+    branch: string;
+
+    owner: string;
+
+    repo: string;
+
+    teams: string[];
+  };
+  export type ReposAddProtectedBranchUserRestrictionsParams = {
+    branch: string;
+
+    owner: string;
+
+    repo: string;
+
+    users: string[];
+  };
+  export type ReposCheckCollaboratorParams = {
+    owner: string;
+
+    repo: string;
+
+    username: string;
+  };
+  export type ReposCheckVulnerabilityAlertsParams = {
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposCompareCommitsParams = {
+    base: string;
+
+    head: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposCreateCommitCommentParamsDeprecatedSha = {
+    /**
+     * The contents of the comment.
+     */
+    body: string;
+
+    owner: string;
+    /**
+     * Relative path of the file to comment on.
+     */
+    path?: string;
+    /**
+     * Line index in the diff to comment on.
+     */
+    position?: number;
+
+    repo: string;
+    /**
+     * @deprecated "sha" parameter renamed to "commit_sha"
+     */
+    sha: string;
+  };
+  export type ReposCreateCommitCommentParamsDeprecatedLine = {
+    /**
+     * The contents of the comment.
+     */
+    body: string;
+
+    commit_sha: string;
+    /**
+     * **Deprecated**. Use **position** parameter instead. Line number in the file to comment on.
+     * @deprecated "line" parameter has been deprecated and will be removed in future
+     */
+    line?: number;
+
+    owner: string;
+    /**
+     * Relative path of the file to comment on.
+     */
+    path?: string;
+    /**
+     * Line index in the diff to comment on.
+     */
+    position?: number;
+
+    repo: string;
+  };
+  export type ReposCreateCommitCommentParams = {
+    /**
+     * The contents of the comment.
+     */
+    body: string;
+
+    commit_sha: string;
+
+    owner: string;
+    /**
+     * Relative path of the file to comment on.
+     */
+    path?: string;
+    /**
+     * Line index in the diff to comment on.
+     */
+    position?: number;
+
+    repo: string;
+  };
+  export type ReposCreateDeploymentParams = {
+    /**
+     * Attempts to automatically merge the default branch into the requested ref, if it's behind the default branch.
+     */
+    auto_merge?: boolean;
+    /**
+     * Short description of the deployment.
+     */
+    description?: string;
+    /**
+     * Name for the target deployment environment (e.g., `production`, `staging`, `qa`).
+     */
+    environment?: string;
+
+    owner: string;
+    /**
+     * JSON payload with extra information about the deployment.
+     */
+    payload?: string;
+    /**
+     * Specifies if the given environment is one that end-users directly interact with. Default: `true` when `environment` is `production` and `false` otherwise.
+     * **Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://developer.github.com/v3/previews/#enhanced-deployments) custom media type.
+     */
+    production_environment?: boolean;
+    /**
+     * The ref to deploy. This can be a branch, tag, or SHA.
+     */
+    ref: string;
+
+    repo: string;
+    /**
+     * The [status](https://developer.github.com/v3/repos/statuses/) contexts to verify against commit status checks. If you omit this parameter, GitHub verifies all unique contexts before creating a deployment. To bypass checking entirely, pass an empty array. Defaults to all unique contexts.
+     */
+    required_contexts?: string[];
+    /**
+     * Specifies a task to execute (e.g., `deploy` or `deploy:migrations`).
+     */
+    task?: string;
+    /**
+     * Specifies if the given environment is specific to the deployment and will no longer exist at some point in the future. Default: `false`
+     * **Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://developer.github.com/v3/previews/#enhanced-deployments) custom media type. **Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://developer.github.com/v3/previews/#enhanced-deployments) custom media type.
+     */
+    transient_environment?: boolean;
+  };
+  export type ReposCreateDeploymentStatusParams = {
+    /**
+     * Adds a new `inactive` status to all prior non-transient, non-production environment deployments with the same repository and `environment` name as the created status's deployment. An `inactive` status is only added to deployments that had a `success` state. Default: `true`
+     * **Note:** To add an `inactive` status to `production` environments, you must use the [`application/vnd.github.flash-preview+json`](https://developer.github.com/v3/previews/#deployment-statuses) custom media type.
+     * **Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://developer.github.com/v3/previews/#enhanced-deployments) custom media type.
+     */
+    auto_inactive?: boolean;
+
+    deployment_id: number;
+    /**
+     * A short description of the status. The maximum description length is 140 characters.
+     */
+    description?: string;
+    /**
+     * Name for the target deployment environment, which can be changed when setting a deploy status. For example, `production`, `staging`, or `qa`. **Note:** This parameter requires you to use the [`application/vnd.github.flash-preview+json`](https://developer.github.com/v3/previews/#deployment-statuses) custom media type.
+     */
+    environment?: "production" | "staging" | "qa";
+    /**
+     * Sets the URL for accessing your environment. Default: `""`
+     * **Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://developer.github.com/v3/previews/#enhanced-deployments) custom media type. **Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://developer.github.com/v3/previews/#enhanced-deployments) custom media type.
+     */
+    environment_url?: string;
+    /**
+     * The full URL of the deployment's output. This parameter replaces `target_url`. We will continue to accept `target_url` to support legacy uses, but we recommend replacing `target_url` with `log_url`. Setting `log_url` will automatically set `target_url` to the same value. Default: `""`
+     * **Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://developer.github.com/v3/previews/#enhanced-deployments) custom media type. **Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://developer.github.com/v3/previews/#enhanced-deployments) custom media type.
+     */
+    log_url?: string;
+
+    owner: string;
+
+    repo: string;
+    /**
+     * The state of the status. Can be one of `error`, `failure`, `inactive`, `in_progress`, `queued` `pending`, or `success`. **Note:** To use the `inactive` state, you must provide the [`application/vnd.github.ant-man-preview+json`](https://developer.github.com/v3/previews/#enhanced-deployments) custom media type. To use the `in_progress` and `queued` states, you must provide the [`application/vnd.github.flash-preview+json`](https://developer.github.com/v3/previews/#deployment-statuses) custom media type.
+     */
+    state:
+      | "error"
+      | "failure"
+      | "inactive"
+      | "in_progress"
+      | "queued"
+      | "pending"
+      | "success";
+    /**
+     * The target URL to associate with this status. This URL should contain output to keep the user updated while the task is running or serve as historical information for what happened in the deployment. **Note:** It's recommended to use the `log_url` parameter, which replaces `target_url`.
+     */
+    target_url?: string;
+  };
+  export type ReposCreateDispatchEventParams = {
+    /**
+     * JSON payload with extra information about the webhook event that your action or worklow may use.
+     */
+    client_payload?: ReposCreateDispatchEventParamsClientPayload;
+    /**
+     * **Required:** A custom webhook event name.
+     */
+    event_type?: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposCreateFileParams = {
+    /**
+     * The author of the file. Default: The `committer` or the authenticated user if you omit `committer`.
+     */
+    author?: ReposCreateFileParamsAuthor;
+    /**
+     * The branch name. Default: the repository’s default branch (usually `master`)
+     */
+    branch?: string;
+    /**
+     * The person that committed the file. Default: the authenticated user.
+     */
+    committer?: ReposCreateFileParamsCommitter;
+    /**
+     * The new file content, using Base64 encoding.
+     */
+    content: string;
+    /**
+     * The commit message.
+     */
+    message: string;
+
+    owner: string;
+
+    path: string;
+
+    repo: string;
+    /**
+     * **Required if you are updating a file**. The blob SHA of the file being replaced.
+     */
+    sha?: string;
+  };
+  export type ReposCreateForAuthenticatedUserParams = {
+    /**
+     * Either `true` to allow merging pull requests with a merge commit, or `false` to prevent merging pull requests with merge commits.
+     */
+    allow_merge_commit?: boolean;
+    /**
+     * Either `true` to allow rebase-merging pull requests, or `false` to prevent rebase-merging.
+     */
+    allow_rebase_merge?: boolean;
+    /**
+     * Either `true` to allow squash-merging pull requests, or `false` to prevent squash-merging.
+     */
+    allow_squash_merge?: boolean;
+    /**
+     * Pass `true` to create an initial commit with empty README.
+     */
+    auto_init?: boolean;
+    /**
+     * A short description of the repository.
+     */
+    description?: string;
+    /**
+     * Desired language or platform [.gitignore template](https://github.com/github/gitignore) to apply. Use the name of the template without the extension. For example, "Haskell".
+     */
+    gitignore_template?: string;
+    /**
+     * Either `true` to enable issues for this repository or `false` to disable them.
+     */
+    has_issues?: boolean;
+    /**
+     * Either `true` to enable projects for this repository or `false` to disable them. **Note:** If you're creating a repository in an organization that has disabled repository projects, the default is `false`, and if you pass `true`, the API returns an error.
+     */
+    has_projects?: boolean;
+    /**
+     * Either `true` to enable the wiki for this repository or `false` to disable it.
+     */
+    has_wiki?: boolean;
+    /**
+     * A URL with more information about the repository.
+     */
+    homepage?: string;
+    /**
+     * Either `true` to make this repo available as a template repository or `false` to prevent it.
+     */
+    is_template?: boolean;
+    /**
+     * Choose an [open source license template](https://choosealicense.com/) that best suits your needs, and then use the [license keyword](https://help.github.com/articles/licensing-a-repository/#searching-github-by-license-type) as the `license_template` string. For example, "mit" or "mpl-2.0".
+     */
+    license_template?: string;
+    /**
+     * The name of the repository.
+     */
+    name: string;
+    /**
+     * Either `true` to create a private repository or `false` to create a public one. Creating private repositories requires a paid GitHub account.
+     */
+    private?: boolean;
+    /**
+     * The id of the team that will be granted access to this repository. This is only valid when creating a repository in an organization.
+     */
+    team_id?: number;
+  };
+  export type ReposCreateForkParams = {
+    /**
+     * Optional parameter to specify the organization name if forking into an organization.
+     */
+    organization?: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposCreateHookParams = {
+    /**
+     * Determines if notifications are sent when the webhook is triggered. Set to `true` to send notifications.
+     */
+    active?: boolean;
+    /**
+     * Key/value pairs to provide settings for this webhook. [These are defined below](https://developer.github.com/v3/repos/hooks/#create-hook-config-params).
+     */
+    config: ReposCreateHookParamsConfig;
+    /**
+     * Determines what [events](https://developer.github.com/v3/activity/events/types/) the hook is triggered for.
+     */
+    events?: string[];
+    /**
+     * Use `web` to create a webhook. Default: `web`. This parameter only accepts the value `web`.
+     */
+    name?: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposCreateInOrgParams = {
+    /**
+     * Either `true` to allow merging pull requests with a merge commit, or `false` to prevent merging pull requests with merge commits.
+     */
+    allow_merge_commit?: boolean;
+    /**
+     * Either `true` to allow rebase-merging pull requests, or `false` to prevent rebase-merging.
+     */
+    allow_rebase_merge?: boolean;
+    /**
+     * Either `true` to allow squash-merging pull requests, or `false` to prevent squash-merging.
+     */
+    allow_squash_merge?: boolean;
+    /**
+     * Pass `true` to create an initial commit with empty README.
+     */
+    auto_init?: boolean;
+    /**
+     * A short description of the repository.
+     */
+    description?: string;
+    /**
+     * Desired language or platform [.gitignore template](https://github.com/github/gitignore) to apply. Use the name of the template without the extension. For example, "Haskell".
+     */
+    gitignore_template?: string;
+    /**
+     * Either `true` to enable issues for this repository or `false` to disable them.
+     */
+    has_issues?: boolean;
+    /**
+     * Either `true` to enable projects for this repository or `false` to disable them. **Note:** If you're creating a repository in an organization that has disabled repository projects, the default is `false`, and if you pass `true`, the API returns an error.
+     */
+    has_projects?: boolean;
+    /**
+     * Either `true` to enable the wiki for this repository or `false` to disable it.
+     */
+    has_wiki?: boolean;
+    /**
+     * A URL with more information about the repository.
+     */
+    homepage?: string;
+    /**
+     * Either `true` to make this repo available as a template repository or `false` to prevent it.
+     */
+    is_template?: boolean;
+    /**
+     * Choose an [open source license template](https://choosealicense.com/) that best suits your needs, and then use the [license keyword](https://help.github.com/articles/licensing-a-repository/#searching-github-by-license-type) as the `license_template` string. For example, "mit" or "mpl-2.0".
+     */
+    license_template?: string;
+    /**
+     * The name of the repository.
+     */
+    name: string;
+
+    org: string;
+    /**
+     * Either `true` to create a private repository or `false` to create a public one. Creating private repositories requires a paid GitHub account.
+     */
+    private?: boolean;
+    /**
+     * The id of the team that will be granted access to this repository. This is only valid when creating a repository in an organization.
+     */
+    team_id?: number;
+  };
+  export type ReposCreateOrUpdateFileParams = {
+    /**
+     * The author of the file. Default: The `committer` or the authenticated user if you omit `committer`.
+     */
+    author?: ReposCreateOrUpdateFileParamsAuthor;
+    /**
+     * The branch name. Default: the repository’s default branch (usually `master`)
+     */
+    branch?: string;
+    /**
+     * The person that committed the file. Default: the authenticated user.
+     */
+    committer?: ReposCreateOrUpdateFileParamsCommitter;
+    /**
+     * The new file content, using Base64 encoding.
+     */
+    content: string;
+    /**
+     * The commit message.
+     */
+    message: string;
+
+    owner: string;
+
+    path: string;
+
+    repo: string;
+    /**
+     * **Required if you are updating a file**. The blob SHA of the file being replaced.
+     */
+    sha?: string;
+  };
+  export type ReposCreateReleaseParams = {
+    /**
+     * Text describing the contents of the tag.
+     */
+    body?: string;
+    /**
+     * `true` to create a draft (unpublished) release, `false` to create a published one.
+     */
+    draft?: boolean;
+    /**
+     * The name of the release.
+     */
+    name?: string;
+
+    owner: string;
+    /**
+     * `true` to identify the release as a prerelease. `false` to identify the release as a full release.
+     */
+    prerelease?: boolean;
+
+    repo: string;
+    /**
+     * The name of the tag.
+     */
+    tag_name: string;
+    /**
+     * Specifies the commitish value that determines where the Git tag is created from. Can be any branch or commit SHA. Unused if the Git tag already exists. Default: the repository's default branch (usually `master`).
+     */
+    target_commitish?: string;
+  };
+  export type ReposCreateStatusParams = {
+    /**
+     * A string label to differentiate this status from the status of other systems.
+     */
+    context?: string;
+    /**
+     * A short description of the status.
+     */
+    description?: string;
+
+    owner: string;
+
+    repo: string;
+
+    sha: string;
+    /**
+     * The state of the status. Can be one of `error`, `failure`, `pending`, or `success`.
+     */
+    state: "error" | "failure" | "pending" | "success";
+    /**
+     * The target URL to associate with this status. This URL will be linked from the GitHub UI to allow users to easily see the source of the status.
+     * For example, if your continuous integration system is posting build status, you would want to provide the deep link for the build output for this specific SHA:
+     * `http://ci.example.com/user/repo/build/sha`
+     */
+    target_url?: string;
+  };
+  export type ReposCreateUsingTemplateParams = {
+    /**
+     * A short description of the new repository.
+     */
+    description?: string;
+    /**
+     * The name of the new repository.
+     */
+    name: string;
+    /**
+     * The organization or person who will own the new repository. To create a new repository in an organization, the authenticated user must be a member of the specified organization.
+     */
+    owner?: string;
+    /**
+     * Either `true` to create a new private repository or `false` to create a new public one.
+     */
+    private?: boolean;
+
+    template_owner: string;
+
+    template_repo: string;
+  };
+  export type ReposDeclineInvitationParams = {
+    invitation_id: number;
+  };
+  export type ReposDeleteParams = {
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposDeleteCommitCommentParams = {
+    comment_id: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposDeleteDownloadParams = {
+    download_id: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposDeleteFileParams = {
+    /**
+     * object containing information about the author.
+     */
+    author?: ReposDeleteFileParamsAuthor;
+    /**
+     * The branch name. Default: the repository’s default branch (usually `master`)
+     */
+    branch?: string;
+    /**
+     * object containing information about the committer.
+     */
+    committer?: ReposDeleteFileParamsCommitter;
+    /**
+     * The commit message.
+     */
+    message: string;
+
+    owner: string;
+
+    path: string;
+
+    repo: string;
+    /**
+     * The blob SHA of the file being replaced.
+     */
+    sha: string;
+  };
+  export type ReposDeleteHookParams = {
+    hook_id: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposDeleteInvitationParams = {
+    invitation_id: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposDeleteReleaseParams = {
+    owner: string;
+
+    release_id: number;
+
+    repo: string;
+  };
+  export type ReposDeleteReleaseAssetParams = {
+    asset_id: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposDisableAutomatedSecurityFixesParams = {
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposDisablePagesSiteParams = {
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposDisableVulnerabilityAlertsParams = {
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposEnableAutomatedSecurityFixesParams = {
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposEnablePagesSiteParams = {
+    owner: string;
+
+    repo: string;
+
+    source?: ReposEnablePagesSiteParamsSource;
+  };
+  export type ReposEnableVulnerabilityAlertsParams = {
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposGetParams = {
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposGetAppsWithAccessToProtectedBranchParams = {
+    branch: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposGetArchiveLinkParams = {
+    archive_format: string;
+
+    owner: string;
+
+    ref: string;
+
+    repo: string;
+  };
+  export type ReposGetBranchParams = {
+    branch: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposGetBranchProtectionParams = {
+    branch: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposGetClonesParams = {
+    owner: string;
+    /**
+     * Must be one of: `day`, `week`.
+     */
+    per?: "day" | "week";
+
+    repo: string;
+  };
+  export type ReposGetCodeFrequencyStatsParams = {
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposGetCollaboratorPermissionLevelParams = {
+    owner: string;
+
+    repo: string;
+
+    username: string;
+  };
+  export type ReposGetCombinedStatusForRefParams = {
+    owner: string;
+
+    ref: string;
+
+    repo: string;
+  };
+  export type ReposGetCommitParamsDeprecatedSha = {
+    owner: string;
+
+    repo: string;
+    /**
+     * @deprecated "sha" parameter renamed to "ref"
+     */
+    sha: string;
+  };
+  export type ReposGetCommitParamsDeprecatedCommitSha = {
+    /**
+     * @deprecated "commit_sha" parameter renamed to "ref"
+     */
+    commit_sha: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposGetCommitParams = {
+    owner: string;
+
+    ref: string;
+
+    repo: string;
+  };
+  export type ReposGetCommitActivityStatsParams = {
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposGetCommitCommentParams = {
+    comment_id: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposGetCommitRefShaParams = {
+    owner: string;
+
+    ref: string;
+
+    repo: string;
+  };
+  export type ReposGetContentsParams = {
+    owner: string;
+
+    path: string;
+    /**
+     * The name of the commit/branch/tag. Default: the repository’s default branch (usually `master`)
+     */
+    ref?: string;
+
+    repo: string;
+  };
+  export type ReposGetContributorsStatsParams = {
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposGetDeployKeyParams = {
+    key_id: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposGetDeploymentParams = {
+    deployment_id: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposGetDeploymentStatusParams = {
+    deployment_id: number;
+
+    owner: string;
+
+    repo: string;
+
+    status_id: number;
+  };
+  export type ReposGetDownloadParams = {
+    download_id: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposGetHookParams = {
+    hook_id: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposGetLatestPagesBuildParams = {
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposGetLatestReleaseParams = {
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposGetPagesParams = {
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposGetPagesBuildParams = {
+    build_id: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposGetParticipationStatsParams = {
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposGetProtectedBranchAdminEnforcementParams = {
+    branch: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposGetProtectedBranchPullRequestReviewEnforcementParams = {
+    branch: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposGetProtectedBranchRequiredSignaturesParams = {
+    branch: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposGetProtectedBranchRequiredStatusChecksParams = {
+    branch: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposGetProtectedBranchRestrictionsParams = {
+    branch: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposGetPunchCardStatsParams = {
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposGetReadmeParams = {
+    owner: string;
+    /**
+     * The name of the commit/branch/tag. Default: the repository’s default branch (usually `master`)
+     */
+    ref?: string;
+
+    repo: string;
+  };
+  export type ReposGetReleaseParams = {
+    owner: string;
+
+    release_id: number;
+
+    repo: string;
+  };
+  export type ReposGetReleaseAssetParams = {
+    asset_id: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposGetReleaseByTagParams = {
+    owner: string;
+
+    repo: string;
+
+    tag: string;
+  };
+  export type ReposGetTeamsWithAccessToProtectedBranchParams = {
+    branch: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposGetTopPathsParams = {
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposGetTopReferrersParams = {
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposGetUsersWithAccessToProtectedBranchParams = {
+    branch: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposGetViewsParams = {
+    owner: string;
+    /**
+     * Must be one of: `day`, `week`.
+     */
+    per?: "day" | "week";
+
+    repo: string;
+  };
+  export type ReposListParams = {
+    /**
+     * Comma-separated list of values. Can include:
+     * \* `owner`: Repositories that are owned by the authenticated user.
+     * \* `collaborator`: Repositories that the user has been added to as a collaborator.
+     * \* `organization_member`: Repositories that the user has access to through being a member of an organization. This includes every repository on every team that the user is on.
+     */
+    affiliation?: string;
+    /**
+     * Can be one of `asc` or `desc`. Default: `asc` when using `full_name`, otherwise `desc`
+     */
+    direction?: "asc" | "desc";
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+    /**
+     * Can be one of `created`, `updated`, `pushed`, `full_name`.
+     */
+    sort?: "created" | "updated" | "pushed" | "full_name";
+    /**
+     * Can be one of `all`, `owner`, `public`, `private`, `member`. Default: `all`
+     *
+     * Will cause a `422` error if used in the same request as **visibility** or **affiliation**. Will cause a `422` error if used in the same request as **visibility** or **affiliation**.
+     */
+    type?: "all" | "owner" | "public" | "private" | "member";
+    /**
+     * Can be one of `all`, `public`, or `private`.
+     */
+    visibility?: "all" | "public" | "private";
+  };
+  export type ReposListAppsWithAccessToProtectedBranchParams = {
+    branch: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposListAssetsForReleaseParams = {
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    release_id: number;
+
+    repo: string;
+  };
+  export type ReposListBranchesParams = {
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+    /**
+     * Setting to `true` returns only protected branches. When set to `false`, only unprotected branches are returned. Omitting this parameter returns all branches.
+     */
+    protected?: boolean;
+
+    repo: string;
+  };
+  export type ReposListBranchesForHeadCommitParams = {
+    commit_sha: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposListCollaboratorsParams = {
+    /**
+     * Filter collaborators returned by their affiliation. Can be one of:
+     * \* `outside`: All outside collaborators of an organization-owned repository.
+     * \* `direct`: All collaborators with permissions to an organization-owned repository, regardless of organization membership status.
+     * \* `all`: All collaborators the authenticated user can see.
+     */
+    affiliation?: "outside" | "direct" | "all";
+
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+  };
+  export type ReposListCommentsForCommitParamsDeprecatedRef = {
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+    /**
+     * @deprecated "ref" parameter renamed to "commit_sha"
+     */
+    ref: string;
+
+    repo: string;
+  };
+  export type ReposListCommentsForCommitParams = {
+    commit_sha: string;
+
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+  };
+  export type ReposListCommitCommentsParams = {
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+  };
+  export type ReposListCommitsParams = {
+    /**
+     * GitHub login or email address by which to filter by commit author.
+     */
+    author?: string;
+
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Only commits containing this file path will be returned.
+     */
+    path?: string;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+    /**
+     * SHA or branch to start listing commits from. Default: the repository’s default branch (usually `master`).
+     */
+    sha?: string;
+    /**
+     * Only commits after this date will be returned. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
+     */
+    since?: string;
+    /**
+     * Only commits before this date will be returned. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
+     */
+    until?: string;
+  };
+  export type ReposListContributorsParams = {
+    /**
+     * Set to `1` or `true` to include anonymous contributors in results.
+     */
+    anon?: string;
+
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+  };
+  export type ReposListDeployKeysParams = {
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+  };
+  export type ReposListDeploymentStatusesParams = {
+    deployment_id: number;
+
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+  };
+  export type ReposListDeploymentsParams = {
+    /**
+     * The name of the environment that was deployed to (e.g., `staging` or `production`).
+     */
+    environment?: string;
+
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+    /**
+     * The name of the ref. This can be a branch, tag, or SHA.
+     */
+    ref?: string;
+
+    repo: string;
+    /**
+     * The SHA recorded at creation time.
+     */
+    sha?: string;
+    /**
+     * The name of the task for the deployment (e.g., `deploy` or `deploy:migrations`).
+     */
+    task?: string;
+  };
+  export type ReposListDownloadsParams = {
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+  };
+  export type ReposListForOrgParams = {
+    /**
+     * Can be one of `asc` or `desc`. Default: when using `full_name`: `asc`, otherwise `desc`
+     */
+    direction?: "asc" | "desc";
+
+    org: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+    /**
+     * Can be one of `created`, `updated`, `pushed`, `full_name`.
+     */
+    sort?: "created" | "updated" | "pushed" | "full_name";
+    /**
+     * Can be one of `all`, `public`, `private`, `forks`, `sources`, `member`.
+     */
+    type?: "all" | "public" | "private" | "forks" | "sources" | "member";
+  };
+  export type ReposListForUserParams = {
+    /**
+     * Can be one of `asc` or `desc`. Default: `asc` when using `full_name`, otherwise `desc`
+     */
+    direction?: "asc" | "desc";
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+    /**
+     * Can be one of `created`, `updated`, `pushed`, `full_name`.
+     */
+    sort?: "created" | "updated" | "pushed" | "full_name";
+    /**
+     * Can be one of `all`, `owner`, `member`.
+     */
+    type?: "all" | "owner" | "member";
+
+    username: string;
+  };
+  export type ReposListForksParams = {
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+    /**
+     * The sort order. Can be either `newest`, `oldest`, or `stargazers`.
+     */
+    sort?: "newest" | "oldest" | "stargazers";
+  };
+  export type ReposListHooksParams = {
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+  };
+  export type ReposListInvitationsParams = {
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+  };
+  export type ReposListInvitationsForAuthenticatedUserParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+  };
+  export type ReposListLanguagesParams = {
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposListPagesBuildsParams = {
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+  };
+  export type ReposListProtectedBranchRequiredStatusChecksContextsParams = {
+    branch: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposListProtectedBranchTeamRestrictionsParams = {
+    branch: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposListProtectedBranchUserRestrictionsParams = {
+    branch: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposListPublicParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+    /**
+     * The integer ID of the last Repository that you've seen.
+     */
+    since?: string;
+  };
+  export type ReposListPullRequestsAssociatedWithCommitParams = {
+    commit_sha: string;
+
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+  };
+  export type ReposListReleasesParams = {
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+  };
+  export type ReposListStatusesForRefParams = {
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    ref: string;
+
+    repo: string;
+  };
+  export type ReposListTagsParams = {
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+  };
+  export type ReposListTeamsParams = {
+    owner: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    repo: string;
+  };
+  export type ReposListTeamsWithAccessToProtectedBranchParams = {
+    branch: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposListTopicsParams = {
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposListUsersWithAccessToProtectedBranchParams = {
+    branch: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposMergeParams = {
+    /**
+     * The name of the base branch that the head will be merged into.
+     */
+    base: string;
+    /**
+     * Commit message to use for the merge commit. If omitted, a default message will be used.
+     */
+    commit_message?: string;
+    /**
+     * The head to merge. This can be a branch name or a commit SHA1.
+     */
+    head: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposPingHookParams = {
+    hook_id: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposRemoveBranchProtectionParams = {
+    branch: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposRemoveCollaboratorParams = {
+    owner: string;
+
+    repo: string;
+
+    username: string;
+  };
+  export type ReposRemoveDeployKeyParams = {
+    key_id: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposRemoveProtectedBranchAdminEnforcementParams = {
+    branch: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposRemoveProtectedBranchAppRestrictionsParams = {
+    apps: string[];
+
+    branch: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposRemoveProtectedBranchPullRequestReviewEnforcementParams = {
+    branch: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposRemoveProtectedBranchRequiredSignaturesParams = {
+    branch: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposRemoveProtectedBranchRequiredStatusChecksParams = {
+    branch: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposRemoveProtectedBranchRequiredStatusChecksContextsParams = {
+    branch: string;
+
+    contexts: string[];
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposRemoveProtectedBranchRestrictionsParams = {
+    branch: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposRemoveProtectedBranchTeamRestrictionsParams = {
+    branch: string;
+
+    owner: string;
+
+    repo: string;
+
+    teams: string[];
+  };
+  export type ReposRemoveProtectedBranchUserRestrictionsParams = {
+    branch: string;
+
+    owner: string;
+
+    repo: string;
+
+    users: string[];
+  };
+  export type ReposReplaceProtectedBranchAppRestrictionsParams = {
+    apps: string[];
+
+    branch: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposReplaceProtectedBranchRequiredStatusChecksContextsParams = {
+    branch: string;
+
+    contexts: string[];
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposReplaceProtectedBranchTeamRestrictionsParams = {
+    branch: string;
+
+    owner: string;
+
+    repo: string;
+
+    teams: string[];
+  };
+  export type ReposReplaceProtectedBranchUserRestrictionsParams = {
+    branch: string;
+
+    owner: string;
+
+    repo: string;
+
+    users: string[];
+  };
+  export type ReposReplaceTopicsParams = {
+    /**
+     * An array of topics to add to the repository. Pass one or more topics to _replace_ the set of existing topics. Send an empty array (`[]`) to clear all topics from the repository. **Note:** Topic `names` cannot contain uppercase letters.
+     */
+    names: string[];
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposRequestPageBuildParams = {
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposRetrieveCommunityProfileMetricsParams = {
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposTestPushHookParams = {
+    hook_id: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposTransferParams = {
+    /**
+     * **Required:** The username or organization name the repository will be transferred to.
+     */
+    new_owner?: string;
+
+    owner: string;
+
+    repo: string;
+    /**
+     * ID of the team or teams to add to the repository. Teams can only be added to organization-owned repositories.
+     */
+    team_ids?: number[];
+  };
+  export type ReposUpdateParams = {
+    /**
+     * Either `true` to allow merging pull requests with a merge commit, or `false` to prevent merging pull requests with merge commits.
+     */
+    allow_merge_commit?: boolean;
+    /**
+     * Either `true` to allow rebase-merging pull requests, or `false` to prevent rebase-merging.
+     */
+    allow_rebase_merge?: boolean;
+    /**
+     * Either `true` to allow squash-merging pull requests, or `false` to prevent squash-merging.
+     */
+    allow_squash_merge?: boolean;
+    /**
+     * `true` to archive this repository. **Note**: You cannot unarchive repositories through the API.
+     */
+    archived?: boolean;
+    /**
+     * Updates the default branch for this repository.
+     */
+    default_branch?: string;
+    /**
+     * A short description of the repository.
+     */
+    description?: string;
+    /**
+     * Either `true` to enable issues for this repository or `false` to disable them.
+     */
+    has_issues?: boolean;
+    /**
+     * Either `true` to enable projects for this repository or `false` to disable them. **Note:** If you're creating a repository in an organization that has disabled repository projects, the default is `false`, and if you pass `true`, the API returns an error.
+     */
+    has_projects?: boolean;
+    /**
+     * Either `true` to enable the wiki for this repository or `false` to disable it.
+     */
+    has_wiki?: boolean;
+    /**
+     * A URL with more information about the repository.
+     */
+    homepage?: string;
+    /**
+     * Either `true` to make this repo available as a template repository or `false` to prevent it.
+     */
+    is_template?: boolean;
+    /**
+     * The name of the repository.
+     */
+    name?: string;
+
+    owner: string;
+    /**
+     * Either `true` to make the repository private or `false` to make it public. Creating private repositories requires a paid GitHub account. Default: `false`.
+     * **Note**: You will get a `422` error if the organization restricts [changing repository visibility](https://help.github.com/articles/repository-permission-levels-for-an-organization#changing-the-visibility-of-repositories) to organization owners and a non-owner tries to change the value of private. **Note**: You will get a `422` error if the organization restricts [changing repository visibility](https://help.github.com/articles/repository-permission-levels-for-an-organization#changing-the-visibility-of-repositories) to organization owners and a non-owner tries to change the value of private.
+     */
+    private?: boolean;
+
+    repo: string;
+  };
+  export type ReposUpdateBranchProtectionParams = {
+    branch: string;
+    /**
+     * Enforce all configured restrictions for administrators. Set to `true` to enforce required status checks for repository administrators. Set to `null` to disable.
+     */
+    enforce_admins: boolean | null;
+
+    owner: string;
+
+    repo: string;
+    /**
+     * Require at least one approving review on a pull request, before merging. Set to `null` to disable.
+     */
+    required_pull_request_reviews: ReposUpdateBranchProtectionParamsRequiredPullRequestReviews | null;
+    /**
+     * Require status checks to pass before merging. Set to `null` to disable.
+     */
+    required_status_checks: ReposUpdateBranchProtectionParamsRequiredStatusChecks | null;
+    /**
+     * Restrict who can push to this branch. User, app, and team `restrictions` are only available for organization-owned repositories. Set to `null` to disable.
+     */
+    restrictions: ReposUpdateBranchProtectionParamsRestrictions | null;
+  };
+  export type ReposUpdateCommitCommentParams = {
+    /**
+     * The contents of the comment
+     */
+    body: string;
+
+    comment_id: number;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposUpdateFileParams = {
+    /**
+     * The author of the file. Default: The `committer` or the authenticated user if you omit `committer`.
+     */
+    author?: ReposUpdateFileParamsAuthor;
+    /**
+     * The branch name. Default: the repository’s default branch (usually `master`)
+     */
+    branch?: string;
+    /**
+     * The person that committed the file. Default: the authenticated user.
+     */
+    committer?: ReposUpdateFileParamsCommitter;
+    /**
+     * The new file content, using Base64 encoding.
+     */
+    content: string;
+    /**
+     * The commit message.
+     */
+    message: string;
+
+    owner: string;
+
+    path: string;
+
+    repo: string;
+    /**
+     * **Required if you are updating a file**. The blob SHA of the file being replaced.
+     */
+    sha?: string;
+  };
+  export type ReposUpdateHookParams = {
+    /**
+     * Determines if notifications are sent when the webhook is triggered. Set to `true` to send notifications.
+     */
+    active?: boolean;
+    /**
+     * Determines a list of events to be added to the list of events that the Hook triggers for.
+     */
+    add_events?: string[];
+    /**
+     * Key/value pairs to provide settings for this webhook. [These are defined below](https://developer.github.com/v3/repos/hooks/#create-hook-config-params).
+     */
+    config?: ReposUpdateHookParamsConfig;
+    /**
+     * Determines what [events](https://developer.github.com/v3/activity/events/types/) the hook is triggered for. This replaces the entire array of events.
+     */
+    events?: string[];
+
+    hook_id: number;
+
+    owner: string;
+    /**
+     * Determines a list of events to be removed from the list of events that the Hook triggers for.
+     */
+    remove_events?: string[];
+
+    repo: string;
+  };
+  export type ReposUpdateInformationAboutPagesSiteParams = {
+    /**
+     * Specify a custom domain for the repository. Sending a `null` value will remove the custom domain. For more about custom domains, see "[Using a custom domain with GitHub Pages](https://help.github.com/articles/using-a-custom-domain-with-github-pages/)."
+     */
+    cname?: string;
+
+    owner: string;
+
+    repo: string;
+    /**
+     * Update the source for the repository. Must include the branch name, and may optionally specify the subdirectory `/docs`. Possible values are `"gh-pages"`, `"master"`, and `"master /docs"`.
+     */
+    source?: '"gh-pages"' | '"master"' | '"master /docs"';
+  };
+  export type ReposUpdateInvitationParams = {
+    invitation_id: number;
+
+    owner: string;
+    /**
+     * The permissions that the associated user will have on the repository. Valid values are `read`, `write`, and `admin`.
+     */
+    permissions?: "read" | "write" | "admin";
+
+    repo: string;
+  };
+  export type ReposUpdateProtectedBranchPullRequestReviewEnforcementParams = {
+    branch: string;
+    /**
+     * Set to `true` if you want to automatically dismiss approving reviews when someone pushes a new commit.
+     */
+    dismiss_stale_reviews?: boolean;
+    /**
+     * Specify which users and teams can dismiss pull request reviews. Pass an empty `dismissal_restrictions` object to disable. User and team `dismissal_restrictions` are only available for organization-owned repositories. Omit this parameter for personal repositories.
+     */
+    dismissal_restrictions?: ReposUpdateProtectedBranchPullRequestReviewEnforcementParamsDismissalRestrictions;
+
+    owner: string;
+
+    repo: string;
+    /**
+     * Blocks merging pull requests until [code owners](https://help.github.com/articles/about-code-owners/) have reviewed.
+     */
+    require_code_owner_reviews?: boolean;
+    /**
+     * Specifies the number of reviewers required to approve pull requests. Use a number between 1 and 6.
+     */
+    required_approving_review_count?: number;
+  };
+  export type ReposUpdateProtectedBranchRequiredStatusChecksParams = {
+    branch: string;
+    /**
+     * The list of status checks to require in order to merge into this branch
+     */
+    contexts?: string[];
+
+    owner: string;
+
+    repo: string;
+    /**
+     * Require branches to be up to date before merging.
+     */
+    strict?: boolean;
+  };
+  export type ReposUpdateReleaseParams = {
+    /**
+     * Text describing the contents of the tag.
+     */
+    body?: string;
+    /**
+     * `true` makes the release a draft, and `false` publishes the release.
+     */
+    draft?: boolean;
+    /**
+     * The name of the release.
+     */
+    name?: string;
+
+    owner: string;
+    /**
+     * `true` to identify the release as a prerelease, `false` to identify the release as a full release.
+     */
+    prerelease?: boolean;
+
+    release_id: number;
+
+    repo: string;
+    /**
+     * The name of the tag.
+     */
+    tag_name?: string;
+    /**
+     * Specifies the commitish value that determines where the Git tag is created from. Can be any branch or commit SHA. Unused if the Git tag already exists. Default: the repository's default branch (usually `master`).
+     */
+    target_commitish?: string;
+  };
+  export type ReposUpdateReleaseAssetParams = {
+    asset_id: number;
+    /**
+     * An alternate short description of the asset. Used in place of the filename.
+     */
+    label?: string;
+    /**
+     * The file name of the asset.
+     */
+    name?: string;
+
+    owner: string;
+
+    repo: string;
+  };
+  export type ReposUploadReleaseAssetParams = {
+    file: string | object;
+
+    headers: ReposUploadReleaseAssetParamsHeaders;
+    /**
+     * An alternate short description of the asset. Used in place of the filename. This should be set in a URI query parameter.
+     */
+    label?: string;
+    /**
+     * The file name of the asset. This should be set in a URI query parameter.
+     */
+    name: string;
+    /**
+     * The `upload_url` key returned from creating or getting a release
+     */
+    url: string;
+  };
+  export type SearchCodeParams = {
+    /**
+     * Determines whether the first search result returned is the highest number of matches (`desc`) or lowest number of matches (`asc`). This parameter is ignored unless you provide `sort`.
+     */
+    order?: "desc" | "asc";
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+    /**
+     * The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as GitHub.com. To learn more about the format of the query, see [Constructing a search query](https://developer.github.com/v3/search/#constructing-a-search-query). See "[Searching code](https://help.github.com/articles/searching-code/)" for a detailed list of qualifiers.
+     */
+    q: string;
+    /**
+     * Sorts the results of your query. Can only be `indexed`, which indicates how recently a file has been indexed by the GitHub search infrastructure. Default: [best match](https://developer.github.com/v3/search/#ranking-search-results)
+     */
+    sort?: "indexed";
+  };
+  export type SearchCommitsParams = {
+    /**
+     * Determines whether the first search result returned is the highest number of matches (`desc`) or lowest number of matches (`asc`). This parameter is ignored unless you provide `sort`.
+     */
+    order?: "desc" | "asc";
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+    /**
+     * The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as GitHub.com. To learn more about the format of the query, see [Constructing a search query](https://developer.github.com/v3/search/#constructing-a-search-query). See "[Searching commits](https://help.github.com/articles/searching-commits/)" for a detailed list of qualifiers.
+     */
+    q: string;
+    /**
+     * Sorts the results of your query by `author-date` or `committer-date`. Default: [best match](https://developer.github.com/v3/search/#ranking-search-results)
+     */
+    sort?: "author-date" | "committer-date";
+  };
+  export type SearchIssuesParams = {
+    /**
+     * Determines whether the first search result returned is the highest number of matches (`desc`) or lowest number of matches (`asc`). This parameter is ignored unless you provide `sort`.
+     */
+    order?: "desc" | "asc";
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+    /**
+     * The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as GitHub.com. To learn more about the format of the query, see [Constructing a search query](https://developer.github.com/v3/search/#constructing-a-search-query). See "[Searching issues and pull requests](https://help.github.com/articles/searching-issues-and-pull-requests/)" for a detailed list of qualifiers.
+     */
+    q: string;
+    /**
+     * Sorts the results of your query by the number of `comments`, `reactions`, `reactions-+1`, `reactions--1`, `reactions-smile`, `reactions-thinking_face`, `reactions-heart`, `reactions-tada`, or `interactions`. You can also sort results by how recently the items were `created` or `updated`, Default: [best match](https://developer.github.com/v3/search/#ranking-search-results)
+     */
+    sort?:
+      | "comments"
+      | "reactions"
+      | "reactions-+1"
+      | "reactions--1"
+      | "reactions-smile"
+      | "reactions-thinking_face"
+      | "reactions-heart"
+      | "reactions-tada"
+      | "interactions"
+      | "created"
+      | "updated";
+  };
+  export type SearchIssuesAndPullRequestsParams = {
+    /**
+     * Determines whether the first search result returned is the highest number of matches (`desc`) or lowest number of matches (`asc`). This parameter is ignored unless you provide `sort`.
+     */
+    order?: "desc" | "asc";
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+    /**
+     * The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as GitHub.com. To learn more about the format of the query, see [Constructing a search query](https://developer.github.com/v3/search/#constructing-a-search-query). See "[Searching issues and pull requests](https://help.github.com/articles/searching-issues-and-pull-requests/)" for a detailed list of qualifiers.
+     */
+    q: string;
+    /**
+     * Sorts the results of your query by the number of `comments`, `reactions`, `reactions-+1`, `reactions--1`, `reactions-smile`, `reactions-thinking_face`, `reactions-heart`, `reactions-tada`, or `interactions`. You can also sort results by how recently the items were `created` or `updated`, Default: [best match](https://developer.github.com/v3/search/#ranking-search-results)
+     */
+    sort?:
+      | "comments"
+      | "reactions"
+      | "reactions-+1"
+      | "reactions--1"
+      | "reactions-smile"
+      | "reactions-thinking_face"
+      | "reactions-heart"
+      | "reactions-tada"
+      | "interactions"
+      | "created"
+      | "updated";
+  };
+  export type SearchLabelsParams = {
+    /**
+     * Determines whether the first search result returned is the highest number of matches (`desc`) or lowest number of matches (`asc`). This parameter is ignored unless you provide `sort`.
+     */
+    order?: "desc" | "asc";
+    /**
+     * The search keywords. This endpoint does not accept qualifiers in the query. To learn more about the format of the query, see [Constructing a search query](https://developer.github.com/v3/search/#constructing-a-search-query).
+     */
+    q: string;
+    /**
+     * The id of the repository.
+     */
+    repository_id: number;
+    /**
+     * Sorts the results of your query by when the label was `created` or `updated`. Default: [best match](https://developer.github.com/v3/search/#ranking-search-results)
+     */
+    sort?: "created" | "updated";
+  };
+  export type SearchReposParams = {
+    /**
+     * Determines whether the first search result returned is the highest number of matches (`desc`) or lowest number of matches (`asc`). This parameter is ignored unless you provide `sort`.
+     */
+    order?: "desc" | "asc";
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+    /**
+     * The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as GitHub.com. To learn more about the format of the query, see [Constructing a search query](https://developer.github.com/v3/search/#constructing-a-search-query). See "[Searching for repositories](https://help.github.com/articles/searching-for-repositories/)" for a detailed list of qualifiers.
+     */
+    q: string;
+    /**
+     * Sorts the results of your query by number of `stars`, `forks`, or `help-wanted-issues` or how recently the items were `updated`. Default: [best match](https://developer.github.com/v3/search/#ranking-search-results)
+     */
+    sort?: "stars" | "forks" | "help-wanted-issues" | "updated";
+  };
+  export type SearchTopicsParams = {
+    /**
+     * The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as GitHub.com. To learn more about the format of the query, see [Constructing a search query](https://developer.github.com/v3/search/#constructing-a-search-query).
+     */
+    q: string;
+  };
+  export type SearchUsersParams = {
+    /**
+     * Determines whether the first search result returned is the highest number of matches (`desc`) or lowest number of matches (`asc`). This parameter is ignored unless you provide `sort`.
+     */
+    order?: "desc" | "asc";
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+    /**
+     * The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as GitHub.com. To learn more about the format of the query, see [Constructing a search query](https://developer.github.com/v3/search/#constructing-a-search-query). See "[Searching users](https://help.github.com/articles/searching-users/)" for a detailed list of qualifiers.
+     */
+    q: string;
+    /**
+     * Sorts the results of your query by number of `followers` or `repositories`, or when the person `joined` GitHub. Default: [best match](https://developer.github.com/v3/search/#ranking-search-results)
+     */
+    sort?: "followers" | "repositories" | "joined";
+  };
+  export type TeamsAddMemberParams = {
+    team_id: number;
+
+    username: string;
+  };
+  export type TeamsAddOrUpdateMembershipParams = {
+    /**
+     * The role that this user should have in the team. Can be one of:
+     * \* `member` - a normal member of the team.
+     * \* `maintainer` - a team maintainer. Able to add/remove other team members, promote other team members to team maintainer, and edit the team's name and description.
+     */
+    role?: "member" | "maintainer";
+
+    team_id: number;
+
+    username: string;
+  };
+  export type TeamsAddOrUpdateProjectParams = {
+    /**
+     * The permission to grant to the team for this project. Can be one of:
+     * \* `read` - team members can read, but not write to or administer this project.
+     * \* `write` - team members can read and write, but not administer this project.
+     * \* `admin` - team members can read, write and administer this project.
+     * Default: the team's `permission` attribute will be used to determine what permission to grant the team on this project. Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://developer.github.com/v3/#http-verbs)."
+     * **Note**: If you pass the `hellcat-preview` media type, you can promote—but not demote—a `permission` attribute inherited from a parent team.
+     */
+    permission?: "read" | "write" | "admin";
+
+    project_id: number;
+
+    team_id: number;
+  };
+  export type TeamsAddOrUpdateRepoParams = {
+    owner: string;
+    /**
+     * The permission to grant the team on this repository. Can be one of:
+     * \* `pull` - team members can pull, but not push to or administer this repository.
+     * \* `push` - team members can pull and push, but not administer this repository.
+     * \* `admin` - team members can pull, push and administer this repository.
+     *
+     * If no permission is specified, the team's `permission` attribute will be used to determine what permission to grant the team on this repository.
+     * **Note**: If you pass the `hellcat-preview` media type, you can promote—but not demote—a `permission` attribute inherited through a parent team.
+     */
+    permission?: "pull" | "push" | "admin";
+
+    repo: string;
+
+    team_id: number;
+  };
+  export type TeamsCheckManagesRepoParams = {
+    owner: string;
+
+    repo: string;
+
+    team_id: number;
+  };
+  export type TeamsCreateParamsDeprecatedPermission = {
+    /**
+     * The description of the team.
+     */
+    description?: string;
+    /**
+     * The logins of organization members to add as maintainers of the team.
+     */
+    maintainers?: string[];
+    /**
+     * The name of the team.
+     */
+    name: string;
+
+    org: string;
+    /**
+     * The ID of a team to set as the parent team. **Note**: You must pass the `hellcat-preview` media type to use this parameter.
+     */
+    parent_team_id?: number;
+    /**
+     * **Deprecated**. The permission that new repositories will be added to the team with when none is specified. Can be one of:
+     * \* `pull` - team members can pull, but not push to or administer newly-added repositories.
+     * \* `push` - team members can pull and push, but not administer newly-added repositories.
+     * \* `admin` - team members can pull, push and administer newly-added repositories.
+     * @deprecated "permission" parameter has been deprecated and will be removed in future
+     */
+    permission?: string;
+    /**
+     * The level of privacy this team should have. The options are:
+     * **For a non-nested team:**
+     * \* `secret` - only visible to organization owners and members of this team.
+     * \* `closed` - visible to all members of this organization.
+     * Default: `secret`
+     * **For a parent or child team:**
+     * \* `closed` - visible to all members of this organization.
+     * Default for child team: `closed`
+     * **Note**: You must pass the `hellcat-preview` media type to set privacy default to `closed` for child teams.
+     */
+    privacy?: "secret" | "closed";
+    /**
+     * The full name (e.g., "organization-name/repository-name") of repositories to add the team to.
+     */
+    repo_names?: string[];
+  };
+  export type TeamsCreateParams = {
+    /**
+     * The description of the team.
+     */
+    description?: string;
+    /**
+     * The logins of organization members to add as maintainers of the team.
+     */
+    maintainers?: string[];
+    /**
+     * The name of the team.
+     */
+    name: string;
+
+    org: string;
+    /**
+     * The ID of a team to set as the parent team. **Note**: You must pass the `hellcat-preview` media type to use this parameter.
+     */
+    parent_team_id?: number;
+    /**
+     * The level of privacy this team should have. The options are:
+     * **For a non-nested team:**
+     * \* `secret` - only visible to organization owners and members of this team.
+     * \* `closed` - visible to all members of this organization.
+     * Default: `secret`
+     * **For a parent or child team:**
+     * \* `closed` - visible to all members of this organization.
+     * Default for child team: `closed`
+     * **Note**: You must pass the `hellcat-preview` media type to set privacy default to `closed` for child teams.
+     */
+    privacy?: "secret" | "closed";
+    /**
+     * The full name (e.g., "organization-name/repository-name") of repositories to add the team to.
+     */
+    repo_names?: string[];
+  };
+  export type TeamsCreateDiscussionParams = {
+    /**
+     * The discussion post's body text.
+     */
+    body: string;
+    /**
+     * Private posts are only visible to team members, organization owners, and team maintainers. Public posts are visible to all members of the organization. Set to `true` to create a private post.
+     */
+    private?: boolean;
+
+    team_id: number;
+    /**
+     * The discussion post's title.
+     */
+    title: string;
+  };
+  export type TeamsCreateDiscussionCommentParams = {
+    /**
+     * The discussion comment's body text.
+     */
+    body: string;
+
+    discussion_number: number;
+
+    team_id: number;
+  };
+  export type TeamsDeleteParams = {
+    team_id: number;
+  };
+  export type TeamsDeleteDiscussionParams = {
+    discussion_number: number;
+
+    team_id: number;
+  };
+  export type TeamsDeleteDiscussionCommentParams = {
+    comment_number: number;
+
+    discussion_number: number;
+
+    team_id: number;
+  };
+  export type TeamsGetParams = {
+    team_id: number;
+  };
+  export type TeamsGetByNameParams = {
+    org: string;
+
+    team_slug: string;
+  };
+  export type TeamsGetDiscussionParams = {
+    discussion_number: number;
+
+    team_id: number;
+  };
+  export type TeamsGetDiscussionCommentParams = {
+    comment_number: number;
+
+    discussion_number: number;
+
+    team_id: number;
+  };
+  export type TeamsGetMemberParams = {
+    team_id: number;
+
+    username: string;
+  };
+  export type TeamsGetMembershipParams = {
+    team_id: number;
+
+    username: string;
+  };
+  export type TeamsListParams = {
+    org: string;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+  };
+  export type TeamsListChildParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    team_id: number;
+  };
+  export type TeamsListDiscussionCommentsParams = {
+    /**
+     * Sorts the discussion comments by the date they were created. To return the oldest comments first, set to `asc`. Can be one of `asc` or `desc`.
+     */
+    direction?: "asc" | "desc";
+
+    discussion_number: number;
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    team_id: number;
+  };
+  export type TeamsListDiscussionsParams = {
+    /**
+     * Sorts the discussion comments by the date they were created. To return the oldest comments first, set to `asc`. Can be one of `asc` or `desc`.
+     */
+    direction?: "asc" | "desc";
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    team_id: number;
+  };
+  export type TeamsListForAuthenticatedUserParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+  };
+  export type TeamsListMembersParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+    /**
+     * Filters members returned by their role in the team. Can be one of:
+     * \* `member` - normal members of the team.
+     * \* `maintainer` - team maintainers.
+     * \* `all` - all members of the team.
+     */
+    role?: "member" | "maintainer" | "all";
+
+    team_id: number;
+  };
+  export type TeamsListPendingInvitationsParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    team_id: number;
+  };
+  export type TeamsListProjectsParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    team_id: number;
+  };
+  export type TeamsListReposParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    team_id: number;
+  };
+  export type TeamsRemoveMemberParams = {
+    team_id: number;
+
+    username: string;
+  };
+  export type TeamsRemoveMembershipParams = {
+    team_id: number;
+
+    username: string;
+  };
+  export type TeamsRemoveProjectParams = {
+    project_id: number;
+
+    team_id: number;
+  };
+  export type TeamsRemoveRepoParams = {
+    owner: string;
+
+    repo: string;
+
+    team_id: number;
+  };
+  export type TeamsReviewProjectParams = {
+    project_id: number;
+
+    team_id: number;
+  };
+  export type TeamsUpdateParamsDeprecatedPermission = {
+    /**
+     * The description of the team.
+     */
+    description?: string;
+    /**
+     * The name of the team.
+     */
+    name: string;
+    /**
+     * The ID of a team to set as the parent team. **Note**: You must pass the `hellcat-preview` media type to use this parameter.
+     */
+    parent_team_id?: number;
+    /**
+     * **Deprecated**. The permission that new repositories will be added to the team with when none is specified. Can be one of:
+     * \* `pull` - team members can pull, but not push to or administer newly-added repositories.
+     * \* `push` - team members can pull and push, but not administer newly-added repositories.
+     * \* `admin` - team members can pull, push and administer newly-added repositories.
+     * @deprecated "permission" parameter has been deprecated and will be removed in future
+     */
+    permission?: string;
+    /**
+     * The level of privacy this team should have. Editing teams without specifying this parameter leaves `privacy` intact. The options are:
+     * **For a non-nested team:**
+     * \* `secret` - only visible to organization owners and members of this team.
+     * \* `closed` - visible to all members of this organization.
+     * **For a parent or child team:**
+     * \* `closed` - visible to all members of this organization.
+     */
+    privacy?: "secret" | "closed";
+
+    team_id: number;
+  };
+  export type TeamsUpdateParams = {
+    /**
+     * The description of the team.
+     */
+    description?: string;
+    /**
+     * The name of the team.
+     */
+    name: string;
+    /**
+     * The ID of a team to set as the parent team. **Note**: You must pass the `hellcat-preview` media type to use this parameter.
+     */
+    parent_team_id?: number;
+    /**
+     * The level of privacy this team should have. Editing teams without specifying this parameter leaves `privacy` intact. The options are:
+     * **For a non-nested team:**
+     * \* `secret` - only visible to organization owners and members of this team.
+     * \* `closed` - visible to all members of this organization.
+     * **For a parent or child team:**
+     * \* `closed` - visible to all members of this organization.
+     */
+    privacy?: "secret" | "closed";
+
+    team_id: number;
+  };
+  export type TeamsUpdateDiscussionParams = {
+    /**
+     * The discussion post's body text.
+     */
+    body?: string;
+
+    discussion_number: number;
+
+    team_id: number;
+    /**
+     * The discussion post's title.
+     */
+    title?: string;
+  };
+  export type TeamsUpdateDiscussionCommentParams = {
+    /**
+     * The discussion comment's body text.
+     */
+    body: string;
+
+    comment_number: number;
+
+    discussion_number: number;
+
+    team_id: number;
+  };
+  export type UsersAddEmailsParams = {
+    /**
+     * Adds one or more email addresses to your GitHub account. Must contain at least one email address. **Note:** Alternatively, you can pass a single email address or an `array` of emails addresses directly, but we recommend that you pass an object using the `emails` key.
+     */
+    emails: string[];
+  };
+  export type UsersBlockParams = {
+    username: string;
+  };
+  export type UsersCheckBlockedParams = {
+    username: string;
+  };
+  export type UsersCheckFollowingParams = {
+    username: string;
+  };
+  export type UsersCheckFollowingForUserParams = {
+    target_user: string;
+
+    username: string;
+  };
+  export type UsersCreateGpgKeyParams = {
+    /**
+     * Your GPG key, generated in ASCII-armored format. See "[Generating a new GPG key](https://help.github.com/articles/generating-a-new-gpg-key/)" for help creating a GPG key.
+     */
+    armored_public_key?: string;
+  };
+  export type UsersCreatePublicKeyParams = {
+    /**
+     * The public SSH key to add to your GitHub account. See "[Generating a new SSH key](https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/)" for guidance on how to create a public SSH key.
+     */
+    key?: string;
+    /**
+     * A descriptive name for the new key. Use a name that will help you recognize this key in your GitHub account. For example, if you're using a personal Mac, you might call this key "Personal MacBook Air".
+     */
+    title?: string;
+  };
+  export type UsersDeleteEmailsParams = {
+    /**
+     * Deletes one or more email addresses from your GitHub account. Must contain at least one email address. **Note:** Alternatively, you can pass a single email address or an `array` of emails addresses directly, but we recommend that you pass an object using the `emails` key.
+     */
+    emails: string[];
+  };
+  export type UsersDeleteGpgKeyParams = {
+    gpg_key_id: number;
+  };
+  export type UsersDeletePublicKeyParams = {
+    key_id: number;
+  };
+  export type UsersFollowParams = {
+    username: string;
+  };
+  export type UsersGetByUsernameParams = {
+    username: string;
+  };
+  export type UsersGetContextForUserParams = {
+    /**
+     * Uses the ID for the `subject_type` you specified. **Required** when using `subject_type`.
+     */
+    subject_id?: string;
+    /**
+     * Identifies which additional information you'd like to receive about the person's hovercard. Can be `organization`, `repository`, `issue`, `pull_request`. **Required** when using `subject_id`.
+     */
+    subject_type?: "organization" | "repository" | "issue" | "pull_request";
+
+    username: string;
+  };
+  export type UsersGetGpgKeyParams = {
+    gpg_key_id: number;
+  };
+  export type UsersGetPublicKeyParams = {
+    key_id: number;
+  };
+  export type UsersListParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+    /**
+     * The integer ID of the last User that you've seen.
+     */
+    since?: string;
+  };
+  export type UsersListEmailsParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+  };
+  export type UsersListFollowersForAuthenticatedUserParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+  };
+  export type UsersListFollowersForUserParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    username: string;
+  };
+  export type UsersListFollowingForAuthenticatedUserParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+  };
+  export type UsersListFollowingForUserParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    username: string;
+  };
+  export type UsersListGpgKeysParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+  };
+  export type UsersListGpgKeysForUserParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    username: string;
+  };
+  export type UsersListPublicEmailsParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+  };
+  export type UsersListPublicKeysParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+  };
+  export type UsersListPublicKeysForUserParams = {
+    /**
+     * Page number of the results to fetch.
+     */
+    page?: number;
+    /**
+     * Results per page (max 100)
+     */
+    per_page?: number;
+
+    username: string;
+  };
+  export type UsersTogglePrimaryEmailVisibilityParams = {
+    /**
+     * Specify the _primary_ email address that needs a visibility change.
+     */
+    email: string;
+    /**
+     * Use `public` to enable an authenticated user to view the specified email address, or use `private` so this primary email address cannot be seen publicly.
+     */
+    visibility: string;
+  };
+  export type UsersUnblockParams = {
+    username: string;
+  };
+  export type UsersUnfollowParams = {
+    username: string;
+  };
+  export type UsersUpdateAuthenticatedParams = {
+    /**
+     * The new short biography of the user.
+     */
+    bio?: string;
+    /**
+     * The new blog URL of the user.
+     */
+    blog?: string;
+    /**
+     * The new company of the user.
+     */
+    company?: string;
+    /**
+     * The publicly visible email address of the user.
+     */
+    email?: string;
+    /**
+     * The new hiring availability of the user.
+     */
+    hireable?: boolean;
+    /**
+     * The new location of the user.
+     */
+    location?: string;
+    /**
+     * The new name of the user.
+     */
+    name?: string;
+  };
+
+  // child param types
+  export type AppsCreateInstallationTokenParamsPermissions = {};
+  export type ChecksCreateParamsActions = {
+    description: string;
+    identifier: string;
+    label: string;
+  };
+  export type ChecksCreateParamsOutput = {
+    annotations?: ChecksCreateParamsOutputAnnotations[];
+    images?: ChecksCreateParamsOutputImages[];
+    summary: string;
+    text?: string;
+    title: string;
+  };
+  export type ChecksCreateParamsOutputAnnotations = {
+    annotation_level: "notice" | "warning" | "failure";
+    end_column?: number;
+    end_line: number;
+    message: string;
+    path: string;
+    raw_details?: string;
+    start_column?: number;
+    start_line: number;
+    title?: string;
+  };
+  export type ChecksCreateParamsOutputImages = {
+    alt: string;
+    caption?: string;
+    image_url: string;
+  };
+  export type ChecksSetSuitesPreferencesParamsAutoTriggerChecks = {
+    app_id: number;
+    setting: boolean;
+  };
+  export type ChecksUpdateParamsActions = {
+    description: string;
+    identifier: string;
+    label: string;
+  };
+  export type ChecksUpdateParamsOutput = {
+    annotations?: ChecksUpdateParamsOutputAnnotations[];
+    images?: ChecksUpdateParamsOutputImages[];
+    summary: string;
+    text?: string;
+    title?: string;
+  };
+  export type ChecksUpdateParamsOutputAnnotations = {
+    annotation_level: "notice" | "warning" | "failure";
+    end_column?: number;
+    end_line: number;
+    message: string;
+    path: string;
+    raw_details?: string;
+    start_column?: number;
+    start_line: number;
+    title?: string;
+  };
+  export type ChecksUpdateParamsOutputImages = {
+    alt: string;
+    caption?: string;
+    image_url: string;
+  };
+  export type GistsCreateParamsFiles = {
+    content?: string;
+  };
+  export type GistsUpdateParamsFiles = {
+    content?: string;
+    filename?: string;
+  };
+  export type GitCreateCommitParamsAuthor = {
+    date?: string;
+    email?: string;
+    name?: string;
+  };
+  export type GitCreateCommitParamsCommitter = {
+    date?: string;
+    email?: string;
+    name?: string;
+  };
+  export type GitCreateTagParamsTagger = {
+    date?: string;
+    email?: string;
+    name?: string;
+  };
+  export type GitCreateTreeParamsTree = {
+    content?: string;
+    mode?: "100644" | "100755" | "040000" | "160000" | "120000";
+    path?: string;
+    sha?: string;
+    type?: "blob" | "tree" | "commit";
+  };
+  export type OrgsCreateHookParamsConfig = {
+    content_type?: string;
+    insecure_ssl?: string;
+    secret?: string;
+    url: string;
+  };
+  export type OrgsUpdateHookParamsConfig = {
+    content_type?: string;
+    insecure_ssl?: string;
+    secret?: string;
+    url: string;
+  };
+  export type PullsCreateReviewParamsComments = {
+    body: string;
+    path: string;
+    position: number;
+  };
+  export type ReposCreateDispatchEventParamsClientPayload = {};
+  export type ReposCreateFileParamsAuthor = {
+    email: string;
+    name: string;
+  };
+  export type ReposCreateFileParamsCommitter = {
+    email: string;
+    name: string;
+  };
+  export type ReposCreateHookParamsConfig = {
+    content_type?: string;
+    insecure_ssl?: string;
+    secret?: string;
+    url: string;
+  };
+  export type ReposCreateOrUpdateFileParamsAuthor = {
+    email: string;
+    name: string;
+  };
+  export type ReposCreateOrUpdateFileParamsCommitter = {
+    email: string;
+    name: string;
+  };
+  export type ReposDeleteFileParamsAuthor = {
+    email?: string;
+    name?: string;
+  };
+  export type ReposDeleteFileParamsCommitter = {
+    email?: string;
+    name?: string;
+  };
+  export type ReposEnablePagesSiteParamsSource = {
+    branch?: "master" | "gh-pages";
+    path?: string;
+  };
+  export type ReposUpdateBranchProtectionParamsRequiredPullRequestReviews = {
+    dismiss_stale_reviews?: boolean;
+    dismissal_restrictions?: ReposUpdateBranchProtectionParamsRequiredPullRequestReviewsDismissalRestrictions;
+    require_code_owner_reviews?: boolean;
+    required_approving_review_count?: number;
+  };
+  export type ReposUpdateBranchProtectionParamsRequiredPullRequestReviewsDismissalRestrictions = {
+    teams?: string[];
+    users?: string[];
+  };
+  export type ReposUpdateBranchProtectionParamsRequiredStatusChecks = {
+    contexts: string[];
+    strict: boolean;
+  };
+  export type ReposUpdateBranchProtectionParamsRestrictions = {
+    apps?: string[];
+    teams: string[];
+    users: string[];
+  };
+  export type ReposUpdateFileParamsAuthor = {
+    email: string;
+    name: string;
+  };
+  export type ReposUpdateFileParamsCommitter = {
+    email: string;
+    name: string;
+  };
+  export type ReposUpdateHookParamsConfig = {
+    content_type?: string;
+    insecure_ssl?: string;
+    secret?: string;
+    url: string;
+  };
+  export type ReposUpdateProtectedBranchPullRequestReviewEnforcementParamsDismissalRestrictions = {
+    teams?: string[];
+    users?: string[];
+  };
+  export type ReposUploadReleaseAssetParamsHeaders = {
+    "content-length": number;
+    "content-type": string;
+  };
+}
+
+declare class Octokit {
+  constructor(options?: Octokit.Options);
+  authenticate(auth: Octokit.AuthBasic): void;
+  authenticate(auth: Octokit.AuthOAuthToken): void;
+  authenticate(auth: Octokit.AuthOAuthSecret): void;
+  authenticate(auth: Octokit.AuthUserToken): void;
+  authenticate(auth: Octokit.AuthJWT): void;
+
+  hook: {
+    before(
+      name: string,
+      callback: (options: Octokit.HookOptions) => void
+    ): void;
+    after(
+      name: string,
+      callback: (
+        response: Octokit.Response<any>,
+        options: Octokit.HookOptions
+      ) => void
+    ): void;
+    error(
+      name: string,
+      callback: (error: Octokit.HookError, options: Octokit.HookOptions) => void
+    ): void;
+    wrap(
+      name: string,
+      callback: (
+        request: (
+          options: Octokit.HookOptions
+        ) => Promise<Octokit.Response<any>>,
+        options: Octokit.HookOptions
+      ) => void
+    ): void;
+  };
+
+  static plugin(plugin: Octokit.Plugin | Octokit.Plugin[]): Octokit.Static;
+
+  registerEndpoints(endpoints: {
+    [scope: string]: Octokit.EndpointOptions;
+  }): void;
+
+  request: Octokit.Request;
+
+  paginate: Octokit.Paginate;
+
+  log: Octokit.Log;
+
+  activity: {
+    /**
+     * Requires for the user to be authenticated.
+     */
+    checkStarringRepo: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ActivityCheckStarringRepoParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * This endpoint should only be used to stop watching a repository. To control whether or not you wish to receive notifications from a repository, [set the repository's subscription manually](https://developer.github.com/v3/activity/watching/#set-a-repository-subscription).
+     */
+    deleteRepoSubscription: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ActivityDeleteRepoSubscriptionParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Mutes all future notifications for a conversation until you comment on the thread or get **@mention**ed.
+     */
+    deleteThreadSubscription: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ActivityDeleteThreadSubscriptionParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    getRepoSubscription: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ActivityGetRepoSubscriptionParams
+      ): Promise<Octokit.Response<Octokit.ActivityGetRepoSubscriptionResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    getThread: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ActivityGetThreadParams
+      ): Promise<Octokit.Response<Octokit.ActivityGetThreadResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * This checks to see if the current user is subscribed to a thread. You can also [get a repository subscription](https://developer.github.com/v3/activity/watching/#get-a-repository-subscription).
+     *
+     * Note that subscriptions are only generated if a user is participating in a conversation--for example, they've replied to the thread, were **@mentioned**, or manually subscribe to a thread.
+     */
+    getThreadSubscription: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ActivityGetThreadSubscriptionParams
+      ): Promise<
+        Octokit.Response<Octokit.ActivityGetThreadSubscriptionResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * This is the user's organization dashboard. You must be authenticated as the user to view this.
+     */
+    listEventsForOrg: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ActivityListEventsForOrgParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * If you are authenticated as the given user, you will see your private events. Otherwise, you'll only see public events.
+     */
+    listEventsForUser: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ActivityListEventsForUserParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * GitHub provides several timeline resources in [Atom](http://en.wikipedia.org/wiki/Atom_(standard)) format. The Feeds API lists all the feeds available to the authenticated user:
+     *
+     * *   **Timeline**: The GitHub global public timeline
+     * *   **User**: The public timeline for any user, using [URI template](https://developer.github.com/v3/#hypermedia)
+     * *   **Current user public**: The public timeline for the authenticated user
+     * *   **Current user**: The private timeline for the authenticated user
+     * *   **Current user actor**: The private timeline for activity created by the authenticated user
+     * *   **Current user organizations**: The private timeline for the organizations the authenticated user is a member of.
+     * *   **Security advisories**: A collection of public announcements that provide information about security-related vulnerabilities in software on GitHub.
+     *
+     * **Note**: Private feeds are only returned when [authenticating via Basic Auth](https://developer.github.com/v3/#basic-authentication) since current feed URIs use the older, non revocable auth tokens.
+     */
+    listFeeds: {
+      (params?: Octokit.RequestOptions & Octokit.EmptyParams): Promise<
+        Octokit.Response<Octokit.ActivityListFeedsResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * List all notifications for the current user, sorted by most recently updated.
+     *
+     * The following example uses the `since` parameter to list notifications that have been updated after the specified time.
+     */
+    listNotifications: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ActivityListNotificationsParams
+      ): Promise<Octokit.Response<Octokit.ActivityListNotificationsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * List all notifications for the current user.
+     */
+    listNotificationsForRepo: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ActivityListNotificationsForRepoParams
+      ): Promise<
+        Octokit.Response<Octokit.ActivityListNotificationsForRepoResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * We delay the public events feed by five minutes, which means the most recent event returned by the public events API actually occurred at least five minutes ago.
+     */
+    listPublicEvents: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ActivityListPublicEventsParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    listPublicEventsForOrg: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ActivityListPublicEventsForOrgParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    listPublicEventsForRepoNetwork: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ActivityListPublicEventsForRepoNetworkParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    listPublicEventsForUser: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ActivityListPublicEventsForUserParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * These are events that you've received by watching repos and following users. If you are authenticated as the given user, you will see private events. Otherwise, you'll only see public events.
+     */
+    listReceivedEventsForUser: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ActivityListReceivedEventsForUserParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    listReceivedPublicEventsForUser: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ActivityListReceivedPublicEventsForUserParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    listRepoEvents: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ActivityListRepoEventsParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * You can also find out _when_ stars were created by passing the following custom [media type](https://developer.github.com/v3/media/) via the `Accept` header:
+     */
+    listReposStarredByAuthenticatedUser: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ActivityListReposStarredByAuthenticatedUserParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.ActivityListReposStarredByAuthenticatedUserResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * You can also find out _when_ stars were created by passing the following custom [media type](https://developer.github.com/v3/media/) via the `Accept` header:
+     */
+    listReposStarredByUser: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ActivityListReposStarredByUserParams
+      ): Promise<
+        Octokit.Response<Octokit.ActivityListReposStarredByUserResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    listReposWatchedByUser: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ActivityListReposWatchedByUserParams
+      ): Promise<
+        Octokit.Response<Octokit.ActivityListReposWatchedByUserResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * You can also find out _when_ stars were created by passing the following custom [media type](https://developer.github.com/v3/media/) via the `Accept` header:
+     */
+    listStargazersForRepo: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ActivityListStargazersForRepoParams
+      ): Promise<
+        Octokit.Response<Octokit.ActivityListStargazersForRepoResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    listWatchedReposForAuthenticatedUser: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ActivityListWatchedReposForAuthenticatedUserParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.ActivityListWatchedReposForAuthenticatedUserResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    listWatchersForRepo: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ActivityListWatchersForRepoParams
+      ): Promise<Octokit.Response<Octokit.ActivityListWatchersForRepoResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Marks a notification as "read" removes it from the [default view on GitHub](https://github.com/notifications). If the number of notifications is too large to complete in one request, you will receive a `202 Accepted` status and GitHub will run an asynchronous process to mark notifications as "read." To check whether any "unread" notifications remain, you can use the [List your notifications](https://developer.github.com/v3/activity/notifications/#list-your-notifications) endpoint and pass the query parameter `all=false`.
+     */
+    markAsRead: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ActivityMarkAsReadParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Marks all notifications in a repository as "read" removes them from the [default view on GitHub](https://github.com/notifications). If the number of notifications is too large to complete in one request, you will receive a `202 Accepted` status and GitHub will run an asynchronous process to mark notifications as "read." To check whether any "unread" notifications remain, you can use the [List your notifications in a repository](https://developer.github.com/v3/activity/notifications/#list-your-notifications-in-a-repository) endpoint and pass the query parameter `all=false`.
+     */
+    markNotificationsAsReadForRepo: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ActivityMarkNotificationsAsReadForRepoParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    markThreadAsRead: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ActivityMarkThreadAsReadParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * If you would like to watch a repository, set `subscribed` to `true`. If you would like to ignore notifications made within a repository, set `ignored` to `true`. If you would like to stop watching a repository, [delete the repository's subscription](https://developer.github.com/v3/activity/watching/#delete-a-repository-subscription) completely.
+     */
+    setRepoSubscription: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ActivitySetRepoSubscriptionParams
+      ): Promise<Octokit.Response<Octokit.ActivitySetRepoSubscriptionResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * This lets you subscribe or unsubscribe from a conversation.
+     */
+    setThreadSubscription: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ActivitySetThreadSubscriptionParams
+      ): Promise<
+        Octokit.Response<Octokit.ActivitySetThreadSubscriptionResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Requires for the user to be authenticated.
+     *
+     * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://developer.github.com/v3/#http-verbs)."
+     */
+    starRepo: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ActivityStarRepoParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Requires for the user to be authenticated.
+     */
+    unstarRepo: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ActivityUnstarRepoParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+  };
+  apps: {
+    /**
+     * Add a single repository to an installation. The authenticated user must have admin access to the repository.
+     *
+     * You must use a personal access token (which you can create via the [command line](https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/) or the [OAuth Authorizations API](https://developer.github.com/v3/oauth_authorizations/#create-a-new-authorization)) or [Basic Authentication](https://developer.github.com/v3/auth/#basic-authentication) to access this endpoint.
+     */
+    addRepoToInstallation: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.AppsAddRepoToInstallationParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Shows whether the user or organization account actively subscribes to a plan listed by the authenticated GitHub App. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change.
+     *
+     * GitHub Apps must use a [JWT](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://developer.github.com/v3/auth/#basic-authentication) with their client ID and client secret to access this endpoint.
+     */
+    checkAccountIsAssociatedWithAny: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.AppsCheckAccountIsAssociatedWithAnyParams
+      ): Promise<
+        Octokit.Response<Octokit.AppsCheckAccountIsAssociatedWithAnyResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Shows whether the user or organization account actively subscribes to a plan listed by the authenticated GitHub App. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change.
+     *
+     * GitHub Apps must use a [JWT](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://developer.github.com/v3/auth/#basic-authentication) with their client ID and client secret to access this endpoint.
+     */
+    checkAccountIsAssociatedWithAnyStubbed: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.AppsCheckAccountIsAssociatedWithAnyStubbedParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.AppsCheckAccountIsAssociatedWithAnyStubbedResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Deprecation Notice:** GitHub will replace and discontinue OAuth endpoints containing `access_token` in the path parameter. We are introducing new endpoints that allow you to securely manage tokens for OAuth Apps by using `access_token` as an input parameter. For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
+     *
+     * OAuth applications can use a special API method for checking OAuth token validity without exceeding the normal rate limits for failed login attempts. Authentication works differently with this particular endpoint. You must use [Basic Authentication](https://developer.github.com/v3/auth#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. Invalid tokens will return `404 NOT FOUND`.
+     * @deprecated octokit.apps.checkAuthorization() is deprecated, see https://developer.github.com/v3/apps/oauth_applications/#check-an-authorization
+     */
+    checkAuthorization: {
+      (
+        params?: Octokit.RequestOptions & Octokit.AppsCheckAuthorizationParams
+      ): Promise<Octokit.Response<Octokit.AppsCheckAuthorizationResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * OAuth applications can use a special API method for checking OAuth token validity without exceeding the normal rate limits for failed login attempts. Authentication works differently with this particular endpoint. You must use [Basic Authentication](https://developer.github.com/v3/auth#basic-authentication) to use this endpoint, where the username is the OAuth application `client_id` and the password is its `client_secret`. Invalid tokens will return `404 NOT FOUND`.
+     */
+    checkToken: {
+      (params?: Octokit.RequestOptions & Octokit.AppsCheckTokenParams): Promise<
+        Octokit.Response<Octokit.AppsCheckTokenResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Creates an attachment under a content reference URL in the body or comment of an issue or pull request. Use the `id` of the content reference from the [`content_reference` event](https://developer.github.com/v3/activity/events/types/#contentreferenceevent) to create an attachment.
+     *
+     * The app must create a content attachment within six hours of the content reference URL being posted. See "[Using content attachments](https://developer.github.com/apps/using-content-attachments/)" for details about content attachments.
+     *
+     * You must use an [installation access token](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation) to access this endpoint.
+     *
+     * This example creates a content attachment for the domain `https://errors.ai/`.
+     */
+    createContentAttachment: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.AppsCreateContentAttachmentParams
+      ): Promise<Octokit.Response<Octokit.AppsCreateContentAttachmentResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Use this endpoint to complete the handshake necessary when implementing the [GitHub App Manifest flow](https://developer.github.com/apps/building-github-apps/creating-github-apps-from-a-manifest/). When you create a GitHub App with the manifest flow, you receive a temporary `code` used to retrieve the GitHub App's `id`, `pem` (private key), and `webhook_secret`.
+     */
+    createFromManifest: {
+      (
+        params?: Octokit.RequestOptions & Octokit.AppsCreateFromManifestParams
+      ): Promise<Octokit.Response<Octokit.AppsCreateFromManifestResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Creates an installation access token that enables a GitHub App to make authenticated API requests for the app's installation on an organization or individual account. Installation tokens expire one hour from the time you create them. Using an expired token produces a status code of `401 - Unauthorized`, and requires creating a new installation token.
+     *
+     * By default the installation token has access to all repositories that the installation can access. To restrict the access to specific repositories, you can provide the `repository_ids` when creating the token. When you omit `repository_ids`, the response does not contain the `repositories` key.
+     *
+     * You must use a [JWT](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
+     *
+     * This example grants the token "Read and write" permission to `issues` and "Read" permission to `contents`, and restricts the token's access to the repository with an `id` of 1296269.
+     */
+    createInstallationToken: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.AppsCreateInstallationTokenParams
+      ): Promise<Octokit.Response<Octokit.AppsCreateInstallationTokenResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * OAuth application owners can revoke a grant for their OAuth application and a specific user. You must use [Basic Authentication](https://developer.github.com/v3/auth#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. You must also provide a valid OAuth `access_token` as an input parameter and the grant for the token's owner will be deleted.
+     *
+     * Deleting an OAuth application's grant will also delete all OAuth tokens associated with the application for the user. Once deleted, the application will have no access to the user's account and will no longer be listed on [the application authorizations settings screen within GitHub](https://github.com/settings/applications#authorized).
+     */
+    deleteAuthorization: {
+      (
+        params?: Octokit.RequestOptions & Octokit.AppsDeleteAuthorizationParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Uninstalls a GitHub App on a user, organization, or business account.
+     *
+     * You must use a [JWT](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
+     */
+    deleteInstallation: {
+      (
+        params?: Octokit.RequestOptions & Octokit.AppsDeleteInstallationParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * OAuth application owners can revoke a single token for an OAuth application. You must use [Basic Authentication](https://developer.github.com/v3/auth#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password.
+     */
+    deleteToken: {
+      (
+        params?: Octokit.RequestOptions & Octokit.AppsDeleteTokenParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Enables an authenticated GitHub App to find the organization's installation information.
+     *
+     * You must use a [JWT](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
+     * @deprecated octokit.apps.findOrgInstallation() has been renamed to octokit.apps.getOrgInstallation() (2019-04-10)
+     */
+    findOrgInstallation: {
+      (
+        params?: Octokit.RequestOptions & Octokit.AppsFindOrgInstallationParams
+      ): Promise<Octokit.Response<Octokit.AppsFindOrgInstallationResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Enables an authenticated GitHub App to find the repository's installation information. The installation's account type will be either an organization or a user account, depending which account the repository belongs to.
+     *
+     * You must use a [JWT](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
+     * @deprecated octokit.apps.findRepoInstallation() has been renamed to octokit.apps.getRepoInstallation() (2019-04-10)
+     */
+    findRepoInstallation: {
+      (
+        params?: Octokit.RequestOptions & Octokit.AppsFindRepoInstallationParams
+      ): Promise<Octokit.Response<Octokit.AppsFindRepoInstallationResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Enables an authenticated GitHub App to find the user’s installation information.
+     *
+     * You must use a [JWT](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
+     * @deprecated octokit.apps.findUserInstallation() has been renamed to octokit.apps.getUserInstallation() (2019-04-10)
+     */
+    findUserInstallation: {
+      (
+        params?: Octokit.RequestOptions & Octokit.AppsFindUserInstallationParams
+      ): Promise<Octokit.Response<Octokit.AppsFindUserInstallationResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Returns the GitHub App associated with the authentication credentials used. To see how many app installations are associated with this GitHub App, see the `installations_count` in the response. For more details about your app's installations, see the "[List installations](https://developer.github.com/v3/apps/#list-installations)" endpoint.
+     *
+     * You must use a [JWT](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
+     */
+    getAuthenticated: {
+      (params?: Octokit.RequestOptions & Octokit.EmptyParams): Promise<
+        Octokit.Response<Octokit.AppsGetAuthenticatedResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Note**: The `:app_slug` is just the URL-friendly name of your GitHub App. You can find this on the settings page for your GitHub App (e.g., `https://github.com/settings/apps/:app_slug`).
+     *
+     * If the GitHub App you specify is public, you can access this endpoint without authenticating. If the GitHub App you specify is private, you must authenticate with a [personal access token](https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/) or an [installation access token](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation) to access this endpoint.
+     */
+    getBySlug: {
+      (params?: Octokit.RequestOptions & Octokit.AppsGetBySlugParams): Promise<
+        Octokit.Response<Octokit.AppsGetBySlugResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * You must use a [JWT](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
+     */
+    getInstallation: {
+      (
+        params?: Octokit.RequestOptions & Octokit.AppsGetInstallationParams
+      ): Promise<Octokit.Response<Octokit.AppsGetInstallationResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Enables an authenticated GitHub App to find the organization's installation information.
+     *
+     * You must use a [JWT](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
+     */
+    getOrgInstallation: {
+      (
+        params?: Octokit.RequestOptions & Octokit.AppsGetOrgInstallationParams
+      ): Promise<Octokit.Response<Octokit.AppsGetOrgInstallationResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Enables an authenticated GitHub App to find the repository's installation information. The installation's account type will be either an organization or a user account, depending which account the repository belongs to.
+     *
+     * You must use a [JWT](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
+     */
+    getRepoInstallation: {
+      (
+        params?: Octokit.RequestOptions & Octokit.AppsGetRepoInstallationParams
+      ): Promise<Octokit.Response<Octokit.AppsGetRepoInstallationResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Enables an authenticated GitHub App to find the user’s installation information.
+     *
+     * You must use a [JWT](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
+     */
+    getUserInstallation: {
+      (
+        params?: Octokit.RequestOptions & Octokit.AppsGetUserInstallationParams
+      ): Promise<Octokit.Response<Octokit.AppsGetUserInstallationResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Returns any accounts associated with a plan, including free plans. For per-seat pricing, you see the list of accounts that have purchased the plan, including the number of seats purchased. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change.
+     *
+     * GitHub Apps must use a [JWT](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://developer.github.com/v3/auth/#basic-authentication) with their client ID and client secret to access this endpoint.
+     */
+    listAccountsUserOrOrgOnPlan: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.AppsListAccountsUserOrOrgOnPlanParams
+      ): Promise<
+        Octokit.Response<Octokit.AppsListAccountsUserOrOrgOnPlanResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Returns any accounts associated with a plan, including free plans. For per-seat pricing, you see the list of accounts that have purchased the plan, including the number of seats purchased. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change.
+     *
+     * GitHub Apps must use a [JWT](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://developer.github.com/v3/auth/#basic-authentication) with their client ID and client secret to access this endpoint.
+     */
+    listAccountsUserOrOrgOnPlanStubbed: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.AppsListAccountsUserOrOrgOnPlanStubbedParams
+      ): Promise<
+        Octokit.Response<Octokit.AppsListAccountsUserOrOrgOnPlanStubbedResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * List repositories that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access for an installation.
+     *
+     * The authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership.
+     *
+     * You must use a [user-to-server OAuth access token](https://developer.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#identifying-users-on-your-site), created for a user who has authorized your GitHub App, to access this endpoint.
+     *
+     * The access the user has to each repository is included in the hash under the `permissions` key.
+     */
+    listInstallationReposForAuthenticatedUser: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.AppsListInstallationReposForAuthenticatedUserParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.AppsListInstallationReposForAuthenticatedUserResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * You must use a [JWT](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
+     *
+     * The permissions the installation has are included under the `permissions` key.
+     */
+    listInstallations: {
+      (
+        params?: Octokit.RequestOptions & Octokit.AppsListInstallationsParams
+      ): Promise<Octokit.Response<Octokit.AppsListInstallationsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Lists installations of your GitHub App that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access.
+     *
+     * You must use a [user-to-server OAuth access token](https://developer.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#identifying-users-on-your-site), created for a user who has authorized your GitHub App, to access this endpoint.
+     *
+     * The authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership.
+     *
+     * You can find the permissions for the installation under the `permissions` key.
+     */
+    listInstallationsForAuthenticatedUser: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.AppsListInstallationsForAuthenticatedUserParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.AppsListInstallationsForAuthenticatedUserResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Returns only active subscriptions. You must use a [user-to-server OAuth access token](https://developer.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#identifying-users-on-your-site), created for a user who has authorized your GitHub App, to access this endpoint. . OAuth Apps must authenticate using an [OAuth token](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/).
+     */
+    listMarketplacePurchasesForAuthenticatedUser: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.AppsListMarketplacePurchasesForAuthenticatedUserParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.AppsListMarketplacePurchasesForAuthenticatedUserResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Returns only active subscriptions. You must use a [user-to-server OAuth access token](https://developer.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#identifying-users-on-your-site), created for a user who has authorized your GitHub App, to access this endpoint. . OAuth Apps must authenticate using an [OAuth token](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/).
+     */
+    listMarketplacePurchasesForAuthenticatedUserStubbed: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.AppsListMarketplacePurchasesForAuthenticatedUserStubbedParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.AppsListMarketplacePurchasesForAuthenticatedUserStubbedResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * GitHub Apps must use a [JWT](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://developer.github.com/v3/auth/#basic-authentication) with their client ID and client secret to access this endpoint.
+     */
+    listPlans: {
+      (params?: Octokit.RequestOptions & Octokit.AppsListPlansParams): Promise<
+        Octokit.Response<Octokit.AppsListPlansResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * GitHub Apps must use a [JWT](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://developer.github.com/v3/auth/#basic-authentication) with their client ID and client secret to access this endpoint.
+     */
+    listPlansStubbed: {
+      (
+        params?: Octokit.RequestOptions & Octokit.AppsListPlansStubbedParams
+      ): Promise<Octokit.Response<Octokit.AppsListPlansStubbedResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * List repositories that an installation can access.
+     *
+     * You must use an [installation access token](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation) to access this endpoint.
+     */
+    listRepos: {
+      (params?: Octokit.RequestOptions & Octokit.AppsListReposParams): Promise<
+        Octokit.Response<Octokit.AppsListReposResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Remove a single repository from an installation. The authenticated user must have admin access to the repository.
+     *
+     * You must use a personal access token (which you can create via the [command line](https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/) or the [OAuth Authorizations API](https://developer.github.com/v3/oauth_authorizations/#create-a-new-authorization)) or [Basic Authentication](https://developer.github.com/v3/auth/#basic-authentication) to access this endpoint.
+     */
+    removeRepoFromInstallation: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.AppsRemoveRepoFromInstallationParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Deprecation Notice:** GitHub will replace and discontinue OAuth endpoints containing `access_token` in the path parameter. We are introducing new endpoints that allow you to securely manage tokens for OAuth Apps by using `access_token` as an input parameter. For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
+     *
+     * OAuth applications can use this API method to reset a valid OAuth token without end-user involvement. Applications must save the "token" property in the response because changes take effect immediately. You must use [Basic Authentication](https://developer.github.com/v3/auth#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. Invalid tokens will return `404 NOT FOUND`.
+     * @deprecated octokit.apps.resetAuthorization() is deprecated, see https://developer.github.com/v3/apps/oauth_applications/#reset-an-authorization
+     */
+    resetAuthorization: {
+      (
+        params?: Octokit.RequestOptions & Octokit.AppsResetAuthorizationParams
+      ): Promise<Octokit.Response<Octokit.AppsResetAuthorizationResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * OAuth applications can use this API method to reset a valid OAuth token without end-user involvement. Applications must save the "token" property in the response because changes take effect immediately. You must use [Basic Authentication](https://developer.github.com/v3/auth#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. Invalid tokens will return `404 NOT FOUND`.
+     */
+    resetToken: {
+      (params?: Octokit.RequestOptions & Octokit.AppsResetTokenParams): Promise<
+        Octokit.Response<Octokit.AppsResetTokenResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Deprecation Notice:** GitHub will replace and discontinue OAuth endpoints containing `access_token` in the path parameter. We are introducing new endpoints that allow you to securely manage tokens for OAuth Apps by using `access_token` as an input parameter. For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
+     *
+     * OAuth application owners can revoke a single token for an OAuth application. You must use [Basic Authentication](https://developer.github.com/v3/auth#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password.
+     * @deprecated octokit.apps.revokeAuthorizationForApplication() is deprecated, see https://developer.github.com/v3/apps/oauth_applications/#revoke-an-authorization-for-an-application
+     */
+    revokeAuthorizationForApplication: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.AppsRevokeAuthorizationForApplicationParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Deprecation Notice:** GitHub will replace and discontinue OAuth endpoints containing `access_token` in the path parameter. We are introducing new endpoints that allow you to securely manage tokens for OAuth Apps by using `access_token` as an input parameter. For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
+     *
+     * OAuth application owners can revoke a grant for their OAuth application and a specific user. You must use [Basic Authentication](https://developer.github.com/v3/auth#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. You must also provide a valid token as `:access_token` and the grant for the token's owner will be deleted.
+     *
+     * Deleting an OAuth application's grant will also delete all OAuth tokens associated with the application for the user. Once deleted, the application will have no access to the user's account and will no longer be listed on [the Applications settings page under "Authorized OAuth Apps" on GitHub](https://github.com/settings/applications#authorized).
+     * @deprecated octokit.apps.revokeGrantForApplication() is deprecated, see https://developer.github.com/v3/apps/oauth_applications/#revoke-a-grant-for-an-application
+     */
+    revokeGrantForApplication: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.AppsRevokeGrantForApplicationParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+  };
+  checks: {
+    /**
+     * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array.
+     *
+     * Creates a new check run for a specific commit in a repository. Your GitHub App must have the `checks:write` permission to create check runs.
+     */
+    create: {
+      (params?: Octokit.RequestOptions & Octokit.ChecksCreateParams): Promise<
+        Octokit.Response<Octokit.ChecksCreateResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array and a `null` value for `head_branch`.
+     *
+     * By default, check suites are automatically created when you create a [check run](https://developer.github.com/v3/checks/runs/). You only need to use this endpoint for manually creating check suites when you've disabled automatic creation using "[Set preferences for check suites on a repository](https://developer.github.com/v3/checks/suites/#set-preferences-for-check-suites-on-a-repository)". Your GitHub App must have the `checks:write` permission to create check suites.
+     */
+    createSuite: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ChecksCreateSuiteParams
+      ): Promise<Octokit.Response<Octokit.ChecksCreateSuiteResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array.
+     *
+     * Gets a single check run using its `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check runs. OAuth Apps and authenticated users must have the `repo` scope to get check runs in a private repository.
+     */
+    get: {
+      (params?: Octokit.RequestOptions & Octokit.ChecksGetParams): Promise<
+        Octokit.Response<Octokit.ChecksGetResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array and a `null` value for `head_branch`.
+     *
+     * Gets a single check suite using its `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check suites. OAuth Apps and authenticated users must have the `repo` scope to get check suites in a private repository.
+     */
+    getSuite: {
+      (params?: Octokit.RequestOptions & Octokit.ChecksGetSuiteParams): Promise<
+        Octokit.Response<Octokit.ChecksGetSuiteResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Lists annotations for a check run using the annotation `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get annotations for a check run. OAuth Apps and authenticated users must have the `repo` scope to get annotations for a check run in a private repository.
+     */
+    listAnnotations: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ChecksListAnnotationsParams
+      ): Promise<Octokit.Response<Octokit.ChecksListAnnotationsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array.
+     *
+     * Lists check runs for a commit ref. The `ref` can be a SHA, branch name, or a tag name. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check runs. OAuth Apps and authenticated users must have the `repo` scope to get check runs in a private repository.
+     */
+    listForRef: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ChecksListForRefParams
+      ): Promise<Octokit.Response<Octokit.ChecksListForRefResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array.
+     *
+     * Lists check runs for a check suite using its `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check runs. OAuth Apps and authenticated users must have the `repo` scope to get check runs in a private repository.
+     */
+    listForSuite: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ChecksListForSuiteParams
+      ): Promise<Octokit.Response<Octokit.ChecksListForSuiteResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array and a `null` value for `head_branch`.
+     *
+     * Lists check suites for a commit `ref`. The `ref` can be a SHA, branch name, or a tag name. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to list check suites. OAuth Apps and authenticated users must have the `repo` scope to get check suites in a private repository.
+     */
+    listSuitesForRef: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ChecksListSuitesForRefParams
+      ): Promise<Octokit.Response<Octokit.ChecksListSuitesForRefResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Triggers GitHub to rerequest an existing check suite, without pushing new code to a repository. This endpoint will trigger the [`check_suite` webhook](https://developer.github.com/v3/activity/events/types/#checksuiteevent) event with the action `rerequested`. When a check suite is `rerequested`, its `status` is reset to `queued` and the `conclusion` is cleared.
+     *
+     * To rerequest a check suite, your GitHub App must have the `checks:read` permission on a private repository or pull access to a public repository.
+     */
+    rerequestSuite: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ChecksRerequestSuiteParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Changes the default automatic flow when creating check suites. By default, the CheckSuiteEvent is automatically created each time code is pushed to a repository. When you disable the automatic creation of check suites, you can manually [Create a check suite](https://developer.github.com/v3/checks/suites/#create-a-check-suite). You must have admin permissions in the repository to set preferences for check suites.
+     */
+    setSuitesPreferences: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ChecksSetSuitesPreferencesParams
+      ): Promise<Octokit.Response<Octokit.ChecksSetSuitesPreferencesResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array.
+     *
+     * Updates a check run for a specific commit in a repository. Your GitHub App must have the `checks:write` permission to edit check runs.
+     */
+    update: {
+      (params?: Octokit.RequestOptions & Octokit.ChecksUpdateParams): Promise<
+        Octokit.Response<Octokit.ChecksUpdateResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+  };
+  codesOfConduct: {
+    getConductCode: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.CodesOfConductGetConductCodeParams
+      ): Promise<
+        Octokit.Response<Octokit.CodesOfConductGetConductCodeResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * This method returns the contents of the repository's code of conduct file, if one is detected.
+     */
+    getForRepo: {
+      (
+        params?: Octokit.RequestOptions & Octokit.CodesOfConductGetForRepoParams
+      ): Promise<Octokit.Response<Octokit.CodesOfConductGetForRepoResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    listConductCodes: {
+      (params?: Octokit.RequestOptions & Octokit.EmptyParams): Promise<
+        Octokit.Response<Octokit.CodesOfConductListConductCodesResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+  };
+  emojis: {
+    /**
+     * Lists all the emojis available to use on GitHub.
+     */
+    get: {
+      (params?: Octokit.RequestOptions & Octokit.EmptyParams): Promise<
+        Octokit.AnyResponse
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+  };
+  gists: {
+    checkIsStarred: {
+      (
+        params?: Octokit.RequestOptions & Octokit.GistsCheckIsStarredParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Allows you to add a new gist with one or more files.
+     *
+     * **Note:** Don't name your files "gistfile" with a numerical suffix. This is the format of the automatic naming scheme that Gist uses internally.
+     */
+    create: {
+      (params?: Octokit.RequestOptions & Octokit.GistsCreateParams): Promise<
+        Octokit.Response<Octokit.GistsCreateResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    createComment: {
+      (
+        params?: Octokit.RequestOptions & Octokit.GistsCreateCommentParams
+      ): Promise<Octokit.Response<Octokit.GistsCreateCommentResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    delete: {
+      (params?: Octokit.RequestOptions & Octokit.GistsDeleteParams): Promise<
+        Octokit.AnyResponse
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    deleteComment: {
+      (
+        params?: Octokit.RequestOptions & Octokit.GistsDeleteCommentParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Note**: This was previously `/gists/:gist_id/fork`.
+     */
+    fork: {
+      (params?: Octokit.RequestOptions & Octokit.GistsForkParams): Promise<
+        Octokit.Response<Octokit.GistsForkResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    get: {
+      (params?: Octokit.RequestOptions & Octokit.GistsGetParams): Promise<
+        Octokit.Response<Octokit.GistsGetResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    getComment: {
+      (
+        params?: Octokit.RequestOptions & Octokit.GistsGetCommentParams
+      ): Promise<Octokit.Response<Octokit.GistsGetCommentResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    getRevision: {
+      (
+        params?: Octokit.RequestOptions & Octokit.GistsGetRevisionParams
+      ): Promise<Octokit.Response<Octokit.GistsGetRevisionResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    list: {
+      (params?: Octokit.RequestOptions & Octokit.GistsListParams): Promise<
+        Octokit.Response<Octokit.GistsListResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    listComments: {
+      (
+        params?: Octokit.RequestOptions & Octokit.GistsListCommentsParams
+      ): Promise<Octokit.Response<Octokit.GistsListCommentsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    listCommits: {
+      (
+        params?: Octokit.RequestOptions & Octokit.GistsListCommitsParams
+      ): Promise<Octokit.Response<Octokit.GistsListCommitsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    listForks: {
+      (params?: Octokit.RequestOptions & Octokit.GistsListForksParams): Promise<
+        Octokit.Response<Octokit.GistsListForksResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * List all public gists sorted by most recently updated to least recently updated.
+     *
+     * Note: With [pagination](https://developer.github.com/v3/#pagination), you can fetch up to 3000 gists. For example, you can fetch 100 pages with 30 gists per page or 30 pages with 100 gists per page.
+     */
+    listPublic: {
+      (
+        params?: Octokit.RequestOptions & Octokit.GistsListPublicParams
+      ): Promise<Octokit.Response<Octokit.GistsListPublicResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    listPublicForUser: {
+      (
+        params?: Octokit.RequestOptions & Octokit.GistsListPublicForUserParams
+      ): Promise<Octokit.Response<Octokit.GistsListPublicForUserResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * List the authenticated user's starred gists:
+     */
+    listStarred: {
+      (
+        params?: Octokit.RequestOptions & Octokit.GistsListStarredParams
+      ): Promise<Octokit.Response<Octokit.GistsListStarredResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://developer.github.com/v3/#http-verbs)."
+     */
+    star: {
+      (params?: Octokit.RequestOptions & Octokit.GistsStarParams): Promise<
+        Octokit.AnyResponse
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    unstar: {
+      (params?: Octokit.RequestOptions & Octokit.GistsUnstarParams): Promise<
+        Octokit.AnyResponse
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Allows you to update or delete a gist file and rename gist files. Files from the previous version of the gist that aren't explicitly changed during an edit are unchanged.
+     */
+    update: {
+      (params?: Octokit.RequestOptions & Octokit.GistsUpdateParams): Promise<
+        Octokit.Response<Octokit.GistsUpdateResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    updateComment: {
+      (
+        params?: Octokit.RequestOptions & Octokit.GistsUpdateCommentParams
+      ): Promise<Octokit.Response<Octokit.GistsUpdateCommentResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+  };
+  git: {
+    createBlob: {
+      (params?: Octokit.RequestOptions & Octokit.GitCreateBlobParams): Promise<
+        Octokit.Response<Octokit.GitCreateBlobResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Creates a new Git [commit object](https://git-scm.com/book/en/v1/Git-Internals-Git-Objects#Commit-Objects).
+     *
+     * In this example, the payload of the signature would be:
+     *
+     *
+     *
+     * **Signature verification object**
+     *
+     * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:
+     *
+     * These are the possible values for `reason` in the `verification` object:
+     *
+     * | Value                    | Description                                                                                                                       |
+     * | ------------------------ | --------------------------------------------------------------------------------------------------------------------------------- |
+     * | `expired_key`            | The key that made the signature is expired.                                                                                       |
+     * | `not_signing_key`        | The "signing" flag is not among the usage flags in the GPG key that made the signature.                                           |
+     * | `gpgverify_error`        | There was an error communicating with the signature verification service.                                                         |
+     * | `gpgverify_unavailable`  | The signature verification service is currently unavailable.                                                                      |
+     * | `unsigned`               | The object does not include a signature.                                                                                          |
+     * | `unknown_signature_type` | A non-PGP signature was found in the commit.                                                                                      |
+     * | `no_user`                | No user was associated with the `committer` email address in the commit.                                                          |
+     * | `unverified_email`       | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. |
+     * | `bad_email`              | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature.             |
+     * | `unknown_key`            | The key that made the signature has not been registered with any user's account.                                                  |
+     * | `malformed_signature`    | There was an error parsing the signature.                                                                                         |
+     * | `invalid`                | The signature could not be cryptographically verified using the key whose key-id was found in the signature.                      |
+     * | `valid`                  | None of the above errors applied, so the signature is considered to be verified.                                                  |
+     */
+    createCommit: {
+      (
+        params?: Octokit.RequestOptions & Octokit.GitCreateCommitParams
+      ): Promise<Octokit.Response<Octokit.GitCreateCommitResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Creates a reference for your repository. You are unable to create new references for empty repositories, even if the commit SHA-1 hash used exists. Empty repositories are repositories without branches.
+     */
+    createRef: {
+      (params?: Octokit.RequestOptions & Octokit.GitCreateRefParams): Promise<
+        Octokit.Response<Octokit.GitCreateRefResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Note that creating a tag object does not create the reference that makes a tag in Git. If you want to create an annotated tag in Git, you have to do this call to create the tag object, and then [create](https://developer.github.com/v3/git/refs/#create-a-reference) the `refs/tags/[tag]` reference. If you want to create a lightweight tag, you only have to [create](https://developer.github.com/v3/git/refs/#create-a-reference) the tag reference - this call would be unnecessary.
+     *
+     * **Signature verification object**
+     *
+     * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:
+     *
+     * These are the possible values for `reason` in the `verification` object:
+     *
+     * | Value                    | Description                                                                                                                       |
+     * | ------------------------ | --------------------------------------------------------------------------------------------------------------------------------- |
+     * | `expired_key`            | The key that made the signature is expired.                                                                                       |
+     * | `not_signing_key`        | The "signing" flag is not among the usage flags in the GPG key that made the signature.                                           |
+     * | `gpgverify_error`        | There was an error communicating with the signature verification service.                                                         |
+     * | `gpgverify_unavailable`  | The signature verification service is currently unavailable.                                                                      |
+     * | `unsigned`               | The object does not include a signature.                                                                                          |
+     * | `unknown_signature_type` | A non-PGP signature was found in the commit.                                                                                      |
+     * | `no_user`                | No user was associated with the `committer` email address in the commit.                                                          |
+     * | `unverified_email`       | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. |
+     * | `bad_email`              | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature.             |
+     * | `unknown_key`            | The key that made the signature has not been registered with any user's account.                                                  |
+     * | `malformed_signature`    | There was an error parsing the signature.                                                                                         |
+     * | `invalid`                | The signature could not be cryptographically verified using the key whose key-id was found in the signature.                      |
+     * | `valid`                  | None of the above errors applied, so the signature is considered to be verified.                                                  |
+     */
+    createTag: {
+      (params?: Octokit.RequestOptions & Octokit.GitCreateTagParams): Promise<
+        Octokit.Response<Octokit.GitCreateTagResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * The tree creation API accepts nested entries. If you specify both a tree and a nested path modifying that tree, this endpoint will overwrite the contents of the tree with the new path contents, and create a new tree structure.
+     *
+     * If you use this endpoint to add, delete, or modify the file contents in a tree, you will need to commit the tree and then update a branch to point to the commit. For more information see "[Create a commit](https://developer.github.com/v3/git/commits/#create-a-commit)" and "[Update a reference](https://developer.github.com/v3/git/refs/#update-a-reference)."
+     */
+    createTree: {
+      (params?: Octokit.RequestOptions & Octokit.GitCreateTreeParams): Promise<
+        Octokit.Response<Octokit.GitCreateTreeResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * ```
+     * DELETE /repos/octocat/Hello-World/git/refs/heads/feature-a
+     * ```
+     *
+     * ```
+     * DELETE /repos/octocat/Hello-World/git/refs/tags/v1.0
+     * ```
+     */
+    deleteRef: {
+      (params?: Octokit.RequestOptions & Octokit.GitDeleteRefParams): Promise<
+        Octokit.AnyResponse
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * The `content` in the response will always be Base64 encoded.
+     *
+     * _Note_: This API supports blobs up to 100 megabytes in size.
+     */
+    getBlob: {
+      (params?: Octokit.RequestOptions & Octokit.GitGetBlobParams): Promise<
+        Octokit.Response<Octokit.GitGetBlobResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Gets a Git [commit object](https://git-scm.com/book/en/v1/Git-Internals-Git-Objects#Commit-Objects).
+     *
+     * **Signature verification object**
+     *
+     * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:
+     *
+     * These are the possible values for `reason` in the `verification` object:
+     *
+     * | Value                    | Description                                                                                                                       |
+     * | ------------------------ | --------------------------------------------------------------------------------------------------------------------------------- |
+     * | `expired_key`            | The key that made the signature is expired.                                                                                       |
+     * | `not_signing_key`        | The "signing" flag is not among the usage flags in the GPG key that made the signature.                                           |
+     * | `gpgverify_error`        | There was an error communicating with the signature verification service.                                                         |
+     * | `gpgverify_unavailable`  | The signature verification service is currently unavailable.                                                                      |
+     * | `unsigned`               | The object does not include a signature.                                                                                          |
+     * | `unknown_signature_type` | A non-PGP signature was found in the commit.                                                                                      |
+     * | `no_user`                | No user was associated with the `committer` email address in the commit.                                                          |
+     * | `unverified_email`       | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. |
+     * | `bad_email`              | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature.             |
+     * | `unknown_key`            | The key that made the signature has not been registered with any user's account.                                                  |
+     * | `malformed_signature`    | There was an error parsing the signature.                                                                                         |
+     * | `invalid`                | The signature could not be cryptographically verified using the key whose key-id was found in the signature.                      |
+     * | `valid`                  | None of the above errors applied, so the signature is considered to be verified.                                                  |
+     */
+    getCommit: {
+      (params?: Octokit.RequestOptions & Octokit.GitGetCommitParams): Promise<
+        Octokit.Response<Octokit.GitGetCommitResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Returns a single reference from your Git database. The `:ref` in the URL must be formatted as `heads/<branch name>` for branches and `tags/<tag name>` for tags. If the `:ref` doesn't match an existing ref, a `404` is returned.
+     *
+     * **Note:** You need to explicitly [request a pull request](https://developer.github.com/v3/pulls/#get-a-single-pull-request) to trigger a test merge commit, which checks the mergeability of pull requests. For more information, see "[Checking mergeability of pull requests](https://developer.github.com/v3/git/#checking-mergeability-of-pull-requests)".
+     *
+     * To get the reference for a branch named `skunkworkz/featureA`, the endpoint route is:
+     */
+    getRef: {
+      (params?: Octokit.RequestOptions & Octokit.GitGetRefParams): Promise<
+        Octokit.Response<Octokit.GitGetRefResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Signature verification object**
+     *
+     * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:
+     *
+     * These are the possible values for `reason` in the `verification` object:
+     *
+     * | Value                    | Description                                                                                                                       |
+     * | ------------------------ | --------------------------------------------------------------------------------------------------------------------------------- |
+     * | `expired_key`            | The key that made the signature is expired.                                                                                       |
+     * | `not_signing_key`        | The "signing" flag is not among the usage flags in the GPG key that made the signature.                                           |
+     * | `gpgverify_error`        | There was an error communicating with the signature verification service.                                                         |
+     * | `gpgverify_unavailable`  | The signature verification service is currently unavailable.                                                                      |
+     * | `unsigned`               | The object does not include a signature.                                                                                          |
+     * | `unknown_signature_type` | A non-PGP signature was found in the commit.                                                                                      |
+     * | `no_user`                | No user was associated with the `committer` email address in the commit.                                                          |
+     * | `unverified_email`       | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. |
+     * | `bad_email`              | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature.             |
+     * | `unknown_key`            | The key that made the signature has not been registered with any user's account.                                                  |
+     * | `malformed_signature`    | There was an error parsing the signature.                                                                                         |
+     * | `invalid`                | The signature could not be cryptographically verified using the key whose key-id was found in the signature.                      |
+     * | `valid`                  | None of the above errors applied, so the signature is considered to be verified.                                                  |
+     */
+    getTag: {
+      (params?: Octokit.RequestOptions & Octokit.GitGetTagParams): Promise<
+        Octokit.Response<Octokit.GitGetTagResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * If `truncated` is `true`, the number of items in the `tree` array exceeded our maximum limit. If you need to fetch more items, you can clone the repository and iterate over the Git data locally.
+     */
+    getTree: {
+      (params?: Octokit.RequestOptions & Octokit.GitGetTreeParams): Promise<
+        Octokit.AnyResponse
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Returns an array of references from your Git database that match the supplied name. The `:ref` in the URL must be formatted as `heads/<branch name>` for branches and `tags/<tag name>` for tags. If the `:ref` doesn't exist in the repository, but existing refs start with `:ref`, they will be returned as an array.
+     *
+     * When you use this endpoint without providing a `:ref`, it will return an array of all the references from your Git database, including notes and stashes if they exist on the server. Anything in the namespace is returned, not just `heads` and `tags`.
+     *
+     * **Note:** You need to explicitly [request a pull request](https://developer.github.com/v3/pulls/#get-a-single-pull-request) to trigger a test merge commit, which checks the mergeability of pull requests. For more information, see "[Checking mergeability of pull requests](https://developer.github.com/v3/git/#checking-mergeability-of-pull-requests)".
+     *
+     * If you request matching references for a branch named `feature` but the branch `feature` doesn't exist, the response can still include other matching head refs that start with the word `feature`, such as `featureA` and `featureB`.
+     */
+    listMatchingRefs: {
+      (
+        params?: Octokit.RequestOptions & Octokit.GitListMatchingRefsParams
+      ): Promise<Octokit.Response<Octokit.GitListMatchingRefsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Returns an array of all the references from your Git database, including notes and stashes if they exist on the server. Anything in the namespace is returned, not just `heads` and `tags`. If there are no references to list, a `404` is returned.
+     */
+    listRefs: {
+      (params?: Octokit.RequestOptions & Octokit.GitListRefsParams): Promise<
+        Octokit.AnyResponse
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    updateRef: {
+      (params?: Octokit.RequestOptions & Octokit.GitUpdateRefParams): Promise<
+        Octokit.Response<Octokit.GitUpdateRefResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+  };
+  gitignore: {
+    /**
+     * The API also allows fetching the source of a single template.
+     *
+     * Use the raw [media type](https://developer.github.com/v3/media/) to get the raw contents.
+     */
+    getTemplate: {
+      (
+        params?: Octokit.RequestOptions & Octokit.GitignoreGetTemplateParams
+      ): Promise<Octokit.Response<Octokit.GitignoreGetTemplateResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * List all templates available to pass as an option when [creating a repository](https://developer.github.com/v3/repos/#create).
+     */
+    listTemplates: {
+      (params?: Octokit.RequestOptions & Octokit.EmptyParams): Promise<
+        Octokit.Response<Octokit.GitignoreListTemplatesResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+  };
+  interactions: {
+    /**
+     * Temporarily restricts interactions to certain GitHub users in any public repository in the given organization. You must be an organization owner to set these restrictions.
+     */
+    addOrUpdateRestrictionsForOrg: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.InteractionsAddOrUpdateRestrictionsForOrgParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.InteractionsAddOrUpdateRestrictionsForOrgResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Temporarily restricts interactions to certain GitHub users within the given repository. You must have owner or admin access to set restrictions.
+     */
+    addOrUpdateRestrictionsForRepo: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.InteractionsAddOrUpdateRestrictionsForRepoParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.InteractionsAddOrUpdateRestrictionsForRepoResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Shows which group of GitHub users can interact with this organization and when the restriction expires. If there are no restrictions, you will see an empty response.
+     */
+    getRestrictionsForOrg: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.InteractionsGetRestrictionsForOrgParams
+      ): Promise<
+        Octokit.Response<Octokit.InteractionsGetRestrictionsForOrgResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Shows which group of GitHub users can interact with this repository and when the restriction expires. If there are no restrictions, you will see an empty response.
+     */
+    getRestrictionsForRepo: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.InteractionsGetRestrictionsForRepoParams
+      ): Promise<
+        Octokit.Response<Octokit.InteractionsGetRestrictionsForRepoResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Removes all interaction restrictions from public repositories in the given organization. You must be an organization owner to remove restrictions.
+     */
+    removeRestrictionsForOrg: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.InteractionsRemoveRestrictionsForOrgParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Removes all interaction restrictions from the given repository. You must have owner or admin access to remove restrictions.
+     */
+    removeRestrictionsForRepo: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.InteractionsRemoveRestrictionsForRepoParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+  };
+  issues: {
+    /**
+     * Adds up to 10 assignees to an issue. Users already assigned to an issue are not replaced.
+     *
+     * This example adds two assignees to the existing `octocat` assignee.
+     */
+    addAssignees: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.IssuesAddAssigneesParamsDeprecatedNumber
+      ): Promise<Octokit.Response<Octokit.IssuesAddAssigneesResponse>>;
+      (
+        params?: Octokit.RequestOptions & Octokit.IssuesAddAssigneesParams
+      ): Promise<Octokit.Response<Octokit.IssuesAddAssigneesResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    addLabels: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.IssuesAddLabelsParamsDeprecatedNumber
+      ): Promise<Octokit.Response<Octokit.IssuesAddLabelsResponse>>;
+      (
+        params?: Octokit.RequestOptions & Octokit.IssuesAddLabelsParams
+      ): Promise<Octokit.Response<Octokit.IssuesAddLabelsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Checks if a user has permission to be assigned to an issue in this repository.
+     *
+     * If the `assignee` can be assigned to issues in the repository, a `204` header with no content is returned.
+     *
+     * Otherwise a `404` status code is returned.
+     */
+    checkAssignee: {
+      (
+        params?: Octokit.RequestOptions & Octokit.IssuesCheckAssigneeParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Any user with pull access to a repository can create an issue. If [issues are disabled in the repository](https://help.github.com/articles/disabling-issues/), the API returns a `410 Gone` status.
+     *
+     * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://developer.github.com/v3/#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://developer.github.com/v3/guides/best-practices-for-integrators/#dealing-with-abuse-rate-limits)" for details.
+     */
+    create: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.IssuesCreateParamsDeprecatedAssignee
+      ): Promise<Octokit.Response<Octokit.IssuesCreateResponse>>;
+      (params?: Octokit.RequestOptions & Octokit.IssuesCreateParams): Promise<
+        Octokit.Response<Octokit.IssuesCreateResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://developer.github.com/v3/#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://developer.github.com/v3/guides/best-practices-for-integrators/#dealing-with-abuse-rate-limits)" for details.
+     */
+    createComment: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.IssuesCreateCommentParamsDeprecatedNumber
+      ): Promise<Octokit.Response<Octokit.IssuesCreateCommentResponse>>;
+      (
+        params?: Octokit.RequestOptions & Octokit.IssuesCreateCommentParams
+      ): Promise<Octokit.Response<Octokit.IssuesCreateCommentResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    createLabel: {
+      (
+        params?: Octokit.RequestOptions & Octokit.IssuesCreateLabelParams
+      ): Promise<Octokit.Response<Octokit.IssuesCreateLabelResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    createMilestone: {
+      (
+        params?: Octokit.RequestOptions & Octokit.IssuesCreateMilestoneParams
+      ): Promise<Octokit.Response<Octokit.IssuesCreateMilestoneResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    deleteComment: {
+      (
+        params?: Octokit.RequestOptions & Octokit.IssuesDeleteCommentParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    deleteLabel: {
+      (
+        params?: Octokit.RequestOptions & Octokit.IssuesDeleteLabelParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    deleteMilestone: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.IssuesDeleteMilestoneParamsDeprecatedNumber
+      ): Promise<Octokit.AnyResponse>;
+      (
+        params?: Octokit.RequestOptions & Octokit.IssuesDeleteMilestoneParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * The API returns a [`301 Moved Permanently` status](https://developer.github.com/v3/#http-redirects) if the issue was [transferred](https://help.github.com/articles/transferring-an-issue-to-another-repository/) to another repository. If the issue was transferred to or deleted from a repository where the authenticated user lacks read access, the API returns a `404 Not Found` status. If the issue was deleted from a repository where the authenticated user has read access, the API returns a `410 Gone` status. To receive webhook events for transferred and deleted issues, subscribe to the [`issues`](https://developer.github.com/v3/activity/events/types/#issuesevent) webhook.
+     *
+     * **Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by the `pull_request` key.
+     *
+     * Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull request id, use the "[List pull requests](https://developer.github.com/v3/pulls/#list-pull-requests)" endpoint.
+     */
+    get: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.IssuesGetParamsDeprecatedNumber
+      ): Promise<Octokit.Response<Octokit.IssuesGetResponse>>;
+      (params?: Octokit.RequestOptions & Octokit.IssuesGetParams): Promise<
+        Octokit.Response<Octokit.IssuesGetResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    getComment: {
+      (
+        params?: Octokit.RequestOptions & Octokit.IssuesGetCommentParams
+      ): Promise<Octokit.Response<Octokit.IssuesGetCommentResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    getEvent: {
+      (params?: Octokit.RequestOptions & Octokit.IssuesGetEventParams): Promise<
+        Octokit.Response<Octokit.IssuesGetEventResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    getLabel: {
+      (params?: Octokit.RequestOptions & Octokit.IssuesGetLabelParams): Promise<
+        Octokit.Response<Octokit.IssuesGetLabelResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    getMilestone: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.IssuesGetMilestoneParamsDeprecatedNumber
+      ): Promise<Octokit.Response<Octokit.IssuesGetMilestoneResponse>>;
+      (
+        params?: Octokit.RequestOptions & Octokit.IssuesGetMilestoneParams
+      ): Promise<Octokit.Response<Octokit.IssuesGetMilestoneResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by the `pull_request` key.
+     *
+     * Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull request id, use the "[List pull requests](https://developer.github.com/v3/pulls/#list-pull-requests)" endpoint.
+     */
+    list: {
+      (params?: Octokit.RequestOptions & Octokit.IssuesListParams): Promise<
+        Octokit.Response<Octokit.IssuesListResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Lists the [available assignees](https://help.github.com/articles/assigning-issues-and-pull-requests-to-other-github-users/) for issues in a repository.
+     */
+    listAssignees: {
+      (
+        params?: Octokit.RequestOptions & Octokit.IssuesListAssigneesParams
+      ): Promise<Octokit.Response<Octokit.IssuesListAssigneesResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Issue Comments are ordered by ascending ID.
+     */
+    listComments: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.IssuesListCommentsParamsDeprecatedNumber
+      ): Promise<Octokit.Response<Octokit.IssuesListCommentsResponse>>;
+      (
+        params?: Octokit.RequestOptions & Octokit.IssuesListCommentsParams
+      ): Promise<Octokit.Response<Octokit.IssuesListCommentsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * By default, Issue Comments are ordered by ascending ID.
+     */
+    listCommentsForRepo: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.IssuesListCommentsForRepoParams
+      ): Promise<Octokit.Response<Octokit.IssuesListCommentsForRepoResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    listEvents: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.IssuesListEventsParamsDeprecatedNumber
+      ): Promise<Octokit.Response<Octokit.IssuesListEventsResponse>>;
+      (
+        params?: Octokit.RequestOptions & Octokit.IssuesListEventsParams
+      ): Promise<Octokit.Response<Octokit.IssuesListEventsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    listEventsForRepo: {
+      (
+        params?: Octokit.RequestOptions & Octokit.IssuesListEventsForRepoParams
+      ): Promise<Octokit.Response<Octokit.IssuesListEventsForRepoResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    listEventsForTimeline: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.IssuesListEventsForTimelineParamsDeprecatedNumber
+      ): Promise<Octokit.Response<Octokit.IssuesListEventsForTimelineResponse>>;
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.IssuesListEventsForTimelineParams
+      ): Promise<Octokit.Response<Octokit.IssuesListEventsForTimelineResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by the `pull_request` key.
+     *
+     * Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull request id, use the "[List pull requests](https://developer.github.com/v3/pulls/#list-pull-requests)" endpoint.
+     */
+    listForAuthenticatedUser: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.IssuesListForAuthenticatedUserParams
+      ): Promise<
+        Octokit.Response<Octokit.IssuesListForAuthenticatedUserResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by the `pull_request` key.
+     *
+     * Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull request id, use the "[List pull requests](https://developer.github.com/v3/pulls/#list-pull-requests)" endpoint.
+     */
+    listForOrg: {
+      (
+        params?: Octokit.RequestOptions & Octokit.IssuesListForOrgParams
+      ): Promise<Octokit.Response<Octokit.IssuesListForOrgResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by the `pull_request` key.
+     *
+     * Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull request id, use the "[List pull requests](https://developer.github.com/v3/pulls/#list-pull-requests)" endpoint.
+     */
+    listForRepo: {
+      (
+        params?: Octokit.RequestOptions & Octokit.IssuesListForRepoParams
+      ): Promise<Octokit.Response<Octokit.IssuesListForRepoResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    listLabelsForMilestone: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.IssuesListLabelsForMilestoneParamsDeprecatedNumber
+      ): Promise<
+        Octokit.Response<Octokit.IssuesListLabelsForMilestoneResponse>
+      >;
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.IssuesListLabelsForMilestoneParams
+      ): Promise<
+        Octokit.Response<Octokit.IssuesListLabelsForMilestoneResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    listLabelsForRepo: {
+      (
+        params?: Octokit.RequestOptions & Octokit.IssuesListLabelsForRepoParams
+      ): Promise<Octokit.Response<Octokit.IssuesListLabelsForRepoResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    listLabelsOnIssue: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.IssuesListLabelsOnIssueParamsDeprecatedNumber
+      ): Promise<Octokit.Response<Octokit.IssuesListLabelsOnIssueResponse>>;
+      (
+        params?: Octokit.RequestOptions & Octokit.IssuesListLabelsOnIssueParams
+      ): Promise<Octokit.Response<Octokit.IssuesListLabelsOnIssueResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    listMilestonesForRepo: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.IssuesListMilestonesForRepoParams
+      ): Promise<Octokit.Response<Octokit.IssuesListMilestonesForRepoResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Users with push access can lock an issue or pull request's conversation.
+     *
+     * Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://developer.github.com/v3/#http-verbs)."
+     */
+    lock: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.IssuesLockParamsDeprecatedNumber
+      ): Promise<Octokit.AnyResponse>;
+      (params?: Octokit.RequestOptions & Octokit.IssuesLockParams): Promise<
+        Octokit.AnyResponse
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Removes one or more assignees from an issue.
+     *
+     * This example removes two of three assignees, leaving the `octocat` assignee.
+     */
+    removeAssignees: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.IssuesRemoveAssigneesParamsDeprecatedNumber
+      ): Promise<Octokit.Response<Octokit.IssuesRemoveAssigneesResponse>>;
+      (
+        params?: Octokit.RequestOptions & Octokit.IssuesRemoveAssigneesParams
+      ): Promise<Octokit.Response<Octokit.IssuesRemoveAssigneesResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Removes the specified label from the issue, and returns the remaining labels on the issue. This endpoint returns a `404 Not Found` status if the label does not exist.
+     */
+    removeLabel: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.IssuesRemoveLabelParamsDeprecatedNumber
+      ): Promise<Octokit.Response<Octokit.IssuesRemoveLabelResponse>>;
+      (
+        params?: Octokit.RequestOptions & Octokit.IssuesRemoveLabelParams
+      ): Promise<Octokit.Response<Octokit.IssuesRemoveLabelResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    removeLabels: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.IssuesRemoveLabelsParamsDeprecatedNumber
+      ): Promise<Octokit.AnyResponse>;
+      (
+        params?: Octokit.RequestOptions & Octokit.IssuesRemoveLabelsParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    replaceLabels: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.IssuesReplaceLabelsParamsDeprecatedNumber
+      ): Promise<Octokit.Response<Octokit.IssuesReplaceLabelsResponse>>;
+      (
+        params?: Octokit.RequestOptions & Octokit.IssuesReplaceLabelsParams
+      ): Promise<Octokit.Response<Octokit.IssuesReplaceLabelsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Users with push access can unlock an issue's conversation.
+     */
+    unlock: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.IssuesUnlockParamsDeprecatedNumber
+      ): Promise<Octokit.AnyResponse>;
+      (params?: Octokit.RequestOptions & Octokit.IssuesUnlockParams): Promise<
+        Octokit.AnyResponse
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Issue owners and users with push access can edit an issue.
+     */
+    update: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.IssuesUpdateParamsDeprecatedNumber
+      ): Promise<Octokit.Response<Octokit.IssuesUpdateResponse>>;
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.IssuesUpdateParamsDeprecatedAssignee
+      ): Promise<Octokit.Response<Octokit.IssuesUpdateResponse>>;
+      (params?: Octokit.RequestOptions & Octokit.IssuesUpdateParams): Promise<
+        Octokit.Response<Octokit.IssuesUpdateResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    updateComment: {
+      (
+        params?: Octokit.RequestOptions & Octokit.IssuesUpdateCommentParams
+      ): Promise<Octokit.Response<Octokit.IssuesUpdateCommentResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    updateLabel: {
+      (
+        params?: Octokit.RequestOptions & Octokit.IssuesUpdateLabelParams
+      ): Promise<Octokit.Response<Octokit.IssuesUpdateLabelResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    updateMilestone: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.IssuesUpdateMilestoneParamsDeprecatedNumber
+      ): Promise<Octokit.Response<Octokit.IssuesUpdateMilestoneResponse>>;
+      (
+        params?: Octokit.RequestOptions & Octokit.IssuesUpdateMilestoneParams
+      ): Promise<Octokit.Response<Octokit.IssuesUpdateMilestoneResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+  };
+  licenses: {
+    get: {
+      (params?: Octokit.RequestOptions & Octokit.LicensesGetParams): Promise<
+        Octokit.Response<Octokit.LicensesGetResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * This method returns the contents of the repository's license file, if one is detected.
+     *
+     * Similar to [the repository contents API](https://developer.github.com/v3/repos/contents/#get-contents), this method also supports [custom media types](https://developer.github.com/v3/repos/contents/#custom-media-types) for retrieving the raw license content or rendered license HTML.
+     */
+    getForRepo: {
+      (
+        params?: Octokit.RequestOptions & Octokit.LicensesGetForRepoParams
+      ): Promise<Octokit.Response<Octokit.LicensesGetForRepoResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * @deprecated octokit.licenses.list() has been renamed to octokit.licenses.listCommonlyUsed() (2019-03-05)
+     */
+    list: {
+      (params?: Octokit.RequestOptions & Octokit.EmptyParams): Promise<
+        Octokit.Response<Octokit.LicensesListResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    listCommonlyUsed: {
+      (params?: Octokit.RequestOptions & Octokit.EmptyParams): Promise<
+        Octokit.Response<Octokit.LicensesListCommonlyUsedResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+  };
+  markdown: {
+    render: {
+      (params?: Octokit.RequestOptions & Octokit.MarkdownRenderParams): Promise<
+        Octokit.AnyResponse
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * You must send Markdown as plain text (using a `Content-Type` header of `text/plain` or `text/x-markdown`) to this endpoint, rather than using JSON format. In raw mode, [GitHub Flavored Markdown](https://github.github.com/gfm/) is not supported and Markdown will be rendered in plain format like a README.md file. Markdown content must be 400 KB or less.
+     */
+    renderRaw: {
+      (
+        params?: Octokit.RequestOptions & Octokit.MarkdownRenderRawParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+  };
+  meta: {
+    /**
+     * This endpoint provides a list of GitHub's IP addresses. For more information, see "[About GitHub's IP addresses](https://help.github.com/articles/about-github-s-ip-addresses/)."
+     */
+    get: {
+      (params?: Octokit.RequestOptions & Octokit.EmptyParams): Promise<
+        Octokit.Response<Octokit.MetaGetResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+  };
+  migrations: {
+    /**
+     * Stop an import for a repository.
+     */
+    cancelImport: {
+      (
+        params?: Octokit.RequestOptions & Octokit.MigrationsCancelImportParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Deletes a previous migration archive. Downloadable migration archives are automatically deleted after seven days. Migration metadata, which is returned in the [Get a list of user migrations](https://developer.github.com/v3/migrations/users/#get-a-list-of-user-migrations) and [Get the status of a user migration](https://developer.github.com/v3/migrations/users/#get-the-status-of-a-user-migration) endpoints, will continue to be available even after an archive is deleted.
+     */
+    deleteArchiveForAuthenticatedUser: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.MigrationsDeleteArchiveForAuthenticatedUserParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Deletes a previous migration archive. Migration archives are automatically deleted after seven days.
+     */
+    deleteArchiveForOrg: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.MigrationsDeleteArchiveForOrgParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Fetches the URL to download the migration archive as a `tar.gz` file. Depending on the resources your repository uses, the migration archive can contain JSON files with data for these objects:
+     *
+     * *   attachments
+     * *   bases
+     * *   commit\_comments
+     * *   issue\_comments
+     * *   issue\_events
+     * *   issues
+     * *   milestones
+     * *   organizations
+     * *   projects
+     * *   protected\_branches
+     * *   pull\_request\_reviews
+     * *   pull\_requests
+     * *   releases
+     * *   repositories
+     * *   review\_comments
+     * *   schema
+     * *   users
+     *
+     * The archive will also contain an `attachments` directory that includes all attachment files uploaded to GitHub.com and a `repositories` directory that contains the repository's Git data.
+     */
+    getArchiveForAuthenticatedUser: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.MigrationsGetArchiveForAuthenticatedUserParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Fetches the URL to a migration archive.
+     */
+    getArchiveForOrg: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.MigrationsGetArchiveForOrgParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Each type of source control system represents authors in a different way. For example, a Git commit author has a display name and an email address, but a Subversion commit author just has a username. The GitHub Importer will make the author information valid, but the author might not be correct. For example, it will change the bare Subversion username `hubot` into something like `hubot <hubot@12341234-abab-fefe-8787-fedcba987654>`.
+     *
+     * This API method and the "Map a commit author" method allow you to provide correct Git author information.
+     */
+    getCommitAuthors: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.MigrationsGetCommitAuthorsParams
+      ): Promise<Octokit.Response<Octokit.MigrationsGetCommitAuthorsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * View the progress of an import.
+     *
+     * **Import status**
+     *
+     * This section includes details about the possible values of the `status` field of the Import Progress response.
+     *
+     * An import that does not have errors will progress through these steps:
+     *
+     * *   `detecting` - the "detection" step of the import is in progress because the request did not include a `vcs` parameter. The import is identifying the type of source control present at the URL.
+     * *   `importing` - the "raw" step of the import is in progress. This is where commit data is fetched from the original repository. The import progress response will include `commit_count` (the total number of raw commits that will be imported) and `percent` (0 - 100, the current progress through the import).
+     * *   `mapping` - the "rewrite" step of the import is in progress. This is where SVN branches are converted to Git branches, and where author updates are applied. The import progress response does not include progress information.
+     * *   `pushing` - the "push" step of the import is in progress. This is where the importer updates the repository on GitHub. The import progress response will include `push_percent`, which is the percent value reported by `git push` when it is "Writing objects".
+     * *   `complete` - the import is complete, and the repository is ready on GitHub.
+     *
+     * If there are problems, you will see one of these in the `status` field:
+     *
+     * *   `auth_failed` - the import requires authentication in order to connect to the original repository. To update authentication for the import, please see the [Update Existing Import](https://developer.github.com/v3/migrations/source_imports/#update-existing-import) section.
+     * *   `error` - the import encountered an error. The import progress response will include the `failed_step` and an error message. Contact [GitHub Support](https://github.com/contact) for more information.
+     * *   `detection_needs_auth` - the importer requires authentication for the originating repository to continue detection. To update authentication for the import, please see the [Update Existing Import](https://developer.github.com/v3/migrations/source_imports/#update-existing-import) section.
+     * *   `detection_found_nothing` - the importer didn't recognize any source control at the URL. To resolve, [Cancel the import](https://developer.github.com/v3/migrations/source_imports/#cancel-an-import) and [retry](https://developer.github.com/v3/migrations/source_imports/#start-an-import) with the correct URL.
+     * *   `detection_found_multiple` - the importer found several projects or repositories at the provided URL. When this is the case, the Import Progress response will also include a `project_choices` field with the possible project choices as values. To update project choice, please see the [Update Existing Import](https://developer.github.com/v3/migrations/source_imports/#update-existing-import) section.
+     *
+     * **The project_choices field**
+     *
+     * When multiple projects are found at the provided URL, the response hash will include a `project_choices` field, the value of which is an array of hashes each representing a project choice. The exact key/value pairs of the project hashes will differ depending on the version control type.
+     *
+     * **Git LFS related fields**
+     *
+     * This section includes details about Git LFS related fields that may be present in the Import Progress response.
+     *
+     * *   `use_lfs` - describes whether the import has been opted in or out of using Git LFS. The value can be `opt_in`, `opt_out`, or `undecided` if no action has been taken.
+     * *   `has_large_files` - the boolean value describing whether files larger than 100MB were found during the `importing` step.
+     * *   `large_files_size` - the total size in gigabytes of files larger than 100MB found in the originating repository.
+     * *   `large_files_count` - the total number of files larger than 100MB found in the originating repository. To see a list of these files, make a "Get Large Files" request.
+     */
+    getImportProgress: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.MigrationsGetImportProgressParams
+      ): Promise<Octokit.Response<Octokit.MigrationsGetImportProgressResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * List files larger than 100MB found during the import
+     */
+    getLargeFiles: {
+      (
+        params?: Octokit.RequestOptions & Octokit.MigrationsGetLargeFilesParams
+      ): Promise<Octokit.Response<Octokit.MigrationsGetLargeFilesResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Fetches a single user migration. The response includes the `state` of the migration, which can be one of the following values:
+     *
+     * *   `pending` - the migration hasn't started yet.
+     * *   `exporting` - the migration is in progress.
+     * *   `exported` - the migration finished successfully.
+     * *   `failed` - the migration failed.
+     *
+     * Once the migration has been `exported` you can [download the migration archive](https://developer.github.com/v3/migrations/users/#download-a-user-migration-archive).
+     */
+    getStatusForAuthenticatedUser: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.MigrationsGetStatusForAuthenticatedUserParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.MigrationsGetStatusForAuthenticatedUserResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Fetches the status of a migration.
+     *
+     * The `state` of a migration can be one of the following values:
+     *
+     * *   `pending`, which means the migration hasn't started yet.
+     * *   `exporting`, which means the migration is in progress.
+     * *   `exported`, which means the migration finished successfully.
+     * *   `failed`, which means the migration failed.
+     */
+    getStatusForOrg: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.MigrationsGetStatusForOrgParams
+      ): Promise<Octokit.Response<Octokit.MigrationsGetStatusForOrgResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Lists all migrations a user has started.
+     */
+    listForAuthenticatedUser: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.MigrationsListForAuthenticatedUserParams
+      ): Promise<
+        Octokit.Response<Octokit.MigrationsListForAuthenticatedUserResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Lists the most recent migrations.
+     */
+    listForOrg: {
+      (
+        params?: Octokit.RequestOptions & Octokit.MigrationsListForOrgParams
+      ): Promise<Octokit.Response<Octokit.MigrationsListForOrgResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Update an author's identity for the import. Your application can continue updating authors any time before you push new commits to the repository.
+     */
+    mapCommitAuthor: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.MigrationsMapCommitAuthorParams
+      ): Promise<Octokit.Response<Octokit.MigrationsMapCommitAuthorResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * You can import repositories from Subversion, Mercurial, and TFS that include files larger than 100MB. This ability is powered by [Git LFS](https://git-lfs.github.com). You can learn more about our LFS feature and working with large files [on our help site](https://help.github.com/articles/versioning-large-files/).
+     */
+    setLfsPreference: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.MigrationsSetLfsPreferenceParams
+      ): Promise<Octokit.Response<Octokit.MigrationsSetLfsPreferenceResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Initiates the generation of a user migration archive.
+     */
+    startForAuthenticatedUser: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.MigrationsStartForAuthenticatedUserParams
+      ): Promise<
+        Octokit.Response<Octokit.MigrationsStartForAuthenticatedUserResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Initiates the generation of a migration archive.
+     */
+    startForOrg: {
+      (
+        params?: Octokit.RequestOptions & Octokit.MigrationsStartForOrgParams
+      ): Promise<Octokit.Response<Octokit.MigrationsStartForOrgResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Start a source import to a GitHub repository using GitHub Importer.
+     */
+    startImport: {
+      (
+        params?: Octokit.RequestOptions & Octokit.MigrationsStartImportParams
+      ): Promise<Octokit.Response<Octokit.MigrationsStartImportResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Unlocks a repository. You can lock repositories when you [start a user migration](https://developer.github.com/v3/migrations/users/#start-a-user-migration). Once the migration is complete you can unlock each repository to begin using it again or [delete the repository](https://developer.github.com/v3/repos/#delete-a-repository) if you no longer need the source data. Returns a status of `404 Not Found` if the repository is not locked.
+     */
+    unlockRepoForAuthenticatedUser: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.MigrationsUnlockRepoForAuthenticatedUserParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Unlocks a repository that was locked for migration. You should unlock each migrated repository and [delete them](https://developer.github.com/v3/repos/#delete-a-repository) when the migration is complete and you no longer need the source data.
+     */
+    unlockRepoForOrg: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.MigrationsUnlockRepoForOrgParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * An import can be updated with credentials or a project choice by passing in the appropriate parameters in this API request. If no parameters are provided, the import will be restarted.
+     *
+     * Some servers (e.g. TFS servers) can have several projects at a single URL. In those cases the import progress will have the status `detection_found_multiple` and the Import Progress response will include a `project_choices` array. You can select the project to import by providing one of the objects in the `project_choices` array in the update request.
+     *
+     * The following example demonstrates the workflow for updating an import with "project1" as the project choice. Given a `project_choices` array like such:
+     *
+     * To restart an import, no parameters are provided in the update request.
+     */
+    updateImport: {
+      (
+        params?: Octokit.RequestOptions & Octokit.MigrationsUpdateImportParams
+      ): Promise<Octokit.Response<Octokit.MigrationsUpdateImportResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+  };
+  oauthAuthorizations: {
+    /**
+     * **Deprecation Notice:** GitHub will replace and discontinue OAuth endpoints containing `access_token` in the path parameter. We are introducing new endpoints that allow you to securely manage tokens for OAuth Apps by using `access_token` as an input parameter. For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
+     *
+     * OAuth applications can use a special API method for checking OAuth token validity without exceeding the normal rate limits for failed login attempts. Authentication works differently with this particular endpoint. You must use [Basic Authentication](https://developer.github.com/v3/auth#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. Invalid tokens will return `404 NOT FOUND`.
+     * @deprecated octokit.apps.checkAuthorization() is deprecated, see https://developer.github.com/v3/apps/oauth_applications/#check-an-authorization
+     */
+    checkAuthorization: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.OauthAuthorizationsCheckAuthorizationParams
+      ): Promise<
+        Octokit.Response<Octokit.OauthAuthorizationsCheckAuthorizationResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://developer.github.com/v3/oauth_authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
+     *
+     * **Warning:** Apps must use the [web application flow](https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow) to obtain OAuth tokens that work with GitHub SAML organizations. OAuth tokens created using the Authorizations API will be unable to access GitHub SAML organizations. For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
+     *
+     * Creates OAuth tokens using [Basic Authentication](https://developer.github.com/v3/auth#basic-authentication). If you have two-factor authentication setup, Basic Authentication for this endpoint requires that you use a one-time password (OTP) and your username and password instead of tokens. For more information, see "[Working with two-factor authentication](https://developer.github.com/v3/auth/#working-with-two-factor-authentication)."
+     *
+     * To create tokens for a particular OAuth application using this endpoint, you must authenticate as the user you want to create an authorization for and provide the app's client ID and secret, found on your OAuth application's settings page. If your OAuth application intends to create multiple tokens for one user, use `fingerprint` to differentiate between them.
+     *
+     * You can also create tokens on GitHub from the [personal access tokens settings](https://github.com/settings/tokens) page. Read more about these tokens in [the GitHub Help documentation](https://help.github.com/articles/creating-an-access-token-for-command-line-use).
+     *
+     * Organizations that enforce SAML SSO require personal access tokens to be whitelisted. Read more about whitelisting tokens in [the GitHub Help documentation](https://help.github.com/articles/about-identity-and-access-management-with-saml-single-sign-on).
+     * @deprecated octokit.oauthAuthorizations.createAuthorization() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#create-a-new-authorization
+     */
+    createAuthorization: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.OauthAuthorizationsCreateAuthorizationParams
+      ): Promise<
+        Octokit.Response<Octokit.OauthAuthorizationsCreateAuthorizationResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://developer.github.com/v3/oauth_authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
+     * @deprecated octokit.oauthAuthorizations.deleteAuthorization() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#delete-an-authorization
+     */
+    deleteAuthorization: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.OauthAuthorizationsDeleteAuthorizationParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://developer.github.com/v3/oauth_authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
+     *
+     * Deleting an OAuth application's grant will also delete all OAuth tokens associated with the application for your user. Once deleted, the application has no access to your account and is no longer listed on [the application authorizations settings screen within GitHub](https://github.com/settings/applications#authorized).
+     * @deprecated octokit.oauthAuthorizations.deleteGrant() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#delete-a-grant
+     */
+    deleteGrant: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.OauthAuthorizationsDeleteGrantParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://developer.github.com/v3/oauth_authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
+     * @deprecated octokit.oauthAuthorizations.getAuthorization() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#get-a-single-authorization
+     */
+    getAuthorization: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.OauthAuthorizationsGetAuthorizationParams
+      ): Promise<
+        Octokit.Response<Octokit.OauthAuthorizationsGetAuthorizationResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://developer.github.com/v3/oauth_authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
+     * @deprecated octokit.oauthAuthorizations.getGrant() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#get-a-single-grant
+     */
+    getGrant: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.OauthAuthorizationsGetGrantParams
+      ): Promise<Octokit.Response<Octokit.OauthAuthorizationsGetGrantResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://developer.github.com/v3/oauth_authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
+     *
+     * **Warning:** Apps must use the [web application flow](https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow) to obtain OAuth tokens that work with GitHub SAML organizations. OAuth tokens created using the Authorizations API will be unable to access GitHub SAML organizations. For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
+     *
+     * Creates a new authorization for the specified OAuth application, only if an authorization for that application doesn't already exist for the user. The URL includes the 20 character client ID for the OAuth app that is requesting the token. It returns the user's existing authorization for the application if one is present. Otherwise, it creates and returns a new one.
+     *
+     * If you have two-factor authentication setup, Basic Authentication for this endpoint requires that you use a one-time password (OTP) and your username and password instead of tokens. For more information, see "[Working with two-factor authentication](https://developer.github.com/v3/auth/#working-with-two-factor-authentication)."
+     *
+     * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://developer.github.com/v3/oauth_authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
+     * @deprecated octokit.oauthAuthorizations.getOrCreateAuthorizationForApp() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#get-or-create-an-authorization-for-a-specific-app
+     */
+    getOrCreateAuthorizationForApp: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.OauthAuthorizationsGetOrCreateAuthorizationForAppParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.OauthAuthorizationsGetOrCreateAuthorizationForAppResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://developer.github.com/v3/oauth_authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
+     *
+     * **Warning:** Apps must use the [web application flow](https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow) to obtain OAuth tokens that work with GitHub SAML organizations. OAuth tokens created using the Authorizations API will be unable to access GitHub SAML organizations. For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
+     *
+     * This method will create a new authorization for the specified OAuth application, only if an authorization for that application and fingerprint do not already exist for the user. The URL includes the 20 character client ID for the OAuth app that is requesting the token. `fingerprint` is a unique string to distinguish an authorization from others created for the same client ID and user. It returns the user's existing authorization for the application if one is present. Otherwise, it creates and returns a new one.
+     *
+     * If you have two-factor authentication setup, Basic Authentication for this endpoint requires that you use a one-time password (OTP) and your username and password instead of tokens. For more information, see "[Working with two-factor authentication](https://developer.github.com/v3/auth/#working-with-two-factor-authentication)."
+     * @deprecated octokit.oauthAuthorizations.getOrCreateAuthorizationForAppAndFingerprint() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#get-or-create-an-authorization-for-a-specific-app-and-fingerprint
+     */
+    getOrCreateAuthorizationForAppAndFingerprint: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.OauthAuthorizationsGetOrCreateAuthorizationForAppAndFingerprintParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.OauthAuthorizationsGetOrCreateAuthorizationForAppAndFingerprintResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://developer.github.com/v3/oauth_authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
+     *
+     * **Warning:** Apps must use the [web application flow](https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow) to obtain OAuth tokens that work with GitHub SAML organizations. OAuth tokens created using the Authorizations API will be unable to access GitHub SAML organizations. For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
+     *
+     * This method will create a new authorization for the specified OAuth application, only if an authorization for that application and fingerprint do not already exist for the user. The URL includes the 20 character client ID for the OAuth app that is requesting the token. `fingerprint` is a unique string to distinguish an authorization from others created for the same client ID and user. It returns the user's existing authorization for the application if one is present. Otherwise, it creates and returns a new one.
+     *
+     * If you have two-factor authentication setup, Basic Authentication for this endpoint requires that you use a one-time password (OTP) and your username and password instead of tokens. For more information, see "[Working with two-factor authentication](https://developer.github.com/v3/auth/#working-with-two-factor-authentication)."
+     * @deprecated octokit.oauthAuthorizations.getOrCreateAuthorizationForAppFingerprint() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#get-or-create-an-authorization-for-a-specific-app-and-fingerprint
+     */
+    getOrCreateAuthorizationForAppFingerprint: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.OauthAuthorizationsGetOrCreateAuthorizationForAppFingerprintParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.OauthAuthorizationsGetOrCreateAuthorizationForAppFingerprintResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://developer.github.com/v3/oauth_authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
+     * @deprecated octokit.oauthAuthorizations.listAuthorizations() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#list-your-authorizations
+     */
+    listAuthorizations: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.OauthAuthorizationsListAuthorizationsParams
+      ): Promise<
+        Octokit.Response<Octokit.OauthAuthorizationsListAuthorizationsResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://developer.github.com/v3/oauth_authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
+     *
+     * You can use this API to list the set of OAuth applications that have been granted access to your account. Unlike the [list your authorizations](https://developer.github.com/v3/oauth_authorizations/#list-your-authorizations) API, this API does not manage individual tokens. This API will return one entry for each OAuth application that has been granted access to your account, regardless of the number of tokens an application has generated for your user. The list of OAuth applications returned matches what is shown on [the application authorizations settings screen within GitHub](https://github.com/settings/applications#authorized). The `scopes` returned are the union of scopes authorized for the application. For example, if an application has one token with `repo` scope and another token with `user` scope, the grant will return `["repo", "user"]`.
+     * @deprecated octokit.oauthAuthorizations.listGrants() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#list-your-grants
+     */
+    listGrants: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.OauthAuthorizationsListGrantsParams
+      ): Promise<
+        Octokit.Response<Octokit.OauthAuthorizationsListGrantsResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Deprecation Notice:** GitHub will replace and discontinue OAuth endpoints containing `access_token` in the path parameter. We are introducing new endpoints that allow you to securely manage tokens for OAuth Apps by using `access_token` as an input parameter. For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
+     *
+     * OAuth applications can use this API method to reset a valid OAuth token without end-user involvement. Applications must save the "token" property in the response because changes take effect immediately. You must use [Basic Authentication](https://developer.github.com/v3/auth#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. Invalid tokens will return `404 NOT FOUND`.
+     * @deprecated octokit.apps.resetAuthorization() is deprecated, see https://developer.github.com/v3/apps/oauth_applications/#reset-an-authorization
+     */
+    resetAuthorization: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.OauthAuthorizationsResetAuthorizationParams
+      ): Promise<
+        Octokit.Response<Octokit.OauthAuthorizationsResetAuthorizationResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Deprecation Notice:** GitHub will replace and discontinue OAuth endpoints containing `access_token` in the path parameter. We are introducing new endpoints that allow you to securely manage tokens for OAuth Apps by using `access_token` as an input parameter. For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
+     *
+     * OAuth application owners can revoke a single token for an OAuth application. You must use [Basic Authentication](https://developer.github.com/v3/auth#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password.
+     * @deprecated octokit.apps.revokeAuthorizationForApplication() is deprecated, see https://developer.github.com/v3/apps/oauth_applications/#revoke-an-authorization-for-an-application
+     */
+    revokeAuthorizationForApplication: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.OauthAuthorizationsRevokeAuthorizationForApplicationParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Deprecation Notice:** GitHub will replace and discontinue OAuth endpoints containing `access_token` in the path parameter. We are introducing new endpoints that allow you to securely manage tokens for OAuth Apps by using `access_token` as an input parameter. For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
+     *
+     * OAuth application owners can revoke a grant for their OAuth application and a specific user. You must use [Basic Authentication](https://developer.github.com/v3/auth#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. You must also provide a valid token as `:access_token` and the grant for the token's owner will be deleted.
+     *
+     * Deleting an OAuth application's grant will also delete all OAuth tokens associated with the application for the user. Once deleted, the application will have no access to the user's account and will no longer be listed on [the Applications settings page under "Authorized OAuth Apps" on GitHub](https://github.com/settings/applications#authorized).
+     * @deprecated octokit.apps.revokeGrantForApplication() is deprecated, see https://developer.github.com/v3/apps/oauth_applications/#revoke-a-grant-for-an-application
+     */
+    revokeGrantForApplication: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.OauthAuthorizationsRevokeGrantForApplicationParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://developer.github.com/v3/oauth_authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
+     *
+     * If you have two-factor authentication setup, Basic Authentication for this endpoint requires that you use a one-time password (OTP) and your username and password instead of tokens. For more information, see "[Working with two-factor authentication](https://developer.github.com/v3/auth/#working-with-two-factor-authentication)."
+     *
+     * You can only send one of these scope keys at a time.
+     * @deprecated octokit.oauthAuthorizations.updateAuthorization() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#update-an-existing-authorization
+     */
+    updateAuthorization: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.OauthAuthorizationsUpdateAuthorizationParams
+      ): Promise<
+        Octokit.Response<Octokit.OauthAuthorizationsUpdateAuthorizationResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+  };
+  orgs: {
+    /**
+     * Only authenticated organization owners can add a member to the organization or update the member's role.
+     *
+     * *   If the authenticated user is _adding_ a member to the organization, the invited user will receive an email inviting them to the organization. The user's [membership status](https://developer.github.com/v3/orgs/members/#get-organization-membership) will be `pending` until they accept the invitation.
+     *
+     * *   Authenticated users can _update_ a user's membership by passing the `role` parameter. If the authenticated user changes a member's role to `admin`, the affected user will receive an email notifying them that they've been made an organization owner. If the authenticated user changes an owner's role to `member`, no email will be sent.
+     *
+     * **Rate limits**
+     *
+     * To prevent abuse, the authenticated user is limited to 50 organization invitations per 24 hour period. If the organization is more than one month old or on a paid plan, the limit is 500 invitations per 24 hour period.
+     */
+    addOrUpdateMembership: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.OrgsAddOrUpdateMembershipParams
+      ): Promise<Octokit.Response<Octokit.OrgsAddOrUpdateMembershipResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    blockUser: {
+      (params?: Octokit.RequestOptions & Octokit.OrgsBlockUserParams): Promise<
+        Octokit.AnyResponse
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * If the user is blocked:
+     *
+     * If the user is not blocked:
+     */
+    checkBlockedUser: {
+      (
+        params?: Octokit.RequestOptions & Octokit.OrgsCheckBlockedUserParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Check if a user is, publicly or privately, a member of the organization.
+     */
+    checkMembership: {
+      (
+        params?: Octokit.RequestOptions & Octokit.OrgsCheckMembershipParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    checkPublicMembership: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.OrgsCheckPublicMembershipParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    concealMembership: {
+      (
+        params?: Octokit.RequestOptions & Octokit.OrgsConcealMembershipParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * When an organization member is converted to an outside collaborator, they'll only have access to the repositories that their current team membership allows. The user will no longer be a member of the organization. For more information, see "[Converting an organization member to an outside collaborator](https://help.github.com/articles/converting-an-organization-member-to-an-outside-collaborator/)".
+     */
+    convertMemberToOutsideCollaborator: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.OrgsConvertMemberToOutsideCollaboratorParams
+      ): Promise<
+        Octokit.Response<Octokit.OrgsConvertMemberToOutsideCollaboratorResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Here's how you can create a hook that posts payloads in JSON format:
+     */
+    createHook: {
+      (params?: Octokit.RequestOptions & Octokit.OrgsCreateHookParams): Promise<
+        Octokit.Response<Octokit.OrgsCreateHookResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Invite people to an organization by using their GitHub user ID or their email address. In order to create invitations in an organization, the authenticated user must be an organization owner.
+     *
+     * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://developer.github.com/v3/#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://developer.github.com/v3/guides/best-practices-for-integrators/#dealing-with-abuse-rate-limits)" for details.
+     */
+    createInvitation: {
+      (
+        params?: Octokit.RequestOptions & Octokit.OrgsCreateInvitationParams
+      ): Promise<Octokit.Response<Octokit.OrgsCreateInvitationResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    deleteHook: {
+      (params?: Octokit.RequestOptions & Octokit.OrgsDeleteHookParams): Promise<
+        Octokit.AnyResponse
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * To see many of the organization response values, you need to be an authenticated organization owner with the `admin:org` scope. When the value of `two_factor_requirement_enabled` is `true`, the organization requires all members, billing managers, and outside collaborators to enable [two-factor authentication](https://help.github.com/articles/securing-your-account-with-two-factor-authentication-2fa/).
+     *
+     * GitHub Apps with the `Organization plan` permission can use this endpoint to retrieve information about an organization's GitHub plan. See "[Authenticating with GitHub Apps](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/)" for details. For an example response, see "[Response with GitHub plan information](https://developer.github.com/v3/orgs/#response-with-github-plan-information)."
+     */
+    get: {
+      (params?: Octokit.RequestOptions & Octokit.OrgsGetParams): Promise<
+        Octokit.Response<Octokit.OrgsGetResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    getHook: {
+      (params?: Octokit.RequestOptions & Octokit.OrgsGetHookParams): Promise<
+        Octokit.Response<Octokit.OrgsGetHookResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * In order to get a user's membership with an organization, the authenticated user must be an organization member.
+     */
+    getMembership: {
+      (
+        params?: Octokit.RequestOptions & Octokit.OrgsGetMembershipParams
+      ): Promise<Octokit.Response<Octokit.OrgsGetMembershipResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    getMembershipForAuthenticatedUser: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.OrgsGetMembershipForAuthenticatedUserParams
+      ): Promise<
+        Octokit.Response<Octokit.OrgsGetMembershipForAuthenticatedUserResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Lists all organizations, in the order that they were created on GitHub.
+     *
+     * **Note:** Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://developer.github.com/v3/#link-header) to get the URL for the next page of organizations.
+     */
+    list: {
+      (params?: Octokit.RequestOptions & Octokit.OrgsListParams): Promise<
+        Octokit.Response<Octokit.OrgsListResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * List the users blocked by an organization.
+     */
+    listBlockedUsers: {
+      (
+        params?: Octokit.RequestOptions & Octokit.OrgsListBlockedUsersParams
+      ): Promise<Octokit.Response<Octokit.OrgsListBlockedUsersResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * List organizations for the authenticated user.
+     *
+     * **OAuth scope requirements**
+     *
+     * This only lists organizations that your authorization allows you to operate on in some way (e.g., you can list teams with `read:org` scope, you can publicize your organization membership with `user` scope, etc.). Therefore, this API requires at least `user` or `read:org` scope. OAuth requests with insufficient scope receive a `403 Forbidden` response.
+     */
+    listForAuthenticatedUser: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.OrgsListForAuthenticatedUserParams
+      ): Promise<
+        Octokit.Response<Octokit.OrgsListForAuthenticatedUserResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * List [public organization memberships](https://help.github.com/articles/publicizing-or-concealing-organization-membership) for the specified user.
+     *
+     * This method only lists _public_ memberships, regardless of authentication. If you need to fetch all of the organization memberships (public and private) for the authenticated user, use the [List your organizations](https://developer.github.com/v3/orgs/#list-your-organizations) API instead.
+     */
+    listForUser: {
+      (
+        params?: Octokit.RequestOptions & Octokit.OrgsListForUserParams
+      ): Promise<Octokit.Response<Octokit.OrgsListForUserResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    listHooks: {
+      (params?: Octokit.RequestOptions & Octokit.OrgsListHooksParams): Promise<
+        Octokit.Response<Octokit.OrgsListHooksResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Lists all GitHub Apps in an organization. The installation count includes all GitHub Apps installed on repositories in the organization. You must be an organization owner with `admin:read` scope to use this endpoint.
+     */
+    listInstallations: {
+      (
+        params?: Octokit.RequestOptions & Octokit.OrgsListInstallationsParams
+      ): Promise<Octokit.Response<Octokit.OrgsListInstallationsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * List all teams associated with an invitation. In order to see invitations in an organization, the authenticated user must be an organization owner.
+     */
+    listInvitationTeams: {
+      (
+        params?: Octokit.RequestOptions & Octokit.OrgsListInvitationTeamsParams
+      ): Promise<Octokit.Response<Octokit.OrgsListInvitationTeamsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * List all users who are members of an organization. If the authenticated user is also a member of this organization then both concealed and public members will be returned.
+     */
+    listMembers: {
+      (
+        params?: Octokit.RequestOptions & Octokit.OrgsListMembersParams
+      ): Promise<Octokit.Response<Octokit.OrgsListMembersResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    listMemberships: {
+      (
+        params?: Octokit.RequestOptions & Octokit.OrgsListMembershipsParams
+      ): Promise<Octokit.Response<Octokit.OrgsListMembershipsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * List all users who are outside collaborators of an organization.
+     */
+    listOutsideCollaborators: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.OrgsListOutsideCollaboratorsParams
+      ): Promise<
+        Octokit.Response<Octokit.OrgsListOutsideCollaboratorsResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * The return hash contains a `role` field which refers to the Organization Invitation role and will be one of the following values: `direct_member`, `admin`, `billing_manager`, `hiring_manager`, or `reinstate`. If the invitee is not a GitHub member, the `login` field in the return hash will be `null`.
+     */
+    listPendingInvitations: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.OrgsListPendingInvitationsParams
+      ): Promise<Octokit.Response<Octokit.OrgsListPendingInvitationsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Members of an organization can choose to have their membership publicized or not.
+     */
+    listPublicMembers: {
+      (
+        params?: Octokit.RequestOptions & Octokit.OrgsListPublicMembersParams
+      ): Promise<Octokit.Response<Octokit.OrgsListPublicMembersResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * This will trigger a [ping event](https://developer.github.com/webhooks/#ping-event) to be sent to the hook.
+     */
+    pingHook: {
+      (params?: Octokit.RequestOptions & Octokit.OrgsPingHookParams): Promise<
+        Octokit.AnyResponse
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * The user can publicize their own membership. (A user cannot publicize the membership for another user.)
+     *
+     * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://developer.github.com/v3/#http-verbs)."
+     */
+    publicizeMembership: {
+      (
+        params?: Octokit.RequestOptions & Octokit.OrgsPublicizeMembershipParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Removing a user from this list will remove them from all teams and they will no longer have any access to the organization's repositories.
+     */
+    removeMember: {
+      (
+        params?: Octokit.RequestOptions & Octokit.OrgsRemoveMemberParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * In order to remove a user's membership with an organization, the authenticated user must be an organization owner.
+     *
+     * If the specified user is an active member of the organization, this will remove them from the organization. If the specified user has been invited to the organization, this will cancel their invitation. The specified user will receive an email notification in both cases.
+     */
+    removeMembership: {
+      (
+        params?: Octokit.RequestOptions & Octokit.OrgsRemoveMembershipParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Removing a user from this list will remove them from all the organization's repositories.
+     */
+    removeOutsideCollaborator: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.OrgsRemoveOutsideCollaboratorParams
+      ): Promise<
+        Octokit.Response<Octokit.OrgsRemoveOutsideCollaboratorResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    unblockUser: {
+      (
+        params?: Octokit.RequestOptions & Octokit.OrgsUnblockUserParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Note:** The new `members_allowed_repository_creation_type` replaces the functionality of `members_can_create_repositories`.
+     *
+     * Setting `members_allowed_repository_creation_type` will override the value of `members_can_create_repositories` in the following ways:
+     *
+     * *   Setting `members_allowed_repository_creation_type` to `all` or `private` sets `members_can_create_repositories` to `true`.
+     * *   Setting `members_allowed_repository_creation_type` to `none` sets `members_can_create_repositories` to `false`.
+     * *   If you omit `members_allowed_repository_creation_type`, `members_can_create_repositories` is not modified.
+     */
+    update: {
+      (params?: Octokit.RequestOptions & Octokit.OrgsUpdateParams): Promise<
+        Octokit.Response<Octokit.OrgsUpdateResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    updateHook: {
+      (params?: Octokit.RequestOptions & Octokit.OrgsUpdateHookParams): Promise<
+        Octokit.Response<Octokit.OrgsUpdateHookResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    updateMembership: {
+      (
+        params?: Octokit.RequestOptions & Octokit.OrgsUpdateMembershipParams
+      ): Promise<Octokit.Response<Octokit.OrgsUpdateMembershipResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+  };
+  projects: {
+    /**
+     * Adds a collaborator to a an organization project and sets their permission level. You must be an organization owner or a project `admin` to add a collaborator.
+     */
+    addCollaborator: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ProjectsAddCollaboratorParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by the `pull_request` key.
+     *
+     * Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull request id, use the "[List pull requests](https://developer.github.com/v3/pulls/#list-pull-requests)" endpoint.
+     */
+    createCard: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ProjectsCreateCardParams
+      ): Promise<Octokit.Response<Octokit.ProjectsCreateCardResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    createColumn: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ProjectsCreateColumnParams
+      ): Promise<Octokit.Response<Octokit.ProjectsCreateColumnResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    createForAuthenticatedUser: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ProjectsCreateForAuthenticatedUserParams
+      ): Promise<
+        Octokit.Response<Octokit.ProjectsCreateForAuthenticatedUserResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Creates an organization project board. Returns a `404 Not Found` status if projects are disabled in the organization. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned.
+     */
+    createForOrg: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ProjectsCreateForOrgParams
+      ): Promise<Octokit.Response<Octokit.ProjectsCreateForOrgResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Creates a repository project board. Returns a `404 Not Found` status if projects are disabled in the repository. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned.
+     */
+    createForRepo: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ProjectsCreateForRepoParams
+      ): Promise<Octokit.Response<Octokit.ProjectsCreateForRepoResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Deletes a project board. Returns a `404 Not Found` status if projects are disabled.
+     */
+    delete: {
+      (params?: Octokit.RequestOptions & Octokit.ProjectsDeleteParams): Promise<
+        Octokit.AnyResponse
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    deleteCard: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ProjectsDeleteCardParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    deleteColumn: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ProjectsDeleteColumnParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Gets a project by its `id`. Returns a `404 Not Found` status if projects are disabled. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned.
+     */
+    get: {
+      (params?: Octokit.RequestOptions & Octokit.ProjectsGetParams): Promise<
+        Octokit.Response<Octokit.ProjectsGetResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    getCard: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ProjectsGetCardParams
+      ): Promise<Octokit.Response<Octokit.ProjectsGetCardResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    getColumn: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ProjectsGetColumnParams
+      ): Promise<Octokit.Response<Octokit.ProjectsGetColumnResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    listCards: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ProjectsListCardsParams
+      ): Promise<Octokit.Response<Octokit.ProjectsListCardsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Lists the collaborators for an organization project. For a project, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners. You must be an organization owner or a project `admin` to list collaborators.
+     */
+    listCollaborators: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ProjectsListCollaboratorsParams
+      ): Promise<Octokit.Response<Octokit.ProjectsListCollaboratorsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    listColumns: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ProjectsListColumnsParams
+      ): Promise<Octokit.Response<Octokit.ProjectsListColumnsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Lists the projects in an organization. Returns a `404 Not Found` status if projects are disabled in the organization. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned.
+     *
+     * s
+     */
+    listForOrg: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ProjectsListForOrgParams
+      ): Promise<Octokit.Response<Octokit.ProjectsListForOrgResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Lists the projects in a repository. Returns a `404 Not Found` status if projects are disabled in the repository. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned.
+     */
+    listForRepo: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ProjectsListForRepoParams
+      ): Promise<Octokit.Response<Octokit.ProjectsListForRepoResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    listForUser: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ProjectsListForUserParams
+      ): Promise<Octokit.Response<Octokit.ProjectsListForUserResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    moveCard: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ProjectsMoveCardParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    moveColumn: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ProjectsMoveColumnParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Removes a collaborator from an organization project. You must be an organization owner or a project `admin` to remove a collaborator.
+     */
+    removeCollaborator: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ProjectsRemoveCollaboratorParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Returns the collaborator's permission level for an organization project. Possible values for the `permission` key: `admin`, `write`, `read`, `none`. You must be an organization owner or a project `admin` to review a user's permission level.
+     */
+    reviewUserPermissionLevel: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ProjectsReviewUserPermissionLevelParams
+      ): Promise<
+        Octokit.Response<Octokit.ProjectsReviewUserPermissionLevelResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Updates a project board's information. Returns a `404 Not Found` status if projects are disabled. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned.
+     */
+    update: {
+      (params?: Octokit.RequestOptions & Octokit.ProjectsUpdateParams): Promise<
+        Octokit.Response<Octokit.ProjectsUpdateResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    updateCard: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ProjectsUpdateCardParams
+      ): Promise<Octokit.Response<Octokit.ProjectsUpdateCardResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    updateColumn: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ProjectsUpdateColumnParams
+      ): Promise<Octokit.Response<Octokit.ProjectsUpdateColumnResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+  };
+  pulls: {
+    checkIfMerged: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.PullsCheckIfMergedParamsDeprecatedNumber
+      ): Promise<Octokit.AnyResponse>;
+      (
+        params?: Octokit.RequestOptions & Octokit.PullsCheckIfMergedParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Draft pull requests are available in public repositories with GitHub Free and GitHub Pro, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     *
+     * To open or update a pull request in a public repository, you must have write access to the head or the source branch. For organization-owned repositories, you must be a member of the organization that owns the repository to open or update a pull request.
+     *
+     * You can create a new pull request.
+     *
+     * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://developer.github.com/v3/#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://developer.github.com/v3/guides/best-practices-for-integrators/#dealing-with-abuse-rate-limits)" for details.
+     */
+    create: {
+      (params?: Octokit.RequestOptions & Octokit.PullsCreateParams): Promise<
+        Octokit.Response<Octokit.PullsCreateResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Note:** Multi-line comments on pull requests are currently in public beta and subject to change.
+     *
+     * Creates a review comment in the pull request diff. To add a regular comment to a pull request timeline, see "[Comments](https://developer.github.com/v3/issues/comments/#create-a-comment)." We recommend creating a review comment using `line`, `side`, and optionally `start_line` and `start_side` if your comment applies to more than one line in the pull request diff.
+     *
+     * You can still create a review comment using the `position` parameter. When you use `position`, the `line`, `side`, `start_line`, and `start_side` parameters are not required. For more information, see [Multi-line comment summary](https://developer.github.com/v3/pulls/comments/#multi-line-comment-summary-3).
+     *
+     * **Note:** The position value equals the number of lines down from the first "@@" hunk header in the file you want to add a comment. The line just below the "@@" line is position 1, the next line is position 2, and so on. The position in the diff continues to increase through lines of whitespace and additional hunks until the beginning of a new file.
+     *
+     * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://developer.github.com/v3/#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://developer.github.com/v3/guides/best-practices-for-integrators/#dealing-with-abuse-rate-limits)" for details.
+     *
+     * **Multi-line comment summary**
+     *
+     * **Note:** New parameters and response fields are available for developers to preview. During the preview period, these response fields may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2019-10-03-multi-line-comments) for full details.
+     *
+     * Use the `comfort-fade` preview header and the `line` parameter to show multi-line comment-supported fields in the response.
+     *
+     * If you use the `comfort-fade` preview header, your response will show:
+     *
+     * *   For multi-line comments, values for `start_line`, `original_start_line`, `start_side`, `line`, `original_line`, and `side`.
+     * *   For single-line comments, values for `line`, `original_line`, and `side` and a `null` value for `start_line`, `original_start_line`, and `start_side`.
+     *
+     * If you don't use the `comfort-fade` preview header, multi-line and single-line comments will appear the same way in the response with a single `position` attribute. Your response will show:
+     *
+     * *   For multi-line comments, the last line of the comment range for the `position` attribute.
+     * *   For single-line comments, the diff-positioned way of referencing comments for the `position` attribute. For more information, see `position` in the [input parameters](https://developer.github.com/v3/pulls/comments/#parameters-2) table.
+     */
+    createComment: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.PullsCreateCommentParamsDeprecatedNumber
+      ): Promise<Octokit.Response<Octokit.PullsCreateCommentResponse>>;
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.PullsCreateCommentParamsDeprecatedInReplyTo
+      ): Promise<Octokit.Response<Octokit.PullsCreateCommentResponse>>;
+      (
+        params?: Octokit.RequestOptions & Octokit.PullsCreateCommentParams
+      ): Promise<Octokit.Response<Octokit.PullsCreateCommentResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Note:** Multi-line comments on pull requests are currently in public beta and subject to change.
+     *
+     * Creates a review comment in the pull request diff. To add a regular comment to a pull request timeline, see "[Comments](https://developer.github.com/v3/issues/comments/#create-a-comment)." We recommend creating a review comment using `line`, `side`, and optionally `start_line` and `start_side` if your comment applies to more than one line in the pull request diff.
+     *
+     * You can still create a review comment using the `position` parameter. When you use `position`, the `line`, `side`, `start_line`, and `start_side` parameters are not required. For more information, see [Multi-line comment summary](https://developer.github.com/v3/pulls/comments/#multi-line-comment-summary-3).
+     *
+     * **Note:** The position value equals the number of lines down from the first "@@" hunk header in the file you want to add a comment. The line just below the "@@" line is position 1, the next line is position 2, and so on. The position in the diff continues to increase through lines of whitespace and additional hunks until the beginning of a new file.
+     *
+     * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://developer.github.com/v3/#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://developer.github.com/v3/guides/best-practices-for-integrators/#dealing-with-abuse-rate-limits)" for details.
+     *
+     * **Multi-line comment summary**
+     *
+     * **Note:** New parameters and response fields are available for developers to preview. During the preview period, these response fields may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2019-10-03-multi-line-comments) for full details.
+     *
+     * Use the `comfort-fade` preview header and the `line` parameter to show multi-line comment-supported fields in the response.
+     *
+     * If you use the `comfort-fade` preview header, your response will show:
+     *
+     * *   For multi-line comments, values for `start_line`, `original_start_line`, `start_side`, `line`, `original_line`, and `side`.
+     * *   For single-line comments, values for `line`, `original_line`, and `side` and a `null` value for `start_line`, `original_start_line`, and `start_side`.
+     *
+     * If you don't use the `comfort-fade` preview header, multi-line and single-line comments will appear the same way in the response with a single `position` attribute. Your response will show:
+     *
+     * *   For multi-line comments, the last line of the comment range for the `position` attribute.
+     * *   For single-line comments, the diff-positioned way of referencing comments for the `position` attribute. For more information, see `position` in the [input parameters](https://developer.github.com/v3/pulls/comments/#parameters-2) table.
+     * @deprecated octokit.pulls.createCommentReply() has been renamed to octokit.pulls.createComment() (2019-09-09)
+     */
+    createCommentReply: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.PullsCreateCommentReplyParamsDeprecatedNumber
+      ): Promise<Octokit.Response<Octokit.PullsCreateCommentReplyResponse>>;
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.PullsCreateCommentReplyParamsDeprecatedInReplyTo
+      ): Promise<Octokit.Response<Octokit.PullsCreateCommentReplyResponse>>;
+      (
+        params?: Octokit.RequestOptions & Octokit.PullsCreateCommentReplyParams
+      ): Promise<Octokit.Response<Octokit.PullsCreateCommentReplyResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    createFromIssue: {
+      (
+        params?: Octokit.RequestOptions & Octokit.PullsCreateFromIssueParams
+      ): Promise<Octokit.Response<Octokit.PullsCreateFromIssueResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://developer.github.com/v3/#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://developer.github.com/v3/guides/best-practices-for-integrators/#dealing-with-abuse-rate-limits)" for details.
+     *
+     * **Note:** To comment on a specific line in a file, you need to first determine the _position_ of that line in the diff. The GitHub REST API v3 offers the `application/vnd.github.v3.diff` [media type](https://developer.github.com/v3/media/#commits-commit-comparison-and-pull-requests). To see a pull request diff, add this media type to the `Accept` header of a call to the [single pull request](https://developer.github.com/v3/pulls/#get-a-single-pull-request) endpoint.
+     *
+     * The `position` value equals the number of lines down from the first "@@" hunk header in the file you want to add a comment. The line just below the "@@" line is position 1, the next line is position 2, and so on. The position in the diff continues to increase through lines of whitespace and additional hunks until the beginning of a new file.
+     */
+    createReview: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.PullsCreateReviewParamsDeprecatedNumber
+      ): Promise<Octokit.Response<Octokit.PullsCreateReviewResponse>>;
+      (
+        params?: Octokit.RequestOptions & Octokit.PullsCreateReviewParams
+      ): Promise<Octokit.Response<Octokit.PullsCreateReviewResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Creates a reply to a review comment for a pull request. For the `comment_id`, provide the ID of the review comment you are replying to. This must be the ID of a _top-level review comment_, not a reply to that comment. Replies to replies are not supported.
+     *
+     * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://developer.github.com/v3/#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://developer.github.com/v3/guides/best-practices-for-integrators/#dealing-with-abuse-rate-limits)" for details.
+     */
+    createReviewCommentReply: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.PullsCreateReviewCommentReplyParams
+      ): Promise<
+        Octokit.Response<Octokit.PullsCreateReviewCommentReplyResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://developer.github.com/v3/#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://developer.github.com/v3/guides/best-practices-for-integrators/#dealing-with-abuse-rate-limits)" for details.
+     */
+    createReviewRequest: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.PullsCreateReviewRequestParamsDeprecatedNumber
+      ): Promise<Octokit.Response<Octokit.PullsCreateReviewRequestResponse>>;
+      (
+        params?: Octokit.RequestOptions & Octokit.PullsCreateReviewRequestParams
+      ): Promise<Octokit.Response<Octokit.PullsCreateReviewRequestResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Deletes a review comment.
+     */
+    deleteComment: {
+      (
+        params?: Octokit.RequestOptions & Octokit.PullsDeleteCommentParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    deletePendingReview: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.PullsDeletePendingReviewParamsDeprecatedNumber
+      ): Promise<Octokit.Response<Octokit.PullsDeletePendingReviewResponse>>;
+      (
+        params?: Octokit.RequestOptions & Octokit.PullsDeletePendingReviewParams
+      ): Promise<Octokit.Response<Octokit.PullsDeletePendingReviewResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    deleteReviewRequest: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.PullsDeleteReviewRequestParamsDeprecatedNumber
+      ): Promise<Octokit.AnyResponse>;
+      (
+        params?: Octokit.RequestOptions & Octokit.PullsDeleteReviewRequestParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Note:** To dismiss a pull request review on a [protected branch](https://developer.github.com/v3/repos/branches/), you must be a repository administrator or be included in the list of people or teams who can dismiss pull request reviews.
+     */
+    dismissReview: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.PullsDismissReviewParamsDeprecatedNumber
+      ): Promise<Octokit.Response<Octokit.PullsDismissReviewResponse>>;
+      (
+        params?: Octokit.RequestOptions & Octokit.PullsDismissReviewParams
+      ): Promise<Octokit.Response<Octokit.PullsDismissReviewResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Draft pull requests are available in public repositories with GitHub Free and GitHub Pro, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     *
+     * Lists details of a pull request by providing its number.
+     *
+     * When you get, [create](https://developer.github.com/v3/pulls/#create-a-pull-request), or [edit](https://developer.github.com/v3/pulls/#update-a-pull-request) a pull request, GitHub creates a merge commit to test whether the pull request can be automatically merged into the base branch. This test commit is not added to the base branch or the head branch. You can review the status of the test commit using the `mergeable` key. For more information, see "[Checking mergeability of pull requests](https://developer.github.com/v3/git/#checking-mergeability-of-pull-requests)".
+     *
+     * The value of the `mergeable` attribute can be `true`, `false`, or `null`. If the value is `null`, then GitHub has started a background job to compute the mergeability. After giving the job time to complete, resubmit the request. When the job finishes, you will see a non-`null` value for the `mergeable` attribute in the response. If `mergeable` is `true`, then `merge_commit_sha` will be the SHA of the _test_ merge commit.
+     *
+     * The value of the `merge_commit_sha` attribute changes depending on the state of the pull request. Before merging a pull request, the `merge_commit_sha` attribute holds the SHA of the _test_ merge commit. After merging a pull request, the `merge_commit_sha` attribute changes depending on how you merged the pull request:
+     *
+     * *   If merged as a [merge commit](https://help.github.com/articles/about-merge-methods-on-github/), `merge_commit_sha` represents the SHA of the merge commit.
+     * *   If merged via a [squash](https://help.github.com/articles/about-merge-methods-on-github/#squashing-your-merge-commits), `merge_commit_sha` represents the SHA of the squashed commit on the base branch.
+     * *   If [rebased](https://help.github.com/articles/about-merge-methods-on-github/#rebasing-and-merging-your-commits), `merge_commit_sha` represents the commit that the base branch was updated to.
+     *
+     * Pass the appropriate [media type](https://developer.github.com/v3/media/#commits-commit-comparison-and-pull-requests) to fetch diff and patch formats.
+     */
+    get: {
+      (
+        params?: Octokit.RequestOptions & Octokit.PullsGetParamsDeprecatedNumber
+      ): Promise<Octokit.Response<Octokit.PullsGetResponse>>;
+      (params?: Octokit.RequestOptions & Octokit.PullsGetParams): Promise<
+        Octokit.Response<Octokit.PullsGetResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Note:** Multi-line comments on pull requests are currently in public beta and subject to change.
+     *
+     * Provides details for a review comment.
+     *
+     * **Multi-line comment summary**
+     *
+     * **Note:** New parameters and response fields are available for developers to preview. During the preview period, these response fields may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2019-10-03-multi-line-comments) for full details.
+     *
+     * Use the `comfort-fade` preview header and the `line` parameter to show multi-line comment-supported fields in the response.
+     *
+     * If you use the `comfort-fade` preview header, your response will show:
+     *
+     * *   For multi-line comments, values for `start_line`, `original_start_line`, `start_side`, `line`, `original_line`, and `side`.
+     * *   For single-line comments, values for `line`, `original_line`, and `side` and a `null` value for `start_line`, `original_start_line`, and `start_side`.
+     *
+     * If you don't use the `comfort-fade` preview header, multi-line and single-line comments will appear the same way in the response with a single `position` attribute. Your response will show:
+     *
+     * *   For multi-line comments, the last line of the comment range for the `position` attribute.
+     * *   For single-line comments, the diff-positioned way of referencing comments for the `position` attribute. For more information, see `position` in the [input parameters](https://developer.github.com/v3/pulls/comments/#parameters-2) table.
+     *
+     * The `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://developer.github.com/v3/reactions) reactions.
+     */
+    getComment: {
+      (
+        params?: Octokit.RequestOptions & Octokit.PullsGetCommentParams
+      ): Promise<Octokit.Response<Octokit.PullsGetCommentResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    getCommentsForReview: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.PullsGetCommentsForReviewParamsDeprecatedNumber
+      ): Promise<Octokit.Response<Octokit.PullsGetCommentsForReviewResponse>>;
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.PullsGetCommentsForReviewParams
+      ): Promise<Octokit.Response<Octokit.PullsGetCommentsForReviewResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    getReview: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.PullsGetReviewParamsDeprecatedNumber
+      ): Promise<Octokit.Response<Octokit.PullsGetReviewResponse>>;
+      (params?: Octokit.RequestOptions & Octokit.PullsGetReviewParams): Promise<
+        Octokit.Response<Octokit.PullsGetReviewResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Draft pull requests are available in public repositories with GitHub Free and GitHub Pro, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     */
+    list: {
+      (params?: Octokit.RequestOptions & Octokit.PullsListParams): Promise<
+        Octokit.Response<Octokit.PullsListResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Note:** Multi-line comments on pull requests are currently in public beta and subject to change.
+     *
+     * Lists review comments for a pull request. By default, review comments are in ascending order by ID.
+     *
+     * **Multi-line comment summary**
+     *
+     * **Note:** New parameters and response fields are available for developers to preview. During the preview period, these response fields may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2019-10-03-multi-line-comments) for full details.
+     *
+     * Use the `comfort-fade` preview header and the `line` parameter to show multi-line comment-supported fields in the response.
+     *
+     * If you use the `comfort-fade` preview header, your response will show:
+     *
+     * *   For multi-line comments, values for `start_line`, `original_start_line`, `start_side`, `line`, `original_line`, and `side`.
+     * *   For single-line comments, values for `line`, `original_line`, and `side` and a `null` value for `start_line`, `original_start_line`, and `start_side`.
+     *
+     * If you don't use the `comfort-fade` preview header, multi-line and single-line comments will appear the same way in the response with a single `position` attribute. Your response will show:
+     *
+     * *   For multi-line comments, the last line of the comment range for the `position` attribute.
+     * *   For single-line comments, the diff-positioned way of referencing comments for the `position` attribute. For more information, see `position` in the [input parameters](https://developer.github.com/v3/pulls/comments/#parameters-2) table.
+     *
+     * The `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://developer.github.com/v3/reactions) reactions.
+     */
+    listComments: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.PullsListCommentsParamsDeprecatedNumber
+      ): Promise<Octokit.Response<Octokit.PullsListCommentsResponse>>;
+      (
+        params?: Octokit.RequestOptions & Octokit.PullsListCommentsParams
+      ): Promise<Octokit.Response<Octokit.PullsListCommentsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Note:** Multi-line comments on pull requests are currently in public beta and subject to change.
+     *
+     * Lists review comments for all pull requests in a repository. By default, review comments are in ascending order by ID.
+     *
+     * **Multi-line comment summary**
+     *
+     * **Note:** New parameters and response fields are available for developers to preview. During the preview period, these response fields may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2019-10-03-multi-line-comments) for full details.
+     *
+     * Use the `comfort-fade` preview header and the `line` parameter to show multi-line comment-supported fields in the response.
+     *
+     * If you use the `comfort-fade` preview header, your response will show:
+     *
+     * *   For multi-line comments, values for `start_line`, `original_start_line`, `start_side`, `line`, `original_line`, and `side`.
+     * *   For single-line comments, values for `line`, `original_line`, and `side` and a `null` value for `start_line`, `original_start_line`, and `start_side`.
+     *
+     * If you don't use the `comfort-fade` preview header, multi-line and single-line comments will appear the same way in the response with a single `position` attribute. Your response will show:
+     *
+     * *   For multi-line comments, the last line of the comment range for the `position` attribute.
+     * *   For single-line comments, the diff-positioned way of referencing comments for the `position` attribute. For more information, see `position` in the [input parameters](https://developer.github.com/v3/pulls/comments/#parameters-2) table.
+     *
+     * The `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://developer.github.com/v3/reactions) reactions.
+     */
+    listCommentsForRepo: {
+      (
+        params?: Octokit.RequestOptions & Octokit.PullsListCommentsForRepoParams
+      ): Promise<Octokit.Response<Octokit.PullsListCommentsForRepoResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Lists a maximum of 250 commits for a pull request. To receive a complete commit list for pull requests with more than 250 commits, use the [Commit List API](https://developer.github.com/v3/repos/commits/#list-commits-on-a-repository).
+     */
+    listCommits: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.PullsListCommitsParamsDeprecatedNumber
+      ): Promise<Octokit.Response<Octokit.PullsListCommitsResponse>>;
+      (
+        params?: Octokit.RequestOptions & Octokit.PullsListCommitsParams
+      ): Promise<Octokit.Response<Octokit.PullsListCommitsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Note:** The response includes a maximum of 300 files.
+     */
+    listFiles: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.PullsListFilesParamsDeprecatedNumber
+      ): Promise<Octokit.Response<Octokit.PullsListFilesResponse>>;
+      (params?: Octokit.RequestOptions & Octokit.PullsListFilesParams): Promise<
+        Octokit.Response<Octokit.PullsListFilesResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    listReviewRequests: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.PullsListReviewRequestsParamsDeprecatedNumber
+      ): Promise<Octokit.Response<Octokit.PullsListReviewRequestsResponse>>;
+      (
+        params?: Octokit.RequestOptions & Octokit.PullsListReviewRequestsParams
+      ): Promise<Octokit.Response<Octokit.PullsListReviewRequestsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * The list of reviews returns in chronological order.
+     */
+    listReviews: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.PullsListReviewsParamsDeprecatedNumber
+      ): Promise<Octokit.Response<Octokit.PullsListReviewsResponse>>;
+      (
+        params?: Octokit.RequestOptions & Octokit.PullsListReviewsParams
+      ): Promise<Octokit.Response<Octokit.PullsListReviewsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://developer.github.com/v3/#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://developer.github.com/v3/guides/best-practices-for-integrators/#dealing-with-abuse-rate-limits)" for details.
+     */
+    merge: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.PullsMergeParamsDeprecatedNumber
+      ): Promise<Octokit.Response<Octokit.PullsMergeResponse>>;
+      (params?: Octokit.RequestOptions & Octokit.PullsMergeParams): Promise<
+        Octokit.Response<Octokit.PullsMergeResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    submitReview: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.PullsSubmitReviewParamsDeprecatedNumber
+      ): Promise<Octokit.Response<Octokit.PullsSubmitReviewResponse>>;
+      (
+        params?: Octokit.RequestOptions & Octokit.PullsSubmitReviewParams
+      ): Promise<Octokit.Response<Octokit.PullsSubmitReviewResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Draft pull requests are available in public repositories with GitHub Free and GitHub Pro, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     *
+     * To open or update a pull request in a public repository, you must have write access to the head or the source branch. For organization-owned repositories, you must be a member of the organization that owns the repository to open or update a pull request.
+     */
+    update: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.PullsUpdateParamsDeprecatedNumber
+      ): Promise<Octokit.Response<Octokit.PullsUpdateResponse>>;
+      (params?: Octokit.RequestOptions & Octokit.PullsUpdateParams): Promise<
+        Octokit.Response<Octokit.PullsUpdateResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Updates the pull request branch with the latest upstream changes by merging HEAD from the base branch into the pull request branch.
+     */
+    updateBranch: {
+      (
+        params?: Octokit.RequestOptions & Octokit.PullsUpdateBranchParams
+      ): Promise<Octokit.Response<Octokit.PullsUpdateBranchResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Note:** Multi-line comments on pull requests are currently in public beta and subject to change.
+     *
+     * Enables you to edit a review comment.
+     *
+     * **Multi-line comment summary**
+     *
+     * **Note:** New parameters and response fields are available for developers to preview. During the preview period, these response fields may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2019-10-03-multi-line-comments) for full details.
+     *
+     * Use the `comfort-fade` preview header and the `line` parameter to show multi-line comment-supported fields in the response.
+     *
+     * If you use the `comfort-fade` preview header, your response will show:
+     *
+     * *   For multi-line comments, values for `start_line`, `original_start_line`, `start_side`, `line`, `original_line`, and `side`.
+     * *   For single-line comments, values for `line`, `original_line`, and `side` and a `null` value for `start_line`, `original_start_line`, and `start_side`.
+     *
+     * If you don't use the `comfort-fade` preview header, multi-line and single-line comments will appear the same way in the response with a single `position` attribute. Your response will show:
+     *
+     * *   For multi-line comments, the last line of the comment range for the `position` attribute.
+     * *   For single-line comments, the diff-positioned way of referencing comments for the `position` attribute. For more information, see `position` in the [input parameters](https://developer.github.com/v3/pulls/comments/#parameters-2) table.
+     */
+    updateComment: {
+      (
+        params?: Octokit.RequestOptions & Octokit.PullsUpdateCommentParams
+      ): Promise<Octokit.Response<Octokit.PullsUpdateCommentResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Update the review summary comment with new text.
+     */
+    updateReview: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.PullsUpdateReviewParamsDeprecatedNumber
+      ): Promise<Octokit.Response<Octokit.PullsUpdateReviewResponse>>;
+      (
+        params?: Octokit.RequestOptions & Octokit.PullsUpdateReviewParams
+      ): Promise<Octokit.Response<Octokit.PullsUpdateReviewResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+  };
+  rateLimit: {
+    /**
+     * **Note:** Accessing this endpoint does not count against your REST API rate limit.
+     *
+     * **Understanding your rate limit status**
+     *
+     * The Search API has a [custom rate limit](https://developer.github.com/v3/search/#rate-limit), separate from the rate limit governing the rest of the REST API. The GraphQL API also has a [custom rate limit](https://developer.github.com/v4/guides/resource-limitations/#rate-limit) that is separate from and calculated differently than rate limits in the REST API.
+     *
+     * For these reasons, the Rate Limit API response categorizes your rate limit. Under `resources`, you'll see four objects:
+     *
+     * *   The `core` object provides your rate limit status for all non-search-related resources in the REST API.
+     * *   The `search` object provides your rate limit status for the [Search API](https://developer.github.com/v3/search/).
+     * *   The `graphql` object provides your rate limit status for the [GraphQL API](https://developer.github.com/v4/).
+     * *   The `integration_manifest` object provides your rate limit status for the [GitHub App Manifest code conversion](https://developer.github.com/apps/building-github-apps/creating-github-apps-from-a-manifest/#3-you-exchange-the-temporary-code-to-retrieve-the-app-configuration) endpoint.
+     *
+     * For more information on the headers and values in the rate limit response, see "[Rate limiting](https://developer.github.com/v3/#rate-limiting)."
+     *
+     * The `rate` object (shown at the bottom of the response above) is deprecated.
+     *
+     * If you're writing new API client code or updating existing code, you should use the `core` object instead of the `rate` object. The `core` object contains the same information that is present in the `rate` object.
+     */
+    get: {
+      (params?: Octokit.RequestOptions & Octokit.EmptyParams): Promise<
+        Octokit.Response<Octokit.RateLimitGetResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+  };
+  reactions: {
+    /**
+     * Create a reaction to a [commit comment](https://developer.github.com/v3/repos/comments/). A response with a `Status: 200 OK` means that you already added the reaction type to this commit comment.
+     */
+    createForCommitComment: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReactionsCreateForCommitCommentParams
+      ): Promise<
+        Octokit.Response<Octokit.ReactionsCreateForCommitCommentResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Create a reaction to an [issue](https://developer.github.com/v3/issues/). A response with a `Status: 200 OK` means that you already added the reaction type to this issue.
+     */
+    createForIssue: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReactionsCreateForIssueParamsDeprecatedNumber
+      ): Promise<Octokit.Response<Octokit.ReactionsCreateForIssueResponse>>;
+      (
+        params?: Octokit.RequestOptions & Octokit.ReactionsCreateForIssueParams
+      ): Promise<Octokit.Response<Octokit.ReactionsCreateForIssueResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Create a reaction to an [issue comment](https://developer.github.com/v3/issues/comments/). A response with a `Status: 200 OK` means that you already added the reaction type to this issue comment.
+     */
+    createForIssueComment: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReactionsCreateForIssueCommentParams
+      ): Promise<
+        Octokit.Response<Octokit.ReactionsCreateForIssueCommentResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Create a reaction to a [pull request review comment](https://developer.github.com/v3/pulls/comments/). A response with a `Status: 200 OK` means that you already added the reaction type to this pull request review comment.
+     */
+    createForPullRequestReviewComment: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReactionsCreateForPullRequestReviewCommentParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.ReactionsCreateForPullRequestReviewCommentResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Create a reaction to a [team discussion](https://developer.github.com/v3/teams/discussions/). OAuth access tokens require the `write:discussion` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). A response with a `Status: 200 OK` means that you already added the reaction type to this team discussion.
+     */
+    createForTeamDiscussion: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReactionsCreateForTeamDiscussionParams
+      ): Promise<
+        Octokit.Response<Octokit.ReactionsCreateForTeamDiscussionResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Create a reaction to a [team discussion comment](https://developer.github.com/v3/teams/discussion_comments/). OAuth access tokens require the `write:discussion` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). A response with a `Status: 200 OK` means that you already added the reaction type to this team discussion comment.
+     */
+    createForTeamDiscussionComment: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReactionsCreateForTeamDiscussionCommentParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.ReactionsCreateForTeamDiscussionCommentResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * OAuth access tokens require the `write:discussion` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), when deleting a [team discussion](https://developer.github.com/v3/teams/discussions/) or [team discussion comment](https://developer.github.com/v3/teams/discussion_comments/).
+     */
+    delete: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReactionsDeleteParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * List the reactions to a [commit comment](https://developer.github.com/v3/repos/comments/).
+     */
+    listForCommitComment: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReactionsListForCommitCommentParams
+      ): Promise<
+        Octokit.Response<Octokit.ReactionsListForCommitCommentResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * List the reactions to an [issue](https://developer.github.com/v3/issues/).
+     */
+    listForIssue: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReactionsListForIssueParamsDeprecatedNumber
+      ): Promise<Octokit.Response<Octokit.ReactionsListForIssueResponse>>;
+      (
+        params?: Octokit.RequestOptions & Octokit.ReactionsListForIssueParams
+      ): Promise<Octokit.Response<Octokit.ReactionsListForIssueResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * List the reactions to an [issue comment](https://developer.github.com/v3/issues/comments/).
+     */
+    listForIssueComment: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReactionsListForIssueCommentParams
+      ): Promise<
+        Octokit.Response<Octokit.ReactionsListForIssueCommentResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * List the reactions to a [pull request review comment](https://developer.github.com/v3/pulls/comments/).
+     */
+    listForPullRequestReviewComment: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReactionsListForPullRequestReviewCommentParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.ReactionsListForPullRequestReviewCommentResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * List the reactions to a [team discussion](https://developer.github.com/v3/teams/discussions/). OAuth access tokens require the `read:discussion` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
+     */
+    listForTeamDiscussion: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReactionsListForTeamDiscussionParams
+      ): Promise<
+        Octokit.Response<Octokit.ReactionsListForTeamDiscussionResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * List the reactions to a [team discussion comment](https://developer.github.com/v3/teams/discussion_comments/). OAuth access tokens require the `read:discussion` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
+     */
+    listForTeamDiscussionComment: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReactionsListForTeamDiscussionCommentParams
+      ): Promise<
+        Octokit.Response<Octokit.ReactionsListForTeamDiscussionCommentResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+  };
+  repos: {
+    acceptInvitation: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposAcceptInvitationParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://developer.github.com/v3/#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://developer.github.com/v3/guides/best-practices-for-integrators/#dealing-with-abuse-rate-limits)" for details.
+     *
+     * Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://developer.github.com/v3/#http-verbs)."
+     *
+     * The invitee will receive a notification that they have been invited to the repository, which they must accept or decline. They may do this via the notifications page, the email they receive, or by using the [repository invitations API endpoints](https://developer.github.com/v3/repos/invitations/).
+     *
+     * **Rate limits**
+     *
+     * To prevent abuse, you are limited to sending 50 invitations to a repository per 24 hour period. Note there is no limit if you are inviting organization members to an organization repository.
+     */
+    addCollaborator: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposAddCollaboratorParams
+      ): Promise<Octokit.Response<Octokit.ReposAddCollaboratorResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Here's how you can create a read-only deploy key:
+     */
+    addDeployKey: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposAddDeployKeyParams
+      ): Promise<Octokit.Response<Octokit.ReposAddDeployKeyResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     *
+     * Adding admin enforcement requires admin or owner permissions to the repository and branch protection to be enabled.
+     */
+    addProtectedBranchAdminEnforcement: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposAddProtectedBranchAdminEnforcementParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.ReposAddProtectedBranchAdminEnforcementResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     *
+     * Grants the specified apps push access for this branch. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch.
+     *
+     * | Type    | Description                                                                                                                                                |
+     * | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
+     * | `array` | The GitHub Apps that have push access to this branch. Use the app's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. |
+     */
+    addProtectedBranchAppRestrictions: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposAddProtectedBranchAppRestrictionsParams
+      ): Promise<
+        Octokit.Response<Octokit.ReposAddProtectedBranchAppRestrictionsResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     *
+     * When authenticated with admin or owner permissions to the repository, you can use this endpoint to require signed commits on a branch. You must enable branch protection to require signed commits.
+     */
+    addProtectedBranchRequiredSignatures: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposAddProtectedBranchRequiredSignaturesParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.ReposAddProtectedBranchRequiredSignaturesResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     */
+    addProtectedBranchRequiredStatusChecksContexts: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposAddProtectedBranchRequiredStatusChecksContextsParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.ReposAddProtectedBranchRequiredStatusChecksContextsResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     *
+     * Grants the specified teams push access for this branch. If you pass the `hellcat-preview` media type, you can also give push access to child teams.
+     *
+     * | Type    | Description                                                                                                                                |
+     * | ------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
+     * | `array` | The teams that can have push access. Use the team's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. |
+     */
+    addProtectedBranchTeamRestrictions: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposAddProtectedBranchTeamRestrictionsParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.ReposAddProtectedBranchTeamRestrictionsResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     *
+     * Grants the specified people push access for this branch.
+     *
+     * | Type    | Description                                                                                                                   |
+     * | ------- | ----------------------------------------------------------------------------------------------------------------------------- |
+     * | `array` | Usernames for people who can have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. |
+     */
+    addProtectedBranchUserRestrictions: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposAddProtectedBranchUserRestrictionsParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.ReposAddProtectedBranchUserRestrictionsResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * For organization-owned repositories, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners.
+     *
+     * If you pass the `hellcat-preview` media type, team members will include the members of child teams.
+     */
+    checkCollaborator: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposCheckCollaboratorParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Shows whether vulnerability alerts are enabled or disabled for a repository. The authenticated user must have admin access to the repository. For more information, see "[About security alerts for vulnerable dependencies](https://help.github.com/en/articles/about-security-alerts-for-vulnerable-dependencies)" in the GitHub Help documentation.
+     */
+    checkVulnerabilityAlerts: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposCheckVulnerabilityAlertsParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Both `:base` and `:head` must be branch names in `:repo`. To compare branches across other repositories in the same network as `:repo`, use the format `<USERNAME>:branch`.
+     *
+     * The response from the API is equivalent to running the `git log base..head` command; however, commits are returned in chronological order. Pass the appropriate [media type](https://developer.github.com/v3/media/#commits-commit-comparison-and-pull-requests) to fetch diff and patch formats.
+     *
+     * The response also includes details on the files that were changed between the two commits. This includes the status of the change (for example, if a file was added, removed, modified, or renamed), and details of the change itself. For example, files with a `renamed` status have a `previous_filename` field showing the previous filename of the file, and files with a `modified` status have a `patch` field showing the changes made to the file.
+     *
+     * **Working with large comparisons**
+     *
+     * The response will include a comparison of up to 250 commits. If you are working with a larger commit range, you can use the [Commit List API](https://developer.github.com/v3/repos/commits/#list-commits-on-a-repository) to enumerate all commits in the range.
+     *
+     * For comparisons with extremely large diffs, you may receive an error response indicating that the diff took too long to generate. You can typically resolve this error by using a smaller commit range.
+     *
+     * **Signature verification object**
+     *
+     * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:
+     *
+     * These are the possible values for `reason` in the `verification` object:
+     *
+     * | Value                    | Description                                                                                                                       |
+     * | ------------------------ | --------------------------------------------------------------------------------------------------------------------------------- |
+     * | `expired_key`            | The key that made the signature is expired.                                                                                       |
+     * | `not_signing_key`        | The "signing" flag is not among the usage flags in the GPG key that made the signature.                                           |
+     * | `gpgverify_error`        | There was an error communicating with the signature verification service.                                                         |
+     * | `gpgverify_unavailable`  | The signature verification service is currently unavailable.                                                                      |
+     * | `unsigned`               | The object does not include a signature.                                                                                          |
+     * | `unknown_signature_type` | A non-PGP signature was found in the commit.                                                                                      |
+     * | `no_user`                | No user was associated with the `committer` email address in the commit.                                                          |
+     * | `unverified_email`       | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. |
+     * | `bad_email`              | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature.             |
+     * | `unknown_key`            | The key that made the signature has not been registered with any user's account.                                                  |
+     * | `malformed_signature`    | There was an error parsing the signature.                                                                                         |
+     * | `invalid`                | The signature could not be cryptographically verified using the key whose key-id was found in the signature.                      |
+     * | `valid`                  | None of the above errors applied, so the signature is considered to be verified.                                                  |
+     */
+    compareCommits: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposCompareCommitsParams
+      ): Promise<Octokit.Response<Octokit.ReposCompareCommitsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Create a comment for a commit using its `:commit_sha`.
+     *
+     * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://developer.github.com/v3/#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://developer.github.com/v3/guides/best-practices-for-integrators/#dealing-with-abuse-rate-limits)" for details.
+     */
+    createCommitComment: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposCreateCommitCommentParamsDeprecatedSha
+      ): Promise<Octokit.Response<Octokit.ReposCreateCommitCommentResponse>>;
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposCreateCommitCommentParamsDeprecatedLine
+      ): Promise<Octokit.Response<Octokit.ReposCreateCommitCommentResponse>>;
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposCreateCommitCommentParams
+      ): Promise<Octokit.Response<Octokit.ReposCreateCommitCommentResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Deployments offer a few configurable parameters with sane defaults.
+     *
+     * The `ref` parameter can be any named branch, tag, or SHA. At GitHub we often deploy branches and verify them before we merge a pull request.
+     *
+     * The `environment` parameter allows deployments to be issued to different runtime environments. Teams often have multiple environments for verifying their applications, such as `production`, `staging`, and `qa`. This parameter makes it easier to track which environments have requested deployments. The default environment is `production`.
+     *
+     * The `auto_merge` parameter is used to ensure that the requested ref is not behind the repository's default branch. If the ref _is_ behind the default branch for the repository, we will attempt to merge it for you. If the merge succeeds, the API will return a successful merge commit. If merge conflicts prevent the merge from succeeding, the API will return a failure response.
+     *
+     * By default, [commit statuses](https://developer.github.com/v3/repos/statuses) for every submitted context must be in a `success` state. The `required_contexts` parameter allows you to specify a subset of contexts that must be `success`, or to specify contexts that have not yet been submitted. You are not required to use commit statuses to deploy. If you do not require any contexts or create any commit statuses, the deployment will always succeed.
+     *
+     * The `payload` parameter is available for any extra information that a deployment system might need. It is a JSON text field that will be passed on when a deployment event is dispatched.
+     *
+     * The `task` parameter is used by the deployment system to allow different execution paths. In the web world this might be `deploy:migrations` to run schema changes on the system. In the compiled world this could be a flag to compile an application with debugging enabled.
+     *
+     * Users with `repo` or `repo_deployment` scopes can create a deployment for a given ref:
+     *
+     * A simple example putting the user and room into the payload to notify back to chat networks.
+     *
+     * A more advanced example specifying required commit statuses and bypassing auto-merging.
+     *
+     * You will see this response when GitHub automatically merges the base branch into the topic branch instead of creating a deployment. This auto-merge happens when:
+     *
+     * *   Auto-merge option is enabled in the repository
+     * *   Topic branch does not include the latest changes on the base branch, which is `master`in the response example
+     * *   There are no merge conflicts
+     *
+     * If there are no new commits in the base branch, a new request to create a deployment should give a successful response.
+     *
+     * This error happens when the `auto_merge` option is enabled and when the default branch (in this case `master`), can't be merged into the branch that's being deployed (in this case `topic-branch`), due to merge conflicts.
+     *
+     * This error happens when the `required_contexts` parameter indicates that one or more contexts need to have a `success` status for the commit to be deployed, but one or more of the required contexts do not have a state of `success`.
+     */
+    createDeployment: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposCreateDeploymentParams
+      ): Promise<Octokit.Response<Octokit.ReposCreateDeploymentResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Users with `push` access can create deployment statuses for a given deployment.
+     *
+     * GitHub Apps require `read & write` access to "Deployments" and `read-only` access to "Repo contents" (for private repos). OAuth Apps require the `repo_deployment` scope.
+     */
+    createDeploymentStatus: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposCreateDeploymentStatusParams
+      ): Promise<Octokit.Response<Octokit.ReposCreateDeploymentStatusResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * You can use this endpoint to trigger a webhook event called `repository_dispatch` when you want activity that happens outside of GitHub to trigger a GitHub Actions workflow or GitHub App webhook. You must configure your GitHub Actions workflow or GitHub App to run when the `repository_dispatch` event occurs. For an example `repository_dispatch` webhook payload, see "[RepositoryDispatchEvent](https://developer.github.com/v3/activity/events/types/#repositorydispatchevent)."
+     *
+     * The `client_payload` parameter is available for any extra information that your workflow might need. This parameter is a JSON payload that will be passed on when the webhook event is dispatched. For example, the `client_payload` can include a message that a user would like to send using a GitHub Actions workflow. Or the `client_payload` can be used as a test to debug your workflow. For a test example, see the [input example](https://developer.github.com/v3/repos/#example-4).
+     *
+     * To give you write access to the repository, you must use a personal access token with the `repo` scope. For more information, see "[Creating a personal access token for the command line](https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line)" in the GitHub Help documentation.
+     *
+     * This input example shows how you can use the `client_payload` as a test to debug your workflow.
+     */
+    createDispatchEvent: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposCreateDispatchEventParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Creates a new file or updates an existing file in a repository.
+     * @deprecated octokit.repos.createFile() has been renamed to octokit.repos.createOrUpdateFile() (2019-06-07)
+     */
+    createFile: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposCreateFileParams
+      ): Promise<Octokit.Response<Octokit.ReposCreateFileResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Creates a new repository for the authenticated user.
+     *
+     * **OAuth scope requirements**
+     *
+     * When using [OAuth](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:
+     *
+     * *   `public_repo` scope or `repo` scope to create a public repository
+     * *   `repo` scope to create a private repository
+     */
+    createForAuthenticatedUser: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposCreateForAuthenticatedUserParams
+      ): Promise<
+        Octokit.Response<Octokit.ReposCreateForAuthenticatedUserResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Create a fork for the authenticated user.
+     *
+     * **Note**: Forking a Repository happens asynchronously. You may have to wait a short period of time before you can access the git objects. If this takes longer than 5 minutes, be sure to contact [GitHub Support](https://github.com/contact).
+     */
+    createFork: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposCreateForkParams
+      ): Promise<Octokit.Response<Octokit.ReposCreateForkResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Repositories can have multiple webhooks installed. Each webhook should have a unique `config`. Multiple webhooks can share the same `config` as long as those webhooks do not have any `events` that overlap.
+     *
+     * Here's how you can create a hook that posts payloads in JSON format:
+     */
+    createHook: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposCreateHookParams
+      ): Promise<Octokit.Response<Octokit.ReposCreateHookResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Creates a new repository for the authenticated user.
+     *
+     * **OAuth scope requirements**
+     *
+     * When using [OAuth](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:
+     *
+     * *   `public_repo` scope or `repo` scope to create a public repository
+     * *   `repo` scope to create a private repository
+     */
+    createInOrg: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposCreateInOrgParams
+      ): Promise<Octokit.Response<Octokit.ReposCreateInOrgResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Creates a new file or updates an existing file in a repository.
+     */
+    createOrUpdateFile: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposCreateOrUpdateFileParams
+      ): Promise<Octokit.Response<Octokit.ReposCreateOrUpdateFileResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Users with push access to the repository can create a release.
+     *
+     * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://developer.github.com/v3/#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://developer.github.com/v3/guides/best-practices-for-integrators/#dealing-with-abuse-rate-limits)" for details.
+     */
+    createRelease: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposCreateReleaseParams
+      ): Promise<Octokit.Response<Octokit.ReposCreateReleaseResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Users with push access in a repository can create commit statuses for a given SHA.
+     *
+     * Note: there is a limit of 1000 statuses per `sha` and `context` within a repository. Attempts to create more than 1000 statuses will result in a validation error.
+     */
+    createStatus: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposCreateStatusParams
+      ): Promise<Octokit.Response<Octokit.ReposCreateStatusResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Creates a new repository using a repository template. Use the `template_owner` and `template_repo` route parameters to specify the repository to use as the template. The authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the [`GET /repos/:owner/:repo`](https://developer.github.com/v3/repos/#get) endpoint and check that the `is_template` key is `true`.
+     *
+     * **OAuth scope requirements**
+     *
+     * When using [OAuth](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:
+     *
+     * *   `public_repo` scope or `repo` scope to create a public repository
+     * *   `repo` scope to create a private repository
+     *
+     * \`
+     */
+    createUsingTemplate: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposCreateUsingTemplateParams
+      ): Promise<Octokit.Response<Octokit.ReposCreateUsingTemplateResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    declineInvitation: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposDeclineInvitationParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Deleting a repository requires admin access. If OAuth is used, the `delete_repo` scope is required.
+     *
+     * If an organization owner has configured the organization to prevent members from deleting organization-owned repositories, a member will get this response:
+     */
+    delete: {
+      (params?: Octokit.RequestOptions & Octokit.ReposDeleteParams): Promise<
+        Octokit.Response<Octokit.ReposDeleteResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    deleteCommitComment: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposDeleteCommitCommentParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    deleteDownload: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposDeleteDownloadParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Deletes a file in a repository.
+     *
+     * You can provide an additional `committer` parameter, which is an object containing information about the committer. Or, you can provide an `author` parameter, which is an object containing information about the author.
+     *
+     * The `author` section is optional and is filled in with the `committer` information if omitted. If the `committer` information is omitted, the authenticated user's information is used.
+     *
+     * You must provide values for both `name` and `email`, whether you choose to use `author` or `committer`. Otherwise, you'll receive a `422` status code.
+     */
+    deleteFile: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposDeleteFileParams
+      ): Promise<Octokit.Response<Octokit.ReposDeleteFileResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    deleteHook: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposDeleteHookParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    deleteInvitation: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposDeleteInvitationParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Users with push access to the repository can delete a release.
+     */
+    deleteRelease: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposDeleteReleaseParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    deleteReleaseAsset: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposDeleteReleaseAssetParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Disables automated security fixes for a repository. The authenticated user must have admin access to the repository. For more information, see "[Configuring automated security fixes](https://help.github.com/en/articles/configuring-automated-security-fixes)" in the GitHub Help documentation.
+     */
+    disableAutomatedSecurityFixes: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposDisableAutomatedSecurityFixesParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    disablePagesSite: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposDisablePagesSiteParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Disables vulnerability alerts and the dependency graph for a repository. The authenticated user must have admin access to the repository. For more information, see "[About security alerts for vulnerable dependencies](https://help.github.com/en/articles/about-security-alerts-for-vulnerable-dependencies)" in the GitHub Help documentation.
+     */
+    disableVulnerabilityAlerts: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposDisableVulnerabilityAlertsParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Enables automated security fixes for a repository. The authenticated user must have admin access to the repository. For more information, see "[Configuring automated security fixes](https://help.github.com/en/articles/configuring-automated-security-fixes)" in the GitHub Help documentation.
+     */
+    enableAutomatedSecurityFixes: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposEnableAutomatedSecurityFixesParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    enablePagesSite: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposEnablePagesSiteParams
+      ): Promise<Octokit.Response<Octokit.ReposEnablePagesSiteResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Enables vulnerability alerts and the dependency graph for a repository. The authenticated user must have admin access to the repository. For more information, see "[About security alerts for vulnerable dependencies](https://help.github.com/en/articles/about-security-alerts-for-vulnerable-dependencies)" in the GitHub Help documentation.
+     */
+    enableVulnerabilityAlerts: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposEnableVulnerabilityAlertsParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * The `parent` and `source` objects are present when the repository is a fork. `parent` is the repository this repository was forked from, `source` is the ultimate source for the network.
+     */
+    get: {
+      (params?: Octokit.RequestOptions & Octokit.ReposGetParams): Promise<
+        Octokit.Response<Octokit.ReposGetResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     *
+     * Lists the GitHub Apps that have push access to this branch. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch.
+     */
+    getAppsWithAccessToProtectedBranch: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposGetAppsWithAccessToProtectedBranchParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.ReposGetAppsWithAccessToProtectedBranchResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Gets a redirect URL to download an archive for a repository. The `:archive_format` can be either `tarball` or `zipball`. The `:ref` must be a valid Git reference. If you omit `:ref`, the repository’s default branch (usually `master`) will be used. Please make sure your HTTP framework is configured to follow redirects or you will need to use the `Location` header to make a second `GET` request.
+     *
+     * _Note_: For private repositories, these links are temporary and expire after five minutes.
+     *
+     * To follow redirects with curl, use the `-L` switch:
+     */
+    getArchiveLink: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposGetArchiveLinkParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    getBranch: {
+      (params?: Octokit.RequestOptions & Octokit.ReposGetBranchParams): Promise<
+        Octokit.Response<Octokit.ReposGetBranchResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     */
+    getBranchProtection: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposGetBranchProtectionParams
+      ): Promise<Octokit.Response<Octokit.ReposGetBranchProtectionResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Get the total number of clones and breakdown per day or week for the last 14 days. Timestamps are aligned to UTC midnight of the beginning of the day or week. Week begins on Monday.
+     */
+    getClones: {
+      (params?: Octokit.RequestOptions & Octokit.ReposGetClonesParams): Promise<
+        Octokit.Response<Octokit.ReposGetClonesResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Returns a weekly aggregate of the number of additions and deletions pushed to a repository.
+     */
+    getCodeFrequencyStats: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposGetCodeFrequencyStatsParams
+      ): Promise<Octokit.Response<Octokit.ReposGetCodeFrequencyStatsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Possible values for the `permission` key: `admin`, `write`, `read`, `none`.
+     */
+    getCollaboratorPermissionLevel: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposGetCollaboratorPermissionLevelParams
+      ): Promise<
+        Octokit.Response<Octokit.ReposGetCollaboratorPermissionLevelResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Users with pull access in a repository can access a combined view of commit statuses for a given ref. The ref can be a SHA, a branch name, or a tag name.
+     *
+     * The most recent status for each context is returned, up to 100. This field [paginates](https://developer.github.com/v3/#pagination) if there are over 100 contexts.
+     *
+     * Additionally, a combined `state` is returned. The `state` is one of:
+     *
+     * *   **failure** if any of the contexts report as `error` or `failure`
+     * *   **pending** if there are no statuses or a context is `pending`
+     * *   **success** if the latest status for all contexts is `success`
+     */
+    getCombinedStatusForRef: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposGetCombinedStatusForRefParams
+      ): Promise<
+        Octokit.Response<Octokit.ReposGetCombinedStatusForRefResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Returns the contents of a single commit reference. You must have `read` access for the repository to use this endpoint.
+     *
+     * You can pass the appropriate [media type](https://developer.github.com/v3/media/#commits-commit-comparison-and-pull-requests) to fetch `diff` and `patch` formats. Diffs with binary data will have no `patch` property.
+     *
+     * To return only the SHA-1 hash of the commit reference, you can provide the `sha` custom [media type](https://developer.github.com/v3/media/#commits-commit-comparison-and-pull-requests) in the `Accept` header. You can use this endpoint to check if a remote reference's SHA-1 hash is the same as your local reference's SHA-1 hash by providing the local SHA-1 reference as the ETag.
+     *
+     * **Signature verification object**
+     *
+     * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:
+     *
+     * These are the possible values for `reason` in the `verification` object:
+     *
+     * | Value                    | Description                                                                                                                       |
+     * | ------------------------ | --------------------------------------------------------------------------------------------------------------------------------- |
+     * | `expired_key`            | The key that made the signature is expired.                                                                                       |
+     * | `not_signing_key`        | The "signing" flag is not among the usage flags in the GPG key that made the signature.                                           |
+     * | `gpgverify_error`        | There was an error communicating with the signature verification service.                                                         |
+     * | `gpgverify_unavailable`  | The signature verification service is currently unavailable.                                                                      |
+     * | `unsigned`               | The object does not include a signature.                                                                                          |
+     * | `unknown_signature_type` | A non-PGP signature was found in the commit.                                                                                      |
+     * | `no_user`                | No user was associated with the `committer` email address in the commit.                                                          |
+     * | `unverified_email`       | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. |
+     * | `bad_email`              | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature.             |
+     * | `unknown_key`            | The key that made the signature has not been registered with any user's account.                                                  |
+     * | `malformed_signature`    | There was an error parsing the signature.                                                                                         |
+     * | `invalid`                | The signature could not be cryptographically verified using the key whose key-id was found in the signature.                      |
+     * | `valid`                  | None of the above errors applied, so the signature is considered to be verified.                                                  |
+     */
+    getCommit: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposGetCommitParamsDeprecatedSha
+      ): Promise<Octokit.Response<Octokit.ReposGetCommitResponse>>;
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposGetCommitParamsDeprecatedCommitSha
+      ): Promise<Octokit.Response<Octokit.ReposGetCommitResponse>>;
+      (params?: Octokit.RequestOptions & Octokit.ReposGetCommitParams): Promise<
+        Octokit.Response<Octokit.ReposGetCommitResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Returns the last year of commit activity grouped by week. The `days` array is a group of commits per day, starting on `Sunday`.
+     */
+    getCommitActivityStats: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposGetCommitActivityStatsParams
+      ): Promise<Octokit.Response<Octokit.ReposGetCommitActivityStatsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    getCommitComment: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposGetCommitCommentParams
+      ): Promise<Octokit.Response<Octokit.ReposGetCommitCommentResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Note:** To access this endpoint, you must provide a custom [media type](https://developer.github.com/v3/media) in the `Accept` header:
+     * ```
+     * application/vnd.github.VERSION.sha
+     * ```
+     * Returns the SHA-1 of the commit reference. You must have `read` access for the repository to get the SHA-1 of a commit reference. You can use this endpoint to check if a remote reference's SHA-1 is the same as your local reference's SHA-1 by providing the local SHA-1 reference as the ETag.
+     * @deprecated "Get the SHA-1 of a commit reference" will be removed. Use "Get a single commit" instead with media type format set to "sha" instead.
+     */
+    getCommitRefSha: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposGetCommitRefShaParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Gets the contents of a file or directory in a repository. Specify the file path or directory in `:path`. If you omit `:path`, you will receive the contents of all files in the repository.
+     *
+     * Files and symlinks support [a custom media type](https://developer.github.com/v3/repos/contents/#custom-media-types) for retrieving the raw content or rendered HTML (when supported). All content types support [a custom media type](https://developer.github.com/v3/repos/contents/#custom-media-types) to ensure the content is returned in a consistent object format.
+     *
+     * **Note**:
+     *
+     * *   To get a repository's contents recursively, you can [recursively get the tree](https://developer.github.com/v3/git/trees/).
+     * *   This API has an upper limit of 1,000 files for a directory. If you need to retrieve more files, use the [Git Trees API](https://developer.github.com/v3/git/trees/#get-a-tree).
+     * *   This API supports files up to 1 megabyte in size.
+     *
+     * The response will be an array of objects, one object for each item in the directory.
+     *
+     * When listing the contents of a directory, submodules have their "type" specified as "file". Logically, the value _should_ be "submodule". This behavior exists in API v3 [for backwards compatibility purposes](https://git.io/v1YCW). In the next major version of the API, the type will be returned as "submodule".
+     *
+     * If the requested `:path` points to a symlink, and the symlink's target is a normal file in the repository, then the API responds with the content of the file (in the [format shown above](https://developer.github.com/v3/repos/contents/#response-if-content-is-a-file)).
+     *
+     * Otherwise, the API responds with an object describing the symlink itself:
+     *
+     * The `submodule_git_url` identifies the location of the submodule repository, and the `sha` identifies a specific commit within the submodule repository. Git uses the given URL when cloning the submodule repository, and checks out the submodule at that specific commit.
+     *
+     * If the submodule repository is not hosted on github.com, the Git URLs (`git_url` and `_links["git"]`) and the github.com URLs (`html_url` and `_links["html"]`) will have null values.
+     */
+    getContents: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposGetContentsParams
+      ): Promise<Octokit.Response<Octokit.ReposGetContentsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * *   `total` - The Total number of commits authored by the contributor.
+     *
+     * Weekly Hash (`weeks` array):
+     *
+     * *   `w` - Start of the week, given as a [Unix timestamp](http://en.wikipedia.org/wiki/Unix_time).
+     * *   `a` - Number of additions
+     * *   `d` - Number of deletions
+     * *   `c` - Number of commits
+     */
+    getContributorsStats: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposGetContributorsStatsParams
+      ): Promise<Octokit.Response<Octokit.ReposGetContributorsStatsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    getDeployKey: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposGetDeployKeyParams
+      ): Promise<Octokit.Response<Octokit.ReposGetDeployKeyResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    getDeployment: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposGetDeploymentParams
+      ): Promise<Octokit.Response<Octokit.ReposGetDeploymentResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Users with pull access can view a deployment status for a deployment:
+     */
+    getDeploymentStatus: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposGetDeploymentStatusParams
+      ): Promise<Octokit.Response<Octokit.ReposGetDeploymentStatusResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    getDownload: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposGetDownloadParams
+      ): Promise<Octokit.Response<Octokit.ReposGetDownloadResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    getHook: {
+      (params?: Octokit.RequestOptions & Octokit.ReposGetHookParams): Promise<
+        Octokit.Response<Octokit.ReposGetHookResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    getLatestPagesBuild: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposGetLatestPagesBuildParams
+      ): Promise<Octokit.Response<Octokit.ReposGetLatestPagesBuildResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * View the latest published full release for the repository.
+     *
+     * The latest release is the most recent non-prerelease, non-draft release, sorted by the `created_at` attribute. The `created_at` attribute is the date of the commit used for the release, and not the date when the release was drafted or published.
+     */
+    getLatestRelease: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposGetLatestReleaseParams
+      ): Promise<Octokit.Response<Octokit.ReposGetLatestReleaseResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    getPages: {
+      (params?: Octokit.RequestOptions & Octokit.ReposGetPagesParams): Promise<
+        Octokit.Response<Octokit.ReposGetPagesResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    getPagesBuild: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposGetPagesBuildParams
+      ): Promise<Octokit.Response<Octokit.ReposGetPagesBuildResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Returns the total commit counts for the `owner` and total commit counts in `all`. `all` is everyone combined, including the `owner` in the last 52 weeks. If you'd like to get the commit counts for non-owners, you can subtract `owner` from `all`.
+     *
+     * The array order is oldest week (index 0) to most recent week.
+     */
+    getParticipationStats: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposGetParticipationStatsParams
+      ): Promise<Octokit.Response<Octokit.ReposGetParticipationStatsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     */
+    getProtectedBranchAdminEnforcement: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposGetProtectedBranchAdminEnforcementParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.ReposGetProtectedBranchAdminEnforcementResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     */
+    getProtectedBranchPullRequestReviewEnforcement: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposGetProtectedBranchPullRequestReviewEnforcementParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.ReposGetProtectedBranchPullRequestReviewEnforcementResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     *
+     * When authenticated with admin or owner permissions to the repository, you can use this endpoint to check whether a branch requires signed commits. An enabled status of `true` indicates you must sign commits on this branch. For more information, see [Signing commits with GPG](https://help.github.com/articles/signing-commits-with-gpg) in GitHub Help.
+     *
+     * **Note**: You must enable branch protection to require signed commits.
+     */
+    getProtectedBranchRequiredSignatures: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposGetProtectedBranchRequiredSignaturesParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.ReposGetProtectedBranchRequiredSignaturesResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     */
+    getProtectedBranchRequiredStatusChecks: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposGetProtectedBranchRequiredStatusChecksParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.ReposGetProtectedBranchRequiredStatusChecksResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     *
+     * Lists who has access to this protected branch. {{#note}}
+     *
+     * **Note**: Users, apps, and teams `restrictions` are only available for organization-owned repositories.
+     */
+    getProtectedBranchRestrictions: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposGetProtectedBranchRestrictionsParams
+      ): Promise<
+        Octokit.Response<Octokit.ReposGetProtectedBranchRestrictionsResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Each array contains the day number, hour number, and number of commits:
+     *
+     * *   `0-6`: Sunday - Saturday
+     * *   `0-23`: Hour of day
+     * *   Number of commits
+     *
+     * For example, `[2, 14, 25]` indicates that there were 25 total commits, during the 2:00pm hour on Tuesdays. All times are based on the time zone of individual commits.
+     */
+    getPunchCardStats: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposGetPunchCardStatsParams
+      ): Promise<Octokit.Response<Octokit.ReposGetPunchCardStatsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Gets the preferred README for a repository.
+     *
+     * READMEs support [custom media types](https://developer.github.com/v3/repos/contents/#custom-media-types) for retrieving the raw content or rendered HTML.
+     */
+    getReadme: {
+      (params?: Octokit.RequestOptions & Octokit.ReposGetReadmeParams): Promise<
+        Octokit.Response<Octokit.ReposGetReadmeResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Note:** This returns an `upload_url` key corresponding to the endpoint for uploading release assets. This key is a [hypermedia resource](https://developer.github.com/v3/#hypermedia).
+     */
+    getRelease: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposGetReleaseParams
+      ): Promise<Octokit.Response<Octokit.ReposGetReleaseResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * To download the asset's binary content, set the `Accept` header of the request to [`application/octet-stream`](https://developer.github.com/v3/media/#media-types). The API will either redirect the client to the location, or stream it directly if possible. API clients should handle both a `200` or `302` response.
+     */
+    getReleaseAsset: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposGetReleaseAssetParams
+      ): Promise<Octokit.Response<Octokit.ReposGetReleaseAssetResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Get a published release with the specified tag.
+     */
+    getReleaseByTag: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposGetReleaseByTagParams
+      ): Promise<Octokit.Response<Octokit.ReposGetReleaseByTagResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     *
+     * Lists the teams who have push access to this branch. If you pass the `hellcat-preview` media type, the list includes child teams.
+     */
+    getTeamsWithAccessToProtectedBranch: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposGetTeamsWithAccessToProtectedBranchParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.ReposGetTeamsWithAccessToProtectedBranchResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Get the top 10 popular contents over the last 14 days.
+     */
+    getTopPaths: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposGetTopPathsParams
+      ): Promise<Octokit.Response<Octokit.ReposGetTopPathsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Get the top 10 referrers over the last 14 days.
+     */
+    getTopReferrers: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposGetTopReferrersParams
+      ): Promise<Octokit.Response<Octokit.ReposGetTopReferrersResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     *
+     * Lists the people who have push access to this branch.
+     */
+    getUsersWithAccessToProtectedBranch: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposGetUsersWithAccessToProtectedBranchParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.ReposGetUsersWithAccessToProtectedBranchResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Get the total number of views and breakdown per day or week for the last 14 days. Timestamps are aligned to UTC midnight of the beginning of the day or week. Week begins on Monday.
+     */
+    getViews: {
+      (params?: Octokit.RequestOptions & Octokit.ReposGetViewsParams): Promise<
+        Octokit.Response<Octokit.ReposGetViewsResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Lists repositories that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access.
+     *
+     * The authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership.
+     */
+    list: {
+      (params?: Octokit.RequestOptions & Octokit.ReposListParams): Promise<
+        Octokit.AnyResponse
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     *
+     * Lists the GitHub Apps that have push access to this branch. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch.
+     * @deprecated octokit.repos.listAppsWithAccessToProtectedBranch() has been renamed to octokit.repos.getAppsWithAccessToProtectedBranch() (2019-09-13)
+     */
+    listAppsWithAccessToProtectedBranch: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposListAppsWithAccessToProtectedBranchParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.ReposListAppsWithAccessToProtectedBranchResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    listAssetsForRelease: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposListAssetsForReleaseParams
+      ): Promise<Octokit.Response<Octokit.ReposListAssetsForReleaseResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    listBranches: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposListBranchesParams
+      ): Promise<Octokit.Response<Octokit.ReposListBranchesResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     *
+     * Returns all branches where the given commit SHA is the HEAD, or latest commit for the branch.
+     */
+    listBranchesForHeadCommit: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposListBranchesForHeadCommitParams
+      ): Promise<
+        Octokit.Response<Octokit.ReposListBranchesForHeadCommitResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * For organization-owned repositories, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners.
+     *
+     * If you pass the `hellcat-preview` media type, team members will include the members of child teams.
+     */
+    listCollaborators: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposListCollaboratorsParams
+      ): Promise<Octokit.Response<Octokit.ReposListCollaboratorsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Use the `:commit_sha` to specify the commit that will have its comments listed.
+     */
+    listCommentsForCommit: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposListCommentsForCommitParamsDeprecatedRef
+      ): Promise<Octokit.Response<Octokit.ReposListCommentsForCommitResponse>>;
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposListCommentsForCommitParams
+      ): Promise<Octokit.Response<Octokit.ReposListCommentsForCommitResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Commit Comments use [these custom media types](https://developer.github.com/v3/repos/comments/#custom-media-types). You can read more about the use of media types in the API [here](https://developer.github.com/v3/media/).
+     *
+     * Comments are ordered by ascending ID.
+     */
+    listCommitComments: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposListCommitCommentsParams
+      ): Promise<Octokit.Response<Octokit.ReposListCommitCommentsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Signature verification object**
+     *
+     * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:
+     *
+     * These are the possible values for `reason` in the `verification` object:
+     *
+     * | Value                    | Description                                                                                                                       |
+     * | ------------------------ | --------------------------------------------------------------------------------------------------------------------------------- |
+     * | `expired_key`            | The key that made the signature is expired.                                                                                       |
+     * | `not_signing_key`        | The "signing" flag is not among the usage flags in the GPG key that made the signature.                                           |
+     * | `gpgverify_error`        | There was an error communicating with the signature verification service.                                                         |
+     * | `gpgverify_unavailable`  | The signature verification service is currently unavailable.                                                                      |
+     * | `unsigned`               | The object does not include a signature.                                                                                          |
+     * | `unknown_signature_type` | A non-PGP signature was found in the commit.                                                                                      |
+     * | `no_user`                | No user was associated with the `committer` email address in the commit.                                                          |
+     * | `unverified_email`       | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. |
+     * | `bad_email`              | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature.             |
+     * | `unknown_key`            | The key that made the signature has not been registered with any user's account.                                                  |
+     * | `malformed_signature`    | There was an error parsing the signature.                                                                                         |
+     * | `invalid`                | The signature could not be cryptographically verified using the key whose key-id was found in the signature.                      |
+     * | `valid`                  | None of the above errors applied, so the signature is considered to be verified.                                                  |
+     */
+    listCommits: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposListCommitsParams
+      ): Promise<Octokit.Response<Octokit.ReposListCommitsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Lists contributors to the specified repository and sorts them by the number of commits per contributor in descending order. This endpoint may return information that is a few hours old because the GitHub REST API v3 caches contributor data to improve performance.
+     *
+     * GitHub identifies contributors by author email address. This endpoint groups contribution counts by GitHub user, which includes all associated email addresses. To improve performance, only the first 500 author email addresses in the repository link to GitHub users. The rest will appear as anonymous contributors without associated GitHub user information.
+     */
+    listContributors: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposListContributorsParams
+      ): Promise<Octokit.Response<Octokit.ReposListContributorsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    listDeployKeys: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposListDeployKeysParams
+      ): Promise<Octokit.Response<Octokit.ReposListDeployKeysResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Users with pull access can view deployment statuses for a deployment:
+     */
+    listDeploymentStatuses: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposListDeploymentStatusesParams
+      ): Promise<Octokit.Response<Octokit.ReposListDeploymentStatusesResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Simple filtering of deployments is available via query parameters:
+     */
+    listDeployments: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposListDeploymentsParams
+      ): Promise<Octokit.Response<Octokit.ReposListDeploymentsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    listDownloads: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposListDownloadsParams
+      ): Promise<Octokit.Response<Octokit.ReposListDownloadsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Lists repositories for the specified organization.
+     */
+    listForOrg: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposListForOrgParams
+      ): Promise<Octokit.Response<Octokit.ReposListForOrgResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Lists public repositories for the specified user.
+     */
+    listForUser: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposListForUserParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    listForks: {
+      (params?: Octokit.RequestOptions & Octokit.ReposListForksParams): Promise<
+        Octokit.Response<Octokit.ReposListForksResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    listHooks: {
+      (params?: Octokit.RequestOptions & Octokit.ReposListHooksParams): Promise<
+        Octokit.Response<Octokit.ReposListHooksResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * When authenticating as a user with admin rights to a repository, this endpoint will list all currently open repository invitations.
+     */
+    listInvitations: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposListInvitationsParams
+      ): Promise<Octokit.Response<Octokit.ReposListInvitationsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * When authenticating as a user, this endpoint will list all currently open repository invitations for that user.
+     */
+    listInvitationsForAuthenticatedUser: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposListInvitationsForAuthenticatedUserParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.ReposListInvitationsForAuthenticatedUserResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Lists languages for the specified repository. The value shown for each language is the number of bytes of code written in that language.
+     */
+    listLanguages: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposListLanguagesParams
+      ): Promise<Octokit.Response<Octokit.ReposListLanguagesResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    listPagesBuilds: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposListPagesBuildsParams
+      ): Promise<Octokit.Response<Octokit.ReposListPagesBuildsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     */
+    listProtectedBranchRequiredStatusChecksContexts: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposListProtectedBranchRequiredStatusChecksContextsParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.ReposListProtectedBranchRequiredStatusChecksContextsResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     *
+     * Lists the teams who have push access to this branch. If you pass the `hellcat-preview` media type, the list includes child teams.
+     * @deprecated octokit.repos.listProtectedBranchTeamRestrictions() has been renamed to octokit.repos.getTeamsWithAccessToProtectedBranch() (2019-09-09)
+     */
+    listProtectedBranchTeamRestrictions: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposListProtectedBranchTeamRestrictionsParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.ReposListProtectedBranchTeamRestrictionsResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     *
+     * Lists the people who have push access to this branch.
+     * @deprecated octokit.repos.listProtectedBranchUserRestrictions() has been renamed to octokit.repos.getUsersWithAccessToProtectedBranch() (2019-09-09)
+     */
+    listProtectedBranchUserRestrictions: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposListProtectedBranchUserRestrictionsParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.ReposListProtectedBranchUserRestrictionsResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Lists all public repositories in the order that they were created.
+     *
+     * Note: Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://developer.github.com/v3/#link-header) to get the URL for the next page of repositories.
+     */
+    listPublic: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposListPublicParams
+      ): Promise<Octokit.Response<Octokit.ReposListPublicResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Lists all pull requests containing the provided commit SHA, which can be from any point in the commit history. The results will include open and closed pull requests. Additional preview headers may be required to see certain details for associated pull requests, such as whether a pull request is in a draft state. For more information about previews that might affect this endpoint, see the [List pull requests](https://developer.github.com/v3/pulls/#list-pull-requests) endpoint.
+     */
+    listPullRequestsAssociatedWithCommit: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposListPullRequestsAssociatedWithCommitParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.ReposListPullRequestsAssociatedWithCommitResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * This returns a list of releases, which does not include regular Git tags that have not been associated with a release. To get a list of Git tags, use the [Repository Tags API](https://developer.github.com/v3/repos/#list-tags).
+     *
+     * Information about published releases are available to everyone. Only users with push access will receive listings for draft releases.
+     */
+    listReleases: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposListReleasesParams
+      ): Promise<Octokit.Response<Octokit.ReposListReleasesResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Users with pull access in a repository can view commit statuses for a given ref. The ref can be a SHA, a branch name, or a tag name. Statuses are returned in reverse chronological order. The first status in the list will be the latest one.
+     *
+     * This resource is also available via a legacy route: `GET /repos/:owner/:repo/statuses/:ref`.
+     */
+    listStatusesForRef: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposListStatusesForRefParams
+      ): Promise<Octokit.Response<Octokit.ReposListStatusesForRefResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    listTags: {
+      (params?: Octokit.RequestOptions & Octokit.ReposListTagsParams): Promise<
+        Octokit.Response<Octokit.ReposListTagsResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    listTeams: {
+      (params?: Octokit.RequestOptions & Octokit.ReposListTeamsParams): Promise<
+        Octokit.Response<Octokit.ReposListTeamsResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     *
+     * Lists the teams who have push access to this branch. If you pass the `hellcat-preview` media type, the list includes child teams.
+     * @deprecated octokit.repos.listTeamsWithAccessToProtectedBranch() has been renamed to octokit.repos.getTeamsWithAccessToProtectedBranch() (2019-09-13)
+     */
+    listTeamsWithAccessToProtectedBranch: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposListTeamsWithAccessToProtectedBranchParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.ReposListTeamsWithAccessToProtectedBranchResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    listTopics: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposListTopicsParams
+      ): Promise<Octokit.Response<Octokit.ReposListTopicsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     *
+     * Lists the people who have push access to this branch.
+     * @deprecated octokit.repos.listUsersWithAccessToProtectedBranch() has been renamed to octokit.repos.getUsersWithAccessToProtectedBranch() (2019-09-13)
+     */
+    listUsersWithAccessToProtectedBranch: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposListUsersWithAccessToProtectedBranchParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.ReposListUsersWithAccessToProtectedBranchResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    merge: {
+      (params?: Octokit.RequestOptions & Octokit.ReposMergeParams): Promise<
+        Octokit.Response<Octokit.ReposMergeResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * This will trigger a [ping event](https://developer.github.com/webhooks/#ping-event) to be sent to the hook.
+     */
+    pingHook: {
+      (params?: Octokit.RequestOptions & Octokit.ReposPingHookParams): Promise<
+        Octokit.AnyResponse
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     */
+    removeBranchProtection: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposRemoveBranchProtectionParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    removeCollaborator: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposRemoveCollaboratorParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    removeDeployKey: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposRemoveDeployKeyParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     *
+     * Removing admin enforcement requires admin or owner permissions to the repository and branch protection to be enabled.
+     */
+    removeProtectedBranchAdminEnforcement: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposRemoveProtectedBranchAdminEnforcementParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     *
+     * Removes the ability of an app to push to this branch. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch.
+     *
+     * | Type    | Description                                                                                                                                                |
+     * | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
+     * | `array` | The GitHub Apps that have push access to this branch. Use the app's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. |
+     */
+    removeProtectedBranchAppRestrictions: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposRemoveProtectedBranchAppRestrictionsParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.ReposRemoveProtectedBranchAppRestrictionsResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     */
+    removeProtectedBranchPullRequestReviewEnforcement: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposRemoveProtectedBranchPullRequestReviewEnforcementParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     *
+     * When authenticated with admin or owner permissions to the repository, you can use this endpoint to disable required signed commits on a branch. You must enable branch protection to require signed commits.
+     */
+    removeProtectedBranchRequiredSignatures: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposRemoveProtectedBranchRequiredSignaturesParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     */
+    removeProtectedBranchRequiredStatusChecks: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposRemoveProtectedBranchRequiredStatusChecksParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     */
+    removeProtectedBranchRequiredStatusChecksContexts: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposRemoveProtectedBranchRequiredStatusChecksContextsParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.ReposRemoveProtectedBranchRequiredStatusChecksContextsResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     *
+     * Disables the ability to restrict who can push to this branch.
+     */
+    removeProtectedBranchRestrictions: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposRemoveProtectedBranchRestrictionsParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     *
+     * Removes the ability of a team to push to this branch. If you pass the `hellcat-preview` media type, you can include child teams.
+     *
+     * | Type    | Description                                                                                                                                         |
+     * | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
+     * | `array` | Teams that should no longer have push access. Use the team's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. |
+     */
+    removeProtectedBranchTeamRestrictions: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposRemoveProtectedBranchTeamRestrictionsParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.ReposRemoveProtectedBranchTeamRestrictionsResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     *
+     * Removes the ability of a user to push to this branch.
+     *
+     * | Type    | Description                                                                                                                                   |
+     * | ------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
+     * | `array` | Usernames of the people who should no longer have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. |
+     */
+    removeProtectedBranchUserRestrictions: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposRemoveProtectedBranchUserRestrictionsParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.ReposRemoveProtectedBranchUserRestrictionsResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     *
+     * Replaces the list of apps that have push access to this branch. This removes all apps that previously had push access and grants push access to the new list of apps. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch.
+     *
+     * | Type    | Description                                                                                                                                                |
+     * | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
+     * | `array` | The GitHub Apps that have push access to this branch. Use the app's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. |
+     */
+    replaceProtectedBranchAppRestrictions: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposReplaceProtectedBranchAppRestrictionsParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.ReposReplaceProtectedBranchAppRestrictionsResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     */
+    replaceProtectedBranchRequiredStatusChecksContexts: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposReplaceProtectedBranchRequiredStatusChecksContextsParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.ReposReplaceProtectedBranchRequiredStatusChecksContextsResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     *
+     * Replaces the list of teams that have push access to this branch. This removes all teams that previously had push access and grants push access to the new list of teams. If you pass the `hellcat-preview` media type, you can include child teams.
+     *
+     * | Type    | Description                                                                                                                                |
+     * | ------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
+     * | `array` | The teams that can have push access. Use the team's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. |
+     */
+    replaceProtectedBranchTeamRestrictions: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposReplaceProtectedBranchTeamRestrictionsParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.ReposReplaceProtectedBranchTeamRestrictionsResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     *
+     * Replaces the list of people that have push access to this branch. This removes all people that previously had push access and grants push access to the new list of people.
+     *
+     * | Type    | Description                                                                                                                   |
+     * | ------- | ----------------------------------------------------------------------------------------------------------------------------- |
+     * | `array` | Usernames for people who can have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. |
+     */
+    replaceProtectedBranchUserRestrictions: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposReplaceProtectedBranchUserRestrictionsParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.ReposReplaceProtectedBranchUserRestrictionsResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    replaceTopics: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposReplaceTopicsParams
+      ): Promise<Octokit.Response<Octokit.ReposReplaceTopicsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * You can request that your site be built from the latest revision on the default branch. This has the same effect as pushing a commit to your default branch, but does not require an additional commit. Manually triggering page builds can be helpful when diagnosing build warnings and failures.
+     *
+     * Build requests are limited to one concurrent build per repository and one concurrent build per requester. If you request a build while another is still in progress, the second request will be queued until the first completes.
+     */
+    requestPageBuild: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposRequestPageBuildParams
+      ): Promise<Octokit.Response<Octokit.ReposRequestPageBuildResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * This endpoint will return all community profile metrics, including an overall health score, repository description, the presence of documentation, detected code of conduct, detected license, and the presence of ISSUE\_TEMPLATE, PULL\_REQUEST\_TEMPLATE, README, and CONTRIBUTING files.
+     */
+    retrieveCommunityProfileMetrics: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposRetrieveCommunityProfileMetricsParams
+      ): Promise<
+        Octokit.Response<Octokit.ReposRetrieveCommunityProfileMetricsResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * This will trigger the hook with the latest push to the current repository if the hook is subscribed to `push` events. If the hook is not subscribed to `push` events, the server will respond with 204 but no test POST will be generated.
+     *
+     * **Note**: Previously `/repos/:owner/:repo/hooks/:hook_id/test`
+     */
+    testPushHook: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposTestPushHookParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * A transfer request will need to be accepted by the new owner when transferring a personal repository to another user. The response will contain the original `owner`, and the transfer will continue asynchronously. For more details on the requirements to transfer personal and organization-owned repositories, see [about repository transfers](https://help.github.com/articles/about-repository-transfers/).
+     */
+    transfer: {
+      (params?: Octokit.RequestOptions & Octokit.ReposTransferParams): Promise<
+        Octokit.Response<Octokit.ReposTransferResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Note**: To edit a repository's topics, use the [`topics` endpoint](https://developer.github.com/v3/repos/#replace-all-topics-for-a-repository).
+     */
+    update: {
+      (params?: Octokit.RequestOptions & Octokit.ReposUpdateParams): Promise<
+        Octokit.Response<Octokit.ReposUpdateResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     *
+     * Protecting a branch requires admin or owner permissions to the repository.
+     *
+     * **Note**: Passing new arrays of `users` and `teams` replaces their previous values.
+     *
+     * **Note**: The list of users, apps, and teams in total is limited to 100 items.
+     */
+    updateBranchProtection: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposUpdateBranchProtectionParams
+      ): Promise<Octokit.Response<Octokit.ReposUpdateBranchProtectionResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    updateCommitComment: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposUpdateCommitCommentParams
+      ): Promise<Octokit.Response<Octokit.ReposUpdateCommitCommentResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Creates a new file or updates an existing file in a repository.
+     * @deprecated octokit.repos.updateFile() has been renamed to octokit.repos.createOrUpdateFile() (2019-06-07)
+     */
+    updateFile: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposUpdateFileParams
+      ): Promise<Octokit.Response<Octokit.ReposUpdateFileResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    updateHook: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposUpdateHookParams
+      ): Promise<Octokit.Response<Octokit.ReposUpdateHookResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    updateInformationAboutPagesSite: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposUpdateInformationAboutPagesSiteParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    updateInvitation: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposUpdateInvitationParams
+      ): Promise<Octokit.Response<Octokit.ReposUpdateInvitationResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     *
+     * Updating pull request review enforcement requires admin or owner permissions to the repository and branch protection to be enabled.
+     *
+     * **Note**: Passing new arrays of `users` and `teams` replaces their previous values.
+     */
+    updateProtectedBranchPullRequestReviewEnforcement: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposUpdateProtectedBranchPullRequestReviewEnforcementParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.ReposUpdateProtectedBranchPullRequestReviewEnforcementResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
+     *
+     * Updating required status checks requires admin or owner permissions to the repository and branch protection to be enabled.
+     */
+    updateProtectedBranchRequiredStatusChecks: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.ReposUpdateProtectedBranchRequiredStatusChecksParams
+      ): Promise<
+        Octokit.Response<
+          Octokit.ReposUpdateProtectedBranchRequiredStatusChecksResponse
+        >
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Users with push access to the repository can edit a release.
+     */
+    updateRelease: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposUpdateReleaseParams
+      ): Promise<Octokit.Response<Octokit.ReposUpdateReleaseResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Users with push access to the repository can edit a release asset.
+     */
+    updateReleaseAsset: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposUpdateReleaseAssetParams
+      ): Promise<Octokit.Response<Octokit.ReposUpdateReleaseAssetResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * This endpoint makes use of [a Hypermedia relation](https://developer.github.com/v3/#hypermedia) to determine which URL to access. The endpoint you call to upload release assets is specific to your release. Use the `upload_url` returned in the response of the [Create a release endpoint](https://developer.github.com/v3/repos/releases/#create-a-release) to upload a release asset.
+     *
+     * You need to use an HTTP client which supports [SNI](http://en.wikipedia.org/wiki/Server_Name_Indication) to make calls to this endpoint.
+     *
+     * Most libraries will set the required `Content-Length` header automatically. Use the required `Content-Type` header to provide the media type of the asset. For a list of media types, see [Media Types](https://www.iana.org/assignments/media-types/media-types.xhtml). For example:
+     *
+     * `application/zip`
+     *
+     * GitHub expects the asset data in its raw binary form, rather than JSON. You will send the raw binary content of the asset as the request body. Everything else about the endpoint is the same as the rest of the API. For example, you'll still need to pass your authentication to be able to upload an asset.
+     */
+    uploadReleaseAsset: {
+      (
+        params?: Octokit.RequestOptions & Octokit.ReposUploadReleaseAssetParams
+      ): Promise<Octokit.Response<Octokit.ReposUploadReleaseAssetResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+  };
+  search: {
+    /**
+     * Find file contents via various criteria. This method returns up to 100 results [per page](https://developer.github.com/v3/#pagination).
+     *
+     * When searching for code, you can get text match metadata for the file **content** and file **path** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://developer.github.com/v3/search/#text-match-metadata).
+     *
+     * **Note:** You must [authenticate](https://developer.github.com/v3/#authentication) to search for code across all public repositories.
+     *
+     * **Considerations for code search**
+     *
+     * Due to the complexity of searching code, there are a few restrictions on how searches are performed:
+     *
+     * *   Only the _default branch_ is considered. In most cases, this will be the `master` branch.
+     * *   Only files smaller than 384 KB are searchable.
+     * *   You must always include at least one search term when searching source code. For example, searching for [`language:go`](https://github.com/search?utf8=%E2%9C%93&q=language%3Ago&type=Code) is not valid, while [`amazing language:go`](https://github.com/search?utf8=%E2%9C%93&q=amazing+language%3Ago&type=Code) is.
+     *
+     * Suppose you want to find the definition of the `addClass` function inside [jQuery](https://github.com/jquery/jquery). Your query would look something like this:
+     *
+     * Here, we're searching for the keyword `addClass` within a file's contents. We're making sure that we're only looking in files where the language is JavaScript. And we're scoping the search to the `repo:jquery/jquery` repository.
+     */
+    code: {
+      (params?: Octokit.RequestOptions & Octokit.SearchCodeParams): Promise<
+        Octokit.Response<Octokit.SearchCodeResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Find commits via various criteria. This method returns up to 100 results [per page](https://developer.github.com/v3/#pagination).
+     *
+     * When searching for commits, you can get text match metadata for the **message** field when you provide the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://developer.github.com/v3/search/#text-match-metadata).
+     *
+     * **Considerations for commit search**
+     *
+     * Only the _default branch_ is considered. In most cases, this will be the `master` branch.
+     *
+     * Suppose you want to find commits related to CSS in the [octocat/Spoon-Knife](https://github.com/octocat/Spoon-Knife) repository. Your query would look something like this:
+     */
+    commits: {
+      (params?: Octokit.RequestOptions & Octokit.SearchCommitsParams): Promise<
+        Octokit.Response<Octokit.SearchCommitsResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Find issues by state and keyword. This method returns up to 100 results [per page](https://developer.github.com/v3/#pagination).
+     *
+     * When searching for issues, you can get text match metadata for the issue **title**, issue **body**, and issue **comment body** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://developer.github.com/v3/search/#text-match-metadata).
+     *
+     * Let's say you want to find the oldest unresolved Python bugs on Windows. Your query might look something like this.
+     *
+     * In this query, we're searching for the keyword `windows`, within any open issue that's labeled as `bug`. The search runs across repositories whose primary language is Python. We’re sorting by creation date in ascending order, so that the oldest issues appear first in the search results.
+     * @deprecated octokit.search.issues() has been renamed to octokit.search.issuesAndPullRequests() (2018-12-27)
+     */
+    issues: {
+      (params?: Octokit.RequestOptions & Octokit.SearchIssuesParams): Promise<
+        Octokit.Response<Octokit.SearchIssuesResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Find issues by state and keyword. This method returns up to 100 results [per page](https://developer.github.com/v3/#pagination).
+     *
+     * When searching for issues, you can get text match metadata for the issue **title**, issue **body**, and issue **comment body** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://developer.github.com/v3/search/#text-match-metadata).
+     *
+     * Let's say you want to find the oldest unresolved Python bugs on Windows. Your query might look something like this.
+     *
+     * In this query, we're searching for the keyword `windows`, within any open issue that's labeled as `bug`. The search runs across repositories whose primary language is Python. We’re sorting by creation date in ascending order, so that the oldest issues appear first in the search results.
+     */
+    issuesAndPullRequests: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.SearchIssuesAndPullRequestsParams
+      ): Promise<Octokit.Response<Octokit.SearchIssuesAndPullRequestsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Find labels in a repository with names or descriptions that match search keywords. Returns up to 100 results [per page](https://developer.github.com/v3/#pagination).
+     *
+     * When searching for labels, you can get text match metadata for the label **name** and **description** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://developer.github.com/v3/search/#text-match-metadata).
+     *
+     * Suppose you want to find labels in the `linguist` repository that match `bug`, `defect`, or `enhancement`. Your query might look like this:
+     *
+     * The labels that best match for the query appear first in the search results.
+     */
+    labels: {
+      (params?: Octokit.RequestOptions & Octokit.SearchLabelsParams): Promise<
+        Octokit.Response<Octokit.SearchLabelsResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Find repositories via various criteria. This method returns up to 100 results [per page](https://developer.github.com/v3/#pagination).
+     *
+     * When searching for repositories, you can get text match metadata for the **name** and **description** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://developer.github.com/v3/search/#text-match-metadata).
+     *
+     * Suppose you want to search for popular Tetris repositories written in Assembly. Your query might look like this.
+     *
+     * You can search for multiple topics by adding more `topic:` instances, and including the `mercy-preview` header. For example:
+     *
+     * In this request, we're searching for repositories with the word `tetris` in the name, the description, or the README. We're limiting the results to only find repositories where the primary language is Assembly. We're sorting by stars in descending order, so that the most popular repositories appear first in the search results.
+     */
+    repos: {
+      (params?: Octokit.RequestOptions & Octokit.SearchReposParams): Promise<
+        Octokit.Response<Octokit.SearchReposResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Find topics via various criteria. Results are sorted by best match. This method returns up to 100 results [per page](https://developer.github.com/v3/#pagination).
+     *
+     * When searching for topics, you can get text match metadata for the topic's **short\_description**, **description**, **name**, or **display\_name** field when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://developer.github.com/v3/search/#text-match-metadata).
+     *
+     * See "[Searching topics](https://help.github.com/articles/searching-topics/)" for a detailed list of qualifiers.
+     *
+     * Suppose you want to search for topics related to Ruby that are featured on [https://github.com/topics](https://github.com/topics). Your query might look like this:
+     *
+     * In this request, we're searching for topics with the keyword `ruby`, and we're limiting the results to find only topics that are featured. The topics that are the best match for the query appear first in the search results.
+     *
+     * **Note:** A search for featured Ruby topics only has 6 total results, so a [Link header](https://developer.github.com/v3/#link-header) indicating pagination is not included in the response.
+     */
+    topics: {
+      (params?: Octokit.RequestOptions & Octokit.SearchTopicsParams): Promise<
+        Octokit.Response<Octokit.SearchTopicsResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Find users via various criteria. This method returns up to 100 results [per page](https://developer.github.com/v3/#pagination).
+     *
+     * When searching for users, you can get text match metadata for the issue **login**, **email**, and **name** fields when you pass the `text-match` media type. For more details about highlighting search results, see [Text match metadata](https://developer.github.com/v3/search/#text-match-metadata). For more details about how to receive highlighted search results, see [Text match metadata](https://developer.github.com/v3/search/#text-match-metadata).
+     *
+     * Imagine you're looking for a list of popular users. You might try out this query:
+     *
+     * Here, we're looking at users with the name Tom. We're only interested in those with more than 42 repositories, and only if they have over 1,000 followers.
+     */
+    users: {
+      (params?: Octokit.RequestOptions & Octokit.SearchUsersParams): Promise<
+        Octokit.Response<Octokit.SearchUsersResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+  };
+  teams: {
+    /**
+     * The "Add team member" API (described below) is deprecated.
+     *
+     * We recommend using the [Add team membership API](https://developer.github.com/v3/teams/members/#add-or-update-team-membership) instead. It allows you to invite new organization members to your teams.
+     *
+     * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/articles/github-s-products) in the GitHub Help documentation.
+     *
+     * To add someone to a team, the authenticated user must be a team maintainer in the team they're changing or be an owner of the organization that the team is associated with. The person being added to the team must be a member of the team's organization.
+     *
+     * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://help.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)."
+     *
+     * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://developer.github.com/v3/#http-verbs)."
+     * @deprecated octokit.teams.addMember() is deprecated, see https://developer.github.com/v3/teams/members/#add-team-member
+     */
+    addMember: {
+      (params?: Octokit.RequestOptions & Octokit.TeamsAddMemberParams): Promise<
+        Octokit.Response<Octokit.TeamsAddMemberResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/articles/github-s-products) in the GitHub Help documentation.
+     *
+     * If the user is already a member of the team's organization, this endpoint will add the user to the team. To add a membership between an organization member and a team, the authenticated user must be an organization owner or a maintainer of the team.
+     *
+     * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://help.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)."
+     *
+     * If the user is unaffiliated with the team's organization, this endpoint will send an invitation to the user via email. This newly-created membership will be in the "pending" state until the user accepts the invitation, at which point the membership will transition to the "active" state and the user will be added as a member of the team. To add a membership between an unaffiliated user and a team, the authenticated user must be an organization owner.
+     *
+     * If the user is already a member of the team, this endpoint will update the role of the team member's role. To update the membership of a team member, the authenticated user must be an organization owner or a maintainer of the team.
+     */
+    addOrUpdateMembership: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.TeamsAddOrUpdateMembershipParams
+      ): Promise<Octokit.Response<Octokit.TeamsAddOrUpdateMembershipResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Adds an organization project to a team. To add a project to a team or update the team's permission on a project, the authenticated user must have `admin` permissions for the project. The project and team must be part of the same organization.
+     */
+    addOrUpdateProject: {
+      (
+        params?: Octokit.RequestOptions & Octokit.TeamsAddOrUpdateProjectParams
+      ): Promise<Octokit.Response<Octokit.TeamsAddOrUpdateProjectResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * To add a repository to a team or update the team's permission on a repository, the authenticated user must have admin access to the repository, and must be able to see the team. The repository must be owned by the organization, or a direct fork of a repository owned by the organization. You will get a `422 Unprocessable Entity` status if you attempt to add a repository to a team that is not owned by the organization.
+     *
+     * If you pass the `hellcat-preview` media type, you can modify repository permissions of child teams.
+     *
+     * Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://developer.github.com/v3/#http-verbs)."
+     */
+    addOrUpdateRepo: {
+      (
+        params?: Octokit.RequestOptions & Octokit.TeamsAddOrUpdateRepoParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Note**: If you pass the `hellcat-preview` media type, repositories inherited through a parent team will be checked.
+     *
+     * You can also get information about the specified repository, including what permissions the team grants on it, by passing the following custom [media type](https://developer.github.com/v3/media/) via the `Accept` header:
+     */
+    checkManagesRepo: {
+      (
+        params?: Octokit.RequestOptions & Octokit.TeamsCheckManagesRepoParams
+      ): Promise<Octokit.Response<Octokit.TeamsCheckManagesRepoResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * To create a team, the authenticated user must be a member or owner of `:org`. By default, organization members can create teams. Organization owners can limit team creation to organization owners. For more information, see "[Setting team creation permissions](https://help.github.com/en/articles/setting-team-creation-permissions-in-your-organization)."
+     */
+    create: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.TeamsCreateParamsDeprecatedPermission
+      ): Promise<Octokit.Response<Octokit.TeamsCreateResponse>>;
+      (params?: Octokit.RequestOptions & Octokit.TeamsCreateParams): Promise<
+        Octokit.Response<Octokit.TeamsCreateResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Creates a new discussion post on a team's page. OAuth access tokens require the `write:discussion` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
+     *
+     * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://developer.github.com/v3/#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://developer.github.com/v3/guides/best-practices-for-integrators/#dealing-with-abuse-rate-limits)" for details.
+     */
+    createDiscussion: {
+      (
+        params?: Octokit.RequestOptions & Octokit.TeamsCreateDiscussionParams
+      ): Promise<Octokit.Response<Octokit.TeamsCreateDiscussionResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Creates a new comment on a team discussion. OAuth access tokens require the `write:discussion` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
+     *
+     * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://developer.github.com/v3/#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://developer.github.com/v3/guides/best-practices-for-integrators/#dealing-with-abuse-rate-limits)" for details.
+     */
+    createDiscussionComment: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.TeamsCreateDiscussionCommentParams
+      ): Promise<
+        Octokit.Response<Octokit.TeamsCreateDiscussionCommentResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * To delete a team, the authenticated user must be a team maintainer or an owner of the org associated with the team.
+     *
+     * If you are an organization owner and you pass the `hellcat-preview` media type, deleting a parent team will delete all of its child teams as well.
+     */
+    delete: {
+      (params?: Octokit.RequestOptions & Octokit.TeamsDeleteParams): Promise<
+        Octokit.AnyResponse
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Delete a discussion from a team's page. OAuth access tokens require the `write:discussion` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
+     */
+    deleteDiscussion: {
+      (
+        params?: Octokit.RequestOptions & Octokit.TeamsDeleteDiscussionParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Deletes a comment on a team discussion. OAuth access tokens require the `write:discussion` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
+     */
+    deleteDiscussionComment: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.TeamsDeleteDiscussionCommentParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    get: {
+      (params?: Octokit.RequestOptions & Octokit.TeamsGetParams): Promise<
+        Octokit.Response<Octokit.TeamsGetResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Gets a team using the team's `slug`. GitHub generates the `slug` from the team `name`.
+     */
+    getByName: {
+      (params?: Octokit.RequestOptions & Octokit.TeamsGetByNameParams): Promise<
+        Octokit.Response<Octokit.TeamsGetByNameResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Get a specific discussion on a team's page. OAuth access tokens require the `read:discussion` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
+     */
+    getDiscussion: {
+      (
+        params?: Octokit.RequestOptions & Octokit.TeamsGetDiscussionParams
+      ): Promise<Octokit.Response<Octokit.TeamsGetDiscussionResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Get a specific comment on a team discussion. OAuth access tokens require the `read:discussion` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
+     */
+    getDiscussionComment: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.TeamsGetDiscussionCommentParams
+      ): Promise<Octokit.Response<Octokit.TeamsGetDiscussionCommentResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * The "Get team member" API (described below) is deprecated.
+     *
+     * We recommend using the [Get team membership API](https://developer.github.com/v3/teams/members/#get-team-membership) instead. It allows you to get both active and pending memberships.
+     *
+     * To list members in a team, the team must be visible to the authenticated user.
+     * @deprecated octokit.teams.getMember() is deprecated, see https://developer.github.com/v3/teams/members/#get-team-member
+     */
+    getMember: {
+      (params?: Octokit.RequestOptions & Octokit.TeamsGetMemberParams): Promise<
+        Octokit.AnyResponse
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * If you pass the `hellcat-preview` media type, team members will include the members of child teams.
+     *
+     * To get a user's membership with a team, the team must be visible to the authenticated user.
+     *
+     * **Note:** The `role` for organization owners returns as `maintainer`. For more information about `maintainer` roles, see [Create team](https://developer.github.com/v3/teams#create-team).
+     */
+    getMembership: {
+      (
+        params?: Octokit.RequestOptions & Octokit.TeamsGetMembershipParams
+      ): Promise<Octokit.Response<Octokit.TeamsGetMembershipResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    list: {
+      (params?: Octokit.RequestOptions & Octokit.TeamsListParams): Promise<
+        Octokit.Response<Octokit.TeamsListResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * At this time, the `hellcat-preview` media type is required to use this endpoint.
+     */
+    listChild: {
+      (params?: Octokit.RequestOptions & Octokit.TeamsListChildParams): Promise<
+        Octokit.Response<Octokit.TeamsListChildResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * List all comments on a team discussion. OAuth access tokens require the `read:discussion` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
+     */
+    listDiscussionComments: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.TeamsListDiscussionCommentsParams
+      ): Promise<Octokit.Response<Octokit.TeamsListDiscussionCommentsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * List all discussions on a team's page. OAuth access tokens require the `read:discussion` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
+     */
+    listDiscussions: {
+      (
+        params?: Octokit.RequestOptions & Octokit.TeamsListDiscussionsParams
+      ): Promise<Octokit.Response<Octokit.TeamsListDiscussionsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * List all of the teams across all of the organizations to which the authenticated user belongs. This method requires `user`, `repo`, or `read:org` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/) when authenticating via [OAuth](https://developer.github.com/apps/building-oauth-apps/).
+     */
+    listForAuthenticatedUser: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.TeamsListForAuthenticatedUserParams
+      ): Promise<
+        Octokit.Response<Octokit.TeamsListForAuthenticatedUserResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * If you pass the `hellcat-preview` media type, team members will include the members of child teams.
+     */
+    listMembers: {
+      (
+        params?: Octokit.RequestOptions & Octokit.TeamsListMembersParams
+      ): Promise<Octokit.Response<Octokit.TeamsListMembersResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * The return hash contains a `role` field which refers to the Organization Invitation role and will be one of the following values: `direct_member`, `admin`, `billing_manager`, `hiring_manager`, or `reinstate`. If the invitee is not a GitHub member, the `login` field in the return hash will be `null`.
+     */
+    listPendingInvitations: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.TeamsListPendingInvitationsParams
+      ): Promise<Octokit.Response<Octokit.TeamsListPendingInvitationsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Lists the organization projects for a team. If you pass the `hellcat-preview` media type, the response will include projects inherited from a parent team.
+     */
+    listProjects: {
+      (
+        params?: Octokit.RequestOptions & Octokit.TeamsListProjectsParams
+      ): Promise<Octokit.Response<Octokit.TeamsListProjectsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Note**: If you pass the `hellcat-preview` media type, the response will include any repositories inherited through a parent team.
+     */
+    listRepos: {
+      (params?: Octokit.RequestOptions & Octokit.TeamsListReposParams): Promise<
+        Octokit.Response<Octokit.TeamsListReposResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * The "Remove team member" API (described below) is deprecated.
+     *
+     * We recommend using the [Remove team membership endpoint](https://developer.github.com/v3/teams/members/#remove-team-membership) instead. It allows you to remove both active and pending memberships.
+     *
+     * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/articles/github-s-products) in the GitHub Help documentation.
+     *
+     * To remove a team member, the authenticated user must have 'admin' permissions to the team or be an owner of the org that the team is associated with. Removing a team member does not delete the user, it just removes them from the team.
+     *
+     * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://help.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)."
+     * @deprecated octokit.teams.removeMember() is deprecated, see https://developer.github.com/v3/teams/members/#remove-team-member
+     */
+    removeMember: {
+      (
+        params?: Octokit.RequestOptions & Octokit.TeamsRemoveMemberParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/articles/github-s-products) in the GitHub Help documentation.
+     *
+     * To remove a membership between a user and a team, the authenticated user must have 'admin' permissions to the team or be an owner of the organization that the team is associated with. Removing team membership does not delete the user, it just removes their membership from the team.
+     *
+     * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://help.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)."
+     */
+    removeMembership: {
+      (
+        params?: Octokit.RequestOptions & Octokit.TeamsRemoveMembershipParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Removes an organization project from a team. An organization owner or a team maintainer can remove any project from the team. To remove a project from a team as an organization member, the authenticated user must have `read` access to both the team and project, or `admin` access to the team or project. **Note:** This endpoint removes the project from the team, but does not delete it.
+     */
+    removeProject: {
+      (
+        params?: Octokit.RequestOptions & Octokit.TeamsRemoveProjectParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * If the authenticated user is an organization owner or a team maintainer, they can remove any repositories from the team. To remove a repository from a team as an organization member, the authenticated user must have admin access to the repository and must be able to see the team. NOTE: This does not delete the repository, it just removes it from the team.
+     */
+    removeRepo: {
+      (
+        params?: Octokit.RequestOptions & Octokit.TeamsRemoveRepoParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Checks whether a team has `read`, `write`, or `admin` permissions for an organization project. If you pass the `hellcat-preview` media type, the response will include projects inherited from a parent team.
+     */
+    reviewProject: {
+      (
+        params?: Octokit.RequestOptions & Octokit.TeamsReviewProjectParams
+      ): Promise<Octokit.Response<Octokit.TeamsReviewProjectResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * To edit a team, the authenticated user must either be an owner of the org that the team is associated with, or a maintainer of the team.
+     *
+     * **Note:** With nested teams, the `privacy` for parent teams cannot be `secret`.
+     */
+    update: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.TeamsUpdateParamsDeprecatedPermission
+      ): Promise<Octokit.Response<Octokit.TeamsUpdateResponse>>;
+      (params?: Octokit.RequestOptions & Octokit.TeamsUpdateParams): Promise<
+        Octokit.Response<Octokit.TeamsUpdateResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Edits the title and body text of a discussion post. Only the parameters you provide are updated. OAuth access tokens require the `write:discussion` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
+     */
+    updateDiscussion: {
+      (
+        params?: Octokit.RequestOptions & Octokit.TeamsUpdateDiscussionParams
+      ): Promise<Octokit.Response<Octokit.TeamsUpdateDiscussionResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Edits the body text of a discussion comment. OAuth access tokens require the `write:discussion` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
+     */
+    updateDiscussionComment: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.TeamsUpdateDiscussionCommentParams
+      ): Promise<
+        Octokit.Response<Octokit.TeamsUpdateDiscussionCommentResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+  };
+  users: {
+    /**
+     * This endpoint is accessible with the `user` scope.
+     */
+    addEmails: {
+      (params?: Octokit.RequestOptions & Octokit.UsersAddEmailsParams): Promise<
+        Octokit.Response<Octokit.UsersAddEmailsResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    block: {
+      (params?: Octokit.RequestOptions & Octokit.UsersBlockParams): Promise<
+        Octokit.AnyResponse
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * If the user is blocked:
+     *
+     * If the user is not blocked:
+     */
+    checkBlocked: {
+      (
+        params?: Octokit.RequestOptions & Octokit.UsersCheckBlockedParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    checkFollowing: {
+      (
+        params?: Octokit.RequestOptions & Octokit.UsersCheckFollowingParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    checkFollowingForUser: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.UsersCheckFollowingForUserParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Adds a GPG key to the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth, or OAuth with at least `write:gpg_key` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
+     */
+    createGpgKey: {
+      (
+        params?: Octokit.RequestOptions & Octokit.UsersCreateGpgKeyParams
+      ): Promise<Octokit.Response<Octokit.UsersCreateGpgKeyResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Adds a public SSH key to the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth, or OAuth with at least `write:public_key` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
+     */
+    createPublicKey: {
+      (
+        params?: Octokit.RequestOptions & Octokit.UsersCreatePublicKeyParams
+      ): Promise<Octokit.Response<Octokit.UsersCreatePublicKeyResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * This endpoint is accessible with the `user` scope.
+     */
+    deleteEmails: {
+      (
+        params?: Octokit.RequestOptions & Octokit.UsersDeleteEmailsParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Removes a GPG key from the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth or via OAuth with at least `admin:gpg_key` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
+     */
+    deleteGpgKey: {
+      (
+        params?: Octokit.RequestOptions & Octokit.UsersDeleteGpgKeyParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Removes a public SSH key from the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth or via OAuth with at least `admin:public_key` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
+     */
+    deletePublicKey: {
+      (
+        params?: Octokit.RequestOptions & Octokit.UsersDeletePublicKeyParams
+      ): Promise<Octokit.AnyResponse>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://developer.github.com/v3/#http-verbs)."
+     *
+     * Following a user requires the user to be logged in and authenticated with basic auth or OAuth with the `user:follow` scope.
+     */
+    follow: {
+      (params?: Octokit.RequestOptions & Octokit.UsersFollowParams): Promise<
+        Octokit.AnyResponse
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Lists public and private profile information when authenticated through basic auth or OAuth with the `user` scope.
+     *
+     * Lists public profile information when authenticated through OAuth without the `user` scope.
+     */
+    getAuthenticated: {
+      (params?: Octokit.RequestOptions & Octokit.EmptyParams): Promise<
+        Octokit.Response<Octokit.UsersGetAuthenticatedResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Provides publicly available information about someone with a GitHub account.
+     *
+     * GitHub Apps with the `Plan` user permission can use this endpoint to retrieve information about a user's GitHub plan. The GitHub App must be authenticated as a user. See "[Identifying and authorizing users for GitHub Apps](https://developer.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/)" for details about authentication. For an example response, see "[Response with GitHub plan information](https://developer.github.com/v3/users/#response-with-github-plan-information)."
+     *
+     * The `email` key in the following response is the publicly visible email address from your GitHub [profile page](https://github.com/settings/profile). When setting up your profile, you can select a primary email address to be “public” which provides an email entry for this endpoint. If you do not set a public email address for `email`, then it will have a value of `null`. You only see publicly visible email addresses when authenticated with GitHub. For more information, see [Authentication](https://developer.github.com/v3/#authentication).
+     *
+     * The Emails API enables you to list all of your email addresses, and toggle a primary email to be visible publicly. For more information, see "[Emails API](https://developer.github.com/v3/users/emails/)".
+     */
+    getByUsername: {
+      (
+        params?: Octokit.RequestOptions & Octokit.UsersGetByUsernameParams
+      ): Promise<Octokit.Response<Octokit.UsersGetByUsernameResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Provides hovercard information when authenticated through basic auth or OAuth with the `repo` scope. You can find out more about someone in relation to their pull requests, issues, repositories, and organizations.
+     *
+     * The `subject_type` and `subject_id` parameters provide context for the person's hovercard, which returns more information than without the parameters. For example, if you wanted to find out more about `octocat` who owns the `Spoon-Knife` repository via cURL, it would look like this:
+     */
+    getContextForUser: {
+      (
+        params?: Octokit.RequestOptions & Octokit.UsersGetContextForUserParams
+      ): Promise<Octokit.Response<Octokit.UsersGetContextForUserResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * View extended details for a single GPG key. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:gpg_key` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
+     */
+    getGpgKey: {
+      (params?: Octokit.RequestOptions & Octokit.UsersGetGpgKeyParams): Promise<
+        Octokit.Response<Octokit.UsersGetGpgKeyResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * View extended details for a single public SSH key. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:public_key` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
+     */
+    getPublicKey: {
+      (
+        params?: Octokit.RequestOptions & Octokit.UsersGetPublicKeyParams
+      ): Promise<Octokit.Response<Octokit.UsersGetPublicKeyResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Lists all users, in the order that they signed up on GitHub. This list includes personal user accounts and organization accounts.
+     *
+     * Note: Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://developer.github.com/v3/#link-header) to get the URL for the next page of users.
+     */
+    list: {
+      (params?: Octokit.RequestOptions & Octokit.UsersListParams): Promise<
+        Octokit.Response<Octokit.UsersListResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * List the users you've blocked on your personal account.
+     */
+    listBlocked: {
+      (params?: Octokit.RequestOptions & Octokit.EmptyParams): Promise<
+        Octokit.Response<Octokit.UsersListBlockedResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Lists all of your email addresses, and specifies which one is visible to the public. This endpoint is accessible with the `user:email` scope.
+     */
+    listEmails: {
+      (
+        params?: Octokit.RequestOptions & Octokit.UsersListEmailsParams
+      ): Promise<Octokit.Response<Octokit.UsersListEmailsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    listFollowersForAuthenticatedUser: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.UsersListFollowersForAuthenticatedUserParams
+      ): Promise<
+        Octokit.Response<Octokit.UsersListFollowersForAuthenticatedUserResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    listFollowersForUser: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.UsersListFollowersForUserParams
+      ): Promise<Octokit.Response<Octokit.UsersListFollowersForUserResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    listFollowingForAuthenticatedUser: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.UsersListFollowingForAuthenticatedUserParams
+      ): Promise<
+        Octokit.Response<Octokit.UsersListFollowingForAuthenticatedUserResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    listFollowingForUser: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.UsersListFollowingForUserParams
+      ): Promise<Octokit.Response<Octokit.UsersListFollowingForUserResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Lists the current user's GPG keys. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:gpg_key` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
+     */
+    listGpgKeys: {
+      (
+        params?: Octokit.RequestOptions & Octokit.UsersListGpgKeysParams
+      ): Promise<Octokit.Response<Octokit.UsersListGpgKeysResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Lists the GPG keys for a user. This information is accessible by anyone.
+     */
+    listGpgKeysForUser: {
+      (
+        params?: Octokit.RequestOptions & Octokit.UsersListGpgKeysForUserParams
+      ): Promise<Octokit.Response<Octokit.UsersListGpgKeysForUserResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Lists your publicly visible email address, which you can set with the [Toggle primary email visibility](https://developer.github.com/v3/users/emails/#toggle-primary-email-visibility) endpoint. This endpoint is accessible with the `user:email` scope.
+     */
+    listPublicEmails: {
+      (
+        params?: Octokit.RequestOptions & Octokit.UsersListPublicEmailsParams
+      ): Promise<Octokit.Response<Octokit.UsersListPublicEmailsResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Lists the public SSH keys for the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:public_key` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
+     */
+    listPublicKeys: {
+      (
+        params?: Octokit.RequestOptions & Octokit.UsersListPublicKeysParams
+      ): Promise<Octokit.Response<Octokit.UsersListPublicKeysResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Lists the _verified_ public SSH keys for a user. This is accessible by anyone.
+     */
+    listPublicKeysForUser: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.UsersListPublicKeysForUserParams
+      ): Promise<Octokit.Response<Octokit.UsersListPublicKeysForUserResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Sets the visibility for your primary email addresses.
+     */
+    togglePrimaryEmailVisibility: {
+      (
+        params?: Octokit.RequestOptions &
+          Octokit.UsersTogglePrimaryEmailVisibilityParams
+      ): Promise<
+        Octokit.Response<Octokit.UsersTogglePrimaryEmailVisibilityResponse>
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+
+    unblock: {
+      (params?: Octokit.RequestOptions & Octokit.UsersUnblockParams): Promise<
+        Octokit.AnyResponse
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * Unfollowing a user requires the user to be logged in and authenticated with basic auth or OAuth with the `user:follow` scope.
+     */
+    unfollow: {
+      (params?: Octokit.RequestOptions & Octokit.UsersUnfollowParams): Promise<
+        Octokit.AnyResponse
+      >;
+
+      endpoint: Octokit.Endpoint;
+    };
+    /**
+     * **Note:** If your email is set to private and you send an `email` parameter as part of this request to update your profile, your privacy settings are still enforced: the email address will not be displayed on your public profile or via the API.
+     */
+    updateAuthenticated: {
+      (
+        params?: Octokit.RequestOptions & Octokit.UsersUpdateAuthenticatedParams
+      ): Promise<Octokit.Response<Octokit.UsersUpdateAuthenticatedResponse>>;
+
+      endpoint: Octokit.Endpoint;
+    };
+  };
+}
+
+export = Octokit;
diff --git a/setup-maven/node_modules/@octokit/rest/index.js b/setup-maven/node_modules/@octokit/rest/index.js
new file mode 100644
index 0000000..5a228f3
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/index.js
@@ -0,0 +1,15 @@
+const Octokit = require("./lib/core");
+
+const CORE_PLUGINS = [
+  require("./plugins/log"),
+  require("./plugins/authentication-deprecated"), // deprecated: remove in v17
+  require("./plugins/authentication"),
+  require("./plugins/pagination"),
+  require("./plugins/register-endpoints"),
+  require("./plugins/rest-api-endpoints"),
+  require("./plugins/validate"),
+
+  require("octokit-pagination-methods") // deprecated: remove in v17
+];
+
+module.exports = Octokit.plugin(CORE_PLUGINS);
diff --git a/setup-maven/node_modules/@octokit/rest/lib/constructor.js b/setup-maven/node_modules/@octokit/rest/lib/constructor.js
new file mode 100644
index 0000000..d83cf6b
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/lib/constructor.js
@@ -0,0 +1,29 @@
+module.exports = Octokit;
+
+const { request } = require("@octokit/request");
+const Hook = require("before-after-hook");
+
+const parseClientOptions = require("./parse-client-options");
+
+function Octokit(plugins, options) {
+  options = options || {};
+  const hook = new Hook.Collection();
+  const log = Object.assign(
+    {
+      debug: () => {},
+      info: () => {},
+      warn: console.warn,
+      error: console.error
+    },
+    options && options.log
+  );
+  const api = {
+    hook,
+    log,
+    request: request.defaults(parseClientOptions(options, log, hook))
+  };
+
+  plugins.forEach(pluginFunction => pluginFunction(api, options));
+
+  return api;
+}
diff --git a/setup-maven/node_modules/@octokit/rest/lib/core.js b/setup-maven/node_modules/@octokit/rest/lib/core.js
new file mode 100644
index 0000000..4943ffa
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/lib/core.js
@@ -0,0 +1,3 @@
+const factory = require("./factory");
+
+module.exports = factory();
diff --git a/setup-maven/node_modules/@octokit/rest/lib/factory.js b/setup-maven/node_modules/@octokit/rest/lib/factory.js
new file mode 100644
index 0000000..5dc2065
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/lib/factory.js
@@ -0,0 +1,10 @@
+module.exports = factory;
+
+const Octokit = require("./constructor");
+const registerPlugin = require("./register-plugin");
+
+function factory(plugins) {
+  const Api = Octokit.bind(null, plugins || []);
+  Api.plugin = registerPlugin.bind(null, plugins || []);
+  return Api;
+}
diff --git a/setup-maven/node_modules/@octokit/rest/lib/parse-client-options.js b/setup-maven/node_modules/@octokit/rest/lib/parse-client-options.js
new file mode 100644
index 0000000..c7c097d
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/lib/parse-client-options.js
@@ -0,0 +1,89 @@
+module.exports = parseOptions;
+
+const { Deprecation } = require("deprecation");
+const { getUserAgent } = require("universal-user-agent");
+const once = require("once");
+
+const pkg = require("../package.json");
+
+const deprecateOptionsTimeout = once((log, deprecation) =>
+  log.warn(deprecation)
+);
+const deprecateOptionsAgent = once((log, deprecation) => log.warn(deprecation));
+const deprecateOptionsHeaders = once((log, deprecation) =>
+  log.warn(deprecation)
+);
+
+function parseOptions(options, log, hook) {
+  if (options.headers) {
+    options.headers = Object.keys(options.headers).reduce((newObj, key) => {
+      newObj[key.toLowerCase()] = options.headers[key];
+      return newObj;
+    }, {});
+  }
+
+  const clientDefaults = {
+    headers: options.headers || {},
+    request: options.request || {},
+    mediaType: {
+      previews: [],
+      format: ""
+    }
+  };
+
+  if (options.baseUrl) {
+    clientDefaults.baseUrl = options.baseUrl;
+  }
+
+  if (options.userAgent) {
+    clientDefaults.headers["user-agent"] = options.userAgent;
+  }
+
+  if (options.previews) {
+    clientDefaults.mediaType.previews = options.previews;
+  }
+
+  if (options.timeZone) {
+    clientDefaults.headers["time-zone"] = options.timeZone;
+  }
+
+  if (options.timeout) {
+    deprecateOptionsTimeout(
+      log,
+      new Deprecation(
+        "[@octokit/rest] new Octokit({timeout}) is deprecated. Use {request: {timeout}} instead. See https://github.com/octokit/request.js#request"
+      )
+    );
+    clientDefaults.request.timeout = options.timeout;
+  }
+
+  if (options.agent) {
+    deprecateOptionsAgent(
+      log,
+      new Deprecation(
+        "[@octokit/rest] new Octokit({agent}) is deprecated. Use {request: {agent}} instead. See https://github.com/octokit/request.js#request"
+      )
+    );
+    clientDefaults.request.agent = options.agent;
+  }
+
+  if (options.headers) {
+    deprecateOptionsHeaders(
+      log,
+      new Deprecation(
+        "[@octokit/rest] new Octokit({headers}) is deprecated. Use {userAgent, previews} instead. See https://github.com/octokit/request.js#request"
+      )
+    );
+  }
+
+  const userAgentOption = clientDefaults.headers["user-agent"];
+  const defaultUserAgent = `octokit.js/${pkg.version} ${getUserAgent()}`;
+
+  clientDefaults.headers["user-agent"] = [userAgentOption, defaultUserAgent]
+    .filter(Boolean)
+    .join(" ");
+
+  clientDefaults.request.hook = hook.bind(null, "request");
+
+  return clientDefaults;
+}
diff --git a/setup-maven/node_modules/@octokit/rest/lib/register-plugin.js b/setup-maven/node_modules/@octokit/rest/lib/register-plugin.js
new file mode 100644
index 0000000..c1ae775
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/lib/register-plugin.js
@@ -0,0 +1,9 @@
+module.exports = registerPlugin;
+
+const factory = require("./factory");
+
+function registerPlugin(plugins, pluginFunction) {
+  return factory(
+    plugins.includes(pluginFunction) ? plugins : plugins.concat(pluginFunction)
+  );
+}
diff --git a/setup-maven/node_modules/@octokit/rest/node_modules/universal-user-agent/LICENSE.md b/setup-maven/node_modules/@octokit/rest/node_modules/universal-user-agent/LICENSE.md
new file mode 100644
index 0000000..f105ab0
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/node_modules/universal-user-agent/LICENSE.md
@@ -0,0 +1,7 @@
+# [ISC License](https://spdx.org/licenses/ISC)
+
+Copyright (c) 2018, Gregor Martynus (https://github.com/gr2m)
+
+Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/setup-maven/node_modules/@octokit/rest/node_modules/universal-user-agent/README.md b/setup-maven/node_modules/@octokit/rest/node_modules/universal-user-agent/README.md
new file mode 100644
index 0000000..d00d14c
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/node_modules/universal-user-agent/README.md
@@ -0,0 +1,25 @@
+# universal-user-agent
+
+> Get a user agent string in both browser and node
+
+[![@latest](https://img.shields.io/npm/v/universal-user-agent.svg)](https://www.npmjs.com/package/universal-user-agent)
+[![Build Status](https://travis-ci.com/gr2m/universal-user-agent.svg?branch=master)](https://travis-ci.com/gr2m/universal-user-agent)
+[![Greenkeeper](https://badges.greenkeeper.io/gr2m/universal-user-agent.svg)](https://greenkeeper.io/)
+
+```js
+const { getUserAgent } = require("universal-user-agent");
+// or import { getUserAgent } from "universal-user-agent";
+
+const userAgent = getUserAgent();
+// userAgent will look like this
+// in browser: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:61.0) Gecko/20100101 Firefox/61.0"
+// in node: Node.js/v8.9.4 (macOS High Sierra; x64)
+```
+
+## Credits
+
+The Node implementation was originally inspired by [default-user-agent](https://www.npmjs.com/package/default-user-agent).
+
+## License
+
+[ISC](LICENSE.md)
diff --git a/setup-maven/node_modules/@octokit/rest/node_modules/universal-user-agent/dist-node/index.js b/setup-maven/node_modules/@octokit/rest/node_modules/universal-user-agent/dist-node/index.js
new file mode 100644
index 0000000..80a0710
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/node_modules/universal-user-agent/dist-node/index.js
@@ -0,0 +1,22 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
+
+var osName = _interopDefault(require('os-name'));
+
+function getUserAgent() {
+  try {
+    return `Node.js/${process.version.substr(1)} (${osName()}; ${process.arch})`;
+  } catch (error) {
+    if (/wmic os get Caption/.test(error.message)) {
+      return "Windows <version undetectable>";
+    }
+
+    throw error;
+  }
+}
+
+exports.getUserAgent = getUserAgent;
+//# sourceMappingURL=index.js.map
diff --git a/setup-maven/node_modules/@octokit/rest/node_modules/universal-user-agent/dist-node/index.js.map b/setup-maven/node_modules/@octokit/rest/node_modules/universal-user-agent/dist-node/index.js.map
new file mode 100644
index 0000000..aff09ec
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/node_modules/universal-user-agent/dist-node/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sources":["../dist-src/node.js"],"sourcesContent":["import osName from \"os-name\";\nexport function getUserAgent() {\n    try {\n        return `Node.js/${process.version.substr(1)} (${osName()}; ${process.arch})`;\n    }\n    catch (error) {\n        if (/wmic os get Caption/.test(error.message)) {\n            return \"Windows <version undetectable>\";\n        }\n        throw error;\n    }\n}\n"],"names":["getUserAgent","process","version","substr","osName","arch","error","test","message"],"mappings":";;;;;;;;AACO,SAASA,YAAT,GAAwB;MACvB;WACQ,WAAUC,OAAO,CAACC,OAAR,CAAgBC,MAAhB,CAAuB,CAAvB,CAA0B,KAAIC,MAAM,EAAG,KAAIH,OAAO,CAACI,IAAK,GAA1E;GADJ,CAGA,OAAOC,KAAP,EAAc;QACN,sBAAsBC,IAAtB,CAA2BD,KAAK,CAACE,OAAjC,CAAJ,EAA+C;aACpC,gCAAP;;;UAEEF,KAAN;;;;;;"}
\ No newline at end of file
diff --git a/setup-maven/node_modules/@octokit/rest/node_modules/universal-user-agent/dist-src/browser.js b/setup-maven/node_modules/@octokit/rest/node_modules/universal-user-agent/dist-src/browser.js
new file mode 100644
index 0000000..6f52232
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/node_modules/universal-user-agent/dist-src/browser.js
@@ -0,0 +1,3 @@
+export function getUserAgent() {
+    return navigator.userAgent;
+}
diff --git a/setup-maven/node_modules/@octokit/rest/node_modules/universal-user-agent/dist-src/index.js b/setup-maven/node_modules/@octokit/rest/node_modules/universal-user-agent/dist-src/index.js
new file mode 100644
index 0000000..c6253f5
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/node_modules/universal-user-agent/dist-src/index.js
@@ -0,0 +1 @@
+export { getUserAgent } from "./node";
diff --git a/setup-maven/node_modules/@octokit/rest/node_modules/universal-user-agent/dist-src/node.js b/setup-maven/node_modules/@octokit/rest/node_modules/universal-user-agent/dist-src/node.js
new file mode 100644
index 0000000..8b70a03
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/node_modules/universal-user-agent/dist-src/node.js
@@ -0,0 +1,12 @@
+import osName from "os-name";
+export function getUserAgent() {
+    try {
+        return `Node.js/${process.version.substr(1)} (${osName()}; ${process.arch})`;
+    }
+    catch (error) {
+        if (/wmic os get Caption/.test(error.message)) {
+            return "Windows <version undetectable>";
+        }
+        throw error;
+    }
+}
diff --git a/setup-maven/node_modules/@octokit/rest/node_modules/universal-user-agent/dist-types/browser.d.ts b/setup-maven/node_modules/@octokit/rest/node_modules/universal-user-agent/dist-types/browser.d.ts
new file mode 100644
index 0000000..a7bb1c4
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/node_modules/universal-user-agent/dist-types/browser.d.ts
@@ -0,0 +1 @@
+export declare function getUserAgent(): string;
diff --git a/setup-maven/node_modules/@octokit/rest/node_modules/universal-user-agent/dist-types/index.d.ts b/setup-maven/node_modules/@octokit/rest/node_modules/universal-user-agent/dist-types/index.d.ts
new file mode 100644
index 0000000..c6253f5
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/node_modules/universal-user-agent/dist-types/index.d.ts
@@ -0,0 +1 @@
+export { getUserAgent } from "./node";
diff --git a/setup-maven/node_modules/@octokit/rest/node_modules/universal-user-agent/dist-types/node.d.ts b/setup-maven/node_modules/@octokit/rest/node_modules/universal-user-agent/dist-types/node.d.ts
new file mode 100644
index 0000000..a7bb1c4
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/node_modules/universal-user-agent/dist-types/node.d.ts
@@ -0,0 +1 @@
+export declare function getUserAgent(): string;
diff --git a/setup-maven/node_modules/@octokit/rest/node_modules/universal-user-agent/dist-web/index.js b/setup-maven/node_modules/@octokit/rest/node_modules/universal-user-agent/dist-web/index.js
new file mode 100644
index 0000000..11ec79b
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/node_modules/universal-user-agent/dist-web/index.js
@@ -0,0 +1,6 @@
+function getUserAgent() {
+    return navigator.userAgent;
+}
+
+export { getUserAgent };
+//# sourceMappingURL=index.js.map
diff --git a/setup-maven/node_modules/@octokit/rest/node_modules/universal-user-agent/dist-web/index.js.map b/setup-maven/node_modules/@octokit/rest/node_modules/universal-user-agent/dist-web/index.js.map
new file mode 100644
index 0000000..549407e
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/node_modules/universal-user-agent/dist-web/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sources":["../dist-src/browser.js"],"sourcesContent":["export function getUserAgent() {\n    return navigator.userAgent;\n}\n"],"names":[],"mappings":"AAAO,SAAS,YAAY,GAAG;IAC3B,OAAO,SAAS,CAAC,SAAS,CAAC;CAC9B;;;;"}
\ No newline at end of file
diff --git a/setup-maven/node_modules/@octokit/rest/node_modules/universal-user-agent/package.json b/setup-maven/node_modules/@octokit/rest/node_modules/universal-user-agent/package.json
new file mode 100644
index 0000000..c9a4287
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/node_modules/universal-user-agent/package.json
@@ -0,0 +1,65 @@
+{
+  "_from": "universal-user-agent@^4.0.0",
+  "_id": "universal-user-agent@4.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-eM8knLpev67iBDizr/YtqkJsF3GK8gzDc6st/WKzrTuPtcsOKW/0IdL4cnMBsU69pOx0otavLWBDGTwg+dB0aA==",
+  "_location": "/@octokit/rest/universal-user-agent",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "universal-user-agent@^4.0.0",
+    "name": "universal-user-agent",
+    "escapedName": "universal-user-agent",
+    "rawSpec": "^4.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^4.0.0"
+  },
+  "_requiredBy": [
+    "/@octokit/rest"
+  ],
+  "_resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-4.0.0.tgz",
+  "_shasum": "27da2ec87e32769619f68a14996465ea1cb9df16",
+  "_spec": "universal-user-agent@^4.0.0",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/@octokit/rest",
+  "bugs": {
+    "url": "https://github.com/gr2m/universal-user-agent/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "os-name": "^3.1.0"
+  },
+  "deprecated": false,
+  "description": "Get a user agent string in both browser and node",
+  "devDependencies": {
+    "@gr2m/pika-plugin-build-web": "^0.6.0-issue-84.1",
+    "@pika/pack": "^0.5.0",
+    "@pika/plugin-build-node": "^0.6.0",
+    "@pika/plugin-ts-standard-pkg": "^0.6.0",
+    "@types/jest": "^24.0.18",
+    "jest": "^24.9.0",
+    "prettier": "^1.18.2",
+    "semantic-release": "^15.9.15",
+    "ts-jest": "^24.0.2",
+    "typescript": "^3.6.2"
+  },
+  "files": [
+    "dist-*/",
+    "bin/"
+  ],
+  "homepage": "https://github.com/gr2m/universal-user-agent#readme",
+  "keywords": [],
+  "license": "ISC",
+  "main": "dist-node/index.js",
+  "module": "dist-web/index.js",
+  "name": "universal-user-agent",
+  "pika": true,
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/gr2m/universal-user-agent.git"
+  },
+  "sideEffects": false,
+  "source": "dist-src/index.js",
+  "types": "dist-types/index.d.ts",
+  "version": "4.0.0"
+}
diff --git a/setup-maven/node_modules/@octokit/rest/package.json b/setup-maven/node_modules/@octokit/rest/package.json
new file mode 100644
index 0000000..5ed7de4
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/package.json
@@ -0,0 +1,173 @@
+{
+  "_from": "@octokit/rest@^16.15.0",
+  "_id": "@octokit/rest@16.35.0",
+  "_inBundle": false,
+  "_integrity": "sha512-9ShFqYWo0CLoGYhA1FdtdykJuMzS/9H6vSbbQWDX4pWr4p9v+15MsH/wpd/3fIU+tSxylaNO48+PIHqOkBRx3w==",
+  "_location": "/@octokit/rest",
+  "_phantomChildren": {
+    "os-name": "3.1.0"
+  },
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "@octokit/rest@^16.15.0",
+    "name": "@octokit/rest",
+    "escapedName": "@octokit%2frest",
+    "scope": "@octokit",
+    "rawSpec": "^16.15.0",
+    "saveSpec": null,
+    "fetchSpec": "^16.15.0"
+  },
+  "_requiredBy": [
+    "/@actions/github"
+  ],
+  "_resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.35.0.tgz",
+  "_shasum": "7ccc1f802f407d5b8eb21768c6deca44e7b4c0d8",
+  "_spec": "@octokit/rest@^16.15.0",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/@actions/github",
+  "author": {
+    "name": "Gregor Martynus",
+    "url": "https://github.com/gr2m"
+  },
+  "bugs": {
+    "url": "https://github.com/octokit/rest.js/issues"
+  },
+  "bundleDependencies": false,
+  "bundlesize": [
+    {
+      "path": "./dist/octokit-rest.min.js.gz",
+      "maxSize": "33 kB"
+    }
+  ],
+  "contributors": [
+    {
+      "name": "Mike de Boer",
+      "email": "info@mikedeboer.nl"
+    },
+    {
+      "name": "Fabian Jakobs",
+      "email": "fabian@c9.io"
+    },
+    {
+      "name": "Joe Gallo",
+      "email": "joe@brassafrax.com"
+    },
+    {
+      "name": "Gregor Martynus",
+      "url": "https://github.com/gr2m"
+    }
+  ],
+  "dependencies": {
+    "@octokit/request": "^5.2.0",
+    "@octokit/request-error": "^1.0.2",
+    "atob-lite": "^2.0.0",
+    "before-after-hook": "^2.0.0",
+    "btoa-lite": "^1.0.0",
+    "deprecation": "^2.0.0",
+    "lodash.get": "^4.4.2",
+    "lodash.set": "^4.3.2",
+    "lodash.uniq": "^4.5.0",
+    "octokit-pagination-methods": "^1.1.0",
+    "once": "^1.4.0",
+    "universal-user-agent": "^4.0.0"
+  },
+  "deprecated": false,
+  "description": "GitHub REST API client for Node.js",
+  "devDependencies": {
+    "@gimenete/type-writer": "^0.1.3",
+    "@octokit/fixtures-server": "^5.0.6",
+    "@octokit/graphql": "^4.2.0",
+    "@types/node": "^12.0.0",
+    "bundlesize": "^0.18.0",
+    "chai": "^4.1.2",
+    "compression-webpack-plugin": "^3.0.0",
+    "cypress": "^3.0.0",
+    "glob": "^7.1.2",
+    "http-proxy-agent": "^2.1.0",
+    "lodash.camelcase": "^4.3.0",
+    "lodash.merge": "^4.6.1",
+    "lodash.upperfirst": "^4.3.1",
+    "mkdirp": "^0.5.1",
+    "mocha": "^6.0.0",
+    "mustache": "^3.0.0",
+    "nock": "^11.3.3",
+    "npm-run-all": "^4.1.2",
+    "nyc": "^14.0.0",
+    "prettier": "^1.14.2",
+    "proxy": "^1.0.0",
+    "semantic-release": "^15.0.0",
+    "sinon": "^7.2.4",
+    "sinon-chai": "^3.0.0",
+    "sort-keys": "^4.0.0",
+    "string-to-arraybuffer": "^1.0.0",
+    "string-to-jsdoc-comment": "^1.0.0",
+    "typescript": "^3.3.1",
+    "webpack": "^4.0.0",
+    "webpack-bundle-analyzer": "^3.0.0",
+    "webpack-cli": "^3.0.0"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts",
+    "lib",
+    "plugins"
+  ],
+  "homepage": "https://github.com/octokit/rest.js#readme",
+  "keywords": [
+    "octokit",
+    "github",
+    "rest",
+    "api-client"
+  ],
+  "license": "MIT",
+  "name": "@octokit/rest",
+  "nyc": {
+    "ignore": [
+      "test"
+    ]
+  },
+  "publishConfig": {
+    "access": "public"
+  },
+  "release": {
+    "publish": [
+      "@semantic-release/npm",
+      {
+        "path": "@semantic-release/github",
+        "assets": [
+          "dist/*",
+          "!dist/*.map.gz"
+        ]
+      }
+    ]
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/octokit/rest.js.git"
+  },
+  "scripts": {
+    "build": "npm-run-all build:*",
+    "build:browser": "npm-run-all build:browser:*",
+    "build:browser:development": "webpack --mode development --entry . --output-library=Octokit --output=./dist/octokit-rest.js --profile --json > dist/bundle-stats.json",
+    "build:browser:production": "webpack --mode production --entry . --plugin=compression-webpack-plugin --output-library=Octokit --output-path=./dist --output-filename=octokit-rest.min.js --devtool source-map",
+    "build:ts": "npm run -s update-endpoints:typescript",
+    "coverage": "nyc report --reporter=html && open coverage/index.html",
+    "generate-bundle-report": "webpack-bundle-analyzer dist/bundle-stats.json --mode=static --no-open --report dist/bundle-report.html",
+    "lint": "prettier --check '{lib,plugins,scripts,test}/**/*.{js,json,ts}' 'docs/*.{js,json}' 'docs/src/**/*' index.js README.md package.json",
+    "lint:fix": "prettier --write '{lib,plugins,scripts,test}/**/*.{js,json,ts}' 'docs/*.{js,json}' 'docs/src/**/*' index.js README.md package.json",
+    "postvalidate:ts": "tsc --noEmit --target es6 test/typescript-validate.ts",
+    "prebuild:browser": "mkdirp dist/",
+    "pretest": "npm run -s lint",
+    "prevalidate:ts": "npm run -s build:ts",
+    "start-fixtures-server": "octokit-fixtures-server",
+    "test": "nyc mocha test/mocha-node-setup.js \"test/*/**/*-test.js\"",
+    "test:browser": "cypress run --browser chrome",
+    "update-endpoints": "npm-run-all update-endpoints:*",
+    "update-endpoints:code": "node scripts/update-endpoints/code",
+    "update-endpoints:fetch-json": "node scripts/update-endpoints/fetch-json",
+    "update-endpoints:typescript": "node scripts/update-endpoints/typescript",
+    "validate:ts": "tsc --target es6 --noImplicitAny index.d.ts"
+  },
+  "types": "index.d.ts",
+  "version": "16.35.0"
+}
diff --git a/setup-maven/node_modules/@octokit/rest/plugins/authentication-deprecated/authenticate.js b/setup-maven/node_modules/@octokit/rest/plugins/authentication-deprecated/authenticate.js
new file mode 100644
index 0000000..86ce9e9
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/plugins/authentication-deprecated/authenticate.js
@@ -0,0 +1,52 @@
+module.exports = authenticate;
+
+const { Deprecation } = require("deprecation");
+const once = require("once");
+
+const deprecateAuthenticate = once((log, deprecation) => log.warn(deprecation));
+
+function authenticate(state, options) {
+  deprecateAuthenticate(
+    state.octokit.log,
+    new Deprecation(
+      '[@octokit/rest] octokit.authenticate() is deprecated. Use "auth" constructor option instead.'
+    )
+  );
+
+  if (!options) {
+    state.auth = false;
+    return;
+  }
+
+  switch (options.type) {
+    case "basic":
+      if (!options.username || !options.password) {
+        throw new Error(
+          "Basic authentication requires both a username and password to be set"
+        );
+      }
+      break;
+
+    case "oauth":
+      if (!options.token && !(options.key && options.secret)) {
+        throw new Error(
+          "OAuth2 authentication requires a token or key & secret to be set"
+        );
+      }
+      break;
+
+    case "token":
+    case "app":
+      if (!options.token) {
+        throw new Error("Token authentication requires a token to be set");
+      }
+      break;
+
+    default:
+      throw new Error(
+        "Invalid authentication type, must be 'basic', 'oauth', 'token' or 'app'"
+      );
+  }
+
+  state.auth = options;
+}
diff --git a/setup-maven/node_modules/@octokit/rest/plugins/authentication-deprecated/before-request.js b/setup-maven/node_modules/@octokit/rest/plugins/authentication-deprecated/before-request.js
new file mode 100644
index 0000000..dbb83ab
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/plugins/authentication-deprecated/before-request.js
@@ -0,0 +1,43 @@
+module.exports = authenticationBeforeRequest;
+
+const btoa = require("btoa-lite");
+const uniq = require("lodash.uniq");
+
+function authenticationBeforeRequest(state, options) {
+  if (!state.auth.type) {
+    return;
+  }
+
+  if (state.auth.type === "basic") {
+    const hash = btoa(`${state.auth.username}:${state.auth.password}`);
+    options.headers.authorization = `Basic ${hash}`;
+    return;
+  }
+
+  if (state.auth.type === "token") {
+    options.headers.authorization = `token ${state.auth.token}`;
+    return;
+  }
+
+  if (state.auth.type === "app") {
+    options.headers.authorization = `Bearer ${state.auth.token}`;
+    const acceptHeaders = options.headers.accept
+      .split(",")
+      .concat("application/vnd.github.machine-man-preview+json");
+    options.headers.accept = uniq(acceptHeaders)
+      .filter(Boolean)
+      .join(",");
+    return;
+  }
+
+  options.url += options.url.indexOf("?") === -1 ? "?" : "&";
+
+  if (state.auth.token) {
+    options.url += `access_token=${encodeURIComponent(state.auth.token)}`;
+    return;
+  }
+
+  const key = encodeURIComponent(state.auth.key);
+  const secret = encodeURIComponent(state.auth.secret);
+  options.url += `client_id=${key}&client_secret=${secret}`;
+}
diff --git a/setup-maven/node_modules/@octokit/rest/plugins/authentication-deprecated/index.js b/setup-maven/node_modules/@octokit/rest/plugins/authentication-deprecated/index.js
new file mode 100644
index 0000000..7e0cc4f
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/plugins/authentication-deprecated/index.js
@@ -0,0 +1,31 @@
+module.exports = authenticationPlugin;
+
+const { Deprecation } = require("deprecation");
+const once = require("once");
+
+const deprecateAuthenticate = once((log, deprecation) => log.warn(deprecation));
+
+const authenticate = require("./authenticate");
+const beforeRequest = require("./before-request");
+const requestError = require("./request-error");
+
+function authenticationPlugin(octokit, options) {
+  if (options.auth) {
+    octokit.authenticate = () => {
+      deprecateAuthenticate(
+        octokit.log,
+        new Deprecation(
+          '[@octokit/rest] octokit.authenticate() is deprecated and has no effect when "auth" option is set on Octokit constructor'
+        )
+      );
+    };
+    return;
+  }
+  const state = {
+    octokit,
+    auth: false
+  };
+  octokit.authenticate = authenticate.bind(null, state);
+  octokit.hook.before("request", beforeRequest.bind(null, state));
+  octokit.hook.error("request", requestError.bind(null, state));
+}
diff --git a/setup-maven/node_modules/@octokit/rest/plugins/authentication-deprecated/request-error.js b/setup-maven/node_modules/@octokit/rest/plugins/authentication-deprecated/request-error.js
new file mode 100644
index 0000000..d2e7baa
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/plugins/authentication-deprecated/request-error.js
@@ -0,0 +1,55 @@
+module.exports = authenticationRequestError;
+
+const { RequestError } = require("@octokit/request-error");
+
+function authenticationRequestError(state, error, options) {
+  /* istanbul ignore next */
+  if (!error.headers) throw error;
+
+  const otpRequired = /required/.test(error.headers["x-github-otp"] || "");
+  // handle "2FA required" error only
+  if (error.status !== 401 || !otpRequired) {
+    throw error;
+  }
+
+  if (
+    error.status === 401 &&
+    otpRequired &&
+    error.request &&
+    error.request.headers["x-github-otp"]
+  ) {
+    throw new RequestError(
+      "Invalid one-time password for two-factor authentication",
+      401,
+      {
+        headers: error.headers,
+        request: options
+      }
+    );
+  }
+
+  if (typeof state.auth.on2fa !== "function") {
+    throw new RequestError(
+      "2FA required, but options.on2fa is not a function. See https://github.com/octokit/rest.js#authentication",
+      401,
+      {
+        headers: error.headers,
+        request: options
+      }
+    );
+  }
+
+  return Promise.resolve()
+    .then(() => {
+      return state.auth.on2fa();
+    })
+    .then(oneTimePassword => {
+      const newOptions = Object.assign(options, {
+        headers: Object.assign(
+          { "x-github-otp": oneTimePassword },
+          options.headers
+        )
+      });
+      return state.octokit.request(newOptions);
+    });
+}
diff --git a/setup-maven/node_modules/@octokit/rest/plugins/authentication/before-request.js b/setup-maven/node_modules/@octokit/rest/plugins/authentication/before-request.js
new file mode 100644
index 0000000..c18df95
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/plugins/authentication/before-request.js
@@ -0,0 +1,65 @@
+module.exports = authenticationBeforeRequest;
+
+const btoa = require("btoa-lite");
+
+const withAuthorizationPrefix = require("./with-authorization-prefix");
+
+function authenticationBeforeRequest(state, options) {
+  if (typeof state.auth === "string") {
+    options.headers.authorization = withAuthorizationPrefix(state.auth);
+
+    // https://developer.github.com/v3/previews/#integrations
+    if (
+      /^bearer /i.test(state.auth) &&
+      !/machine-man/.test(options.headers.accept)
+    ) {
+      const acceptHeaders = options.headers.accept
+        .split(",")
+        .concat("application/vnd.github.machine-man-preview+json");
+      options.headers.accept = acceptHeaders.filter(Boolean).join(",");
+    }
+
+    return;
+  }
+
+  if (state.auth.username) {
+    const hash = btoa(`${state.auth.username}:${state.auth.password}`);
+    options.headers.authorization = `Basic ${hash}`;
+    if (state.otp) {
+      options.headers["x-github-otp"] = state.otp;
+    }
+    return;
+  }
+
+  if (state.auth.clientId) {
+    // There is a special case for OAuth applications, when `clientId` and `clientSecret` is passed as
+    // Basic Authorization instead of query parameters. The only routes where that applies share the same
+    // URL though: `/applications/:client_id/tokens/:access_token`.
+    //
+    //  1. [Check an authorization](https://developer.github.com/v3/oauth_authorizations/#check-an-authorization)
+    //  2. [Reset an authorization](https://developer.github.com/v3/oauth_authorizations/#reset-an-authorization)
+    //  3. [Revoke an authorization for an application](https://developer.github.com/v3/oauth_authorizations/#revoke-an-authorization-for-an-application)
+    //
+    // We identify by checking the URL. It must merge both "/applications/:client_id/tokens/:access_token"
+    // as well as "/applications/123/tokens/token456"
+    if (/\/applications\/:?[\w_]+\/tokens\/:?[\w_]+($|\?)/.test(options.url)) {
+      const hash = btoa(`${state.auth.clientId}:${state.auth.clientSecret}`);
+      options.headers.authorization = `Basic ${hash}`;
+      return;
+    }
+
+    options.url += options.url.indexOf("?") === -1 ? "?" : "&";
+    options.url += `client_id=${state.auth.clientId}&client_secret=${state.auth.clientSecret}`;
+    return;
+  }
+
+  return Promise.resolve()
+
+    .then(() => {
+      return state.auth();
+    })
+
+    .then(authorization => {
+      options.headers.authorization = withAuthorizationPrefix(authorization);
+    });
+}
diff --git a/setup-maven/node_modules/@octokit/rest/plugins/authentication/index.js b/setup-maven/node_modules/@octokit/rest/plugins/authentication/index.js
new file mode 100644
index 0000000..6a51d42
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/plugins/authentication/index.js
@@ -0,0 +1,21 @@
+module.exports = authenticationPlugin;
+
+const beforeRequest = require("./before-request");
+const requestError = require("./request-error");
+const validate = require("./validate");
+
+function authenticationPlugin(octokit, options) {
+  if (!options.auth) {
+    return;
+  }
+
+  validate(options.auth);
+
+  const state = {
+    octokit,
+    auth: options.auth
+  };
+
+  octokit.hook.before("request", beforeRequest.bind(null, state));
+  octokit.hook.error("request", requestError.bind(null, state));
+}
diff --git a/setup-maven/node_modules/@octokit/rest/plugins/authentication/request-error.js b/setup-maven/node_modules/@octokit/rest/plugins/authentication/request-error.js
new file mode 100644
index 0000000..9c67d55
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/plugins/authentication/request-error.js
@@ -0,0 +1,61 @@
+module.exports = authenticationRequestError;
+
+const { RequestError } = require("@octokit/request-error");
+
+function authenticationRequestError(state, error, options) {
+  if (!error.headers) throw error;
+
+  const otpRequired = /required/.test(error.headers["x-github-otp"] || "");
+  // handle "2FA required" error only
+  if (error.status !== 401 || !otpRequired) {
+    throw error;
+  }
+
+  if (
+    error.status === 401 &&
+    otpRequired &&
+    error.request &&
+    error.request.headers["x-github-otp"]
+  ) {
+    if (state.otp) {
+      delete state.otp; // no longer valid, request again
+    } else {
+      throw new RequestError(
+        "Invalid one-time password for two-factor authentication",
+        401,
+        {
+          headers: error.headers,
+          request: options
+        }
+      );
+    }
+  }
+
+  if (typeof state.auth.on2fa !== "function") {
+    throw new RequestError(
+      "2FA required, but options.on2fa is not a function. See https://github.com/octokit/rest.js#authentication",
+      401,
+      {
+        headers: error.headers,
+        request: options
+      }
+    );
+  }
+
+  return Promise.resolve()
+    .then(() => {
+      return state.auth.on2fa();
+    })
+    .then(oneTimePassword => {
+      const newOptions = Object.assign(options, {
+        headers: Object.assign(options.headers, {
+          "x-github-otp": oneTimePassword
+        })
+      });
+      return state.octokit.request(newOptions).then(response => {
+        // If OTP still valid, then persist it for following requests
+        state.otp = oneTimePassword;
+        return response;
+      });
+    });
+}
diff --git a/setup-maven/node_modules/@octokit/rest/plugins/authentication/validate.js b/setup-maven/node_modules/@octokit/rest/plugins/authentication/validate.js
new file mode 100644
index 0000000..abf8377
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/plugins/authentication/validate.js
@@ -0,0 +1,21 @@
+module.exports = validateAuth;
+
+function validateAuth(auth) {
+  if (typeof auth === "string") {
+    return;
+  }
+
+  if (typeof auth === "function") {
+    return;
+  }
+
+  if (auth.username && auth.password) {
+    return;
+  }
+
+  if (auth.clientId && auth.clientSecret) {
+    return;
+  }
+
+  throw new Error(`Invalid "auth" option: ${JSON.stringify(auth)}`);
+}
diff --git a/setup-maven/node_modules/@octokit/rest/plugins/authentication/with-authorization-prefix.js b/setup-maven/node_modules/@octokit/rest/plugins/authentication/with-authorization-prefix.js
new file mode 100644
index 0000000..122cab7
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/plugins/authentication/with-authorization-prefix.js
@@ -0,0 +1,23 @@
+module.exports = withAuthorizationPrefix;
+
+const atob = require("atob-lite");
+
+const REGEX_IS_BASIC_AUTH = /^[\w-]+:/;
+
+function withAuthorizationPrefix(authorization) {
+  if (/^(basic|bearer|token) /i.test(authorization)) {
+    return authorization;
+  }
+
+  try {
+    if (REGEX_IS_BASIC_AUTH.test(atob(authorization))) {
+      return `basic ${authorization}`;
+    }
+  } catch (error) {}
+
+  if (authorization.split(/\./).length === 3) {
+    return `bearer ${authorization}`;
+  }
+
+  return `token ${authorization}`;
+}
diff --git a/setup-maven/node_modules/@octokit/rest/plugins/log/index.js b/setup-maven/node_modules/@octokit/rest/plugins/log/index.js
new file mode 100644
index 0000000..fed446a
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/plugins/log/index.js
@@ -0,0 +1,28 @@
+module.exports = octokitDebug;
+
+function octokitDebug(octokit) {
+  octokit.hook.wrap("request", (request, options) => {
+    octokit.log.debug("request", options);
+    const start = Date.now();
+    const requestOptions = octokit.request.endpoint.parse(options);
+    const path = requestOptions.url.replace(options.baseUrl, "");
+
+    return request(options)
+      .then(response => {
+        octokit.log.info(
+          `${requestOptions.method} ${path} - ${
+            response.status
+          } in ${Date.now() - start}ms`
+        );
+        return response;
+      })
+
+      .catch(error => {
+        octokit.log.info(
+          `${requestOptions.method} ${path} - ${error.status} in ${Date.now() -
+            start}ms`
+        );
+        throw error;
+      });
+  });
+}
diff --git a/setup-maven/node_modules/@octokit/rest/plugins/pagination/index.js b/setup-maven/node_modules/@octokit/rest/plugins/pagination/index.js
new file mode 100644
index 0000000..e7673bc
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/plugins/pagination/index.js
@@ -0,0 +1,9 @@
+module.exports = paginatePlugin;
+
+const iterator = require("./iterator");
+const paginate = require("./paginate");
+
+function paginatePlugin(octokit) {
+  octokit.paginate = paginate.bind(null, octokit);
+  octokit.paginate.iterator = iterator.bind(null, octokit);
+}
diff --git a/setup-maven/node_modules/@octokit/rest/plugins/pagination/iterator.js b/setup-maven/node_modules/@octokit/rest/plugins/pagination/iterator.js
new file mode 100644
index 0000000..00ea8eb
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/plugins/pagination/iterator.js
@@ -0,0 +1,34 @@
+module.exports = iterator;
+
+const normalizePaginatedListResponse = require("./normalize-paginated-list-response");
+
+function iterator(octokit, options) {
+  const headers = options.headers;
+  let url = octokit.request.endpoint(options).url;
+
+  return {
+    [Symbol.asyncIterator]: () => ({
+      next() {
+        if (!url) {
+          return Promise.resolve({ done: true });
+        }
+
+        return octokit
+          .request({ url, headers })
+
+          .then(response => {
+            normalizePaginatedListResponse(octokit, url, response);
+
+            // `response.headers.link` format:
+            // '<https://api.github.com/users/aseemk/followers?page=2>; rel="next", <https://api.github.com/users/aseemk/followers?page=2>; rel="last"'
+            // sets `url` to undefined if "next" URL is not present or `link` header is not set
+            url = ((response.headers.link || "").match(
+              /<([^>]+)>;\s*rel="next"/
+            ) || [])[1];
+
+            return { value: response };
+          });
+      }
+    })
+  };
+}
diff --git a/setup-maven/node_modules/@octokit/rest/plugins/pagination/normalize-paginated-list-response.js b/setup-maven/node_modules/@octokit/rest/plugins/pagination/normalize-paginated-list-response.js
new file mode 100644
index 0000000..e664142
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/plugins/pagination/normalize-paginated-list-response.js
@@ -0,0 +1,116 @@
+/**
+ * Some “list” response that can be paginated have a different response structure
+ *
+ * They have a `total_count` key in the response (search also has `incomplete_results`,
+ * /installation/repositories also has `repository_selection`), as well as a key with
+ * the list of the items which name varies from endpoint to endpoint:
+ *
+ * - https://developer.github.com/v3/search/#example (key `items`)
+ * - https://developer.github.com/v3/checks/runs/#response-3 (key: `check_runs`)
+ * - https://developer.github.com/v3/checks/suites/#response-1 (key: `check_suites`)
+ * - https://developer.github.com/v3/apps/installations/#list-repositories (key: `repositories`)
+ * - https://developer.github.com/v3/apps/installations/#list-installations-for-a-user (key `installations`)
+ * - https://developer.github.com/v3/orgs/#list-installations-for-an-organization (key `installations`)
+ *
+ * Octokit normalizes these responses so that paginated results are always returned following
+ * the same structure. One challenge is that if the list response has only one page, no Link
+ * header is provided, so this header alone is not sufficient to check wether a response is
+ * paginated or not. For the exceptions with the namespace, a fallback check for the route
+ * paths has to be added in order to normalize the response. We cannot check for the total_count
+ * property because it also exists in the response of Get the combined status for a specific ref.
+ */
+
+module.exports = normalizePaginatedListResponse;
+
+const { Deprecation } = require("deprecation");
+const once = require("once");
+
+const deprecateIncompleteResults = once((log, deprecation) =>
+  log.warn(deprecation)
+);
+const deprecateTotalCount = once((log, deprecation) => log.warn(deprecation));
+const deprecateNamespace = once((log, deprecation) => log.warn(deprecation));
+
+const REGEX_IS_SEARCH_PATH = /^\/search\//;
+const REGEX_IS_CHECKS_PATH = /^\/repos\/[^/]+\/[^/]+\/commits\/[^/]+\/(check-runs|check-suites)/;
+const REGEX_IS_INSTALLATION_REPOSITORIES_PATH = /^\/installation\/repositories/;
+const REGEX_IS_USER_INSTALLATIONS_PATH = /^\/user\/installations/;
+const REGEX_IS_ORG_INSTALLATIONS_PATH = /^\/orgs\/[^/]+\/installations/;
+
+function normalizePaginatedListResponse(octokit, url, response) {
+  const path = url.replace(octokit.request.endpoint.DEFAULTS.baseUrl, "");
+  if (
+    !REGEX_IS_SEARCH_PATH.test(path) &&
+    !REGEX_IS_CHECKS_PATH.test(path) &&
+    !REGEX_IS_INSTALLATION_REPOSITORIES_PATH.test(path) &&
+    !REGEX_IS_USER_INSTALLATIONS_PATH.test(path) &&
+    !REGEX_IS_ORG_INSTALLATIONS_PATH.test(path)
+  ) {
+    return;
+  }
+
+  // keep the additional properties intact to avoid a breaking change,
+  // but log a deprecation warning when accessed
+  const incompleteResults = response.data.incomplete_results;
+  const repositorySelection = response.data.repository_selection;
+  const totalCount = response.data.total_count;
+  delete response.data.incomplete_results;
+  delete response.data.repository_selection;
+  delete response.data.total_count;
+
+  const namespaceKey = Object.keys(response.data)[0];
+
+  response.data = response.data[namespaceKey];
+
+  Object.defineProperty(response.data, namespaceKey, {
+    get() {
+      deprecateNamespace(
+        octokit.log,
+        new Deprecation(
+          `[@octokit/rest] "result.data.${namespaceKey}" is deprecated. Use "result.data" instead`
+        )
+      );
+      return response.data;
+    }
+  });
+
+  if (typeof incompleteResults !== "undefined") {
+    Object.defineProperty(response.data, "incomplete_results", {
+      get() {
+        deprecateIncompleteResults(
+          octokit.log,
+          new Deprecation(
+            '[@octokit/rest] "result.data.incomplete_results" is deprecated.'
+          )
+        );
+        return incompleteResults;
+      }
+    });
+  }
+
+  if (typeof repositorySelection !== "undefined") {
+    Object.defineProperty(response.data, "repository_selection", {
+      get() {
+        deprecateTotalCount(
+          octokit.log,
+          new Deprecation(
+            '[@octokit/rest] "result.data.repository_selection" is deprecated.'
+          )
+        );
+        return repositorySelection;
+      }
+    });
+  }
+
+  Object.defineProperty(response.data, "total_count", {
+    get() {
+      deprecateTotalCount(
+        octokit.log,
+        new Deprecation(
+          '[@octokit/rest] "result.data.total_count" is deprecated.'
+        )
+      );
+      return totalCount;
+    }
+  });
+}
diff --git a/setup-maven/node_modules/@octokit/rest/plugins/pagination/paginate.js b/setup-maven/node_modules/@octokit/rest/plugins/pagination/paginate.js
new file mode 100644
index 0000000..db4752b
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/plugins/pagination/paginate.js
@@ -0,0 +1,40 @@
+module.exports = paginate;
+
+const iterator = require("./iterator");
+
+function paginate(octokit, route, options, mapFn) {
+  if (typeof options === "function") {
+    mapFn = options;
+    options = undefined;
+  }
+  options = octokit.request.endpoint.merge(route, options);
+  return gather(
+    octokit,
+    [],
+    iterator(octokit, options)[Symbol.asyncIterator](),
+    mapFn
+  );
+}
+
+function gather(octokit, results, iterator, mapFn) {
+  return iterator.next().then(result => {
+    if (result.done) {
+      return results;
+    }
+
+    let earlyExit = false;
+    function done() {
+      earlyExit = true;
+    }
+
+    results = results.concat(
+      mapFn ? mapFn(result.value, done) : result.value.data
+    );
+
+    if (earlyExit) {
+      return results;
+    }
+
+    return gather(octokit, results, iterator, mapFn);
+  });
+}
diff --git a/setup-maven/node_modules/@octokit/rest/plugins/register-endpoints/index.js b/setup-maven/node_modules/@octokit/rest/plugins/register-endpoints/index.js
new file mode 100644
index 0000000..8b92538
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/plugins/register-endpoints/index.js
@@ -0,0 +1,7 @@
+module.exports = octokitRegisterEndpoints;
+
+const registerEndpoints = require("./register-endpoints");
+
+function octokitRegisterEndpoints(octokit) {
+  octokit.registerEndpoints = registerEndpoints.bind(null, octokit);
+}
diff --git a/setup-maven/node_modules/@octokit/rest/plugins/register-endpoints/register-endpoints.js b/setup-maven/node_modules/@octokit/rest/plugins/register-endpoints/register-endpoints.js
new file mode 100644
index 0000000..0ffd784
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/plugins/register-endpoints/register-endpoints.js
@@ -0,0 +1,98 @@
+module.exports = registerEndpoints;
+
+const { Deprecation } = require("deprecation");
+
+function registerEndpoints(octokit, routes) {
+  Object.keys(routes).forEach(namespaceName => {
+    if (!octokit[namespaceName]) {
+      octokit[namespaceName] = {};
+    }
+
+    Object.keys(routes[namespaceName]).forEach(apiName => {
+      const apiOptions = routes[namespaceName][apiName];
+
+      const endpointDefaults = ["method", "url", "headers"].reduce(
+        (map, key) => {
+          if (typeof apiOptions[key] !== "undefined") {
+            map[key] = apiOptions[key];
+          }
+
+          return map;
+        },
+        {}
+      );
+
+      endpointDefaults.request = {
+        validate: apiOptions.params
+      };
+
+      let request = octokit.request.defaults(endpointDefaults);
+
+      // patch request & endpoint methods to support deprecated parameters.
+      // Not the most elegant solution, but we don’t want to move deprecation
+      // logic into octokit/endpoint.js as it’s out of scope
+      const hasDeprecatedParam = Object.keys(apiOptions.params || {}).find(
+        key => apiOptions.params[key].deprecated
+      );
+      if (hasDeprecatedParam) {
+        const patch = patchForDeprecation.bind(null, octokit, apiOptions);
+        request = patch(
+          octokit.request.defaults(endpointDefaults),
+          `.${namespaceName}.${apiName}()`
+        );
+        request.endpoint = patch(
+          request.endpoint,
+          `.${namespaceName}.${apiName}.endpoint()`
+        );
+        request.endpoint.merge = patch(
+          request.endpoint.merge,
+          `.${namespaceName}.${apiName}.endpoint.merge()`
+        );
+      }
+
+      if (apiOptions.deprecated) {
+        octokit[namespaceName][apiName] = function deprecatedEndpointMethod() {
+          octokit.log.warn(
+            new Deprecation(`[@octokit/rest] ${apiOptions.deprecated}`)
+          );
+          octokit[namespaceName][apiName] = request;
+          return request.apply(null, arguments);
+        };
+
+        return;
+      }
+
+      octokit[namespaceName][apiName] = request;
+    });
+  });
+}
+
+function patchForDeprecation(octokit, apiOptions, method, methodName) {
+  const patchedMethod = options => {
+    options = Object.assign({}, options);
+
+    Object.keys(options).forEach(key => {
+      if (apiOptions.params[key] && apiOptions.params[key].deprecated) {
+        const aliasKey = apiOptions.params[key].alias;
+
+        octokit.log.warn(
+          new Deprecation(
+            `[@octokit/rest] "${key}" parameter is deprecated for "${methodName}". Use "${aliasKey}" instead`
+          )
+        );
+
+        if (!(aliasKey in options)) {
+          options[aliasKey] = options[key];
+        }
+        delete options[key];
+      }
+    });
+
+    return method(options);
+  };
+  Object.keys(method).forEach(key => {
+    patchedMethod[key] = method[key];
+  });
+
+  return patchedMethod;
+}
diff --git a/setup-maven/node_modules/@octokit/rest/plugins/rest-api-endpoints/index.js b/setup-maven/node_modules/@octokit/rest/plugins/rest-api-endpoints/index.js
new file mode 100644
index 0000000..4835cee
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/plugins/rest-api-endpoints/index.js
@@ -0,0 +1,13 @@
+module.exports = octokitRestApiEndpoints;
+
+const ROUTES = require("./routes.json");
+
+function octokitRestApiEndpoints(octokit) {
+  // Aliasing scopes for backward compatibility
+  // See https://github.com/octokit/rest.js/pull/1134
+  ROUTES.gitdata = ROUTES.git;
+  ROUTES.authorization = ROUTES.oauthAuthorizations;
+  ROUTES.pullRequests = ROUTES.pulls;
+
+  octokit.registerEndpoints(ROUTES);
+}
diff --git a/setup-maven/node_modules/@octokit/rest/plugins/rest-api-endpoints/routes.json b/setup-maven/node_modules/@octokit/rest/plugins/rest-api-endpoints/routes.json
new file mode 100644
index 0000000..31e3fca
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/plugins/rest-api-endpoints/routes.json
@@ -0,0 +1,5927 @@
+{
+  "activity": {
+    "checkStarringRepo": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/user/starred/:owner/:repo"
+    },
+    "deleteRepoSubscription": {
+      "method": "DELETE",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/subscription"
+    },
+    "deleteThreadSubscription": {
+      "method": "DELETE",
+      "params": { "thread_id": { "required": true, "type": "integer" } },
+      "url": "/notifications/threads/:thread_id/subscription"
+    },
+    "getRepoSubscription": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/subscription"
+    },
+    "getThread": {
+      "method": "GET",
+      "params": { "thread_id": { "required": true, "type": "integer" } },
+      "url": "/notifications/threads/:thread_id"
+    },
+    "getThreadSubscription": {
+      "method": "GET",
+      "params": { "thread_id": { "required": true, "type": "integer" } },
+      "url": "/notifications/threads/:thread_id/subscription"
+    },
+    "listEventsForOrg": {
+      "method": "GET",
+      "params": {
+        "org": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/users/:username/events/orgs/:org"
+    },
+    "listEventsForUser": {
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/users/:username/events"
+    },
+    "listFeeds": { "method": "GET", "params": {}, "url": "/feeds" },
+    "listNotifications": {
+      "method": "GET",
+      "params": {
+        "all": { "type": "boolean" },
+        "before": { "type": "string" },
+        "page": { "type": "integer" },
+        "participating": { "type": "boolean" },
+        "per_page": { "type": "integer" },
+        "since": { "type": "string" }
+      },
+      "url": "/notifications"
+    },
+    "listNotificationsForRepo": {
+      "method": "GET",
+      "params": {
+        "all": { "type": "boolean" },
+        "before": { "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "participating": { "type": "boolean" },
+        "per_page": { "type": "integer" },
+        "repo": { "required": true, "type": "string" },
+        "since": { "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/notifications"
+    },
+    "listPublicEvents": {
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" }
+      },
+      "url": "/events"
+    },
+    "listPublicEventsForOrg": {
+      "method": "GET",
+      "params": {
+        "org": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" }
+      },
+      "url": "/orgs/:org/events"
+    },
+    "listPublicEventsForRepoNetwork": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/networks/:owner/:repo/events"
+    },
+    "listPublicEventsForUser": {
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/users/:username/events/public"
+    },
+    "listReceivedEventsForUser": {
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/users/:username/received_events"
+    },
+    "listReceivedPublicEventsForUser": {
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/users/:username/received_events/public"
+    },
+    "listRepoEvents": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/events"
+    },
+    "listReposStarredByAuthenticatedUser": {
+      "method": "GET",
+      "params": {
+        "direction": { "enum": ["asc", "desc"], "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "sort": { "enum": ["created", "updated"], "type": "string" }
+      },
+      "url": "/user/starred"
+    },
+    "listReposStarredByUser": {
+      "method": "GET",
+      "params": {
+        "direction": { "enum": ["asc", "desc"], "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "sort": { "enum": ["created", "updated"], "type": "string" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/users/:username/starred"
+    },
+    "listReposWatchedByUser": {
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/users/:username/subscriptions"
+    },
+    "listStargazersForRepo": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/stargazers"
+    },
+    "listWatchedReposForAuthenticatedUser": {
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" }
+      },
+      "url": "/user/subscriptions"
+    },
+    "listWatchersForRepo": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/subscribers"
+    },
+    "markAsRead": {
+      "method": "PUT",
+      "params": { "last_read_at": { "type": "string" } },
+      "url": "/notifications"
+    },
+    "markNotificationsAsReadForRepo": {
+      "method": "PUT",
+      "params": {
+        "last_read_at": { "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/notifications"
+    },
+    "markThreadAsRead": {
+      "method": "PATCH",
+      "params": { "thread_id": { "required": true, "type": "integer" } },
+      "url": "/notifications/threads/:thread_id"
+    },
+    "setRepoSubscription": {
+      "method": "PUT",
+      "params": {
+        "ignored": { "type": "boolean" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "subscribed": { "type": "boolean" }
+      },
+      "url": "/repos/:owner/:repo/subscription"
+    },
+    "setThreadSubscription": {
+      "method": "PUT",
+      "params": {
+        "ignored": { "type": "boolean" },
+        "thread_id": { "required": true, "type": "integer" }
+      },
+      "url": "/notifications/threads/:thread_id/subscription"
+    },
+    "starRepo": {
+      "method": "PUT",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/user/starred/:owner/:repo"
+    },
+    "unstarRepo": {
+      "method": "DELETE",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/user/starred/:owner/:repo"
+    }
+  },
+  "apps": {
+    "addRepoToInstallation": {
+      "headers": {
+        "accept": "application/vnd.github.machine-man-preview+json"
+      },
+      "method": "PUT",
+      "params": {
+        "installation_id": { "required": true, "type": "integer" },
+        "repository_id": { "required": true, "type": "integer" }
+      },
+      "url": "/user/installations/:installation_id/repositories/:repository_id"
+    },
+    "checkAccountIsAssociatedWithAny": {
+      "method": "GET",
+      "params": {
+        "account_id": { "required": true, "type": "integer" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" }
+      },
+      "url": "/marketplace_listing/accounts/:account_id"
+    },
+    "checkAccountIsAssociatedWithAnyStubbed": {
+      "method": "GET",
+      "params": {
+        "account_id": { "required": true, "type": "integer" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" }
+      },
+      "url": "/marketplace_listing/stubbed/accounts/:account_id"
+    },
+    "checkAuthorization": {
+      "deprecated": "octokit.oauthAuthorizations.checkAuthorization() has been renamed to octokit.apps.checkAuthorization() (2019-11-05)",
+      "method": "GET",
+      "params": {
+        "access_token": { "required": true, "type": "string" },
+        "client_id": { "required": true, "type": "string" }
+      },
+      "url": "/applications/:client_id/tokens/:access_token"
+    },
+    "checkToken": {
+      "headers": {
+        "accept": "application/vnd.github.doctor-strange-preview+json"
+      },
+      "method": "POST",
+      "params": {
+        "access_token": { "type": "string" },
+        "client_id": { "required": true, "type": "string" }
+      },
+      "url": "/applications/:client_id/token"
+    },
+    "createContentAttachment": {
+      "headers": { "accept": "application/vnd.github.corsair-preview+json" },
+      "method": "POST",
+      "params": {
+        "body": { "required": true, "type": "string" },
+        "content_reference_id": { "required": true, "type": "integer" },
+        "title": { "required": true, "type": "string" }
+      },
+      "url": "/content_references/:content_reference_id/attachments"
+    },
+    "createFromManifest": {
+      "headers": { "accept": "application/vnd.github.fury-preview+json" },
+      "method": "POST",
+      "params": { "code": { "required": true, "type": "string" } },
+      "url": "/app-manifests/:code/conversions"
+    },
+    "createInstallationToken": {
+      "headers": {
+        "accept": "application/vnd.github.machine-man-preview+json"
+      },
+      "method": "POST",
+      "params": {
+        "installation_id": { "required": true, "type": "integer" },
+        "permissions": { "type": "object" },
+        "repository_ids": { "type": "integer[]" }
+      },
+      "url": "/app/installations/:installation_id/access_tokens"
+    },
+    "deleteAuthorization": {
+      "headers": {
+        "accept": "application/vnd.github.doctor-strange-preview+json"
+      },
+      "method": "DELETE",
+      "params": {
+        "access_token": { "type": "string" },
+        "client_id": { "required": true, "type": "string" }
+      },
+      "url": "/applications/:client_id/grant"
+    },
+    "deleteInstallation": {
+      "headers": {
+        "accept": "application/vnd.github.gambit-preview+json,application/vnd.github.machine-man-preview+json"
+      },
+      "method": "DELETE",
+      "params": { "installation_id": { "required": true, "type": "integer" } },
+      "url": "/app/installations/:installation_id"
+    },
+    "deleteToken": {
+      "headers": {
+        "accept": "application/vnd.github.doctor-strange-preview+json"
+      },
+      "method": "DELETE",
+      "params": {
+        "access_token": { "type": "string" },
+        "client_id": { "required": true, "type": "string" }
+      },
+      "url": "/applications/:client_id/token"
+    },
+    "findOrgInstallation": {
+      "deprecated": "octokit.apps.findOrgInstallation() has been renamed to octokit.apps.getOrgInstallation() (2019-04-10)",
+      "headers": {
+        "accept": "application/vnd.github.machine-man-preview+json"
+      },
+      "method": "GET",
+      "params": { "org": { "required": true, "type": "string" } },
+      "url": "/orgs/:org/installation"
+    },
+    "findRepoInstallation": {
+      "deprecated": "octokit.apps.findRepoInstallation() has been renamed to octokit.apps.getRepoInstallation() (2019-04-10)",
+      "headers": {
+        "accept": "application/vnd.github.machine-man-preview+json"
+      },
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/installation"
+    },
+    "findUserInstallation": {
+      "deprecated": "octokit.apps.findUserInstallation() has been renamed to octokit.apps.getUserInstallation() (2019-04-10)",
+      "headers": {
+        "accept": "application/vnd.github.machine-man-preview+json"
+      },
+      "method": "GET",
+      "params": { "username": { "required": true, "type": "string" } },
+      "url": "/users/:username/installation"
+    },
+    "getAuthenticated": {
+      "headers": {
+        "accept": "application/vnd.github.machine-man-preview+json"
+      },
+      "method": "GET",
+      "params": {},
+      "url": "/app"
+    },
+    "getBySlug": {
+      "headers": {
+        "accept": "application/vnd.github.machine-man-preview+json"
+      },
+      "method": "GET",
+      "params": { "app_slug": { "required": true, "type": "string" } },
+      "url": "/apps/:app_slug"
+    },
+    "getInstallation": {
+      "headers": {
+        "accept": "application/vnd.github.machine-man-preview+json"
+      },
+      "method": "GET",
+      "params": { "installation_id": { "required": true, "type": "integer" } },
+      "url": "/app/installations/:installation_id"
+    },
+    "getOrgInstallation": {
+      "headers": {
+        "accept": "application/vnd.github.machine-man-preview+json"
+      },
+      "method": "GET",
+      "params": { "org": { "required": true, "type": "string" } },
+      "url": "/orgs/:org/installation"
+    },
+    "getRepoInstallation": {
+      "headers": {
+        "accept": "application/vnd.github.machine-man-preview+json"
+      },
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/installation"
+    },
+    "getUserInstallation": {
+      "headers": {
+        "accept": "application/vnd.github.machine-man-preview+json"
+      },
+      "method": "GET",
+      "params": { "username": { "required": true, "type": "string" } },
+      "url": "/users/:username/installation"
+    },
+    "listAccountsUserOrOrgOnPlan": {
+      "method": "GET",
+      "params": {
+        "direction": { "enum": ["asc", "desc"], "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "plan_id": { "required": true, "type": "integer" },
+        "sort": { "enum": ["created", "updated"], "type": "string" }
+      },
+      "url": "/marketplace_listing/plans/:plan_id/accounts"
+    },
+    "listAccountsUserOrOrgOnPlanStubbed": {
+      "method": "GET",
+      "params": {
+        "direction": { "enum": ["asc", "desc"], "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "plan_id": { "required": true, "type": "integer" },
+        "sort": { "enum": ["created", "updated"], "type": "string" }
+      },
+      "url": "/marketplace_listing/stubbed/plans/:plan_id/accounts"
+    },
+    "listInstallationReposForAuthenticatedUser": {
+      "headers": {
+        "accept": "application/vnd.github.machine-man-preview+json"
+      },
+      "method": "GET",
+      "params": {
+        "installation_id": { "required": true, "type": "integer" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" }
+      },
+      "url": "/user/installations/:installation_id/repositories"
+    },
+    "listInstallations": {
+      "headers": {
+        "accept": "application/vnd.github.machine-man-preview+json"
+      },
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" }
+      },
+      "url": "/app/installations"
+    },
+    "listInstallationsForAuthenticatedUser": {
+      "headers": {
+        "accept": "application/vnd.github.machine-man-preview+json"
+      },
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" }
+      },
+      "url": "/user/installations"
+    },
+    "listMarketplacePurchasesForAuthenticatedUser": {
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" }
+      },
+      "url": "/user/marketplace_purchases"
+    },
+    "listMarketplacePurchasesForAuthenticatedUserStubbed": {
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" }
+      },
+      "url": "/user/marketplace_purchases/stubbed"
+    },
+    "listPlans": {
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" }
+      },
+      "url": "/marketplace_listing/plans"
+    },
+    "listPlansStubbed": {
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" }
+      },
+      "url": "/marketplace_listing/stubbed/plans"
+    },
+    "listRepos": {
+      "headers": {
+        "accept": "application/vnd.github.machine-man-preview+json"
+      },
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" }
+      },
+      "url": "/installation/repositories"
+    },
+    "removeRepoFromInstallation": {
+      "headers": {
+        "accept": "application/vnd.github.machine-man-preview+json"
+      },
+      "method": "DELETE",
+      "params": {
+        "installation_id": { "required": true, "type": "integer" },
+        "repository_id": { "required": true, "type": "integer" }
+      },
+      "url": "/user/installations/:installation_id/repositories/:repository_id"
+    },
+    "resetAuthorization": {
+      "deprecated": "octokit.oauthAuthorizations.resetAuthorization() has been renamed to octokit.apps.resetAuthorization() (2019-11-05)",
+      "method": "POST",
+      "params": {
+        "access_token": { "required": true, "type": "string" },
+        "client_id": { "required": true, "type": "string" }
+      },
+      "url": "/applications/:client_id/tokens/:access_token"
+    },
+    "resetToken": {
+      "headers": {
+        "accept": "application/vnd.github.doctor-strange-preview+json"
+      },
+      "method": "PATCH",
+      "params": {
+        "access_token": { "type": "string" },
+        "client_id": { "required": true, "type": "string" }
+      },
+      "url": "/applications/:client_id/token"
+    },
+    "revokeAuthorizationForApplication": {
+      "deprecated": "octokit.oauthAuthorizations.revokeAuthorizationForApplication() has been renamed to octokit.apps.revokeAuthorizationForApplication() (2019-11-05)",
+      "method": "DELETE",
+      "params": {
+        "access_token": { "required": true, "type": "string" },
+        "client_id": { "required": true, "type": "string" }
+      },
+      "url": "/applications/:client_id/tokens/:access_token"
+    },
+    "revokeGrantForApplication": {
+      "deprecated": "octokit.oauthAuthorizations.revokeGrantForApplication() has been renamed to octokit.apps.revokeGrantForApplication() (2019-11-05)",
+      "method": "DELETE",
+      "params": {
+        "access_token": { "required": true, "type": "string" },
+        "client_id": { "required": true, "type": "string" }
+      },
+      "url": "/applications/:client_id/grants/:access_token"
+    }
+  },
+  "checks": {
+    "create": {
+      "headers": { "accept": "application/vnd.github.antiope-preview+json" },
+      "method": "POST",
+      "params": {
+        "actions": { "type": "object[]" },
+        "actions[].description": { "required": true, "type": "string" },
+        "actions[].identifier": { "required": true, "type": "string" },
+        "actions[].label": { "required": true, "type": "string" },
+        "completed_at": { "type": "string" },
+        "conclusion": {
+          "enum": [
+            "success",
+            "failure",
+            "neutral",
+            "cancelled",
+            "timed_out",
+            "action_required"
+          ],
+          "type": "string"
+        },
+        "details_url": { "type": "string" },
+        "external_id": { "type": "string" },
+        "head_sha": { "required": true, "type": "string" },
+        "name": { "required": true, "type": "string" },
+        "output": { "type": "object" },
+        "output.annotations": { "type": "object[]" },
+        "output.annotations[].annotation_level": {
+          "enum": ["notice", "warning", "failure"],
+          "required": true,
+          "type": "string"
+        },
+        "output.annotations[].end_column": { "type": "integer" },
+        "output.annotations[].end_line": {
+          "required": true,
+          "type": "integer"
+        },
+        "output.annotations[].message": { "required": true, "type": "string" },
+        "output.annotations[].path": { "required": true, "type": "string" },
+        "output.annotations[].raw_details": { "type": "string" },
+        "output.annotations[].start_column": { "type": "integer" },
+        "output.annotations[].start_line": {
+          "required": true,
+          "type": "integer"
+        },
+        "output.annotations[].title": { "type": "string" },
+        "output.images": { "type": "object[]" },
+        "output.images[].alt": { "required": true, "type": "string" },
+        "output.images[].caption": { "type": "string" },
+        "output.images[].image_url": { "required": true, "type": "string" },
+        "output.summary": { "required": true, "type": "string" },
+        "output.text": { "type": "string" },
+        "output.title": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "started_at": { "type": "string" },
+        "status": {
+          "enum": ["queued", "in_progress", "completed"],
+          "type": "string"
+        }
+      },
+      "url": "/repos/:owner/:repo/check-runs"
+    },
+    "createSuite": {
+      "headers": { "accept": "application/vnd.github.antiope-preview+json" },
+      "method": "POST",
+      "params": {
+        "head_sha": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/check-suites"
+    },
+    "get": {
+      "headers": { "accept": "application/vnd.github.antiope-preview+json" },
+      "method": "GET",
+      "params": {
+        "check_run_id": { "required": true, "type": "integer" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/check-runs/:check_run_id"
+    },
+    "getSuite": {
+      "headers": { "accept": "application/vnd.github.antiope-preview+json" },
+      "method": "GET",
+      "params": {
+        "check_suite_id": { "required": true, "type": "integer" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/check-suites/:check_suite_id"
+    },
+    "listAnnotations": {
+      "headers": { "accept": "application/vnd.github.antiope-preview+json" },
+      "method": "GET",
+      "params": {
+        "check_run_id": { "required": true, "type": "integer" },
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/check-runs/:check_run_id/annotations"
+    },
+    "listForRef": {
+      "headers": { "accept": "application/vnd.github.antiope-preview+json" },
+      "method": "GET",
+      "params": {
+        "check_name": { "type": "string" },
+        "filter": { "enum": ["latest", "all"], "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "ref": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "status": {
+          "enum": ["queued", "in_progress", "completed"],
+          "type": "string"
+        }
+      },
+      "url": "/repos/:owner/:repo/commits/:ref/check-runs"
+    },
+    "listForSuite": {
+      "headers": { "accept": "application/vnd.github.antiope-preview+json" },
+      "method": "GET",
+      "params": {
+        "check_name": { "type": "string" },
+        "check_suite_id": { "required": true, "type": "integer" },
+        "filter": { "enum": ["latest", "all"], "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "repo": { "required": true, "type": "string" },
+        "status": {
+          "enum": ["queued", "in_progress", "completed"],
+          "type": "string"
+        }
+      },
+      "url": "/repos/:owner/:repo/check-suites/:check_suite_id/check-runs"
+    },
+    "listSuitesForRef": {
+      "headers": { "accept": "application/vnd.github.antiope-preview+json" },
+      "method": "GET",
+      "params": {
+        "app_id": { "type": "integer" },
+        "check_name": { "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "ref": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/commits/:ref/check-suites"
+    },
+    "rerequestSuite": {
+      "headers": { "accept": "application/vnd.github.antiope-preview+json" },
+      "method": "POST",
+      "params": {
+        "check_suite_id": { "required": true, "type": "integer" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/check-suites/:check_suite_id/rerequest"
+    },
+    "setSuitesPreferences": {
+      "headers": { "accept": "application/vnd.github.antiope-preview+json" },
+      "method": "PATCH",
+      "params": {
+        "auto_trigger_checks": { "type": "object[]" },
+        "auto_trigger_checks[].app_id": { "required": true, "type": "integer" },
+        "auto_trigger_checks[].setting": {
+          "required": true,
+          "type": "boolean"
+        },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/check-suites/preferences"
+    },
+    "update": {
+      "headers": { "accept": "application/vnd.github.antiope-preview+json" },
+      "method": "PATCH",
+      "params": {
+        "actions": { "type": "object[]" },
+        "actions[].description": { "required": true, "type": "string" },
+        "actions[].identifier": { "required": true, "type": "string" },
+        "actions[].label": { "required": true, "type": "string" },
+        "check_run_id": { "required": true, "type": "integer" },
+        "completed_at": { "type": "string" },
+        "conclusion": {
+          "enum": [
+            "success",
+            "failure",
+            "neutral",
+            "cancelled",
+            "timed_out",
+            "action_required"
+          ],
+          "type": "string"
+        },
+        "details_url": { "type": "string" },
+        "external_id": { "type": "string" },
+        "name": { "type": "string" },
+        "output": { "type": "object" },
+        "output.annotations": { "type": "object[]" },
+        "output.annotations[].annotation_level": {
+          "enum": ["notice", "warning", "failure"],
+          "required": true,
+          "type": "string"
+        },
+        "output.annotations[].end_column": { "type": "integer" },
+        "output.annotations[].end_line": {
+          "required": true,
+          "type": "integer"
+        },
+        "output.annotations[].message": { "required": true, "type": "string" },
+        "output.annotations[].path": { "required": true, "type": "string" },
+        "output.annotations[].raw_details": { "type": "string" },
+        "output.annotations[].start_column": { "type": "integer" },
+        "output.annotations[].start_line": {
+          "required": true,
+          "type": "integer"
+        },
+        "output.annotations[].title": { "type": "string" },
+        "output.images": { "type": "object[]" },
+        "output.images[].alt": { "required": true, "type": "string" },
+        "output.images[].caption": { "type": "string" },
+        "output.images[].image_url": { "required": true, "type": "string" },
+        "output.summary": { "required": true, "type": "string" },
+        "output.text": { "type": "string" },
+        "output.title": { "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "started_at": { "type": "string" },
+        "status": {
+          "enum": ["queued", "in_progress", "completed"],
+          "type": "string"
+        }
+      },
+      "url": "/repos/:owner/:repo/check-runs/:check_run_id"
+    }
+  },
+  "codesOfConduct": {
+    "getConductCode": {
+      "headers": {
+        "accept": "application/vnd.github.scarlet-witch-preview+json"
+      },
+      "method": "GET",
+      "params": { "key": { "required": true, "type": "string" } },
+      "url": "/codes_of_conduct/:key"
+    },
+    "getForRepo": {
+      "headers": {
+        "accept": "application/vnd.github.scarlet-witch-preview+json"
+      },
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/community/code_of_conduct"
+    },
+    "listConductCodes": {
+      "headers": {
+        "accept": "application/vnd.github.scarlet-witch-preview+json"
+      },
+      "method": "GET",
+      "params": {},
+      "url": "/codes_of_conduct"
+    }
+  },
+  "emojis": { "get": { "method": "GET", "params": {}, "url": "/emojis" } },
+  "gists": {
+    "checkIsStarred": {
+      "method": "GET",
+      "params": { "gist_id": { "required": true, "type": "string" } },
+      "url": "/gists/:gist_id/star"
+    },
+    "create": {
+      "method": "POST",
+      "params": {
+        "description": { "type": "string" },
+        "files": { "required": true, "type": "object" },
+        "files.content": { "type": "string" },
+        "public": { "type": "boolean" }
+      },
+      "url": "/gists"
+    },
+    "createComment": {
+      "method": "POST",
+      "params": {
+        "body": { "required": true, "type": "string" },
+        "gist_id": { "required": true, "type": "string" }
+      },
+      "url": "/gists/:gist_id/comments"
+    },
+    "delete": {
+      "method": "DELETE",
+      "params": { "gist_id": { "required": true, "type": "string" } },
+      "url": "/gists/:gist_id"
+    },
+    "deleteComment": {
+      "method": "DELETE",
+      "params": {
+        "comment_id": { "required": true, "type": "integer" },
+        "gist_id": { "required": true, "type": "string" }
+      },
+      "url": "/gists/:gist_id/comments/:comment_id"
+    },
+    "fork": {
+      "method": "POST",
+      "params": { "gist_id": { "required": true, "type": "string" } },
+      "url": "/gists/:gist_id/forks"
+    },
+    "get": {
+      "method": "GET",
+      "params": { "gist_id": { "required": true, "type": "string" } },
+      "url": "/gists/:gist_id"
+    },
+    "getComment": {
+      "method": "GET",
+      "params": {
+        "comment_id": { "required": true, "type": "integer" },
+        "gist_id": { "required": true, "type": "string" }
+      },
+      "url": "/gists/:gist_id/comments/:comment_id"
+    },
+    "getRevision": {
+      "method": "GET",
+      "params": {
+        "gist_id": { "required": true, "type": "string" },
+        "sha": { "required": true, "type": "string" }
+      },
+      "url": "/gists/:gist_id/:sha"
+    },
+    "list": {
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "since": { "type": "string" }
+      },
+      "url": "/gists"
+    },
+    "listComments": {
+      "method": "GET",
+      "params": {
+        "gist_id": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" }
+      },
+      "url": "/gists/:gist_id/comments"
+    },
+    "listCommits": {
+      "method": "GET",
+      "params": {
+        "gist_id": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" }
+      },
+      "url": "/gists/:gist_id/commits"
+    },
+    "listForks": {
+      "method": "GET",
+      "params": {
+        "gist_id": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" }
+      },
+      "url": "/gists/:gist_id/forks"
+    },
+    "listPublic": {
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "since": { "type": "string" }
+      },
+      "url": "/gists/public"
+    },
+    "listPublicForUser": {
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "since": { "type": "string" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/users/:username/gists"
+    },
+    "listStarred": {
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "since": { "type": "string" }
+      },
+      "url": "/gists/starred"
+    },
+    "star": {
+      "method": "PUT",
+      "params": { "gist_id": { "required": true, "type": "string" } },
+      "url": "/gists/:gist_id/star"
+    },
+    "unstar": {
+      "method": "DELETE",
+      "params": { "gist_id": { "required": true, "type": "string" } },
+      "url": "/gists/:gist_id/star"
+    },
+    "update": {
+      "method": "PATCH",
+      "params": {
+        "description": { "type": "string" },
+        "files": { "type": "object" },
+        "files.content": { "type": "string" },
+        "files.filename": { "type": "string" },
+        "gist_id": { "required": true, "type": "string" }
+      },
+      "url": "/gists/:gist_id"
+    },
+    "updateComment": {
+      "method": "PATCH",
+      "params": {
+        "body": { "required": true, "type": "string" },
+        "comment_id": { "required": true, "type": "integer" },
+        "gist_id": { "required": true, "type": "string" }
+      },
+      "url": "/gists/:gist_id/comments/:comment_id"
+    }
+  },
+  "git": {
+    "createBlob": {
+      "method": "POST",
+      "params": {
+        "content": { "required": true, "type": "string" },
+        "encoding": { "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/git/blobs"
+    },
+    "createCommit": {
+      "method": "POST",
+      "params": {
+        "author": { "type": "object" },
+        "author.date": { "type": "string" },
+        "author.email": { "type": "string" },
+        "author.name": { "type": "string" },
+        "committer": { "type": "object" },
+        "committer.date": { "type": "string" },
+        "committer.email": { "type": "string" },
+        "committer.name": { "type": "string" },
+        "message": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "parents": { "required": true, "type": "string[]" },
+        "repo": { "required": true, "type": "string" },
+        "signature": { "type": "string" },
+        "tree": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/git/commits"
+    },
+    "createRef": {
+      "method": "POST",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "ref": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "sha": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/git/refs"
+    },
+    "createTag": {
+      "method": "POST",
+      "params": {
+        "message": { "required": true, "type": "string" },
+        "object": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "tag": { "required": true, "type": "string" },
+        "tagger": { "type": "object" },
+        "tagger.date": { "type": "string" },
+        "tagger.email": { "type": "string" },
+        "tagger.name": { "type": "string" },
+        "type": {
+          "enum": ["commit", "tree", "blob"],
+          "required": true,
+          "type": "string"
+        }
+      },
+      "url": "/repos/:owner/:repo/git/tags"
+    },
+    "createTree": {
+      "method": "POST",
+      "params": {
+        "base_tree": { "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "tree": { "required": true, "type": "object[]" },
+        "tree[].content": { "type": "string" },
+        "tree[].mode": {
+          "enum": ["100644", "100755", "040000", "160000", "120000"],
+          "type": "string"
+        },
+        "tree[].path": { "type": "string" },
+        "tree[].sha": { "allowNull": true, "type": "string" },
+        "tree[].type": { "enum": ["blob", "tree", "commit"], "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/git/trees"
+    },
+    "deleteRef": {
+      "method": "DELETE",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "ref": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/git/refs/:ref"
+    },
+    "getBlob": {
+      "method": "GET",
+      "params": {
+        "file_sha": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/git/blobs/:file_sha"
+    },
+    "getCommit": {
+      "method": "GET",
+      "params": {
+        "commit_sha": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/git/commits/:commit_sha"
+    },
+    "getRef": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "ref": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/git/ref/:ref"
+    },
+    "getTag": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "tag_sha": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/git/tags/:tag_sha"
+    },
+    "getTree": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "recursive": { "enum": ["1"], "type": "integer" },
+        "repo": { "required": true, "type": "string" },
+        "tree_sha": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/git/trees/:tree_sha"
+    },
+    "listMatchingRefs": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "ref": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/git/matching-refs/:ref"
+    },
+    "listRefs": {
+      "method": "GET",
+      "params": {
+        "namespace": { "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/git/refs/:namespace"
+    },
+    "updateRef": {
+      "method": "PATCH",
+      "params": {
+        "force": { "type": "boolean" },
+        "owner": { "required": true, "type": "string" },
+        "ref": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "sha": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/git/refs/:ref"
+    }
+  },
+  "gitignore": {
+    "getTemplate": {
+      "method": "GET",
+      "params": { "name": { "required": true, "type": "string" } },
+      "url": "/gitignore/templates/:name"
+    },
+    "listTemplates": {
+      "method": "GET",
+      "params": {},
+      "url": "/gitignore/templates"
+    }
+  },
+  "interactions": {
+    "addOrUpdateRestrictionsForOrg": {
+      "headers": { "accept": "application/vnd.github.sombra-preview+json" },
+      "method": "PUT",
+      "params": {
+        "limit": {
+          "enum": ["existing_users", "contributors_only", "collaborators_only"],
+          "required": true,
+          "type": "string"
+        },
+        "org": { "required": true, "type": "string" }
+      },
+      "url": "/orgs/:org/interaction-limits"
+    },
+    "addOrUpdateRestrictionsForRepo": {
+      "headers": { "accept": "application/vnd.github.sombra-preview+json" },
+      "method": "PUT",
+      "params": {
+        "limit": {
+          "enum": ["existing_users", "contributors_only", "collaborators_only"],
+          "required": true,
+          "type": "string"
+        },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/interaction-limits"
+    },
+    "getRestrictionsForOrg": {
+      "headers": { "accept": "application/vnd.github.sombra-preview+json" },
+      "method": "GET",
+      "params": { "org": { "required": true, "type": "string" } },
+      "url": "/orgs/:org/interaction-limits"
+    },
+    "getRestrictionsForRepo": {
+      "headers": { "accept": "application/vnd.github.sombra-preview+json" },
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/interaction-limits"
+    },
+    "removeRestrictionsForOrg": {
+      "headers": { "accept": "application/vnd.github.sombra-preview+json" },
+      "method": "DELETE",
+      "params": { "org": { "required": true, "type": "string" } },
+      "url": "/orgs/:org/interaction-limits"
+    },
+    "removeRestrictionsForRepo": {
+      "headers": { "accept": "application/vnd.github.sombra-preview+json" },
+      "method": "DELETE",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/interaction-limits"
+    }
+  },
+  "issues": {
+    "addAssignees": {
+      "method": "POST",
+      "params": {
+        "assignees": { "type": "string[]" },
+        "issue_number": { "required": true, "type": "integer" },
+        "number": {
+          "alias": "issue_number",
+          "deprecated": true,
+          "type": "integer"
+        },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/issues/:issue_number/assignees"
+    },
+    "addLabels": {
+      "method": "POST",
+      "params": {
+        "issue_number": { "required": true, "type": "integer" },
+        "labels": { "required": true, "type": "string[]" },
+        "number": {
+          "alias": "issue_number",
+          "deprecated": true,
+          "type": "integer"
+        },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/issues/:issue_number/labels"
+    },
+    "checkAssignee": {
+      "method": "GET",
+      "params": {
+        "assignee": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/assignees/:assignee"
+    },
+    "create": {
+      "method": "POST",
+      "params": {
+        "assignee": { "type": "string" },
+        "assignees": { "type": "string[]" },
+        "body": { "type": "string" },
+        "labels": { "type": "string[]" },
+        "milestone": { "type": "integer" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "title": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/issues"
+    },
+    "createComment": {
+      "method": "POST",
+      "params": {
+        "body": { "required": true, "type": "string" },
+        "issue_number": { "required": true, "type": "integer" },
+        "number": {
+          "alias": "issue_number",
+          "deprecated": true,
+          "type": "integer"
+        },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/issues/:issue_number/comments"
+    },
+    "createLabel": {
+      "method": "POST",
+      "params": {
+        "color": { "required": true, "type": "string" },
+        "description": { "type": "string" },
+        "name": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/labels"
+    },
+    "createMilestone": {
+      "method": "POST",
+      "params": {
+        "description": { "type": "string" },
+        "due_on": { "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "state": { "enum": ["open", "closed"], "type": "string" },
+        "title": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/milestones"
+    },
+    "deleteComment": {
+      "method": "DELETE",
+      "params": {
+        "comment_id": { "required": true, "type": "integer" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/issues/comments/:comment_id"
+    },
+    "deleteLabel": {
+      "method": "DELETE",
+      "params": {
+        "name": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/labels/:name"
+    },
+    "deleteMilestone": {
+      "method": "DELETE",
+      "params": {
+        "milestone_number": { "required": true, "type": "integer" },
+        "number": {
+          "alias": "milestone_number",
+          "deprecated": true,
+          "type": "integer"
+        },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/milestones/:milestone_number"
+    },
+    "get": {
+      "method": "GET",
+      "params": {
+        "issue_number": { "required": true, "type": "integer" },
+        "number": {
+          "alias": "issue_number",
+          "deprecated": true,
+          "type": "integer"
+        },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/issues/:issue_number"
+    },
+    "getComment": {
+      "method": "GET",
+      "params": {
+        "comment_id": { "required": true, "type": "integer" },
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/issues/comments/:comment_id"
+    },
+    "getEvent": {
+      "method": "GET",
+      "params": {
+        "event_id": { "required": true, "type": "integer" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/issues/events/:event_id"
+    },
+    "getLabel": {
+      "method": "GET",
+      "params": {
+        "name": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/labels/:name"
+    },
+    "getMilestone": {
+      "method": "GET",
+      "params": {
+        "milestone_number": { "required": true, "type": "integer" },
+        "number": {
+          "alias": "milestone_number",
+          "deprecated": true,
+          "type": "integer"
+        },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/milestones/:milestone_number"
+    },
+    "list": {
+      "method": "GET",
+      "params": {
+        "direction": { "enum": ["asc", "desc"], "type": "string" },
+        "filter": {
+          "enum": ["assigned", "created", "mentioned", "subscribed", "all"],
+          "type": "string"
+        },
+        "labels": { "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "since": { "type": "string" },
+        "sort": {
+          "enum": ["created", "updated", "comments"],
+          "type": "string"
+        },
+        "state": { "enum": ["open", "closed", "all"], "type": "string" }
+      },
+      "url": "/issues"
+    },
+    "listAssignees": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/assignees"
+    },
+    "listComments": {
+      "method": "GET",
+      "params": {
+        "issue_number": { "required": true, "type": "integer" },
+        "number": {
+          "alias": "issue_number",
+          "deprecated": true,
+          "type": "integer"
+        },
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "repo": { "required": true, "type": "string" },
+        "since": { "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/issues/:issue_number/comments"
+    },
+    "listCommentsForRepo": {
+      "method": "GET",
+      "params": {
+        "direction": { "enum": ["asc", "desc"], "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "since": { "type": "string" },
+        "sort": { "enum": ["created", "updated"], "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/issues/comments"
+    },
+    "listEvents": {
+      "method": "GET",
+      "params": {
+        "issue_number": { "required": true, "type": "integer" },
+        "number": {
+          "alias": "issue_number",
+          "deprecated": true,
+          "type": "integer"
+        },
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/issues/:issue_number/events"
+    },
+    "listEventsForRepo": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/issues/events"
+    },
+    "listEventsForTimeline": {
+      "headers": {
+        "accept": "application/vnd.github.mockingbird-preview+json"
+      },
+      "method": "GET",
+      "params": {
+        "issue_number": { "required": true, "type": "integer" },
+        "number": {
+          "alias": "issue_number",
+          "deprecated": true,
+          "type": "integer"
+        },
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/issues/:issue_number/timeline"
+    },
+    "listForAuthenticatedUser": {
+      "method": "GET",
+      "params": {
+        "direction": { "enum": ["asc", "desc"], "type": "string" },
+        "filter": {
+          "enum": ["assigned", "created", "mentioned", "subscribed", "all"],
+          "type": "string"
+        },
+        "labels": { "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "since": { "type": "string" },
+        "sort": {
+          "enum": ["created", "updated", "comments"],
+          "type": "string"
+        },
+        "state": { "enum": ["open", "closed", "all"], "type": "string" }
+      },
+      "url": "/user/issues"
+    },
+    "listForOrg": {
+      "method": "GET",
+      "params": {
+        "direction": { "enum": ["asc", "desc"], "type": "string" },
+        "filter": {
+          "enum": ["assigned", "created", "mentioned", "subscribed", "all"],
+          "type": "string"
+        },
+        "labels": { "type": "string" },
+        "org": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "since": { "type": "string" },
+        "sort": {
+          "enum": ["created", "updated", "comments"],
+          "type": "string"
+        },
+        "state": { "enum": ["open", "closed", "all"], "type": "string" }
+      },
+      "url": "/orgs/:org/issues"
+    },
+    "listForRepo": {
+      "method": "GET",
+      "params": {
+        "assignee": { "type": "string" },
+        "creator": { "type": "string" },
+        "direction": { "enum": ["asc", "desc"], "type": "string" },
+        "labels": { "type": "string" },
+        "mentioned": { "type": "string" },
+        "milestone": { "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "repo": { "required": true, "type": "string" },
+        "since": { "type": "string" },
+        "sort": {
+          "enum": ["created", "updated", "comments"],
+          "type": "string"
+        },
+        "state": { "enum": ["open", "closed", "all"], "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/issues"
+    },
+    "listLabelsForMilestone": {
+      "method": "GET",
+      "params": {
+        "milestone_number": { "required": true, "type": "integer" },
+        "number": {
+          "alias": "milestone_number",
+          "deprecated": true,
+          "type": "integer"
+        },
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/milestones/:milestone_number/labels"
+    },
+    "listLabelsForRepo": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/labels"
+    },
+    "listLabelsOnIssue": {
+      "method": "GET",
+      "params": {
+        "issue_number": { "required": true, "type": "integer" },
+        "number": {
+          "alias": "issue_number",
+          "deprecated": true,
+          "type": "integer"
+        },
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/issues/:issue_number/labels"
+    },
+    "listMilestonesForRepo": {
+      "method": "GET",
+      "params": {
+        "direction": { "enum": ["asc", "desc"], "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "repo": { "required": true, "type": "string" },
+        "sort": { "enum": ["due_on", "completeness"], "type": "string" },
+        "state": { "enum": ["open", "closed", "all"], "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/milestones"
+    },
+    "lock": {
+      "method": "PUT",
+      "params": {
+        "issue_number": { "required": true, "type": "integer" },
+        "lock_reason": {
+          "enum": ["off-topic", "too heated", "resolved", "spam"],
+          "type": "string"
+        },
+        "number": {
+          "alias": "issue_number",
+          "deprecated": true,
+          "type": "integer"
+        },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/issues/:issue_number/lock"
+    },
+    "removeAssignees": {
+      "method": "DELETE",
+      "params": {
+        "assignees": { "type": "string[]" },
+        "issue_number": { "required": true, "type": "integer" },
+        "number": {
+          "alias": "issue_number",
+          "deprecated": true,
+          "type": "integer"
+        },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/issues/:issue_number/assignees"
+    },
+    "removeLabel": {
+      "method": "DELETE",
+      "params": {
+        "issue_number": { "required": true, "type": "integer" },
+        "name": { "required": true, "type": "string" },
+        "number": {
+          "alias": "issue_number",
+          "deprecated": true,
+          "type": "integer"
+        },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/issues/:issue_number/labels/:name"
+    },
+    "removeLabels": {
+      "method": "DELETE",
+      "params": {
+        "issue_number": { "required": true, "type": "integer" },
+        "number": {
+          "alias": "issue_number",
+          "deprecated": true,
+          "type": "integer"
+        },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/issues/:issue_number/labels"
+    },
+    "replaceLabels": {
+      "method": "PUT",
+      "params": {
+        "issue_number": { "required": true, "type": "integer" },
+        "labels": { "type": "string[]" },
+        "number": {
+          "alias": "issue_number",
+          "deprecated": true,
+          "type": "integer"
+        },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/issues/:issue_number/labels"
+    },
+    "unlock": {
+      "method": "DELETE",
+      "params": {
+        "issue_number": { "required": true, "type": "integer" },
+        "number": {
+          "alias": "issue_number",
+          "deprecated": true,
+          "type": "integer"
+        },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/issues/:issue_number/lock"
+    },
+    "update": {
+      "method": "PATCH",
+      "params": {
+        "assignee": { "type": "string" },
+        "assignees": { "type": "string[]" },
+        "body": { "type": "string" },
+        "issue_number": { "required": true, "type": "integer" },
+        "labels": { "type": "string[]" },
+        "milestone": { "allowNull": true, "type": "integer" },
+        "number": {
+          "alias": "issue_number",
+          "deprecated": true,
+          "type": "integer"
+        },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "state": { "enum": ["open", "closed"], "type": "string" },
+        "title": { "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/issues/:issue_number"
+    },
+    "updateComment": {
+      "method": "PATCH",
+      "params": {
+        "body": { "required": true, "type": "string" },
+        "comment_id": { "required": true, "type": "integer" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/issues/comments/:comment_id"
+    },
+    "updateLabel": {
+      "method": "PATCH",
+      "params": {
+        "color": { "type": "string" },
+        "current_name": { "required": true, "type": "string" },
+        "description": { "type": "string" },
+        "name": { "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/labels/:current_name"
+    },
+    "updateMilestone": {
+      "method": "PATCH",
+      "params": {
+        "description": { "type": "string" },
+        "due_on": { "type": "string" },
+        "milestone_number": { "required": true, "type": "integer" },
+        "number": {
+          "alias": "milestone_number",
+          "deprecated": true,
+          "type": "integer"
+        },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "state": { "enum": ["open", "closed"], "type": "string" },
+        "title": { "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/milestones/:milestone_number"
+    }
+  },
+  "licenses": {
+    "get": {
+      "method": "GET",
+      "params": { "license": { "required": true, "type": "string" } },
+      "url": "/licenses/:license"
+    },
+    "getForRepo": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/license"
+    },
+    "list": {
+      "deprecated": "octokit.licenses.list() has been renamed to octokit.licenses.listCommonlyUsed() (2019-03-05)",
+      "method": "GET",
+      "params": {},
+      "url": "/licenses"
+    },
+    "listCommonlyUsed": { "method": "GET", "params": {}, "url": "/licenses" }
+  },
+  "markdown": {
+    "render": {
+      "method": "POST",
+      "params": {
+        "context": { "type": "string" },
+        "mode": { "enum": ["markdown", "gfm"], "type": "string" },
+        "text": { "required": true, "type": "string" }
+      },
+      "url": "/markdown"
+    },
+    "renderRaw": {
+      "headers": { "content-type": "text/plain; charset=utf-8" },
+      "method": "POST",
+      "params": {
+        "data": { "mapTo": "data", "required": true, "type": "string" }
+      },
+      "url": "/markdown/raw"
+    }
+  },
+  "meta": { "get": { "method": "GET", "params": {}, "url": "/meta" } },
+  "migrations": {
+    "cancelImport": {
+      "headers": {
+        "accept": "application/vnd.github.barred-rock-preview+json"
+      },
+      "method": "DELETE",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/import"
+    },
+    "deleteArchiveForAuthenticatedUser": {
+      "headers": { "accept": "application/vnd.github.wyandotte-preview+json" },
+      "method": "DELETE",
+      "params": { "migration_id": { "required": true, "type": "integer" } },
+      "url": "/user/migrations/:migration_id/archive"
+    },
+    "deleteArchiveForOrg": {
+      "headers": { "accept": "application/vnd.github.wyandotte-preview+json" },
+      "method": "DELETE",
+      "params": {
+        "migration_id": { "required": true, "type": "integer" },
+        "org": { "required": true, "type": "string" }
+      },
+      "url": "/orgs/:org/migrations/:migration_id/archive"
+    },
+    "getArchiveForAuthenticatedUser": {
+      "headers": { "accept": "application/vnd.github.wyandotte-preview+json" },
+      "method": "GET",
+      "params": { "migration_id": { "required": true, "type": "integer" } },
+      "url": "/user/migrations/:migration_id/archive"
+    },
+    "getArchiveForOrg": {
+      "headers": { "accept": "application/vnd.github.wyandotte-preview+json" },
+      "method": "GET",
+      "params": {
+        "migration_id": { "required": true, "type": "integer" },
+        "org": { "required": true, "type": "string" }
+      },
+      "url": "/orgs/:org/migrations/:migration_id/archive"
+    },
+    "getCommitAuthors": {
+      "headers": {
+        "accept": "application/vnd.github.barred-rock-preview+json"
+      },
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "since": { "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/import/authors"
+    },
+    "getImportProgress": {
+      "headers": {
+        "accept": "application/vnd.github.barred-rock-preview+json"
+      },
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/import"
+    },
+    "getLargeFiles": {
+      "headers": {
+        "accept": "application/vnd.github.barred-rock-preview+json"
+      },
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/import/large_files"
+    },
+    "getStatusForAuthenticatedUser": {
+      "headers": { "accept": "application/vnd.github.wyandotte-preview+json" },
+      "method": "GET",
+      "params": { "migration_id": { "required": true, "type": "integer" } },
+      "url": "/user/migrations/:migration_id"
+    },
+    "getStatusForOrg": {
+      "headers": { "accept": "application/vnd.github.wyandotte-preview+json" },
+      "method": "GET",
+      "params": {
+        "migration_id": { "required": true, "type": "integer" },
+        "org": { "required": true, "type": "string" }
+      },
+      "url": "/orgs/:org/migrations/:migration_id"
+    },
+    "listForAuthenticatedUser": {
+      "headers": { "accept": "application/vnd.github.wyandotte-preview+json" },
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" }
+      },
+      "url": "/user/migrations"
+    },
+    "listForOrg": {
+      "headers": { "accept": "application/vnd.github.wyandotte-preview+json" },
+      "method": "GET",
+      "params": {
+        "org": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" }
+      },
+      "url": "/orgs/:org/migrations"
+    },
+    "mapCommitAuthor": {
+      "headers": {
+        "accept": "application/vnd.github.barred-rock-preview+json"
+      },
+      "method": "PATCH",
+      "params": {
+        "author_id": { "required": true, "type": "integer" },
+        "email": { "type": "string" },
+        "name": { "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/import/authors/:author_id"
+    },
+    "setLfsPreference": {
+      "headers": {
+        "accept": "application/vnd.github.barred-rock-preview+json"
+      },
+      "method": "PATCH",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "use_lfs": {
+          "enum": ["opt_in", "opt_out"],
+          "required": true,
+          "type": "string"
+        }
+      },
+      "url": "/repos/:owner/:repo/import/lfs"
+    },
+    "startForAuthenticatedUser": {
+      "method": "POST",
+      "params": {
+        "exclude_attachments": { "type": "boolean" },
+        "lock_repositories": { "type": "boolean" },
+        "repositories": { "required": true, "type": "string[]" }
+      },
+      "url": "/user/migrations"
+    },
+    "startForOrg": {
+      "method": "POST",
+      "params": {
+        "exclude_attachments": { "type": "boolean" },
+        "lock_repositories": { "type": "boolean" },
+        "org": { "required": true, "type": "string" },
+        "repositories": { "required": true, "type": "string[]" }
+      },
+      "url": "/orgs/:org/migrations"
+    },
+    "startImport": {
+      "headers": {
+        "accept": "application/vnd.github.barred-rock-preview+json"
+      },
+      "method": "PUT",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "tfvc_project": { "type": "string" },
+        "vcs": {
+          "enum": ["subversion", "git", "mercurial", "tfvc"],
+          "type": "string"
+        },
+        "vcs_password": { "type": "string" },
+        "vcs_url": { "required": true, "type": "string" },
+        "vcs_username": { "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/import"
+    },
+    "unlockRepoForAuthenticatedUser": {
+      "headers": { "accept": "application/vnd.github.wyandotte-preview+json" },
+      "method": "DELETE",
+      "params": {
+        "migration_id": { "required": true, "type": "integer" },
+        "repo_name": { "required": true, "type": "string" }
+      },
+      "url": "/user/migrations/:migration_id/repos/:repo_name/lock"
+    },
+    "unlockRepoForOrg": {
+      "headers": { "accept": "application/vnd.github.wyandotte-preview+json" },
+      "method": "DELETE",
+      "params": {
+        "migration_id": { "required": true, "type": "integer" },
+        "org": { "required": true, "type": "string" },
+        "repo_name": { "required": true, "type": "string" }
+      },
+      "url": "/orgs/:org/migrations/:migration_id/repos/:repo_name/lock"
+    },
+    "updateImport": {
+      "headers": {
+        "accept": "application/vnd.github.barred-rock-preview+json"
+      },
+      "method": "PATCH",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "vcs_password": { "type": "string" },
+        "vcs_username": { "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/import"
+    }
+  },
+  "oauthAuthorizations": {
+    "checkAuthorization": {
+      "deprecated": "octokit.oauthAuthorizations.checkAuthorization() has been renamed to octokit.apps.checkAuthorization() (2019-11-05)",
+      "method": "GET",
+      "params": {
+        "access_token": { "required": true, "type": "string" },
+        "client_id": { "required": true, "type": "string" }
+      },
+      "url": "/applications/:client_id/tokens/:access_token"
+    },
+    "createAuthorization": {
+      "deprecated": "octokit.oauthAuthorizations.createAuthorization() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#create-a-new-authorization",
+      "method": "POST",
+      "params": {
+        "client_id": { "type": "string" },
+        "client_secret": { "type": "string" },
+        "fingerprint": { "type": "string" },
+        "note": { "required": true, "type": "string" },
+        "note_url": { "type": "string" },
+        "scopes": { "type": "string[]" }
+      },
+      "url": "/authorizations"
+    },
+    "deleteAuthorization": {
+      "deprecated": "octokit.oauthAuthorizations.deleteAuthorization() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#delete-an-authorization",
+      "method": "DELETE",
+      "params": { "authorization_id": { "required": true, "type": "integer" } },
+      "url": "/authorizations/:authorization_id"
+    },
+    "deleteGrant": {
+      "deprecated": "octokit.oauthAuthorizations.deleteGrant() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#delete-a-grant",
+      "method": "DELETE",
+      "params": { "grant_id": { "required": true, "type": "integer" } },
+      "url": "/applications/grants/:grant_id"
+    },
+    "getAuthorization": {
+      "deprecated": "octokit.oauthAuthorizations.getAuthorization() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#get-a-single-authorization",
+      "method": "GET",
+      "params": { "authorization_id": { "required": true, "type": "integer" } },
+      "url": "/authorizations/:authorization_id"
+    },
+    "getGrant": {
+      "deprecated": "octokit.oauthAuthorizations.getGrant() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#get-a-single-grant",
+      "method": "GET",
+      "params": { "grant_id": { "required": true, "type": "integer" } },
+      "url": "/applications/grants/:grant_id"
+    },
+    "getOrCreateAuthorizationForApp": {
+      "deprecated": "octokit.oauthAuthorizations.getOrCreateAuthorizationForApp() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#get-or-create-an-authorization-for-a-specific-app",
+      "method": "PUT",
+      "params": {
+        "client_id": { "required": true, "type": "string" },
+        "client_secret": { "required": true, "type": "string" },
+        "fingerprint": { "type": "string" },
+        "note": { "type": "string" },
+        "note_url": { "type": "string" },
+        "scopes": { "type": "string[]" }
+      },
+      "url": "/authorizations/clients/:client_id"
+    },
+    "getOrCreateAuthorizationForAppAndFingerprint": {
+      "deprecated": "octokit.oauthAuthorizations.getOrCreateAuthorizationForAppAndFingerprint() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#get-or-create-an-authorization-for-a-specific-app-and-fingerprint",
+      "method": "PUT",
+      "params": {
+        "client_id": { "required": true, "type": "string" },
+        "client_secret": { "required": true, "type": "string" },
+        "fingerprint": { "required": true, "type": "string" },
+        "note": { "type": "string" },
+        "note_url": { "type": "string" },
+        "scopes": { "type": "string[]" }
+      },
+      "url": "/authorizations/clients/:client_id/:fingerprint"
+    },
+    "getOrCreateAuthorizationForAppFingerprint": {
+      "deprecated": "octokit.oauthAuthorizations.getOrCreateAuthorizationForAppFingerprint() has been renamed to octokit.oauthAuthorizations.getOrCreateAuthorizationForAppAndFingerprint() (2018-12-27)",
+      "method": "PUT",
+      "params": {
+        "client_id": { "required": true, "type": "string" },
+        "client_secret": { "required": true, "type": "string" },
+        "fingerprint": { "required": true, "type": "string" },
+        "note": { "type": "string" },
+        "note_url": { "type": "string" },
+        "scopes": { "type": "string[]" }
+      },
+      "url": "/authorizations/clients/:client_id/:fingerprint"
+    },
+    "listAuthorizations": {
+      "deprecated": "octokit.oauthAuthorizations.listAuthorizations() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#list-your-authorizations",
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" }
+      },
+      "url": "/authorizations"
+    },
+    "listGrants": {
+      "deprecated": "octokit.oauthAuthorizations.listGrants() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#list-your-grants",
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" }
+      },
+      "url": "/applications/grants"
+    },
+    "resetAuthorization": {
+      "deprecated": "octokit.oauthAuthorizations.resetAuthorization() has been renamed to octokit.apps.resetAuthorization() (2019-11-05)",
+      "method": "POST",
+      "params": {
+        "access_token": { "required": true, "type": "string" },
+        "client_id": { "required": true, "type": "string" }
+      },
+      "url": "/applications/:client_id/tokens/:access_token"
+    },
+    "revokeAuthorizationForApplication": {
+      "deprecated": "octokit.oauthAuthorizations.revokeAuthorizationForApplication() has been renamed to octokit.apps.revokeAuthorizationForApplication() (2019-11-05)",
+      "method": "DELETE",
+      "params": {
+        "access_token": { "required": true, "type": "string" },
+        "client_id": { "required": true, "type": "string" }
+      },
+      "url": "/applications/:client_id/tokens/:access_token"
+    },
+    "revokeGrantForApplication": {
+      "deprecated": "octokit.oauthAuthorizations.revokeGrantForApplication() has been renamed to octokit.apps.revokeGrantForApplication() (2019-11-05)",
+      "method": "DELETE",
+      "params": {
+        "access_token": { "required": true, "type": "string" },
+        "client_id": { "required": true, "type": "string" }
+      },
+      "url": "/applications/:client_id/grants/:access_token"
+    },
+    "updateAuthorization": {
+      "deprecated": "octokit.oauthAuthorizations.updateAuthorization() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#update-an-existing-authorization",
+      "method": "PATCH",
+      "params": {
+        "add_scopes": { "type": "string[]" },
+        "authorization_id": { "required": true, "type": "integer" },
+        "fingerprint": { "type": "string" },
+        "note": { "type": "string" },
+        "note_url": { "type": "string" },
+        "remove_scopes": { "type": "string[]" },
+        "scopes": { "type": "string[]" }
+      },
+      "url": "/authorizations/:authorization_id"
+    }
+  },
+  "orgs": {
+    "addOrUpdateMembership": {
+      "method": "PUT",
+      "params": {
+        "org": { "required": true, "type": "string" },
+        "role": { "enum": ["admin", "member"], "type": "string" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/orgs/:org/memberships/:username"
+    },
+    "blockUser": {
+      "method": "PUT",
+      "params": {
+        "org": { "required": true, "type": "string" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/orgs/:org/blocks/:username"
+    },
+    "checkBlockedUser": {
+      "method": "GET",
+      "params": {
+        "org": { "required": true, "type": "string" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/orgs/:org/blocks/:username"
+    },
+    "checkMembership": {
+      "method": "GET",
+      "params": {
+        "org": { "required": true, "type": "string" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/orgs/:org/members/:username"
+    },
+    "checkPublicMembership": {
+      "method": "GET",
+      "params": {
+        "org": { "required": true, "type": "string" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/orgs/:org/public_members/:username"
+    },
+    "concealMembership": {
+      "method": "DELETE",
+      "params": {
+        "org": { "required": true, "type": "string" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/orgs/:org/public_members/:username"
+    },
+    "convertMemberToOutsideCollaborator": {
+      "method": "PUT",
+      "params": {
+        "org": { "required": true, "type": "string" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/orgs/:org/outside_collaborators/:username"
+    },
+    "createHook": {
+      "method": "POST",
+      "params": {
+        "active": { "type": "boolean" },
+        "config": { "required": true, "type": "object" },
+        "config.content_type": { "type": "string" },
+        "config.insecure_ssl": { "type": "string" },
+        "config.secret": { "type": "string" },
+        "config.url": { "required": true, "type": "string" },
+        "events": { "type": "string[]" },
+        "name": { "required": true, "type": "string" },
+        "org": { "required": true, "type": "string" }
+      },
+      "url": "/orgs/:org/hooks"
+    },
+    "createInvitation": {
+      "method": "POST",
+      "params": {
+        "email": { "type": "string" },
+        "invitee_id": { "type": "integer" },
+        "org": { "required": true, "type": "string" },
+        "role": {
+          "enum": ["admin", "direct_member", "billing_manager"],
+          "type": "string"
+        },
+        "team_ids": { "type": "integer[]" }
+      },
+      "url": "/orgs/:org/invitations"
+    },
+    "deleteHook": {
+      "method": "DELETE",
+      "params": {
+        "hook_id": { "required": true, "type": "integer" },
+        "org": { "required": true, "type": "string" }
+      },
+      "url": "/orgs/:org/hooks/:hook_id"
+    },
+    "get": {
+      "method": "GET",
+      "params": { "org": { "required": true, "type": "string" } },
+      "url": "/orgs/:org"
+    },
+    "getHook": {
+      "method": "GET",
+      "params": {
+        "hook_id": { "required": true, "type": "integer" },
+        "org": { "required": true, "type": "string" }
+      },
+      "url": "/orgs/:org/hooks/:hook_id"
+    },
+    "getMembership": {
+      "method": "GET",
+      "params": {
+        "org": { "required": true, "type": "string" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/orgs/:org/memberships/:username"
+    },
+    "getMembershipForAuthenticatedUser": {
+      "method": "GET",
+      "params": { "org": { "required": true, "type": "string" } },
+      "url": "/user/memberships/orgs/:org"
+    },
+    "list": {
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "since": { "type": "string" }
+      },
+      "url": "/organizations"
+    },
+    "listBlockedUsers": {
+      "method": "GET",
+      "params": { "org": { "required": true, "type": "string" } },
+      "url": "/orgs/:org/blocks"
+    },
+    "listForAuthenticatedUser": {
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" }
+      },
+      "url": "/user/orgs"
+    },
+    "listForUser": {
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/users/:username/orgs"
+    },
+    "listHooks": {
+      "method": "GET",
+      "params": {
+        "org": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" }
+      },
+      "url": "/orgs/:org/hooks"
+    },
+    "listInstallations": {
+      "headers": {
+        "accept": "application/vnd.github.machine-man-preview+json"
+      },
+      "method": "GET",
+      "params": {
+        "org": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" }
+      },
+      "url": "/orgs/:org/installations"
+    },
+    "listInvitationTeams": {
+      "method": "GET",
+      "params": {
+        "invitation_id": { "required": true, "type": "integer" },
+        "org": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" }
+      },
+      "url": "/orgs/:org/invitations/:invitation_id/teams"
+    },
+    "listMembers": {
+      "method": "GET",
+      "params": {
+        "filter": { "enum": ["2fa_disabled", "all"], "type": "string" },
+        "org": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "role": { "enum": ["all", "admin", "member"], "type": "string" }
+      },
+      "url": "/orgs/:org/members"
+    },
+    "listMemberships": {
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "state": { "enum": ["active", "pending"], "type": "string" }
+      },
+      "url": "/user/memberships/orgs"
+    },
+    "listOutsideCollaborators": {
+      "method": "GET",
+      "params": {
+        "filter": { "enum": ["2fa_disabled", "all"], "type": "string" },
+        "org": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" }
+      },
+      "url": "/orgs/:org/outside_collaborators"
+    },
+    "listPendingInvitations": {
+      "method": "GET",
+      "params": {
+        "org": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" }
+      },
+      "url": "/orgs/:org/invitations"
+    },
+    "listPublicMembers": {
+      "method": "GET",
+      "params": {
+        "org": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" }
+      },
+      "url": "/orgs/:org/public_members"
+    },
+    "pingHook": {
+      "method": "POST",
+      "params": {
+        "hook_id": { "required": true, "type": "integer" },
+        "org": { "required": true, "type": "string" }
+      },
+      "url": "/orgs/:org/hooks/:hook_id/pings"
+    },
+    "publicizeMembership": {
+      "method": "PUT",
+      "params": {
+        "org": { "required": true, "type": "string" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/orgs/:org/public_members/:username"
+    },
+    "removeMember": {
+      "method": "DELETE",
+      "params": {
+        "org": { "required": true, "type": "string" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/orgs/:org/members/:username"
+    },
+    "removeMembership": {
+      "method": "DELETE",
+      "params": {
+        "org": { "required": true, "type": "string" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/orgs/:org/memberships/:username"
+    },
+    "removeOutsideCollaborator": {
+      "method": "DELETE",
+      "params": {
+        "org": { "required": true, "type": "string" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/orgs/:org/outside_collaborators/:username"
+    },
+    "unblockUser": {
+      "method": "DELETE",
+      "params": {
+        "org": { "required": true, "type": "string" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/orgs/:org/blocks/:username"
+    },
+    "update": {
+      "method": "PATCH",
+      "params": {
+        "billing_email": { "type": "string" },
+        "company": { "type": "string" },
+        "default_repository_permission": {
+          "enum": ["read", "write", "admin", "none"],
+          "type": "string"
+        },
+        "description": { "type": "string" },
+        "email": { "type": "string" },
+        "has_organization_projects": { "type": "boolean" },
+        "has_repository_projects": { "type": "boolean" },
+        "location": { "type": "string" },
+        "members_allowed_repository_creation_type": {
+          "enum": ["all", "private", "none"],
+          "type": "string"
+        },
+        "members_can_create_repositories": { "type": "boolean" },
+        "name": { "type": "string" },
+        "org": { "required": true, "type": "string" }
+      },
+      "url": "/orgs/:org"
+    },
+    "updateHook": {
+      "method": "PATCH",
+      "params": {
+        "active": { "type": "boolean" },
+        "config": { "type": "object" },
+        "config.content_type": { "type": "string" },
+        "config.insecure_ssl": { "type": "string" },
+        "config.secret": { "type": "string" },
+        "config.url": { "required": true, "type": "string" },
+        "events": { "type": "string[]" },
+        "hook_id": { "required": true, "type": "integer" },
+        "org": { "required": true, "type": "string" }
+      },
+      "url": "/orgs/:org/hooks/:hook_id"
+    },
+    "updateMembership": {
+      "method": "PATCH",
+      "params": {
+        "org": { "required": true, "type": "string" },
+        "state": { "enum": ["active"], "required": true, "type": "string" }
+      },
+      "url": "/user/memberships/orgs/:org"
+    }
+  },
+  "projects": {
+    "addCollaborator": {
+      "headers": { "accept": "application/vnd.github.inertia-preview+json" },
+      "method": "PUT",
+      "params": {
+        "permission": { "enum": ["read", "write", "admin"], "type": "string" },
+        "project_id": { "required": true, "type": "integer" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/projects/:project_id/collaborators/:username"
+    },
+    "createCard": {
+      "headers": { "accept": "application/vnd.github.inertia-preview+json" },
+      "method": "POST",
+      "params": {
+        "column_id": { "required": true, "type": "integer" },
+        "content_id": { "type": "integer" },
+        "content_type": { "type": "string" },
+        "note": { "type": "string" }
+      },
+      "url": "/projects/columns/:column_id/cards"
+    },
+    "createColumn": {
+      "headers": { "accept": "application/vnd.github.inertia-preview+json" },
+      "method": "POST",
+      "params": {
+        "name": { "required": true, "type": "string" },
+        "project_id": { "required": true, "type": "integer" }
+      },
+      "url": "/projects/:project_id/columns"
+    },
+    "createForAuthenticatedUser": {
+      "headers": { "accept": "application/vnd.github.inertia-preview+json" },
+      "method": "POST",
+      "params": {
+        "body": { "type": "string" },
+        "name": { "required": true, "type": "string" }
+      },
+      "url": "/user/projects"
+    },
+    "createForOrg": {
+      "headers": { "accept": "application/vnd.github.inertia-preview+json" },
+      "method": "POST",
+      "params": {
+        "body": { "type": "string" },
+        "name": { "required": true, "type": "string" },
+        "org": { "required": true, "type": "string" }
+      },
+      "url": "/orgs/:org/projects"
+    },
+    "createForRepo": {
+      "headers": { "accept": "application/vnd.github.inertia-preview+json" },
+      "method": "POST",
+      "params": {
+        "body": { "type": "string" },
+        "name": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/projects"
+    },
+    "delete": {
+      "headers": { "accept": "application/vnd.github.inertia-preview+json" },
+      "method": "DELETE",
+      "params": { "project_id": { "required": true, "type": "integer" } },
+      "url": "/projects/:project_id"
+    },
+    "deleteCard": {
+      "headers": { "accept": "application/vnd.github.inertia-preview+json" },
+      "method": "DELETE",
+      "params": { "card_id": { "required": true, "type": "integer" } },
+      "url": "/projects/columns/cards/:card_id"
+    },
+    "deleteColumn": {
+      "headers": { "accept": "application/vnd.github.inertia-preview+json" },
+      "method": "DELETE",
+      "params": { "column_id": { "required": true, "type": "integer" } },
+      "url": "/projects/columns/:column_id"
+    },
+    "get": {
+      "headers": { "accept": "application/vnd.github.inertia-preview+json" },
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "project_id": { "required": true, "type": "integer" }
+      },
+      "url": "/projects/:project_id"
+    },
+    "getCard": {
+      "headers": { "accept": "application/vnd.github.inertia-preview+json" },
+      "method": "GET",
+      "params": { "card_id": { "required": true, "type": "integer" } },
+      "url": "/projects/columns/cards/:card_id"
+    },
+    "getColumn": {
+      "headers": { "accept": "application/vnd.github.inertia-preview+json" },
+      "method": "GET",
+      "params": { "column_id": { "required": true, "type": "integer" } },
+      "url": "/projects/columns/:column_id"
+    },
+    "listCards": {
+      "headers": { "accept": "application/vnd.github.inertia-preview+json" },
+      "method": "GET",
+      "params": {
+        "archived_state": {
+          "enum": ["all", "archived", "not_archived"],
+          "type": "string"
+        },
+        "column_id": { "required": true, "type": "integer" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" }
+      },
+      "url": "/projects/columns/:column_id/cards"
+    },
+    "listCollaborators": {
+      "headers": { "accept": "application/vnd.github.inertia-preview+json" },
+      "method": "GET",
+      "params": {
+        "affiliation": {
+          "enum": ["outside", "direct", "all"],
+          "type": "string"
+        },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "project_id": { "required": true, "type": "integer" }
+      },
+      "url": "/projects/:project_id/collaborators"
+    },
+    "listColumns": {
+      "headers": { "accept": "application/vnd.github.inertia-preview+json" },
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "project_id": { "required": true, "type": "integer" }
+      },
+      "url": "/projects/:project_id/columns"
+    },
+    "listForOrg": {
+      "headers": { "accept": "application/vnd.github.inertia-preview+json" },
+      "method": "GET",
+      "params": {
+        "org": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "state": { "enum": ["open", "closed", "all"], "type": "string" }
+      },
+      "url": "/orgs/:org/projects"
+    },
+    "listForRepo": {
+      "headers": { "accept": "application/vnd.github.inertia-preview+json" },
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "repo": { "required": true, "type": "string" },
+        "state": { "enum": ["open", "closed", "all"], "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/projects"
+    },
+    "listForUser": {
+      "headers": { "accept": "application/vnd.github.inertia-preview+json" },
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "state": { "enum": ["open", "closed", "all"], "type": "string" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/users/:username/projects"
+    },
+    "moveCard": {
+      "headers": { "accept": "application/vnd.github.inertia-preview+json" },
+      "method": "POST",
+      "params": {
+        "card_id": { "required": true, "type": "integer" },
+        "column_id": { "type": "integer" },
+        "position": {
+          "required": true,
+          "type": "string",
+          "validation": "^(top|bottom|after:\\d+)$"
+        }
+      },
+      "url": "/projects/columns/cards/:card_id/moves"
+    },
+    "moveColumn": {
+      "headers": { "accept": "application/vnd.github.inertia-preview+json" },
+      "method": "POST",
+      "params": {
+        "column_id": { "required": true, "type": "integer" },
+        "position": {
+          "required": true,
+          "type": "string",
+          "validation": "^(first|last|after:\\d+)$"
+        }
+      },
+      "url": "/projects/columns/:column_id/moves"
+    },
+    "removeCollaborator": {
+      "headers": { "accept": "application/vnd.github.inertia-preview+json" },
+      "method": "DELETE",
+      "params": {
+        "project_id": { "required": true, "type": "integer" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/projects/:project_id/collaborators/:username"
+    },
+    "reviewUserPermissionLevel": {
+      "headers": { "accept": "application/vnd.github.inertia-preview+json" },
+      "method": "GET",
+      "params": {
+        "project_id": { "required": true, "type": "integer" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/projects/:project_id/collaborators/:username/permission"
+    },
+    "update": {
+      "headers": { "accept": "application/vnd.github.inertia-preview+json" },
+      "method": "PATCH",
+      "params": {
+        "body": { "type": "string" },
+        "name": { "type": "string" },
+        "organization_permission": { "type": "string" },
+        "private": { "type": "boolean" },
+        "project_id": { "required": true, "type": "integer" },
+        "state": { "enum": ["open", "closed"], "type": "string" }
+      },
+      "url": "/projects/:project_id"
+    },
+    "updateCard": {
+      "headers": { "accept": "application/vnd.github.inertia-preview+json" },
+      "method": "PATCH",
+      "params": {
+        "archived": { "type": "boolean" },
+        "card_id": { "required": true, "type": "integer" },
+        "note": { "type": "string" }
+      },
+      "url": "/projects/columns/cards/:card_id"
+    },
+    "updateColumn": {
+      "headers": { "accept": "application/vnd.github.inertia-preview+json" },
+      "method": "PATCH",
+      "params": {
+        "column_id": { "required": true, "type": "integer" },
+        "name": { "required": true, "type": "string" }
+      },
+      "url": "/projects/columns/:column_id"
+    }
+  },
+  "pulls": {
+    "checkIfMerged": {
+      "method": "GET",
+      "params": {
+        "number": {
+          "alias": "pull_number",
+          "deprecated": true,
+          "type": "integer"
+        },
+        "owner": { "required": true, "type": "string" },
+        "pull_number": { "required": true, "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/pulls/:pull_number/merge"
+    },
+    "create": {
+      "method": "POST",
+      "params": {
+        "base": { "required": true, "type": "string" },
+        "body": { "type": "string" },
+        "draft": { "type": "boolean" },
+        "head": { "required": true, "type": "string" },
+        "maintainer_can_modify": { "type": "boolean" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "title": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/pulls"
+    },
+    "createComment": {
+      "method": "POST",
+      "params": {
+        "body": { "required": true, "type": "string" },
+        "commit_id": { "required": true, "type": "string" },
+        "in_reply_to": {
+          "deprecated": true,
+          "description": "The comment ID to reply to. **Note**: This must be the ID of a top-level comment, not a reply to that comment. Replies to replies are not supported.",
+          "type": "integer"
+        },
+        "line": { "type": "integer" },
+        "number": {
+          "alias": "pull_number",
+          "deprecated": true,
+          "type": "integer"
+        },
+        "owner": { "required": true, "type": "string" },
+        "path": { "required": true, "type": "string" },
+        "position": { "type": "integer" },
+        "pull_number": { "required": true, "type": "integer" },
+        "repo": { "required": true, "type": "string" },
+        "side": { "enum": ["LEFT", "RIGHT"], "type": "string" },
+        "start_line": { "type": "integer" },
+        "start_side": { "enum": ["LEFT", "RIGHT", "side"], "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/pulls/:pull_number/comments"
+    },
+    "createCommentReply": {
+      "deprecated": "octokit.pulls.createCommentReply() has been renamed to octokit.pulls.createComment() (2019-09-09)",
+      "method": "POST",
+      "params": {
+        "body": { "required": true, "type": "string" },
+        "commit_id": { "required": true, "type": "string" },
+        "in_reply_to": {
+          "deprecated": true,
+          "description": "The comment ID to reply to. **Note**: This must be the ID of a top-level comment, not a reply to that comment. Replies to replies are not supported.",
+          "type": "integer"
+        },
+        "line": { "type": "integer" },
+        "number": {
+          "alias": "pull_number",
+          "deprecated": true,
+          "type": "integer"
+        },
+        "owner": { "required": true, "type": "string" },
+        "path": { "required": true, "type": "string" },
+        "position": { "type": "integer" },
+        "pull_number": { "required": true, "type": "integer" },
+        "repo": { "required": true, "type": "string" },
+        "side": { "enum": ["LEFT", "RIGHT"], "type": "string" },
+        "start_line": { "type": "integer" },
+        "start_side": { "enum": ["LEFT", "RIGHT", "side"], "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/pulls/:pull_number/comments"
+    },
+    "createFromIssue": {
+      "deprecated": "octokit.pulls.createFromIssue() is deprecated, see https://developer.github.com/v3/pulls/#create-a-pull-request",
+      "method": "POST",
+      "params": {
+        "base": { "required": true, "type": "string" },
+        "draft": { "type": "boolean" },
+        "head": { "required": true, "type": "string" },
+        "issue": { "required": true, "type": "integer" },
+        "maintainer_can_modify": { "type": "boolean" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/pulls"
+    },
+    "createReview": {
+      "method": "POST",
+      "params": {
+        "body": { "type": "string" },
+        "comments": { "type": "object[]" },
+        "comments[].body": { "required": true, "type": "string" },
+        "comments[].path": { "required": true, "type": "string" },
+        "comments[].position": { "required": true, "type": "integer" },
+        "commit_id": { "type": "string" },
+        "event": {
+          "enum": ["APPROVE", "REQUEST_CHANGES", "COMMENT"],
+          "type": "string"
+        },
+        "number": {
+          "alias": "pull_number",
+          "deprecated": true,
+          "type": "integer"
+        },
+        "owner": { "required": true, "type": "string" },
+        "pull_number": { "required": true, "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/pulls/:pull_number/reviews"
+    },
+    "createReviewCommentReply": {
+      "method": "POST",
+      "params": {
+        "body": { "required": true, "type": "string" },
+        "comment_id": { "required": true, "type": "integer" },
+        "owner": { "required": true, "type": "string" },
+        "pull_number": { "required": true, "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/pulls/:pull_number/comments/:comment_id/replies"
+    },
+    "createReviewRequest": {
+      "method": "POST",
+      "params": {
+        "number": {
+          "alias": "pull_number",
+          "deprecated": true,
+          "type": "integer"
+        },
+        "owner": { "required": true, "type": "string" },
+        "pull_number": { "required": true, "type": "integer" },
+        "repo": { "required": true, "type": "string" },
+        "reviewers": { "type": "string[]" },
+        "team_reviewers": { "type": "string[]" }
+      },
+      "url": "/repos/:owner/:repo/pulls/:pull_number/requested_reviewers"
+    },
+    "deleteComment": {
+      "method": "DELETE",
+      "params": {
+        "comment_id": { "required": true, "type": "integer" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/pulls/comments/:comment_id"
+    },
+    "deletePendingReview": {
+      "method": "DELETE",
+      "params": {
+        "number": {
+          "alias": "pull_number",
+          "deprecated": true,
+          "type": "integer"
+        },
+        "owner": { "required": true, "type": "string" },
+        "pull_number": { "required": true, "type": "integer" },
+        "repo": { "required": true, "type": "string" },
+        "review_id": { "required": true, "type": "integer" }
+      },
+      "url": "/repos/:owner/:repo/pulls/:pull_number/reviews/:review_id"
+    },
+    "deleteReviewRequest": {
+      "method": "DELETE",
+      "params": {
+        "number": {
+          "alias": "pull_number",
+          "deprecated": true,
+          "type": "integer"
+        },
+        "owner": { "required": true, "type": "string" },
+        "pull_number": { "required": true, "type": "integer" },
+        "repo": { "required": true, "type": "string" },
+        "reviewers": { "type": "string[]" },
+        "team_reviewers": { "type": "string[]" }
+      },
+      "url": "/repos/:owner/:repo/pulls/:pull_number/requested_reviewers"
+    },
+    "dismissReview": {
+      "method": "PUT",
+      "params": {
+        "message": { "required": true, "type": "string" },
+        "number": {
+          "alias": "pull_number",
+          "deprecated": true,
+          "type": "integer"
+        },
+        "owner": { "required": true, "type": "string" },
+        "pull_number": { "required": true, "type": "integer" },
+        "repo": { "required": true, "type": "string" },
+        "review_id": { "required": true, "type": "integer" }
+      },
+      "url": "/repos/:owner/:repo/pulls/:pull_number/reviews/:review_id/dismissals"
+    },
+    "get": {
+      "method": "GET",
+      "params": {
+        "number": {
+          "alias": "pull_number",
+          "deprecated": true,
+          "type": "integer"
+        },
+        "owner": { "required": true, "type": "string" },
+        "pull_number": { "required": true, "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/pulls/:pull_number"
+    },
+    "getComment": {
+      "method": "GET",
+      "params": {
+        "comment_id": { "required": true, "type": "integer" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/pulls/comments/:comment_id"
+    },
+    "getCommentsForReview": {
+      "method": "GET",
+      "params": {
+        "number": {
+          "alias": "pull_number",
+          "deprecated": true,
+          "type": "integer"
+        },
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "pull_number": { "required": true, "type": "integer" },
+        "repo": { "required": true, "type": "string" },
+        "review_id": { "required": true, "type": "integer" }
+      },
+      "url": "/repos/:owner/:repo/pulls/:pull_number/reviews/:review_id/comments"
+    },
+    "getReview": {
+      "method": "GET",
+      "params": {
+        "number": {
+          "alias": "pull_number",
+          "deprecated": true,
+          "type": "integer"
+        },
+        "owner": { "required": true, "type": "string" },
+        "pull_number": { "required": true, "type": "integer" },
+        "repo": { "required": true, "type": "string" },
+        "review_id": { "required": true, "type": "integer" }
+      },
+      "url": "/repos/:owner/:repo/pulls/:pull_number/reviews/:review_id"
+    },
+    "list": {
+      "method": "GET",
+      "params": {
+        "base": { "type": "string" },
+        "direction": { "enum": ["asc", "desc"], "type": "string" },
+        "head": { "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "repo": { "required": true, "type": "string" },
+        "sort": {
+          "enum": ["created", "updated", "popularity", "long-running"],
+          "type": "string"
+        },
+        "state": { "enum": ["open", "closed", "all"], "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/pulls"
+    },
+    "listComments": {
+      "method": "GET",
+      "params": {
+        "direction": { "enum": ["asc", "desc"], "type": "string" },
+        "number": {
+          "alias": "pull_number",
+          "deprecated": true,
+          "type": "integer"
+        },
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "pull_number": { "required": true, "type": "integer" },
+        "repo": { "required": true, "type": "string" },
+        "since": { "type": "string" },
+        "sort": { "enum": ["created", "updated"], "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/pulls/:pull_number/comments"
+    },
+    "listCommentsForRepo": {
+      "method": "GET",
+      "params": {
+        "direction": { "enum": ["asc", "desc"], "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "repo": { "required": true, "type": "string" },
+        "since": { "type": "string" },
+        "sort": { "enum": ["created", "updated"], "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/pulls/comments"
+    },
+    "listCommits": {
+      "method": "GET",
+      "params": {
+        "number": {
+          "alias": "pull_number",
+          "deprecated": true,
+          "type": "integer"
+        },
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "pull_number": { "required": true, "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/pulls/:pull_number/commits"
+    },
+    "listFiles": {
+      "method": "GET",
+      "params": {
+        "number": {
+          "alias": "pull_number",
+          "deprecated": true,
+          "type": "integer"
+        },
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "pull_number": { "required": true, "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/pulls/:pull_number/files"
+    },
+    "listReviewRequests": {
+      "method": "GET",
+      "params": {
+        "number": {
+          "alias": "pull_number",
+          "deprecated": true,
+          "type": "integer"
+        },
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "pull_number": { "required": true, "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/pulls/:pull_number/requested_reviewers"
+    },
+    "listReviews": {
+      "method": "GET",
+      "params": {
+        "number": {
+          "alias": "pull_number",
+          "deprecated": true,
+          "type": "integer"
+        },
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "pull_number": { "required": true, "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/pulls/:pull_number/reviews"
+    },
+    "merge": {
+      "method": "PUT",
+      "params": {
+        "commit_message": { "type": "string" },
+        "commit_title": { "type": "string" },
+        "merge_method": {
+          "enum": ["merge", "squash", "rebase"],
+          "type": "string"
+        },
+        "number": {
+          "alias": "pull_number",
+          "deprecated": true,
+          "type": "integer"
+        },
+        "owner": { "required": true, "type": "string" },
+        "pull_number": { "required": true, "type": "integer" },
+        "repo": { "required": true, "type": "string" },
+        "sha": { "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/pulls/:pull_number/merge"
+    },
+    "submitReview": {
+      "method": "POST",
+      "params": {
+        "body": { "type": "string" },
+        "event": {
+          "enum": ["APPROVE", "REQUEST_CHANGES", "COMMENT"],
+          "required": true,
+          "type": "string"
+        },
+        "number": {
+          "alias": "pull_number",
+          "deprecated": true,
+          "type": "integer"
+        },
+        "owner": { "required": true, "type": "string" },
+        "pull_number": { "required": true, "type": "integer" },
+        "repo": { "required": true, "type": "string" },
+        "review_id": { "required": true, "type": "integer" }
+      },
+      "url": "/repos/:owner/:repo/pulls/:pull_number/reviews/:review_id/events"
+    },
+    "update": {
+      "method": "PATCH",
+      "params": {
+        "base": { "type": "string" },
+        "body": { "type": "string" },
+        "maintainer_can_modify": { "type": "boolean" },
+        "number": {
+          "alias": "pull_number",
+          "deprecated": true,
+          "type": "integer"
+        },
+        "owner": { "required": true, "type": "string" },
+        "pull_number": { "required": true, "type": "integer" },
+        "repo": { "required": true, "type": "string" },
+        "state": { "enum": ["open", "closed"], "type": "string" },
+        "title": { "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/pulls/:pull_number"
+    },
+    "updateBranch": {
+      "headers": { "accept": "application/vnd.github.lydian-preview+json" },
+      "method": "PUT",
+      "params": {
+        "expected_head_sha": { "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "pull_number": { "required": true, "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/pulls/:pull_number/update-branch"
+    },
+    "updateComment": {
+      "method": "PATCH",
+      "params": {
+        "body": { "required": true, "type": "string" },
+        "comment_id": { "required": true, "type": "integer" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/pulls/comments/:comment_id"
+    },
+    "updateReview": {
+      "method": "PUT",
+      "params": {
+        "body": { "required": true, "type": "string" },
+        "number": {
+          "alias": "pull_number",
+          "deprecated": true,
+          "type": "integer"
+        },
+        "owner": { "required": true, "type": "string" },
+        "pull_number": { "required": true, "type": "integer" },
+        "repo": { "required": true, "type": "string" },
+        "review_id": { "required": true, "type": "integer" }
+      },
+      "url": "/repos/:owner/:repo/pulls/:pull_number/reviews/:review_id"
+    }
+  },
+  "rateLimit": {
+    "get": { "method": "GET", "params": {}, "url": "/rate_limit" }
+  },
+  "reactions": {
+    "createForCommitComment": {
+      "headers": {
+        "accept": "application/vnd.github.squirrel-girl-preview+json"
+      },
+      "method": "POST",
+      "params": {
+        "comment_id": { "required": true, "type": "integer" },
+        "content": {
+          "enum": [
+            "+1",
+            "-1",
+            "laugh",
+            "confused",
+            "heart",
+            "hooray",
+            "rocket",
+            "eyes"
+          ],
+          "required": true,
+          "type": "string"
+        },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/comments/:comment_id/reactions"
+    },
+    "createForIssue": {
+      "headers": {
+        "accept": "application/vnd.github.squirrel-girl-preview+json"
+      },
+      "method": "POST",
+      "params": {
+        "content": {
+          "enum": [
+            "+1",
+            "-1",
+            "laugh",
+            "confused",
+            "heart",
+            "hooray",
+            "rocket",
+            "eyes"
+          ],
+          "required": true,
+          "type": "string"
+        },
+        "issue_number": { "required": true, "type": "integer" },
+        "number": {
+          "alias": "issue_number",
+          "deprecated": true,
+          "type": "integer"
+        },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/issues/:issue_number/reactions"
+    },
+    "createForIssueComment": {
+      "headers": {
+        "accept": "application/vnd.github.squirrel-girl-preview+json"
+      },
+      "method": "POST",
+      "params": {
+        "comment_id": { "required": true, "type": "integer" },
+        "content": {
+          "enum": [
+            "+1",
+            "-1",
+            "laugh",
+            "confused",
+            "heart",
+            "hooray",
+            "rocket",
+            "eyes"
+          ],
+          "required": true,
+          "type": "string"
+        },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/issues/comments/:comment_id/reactions"
+    },
+    "createForPullRequestReviewComment": {
+      "headers": {
+        "accept": "application/vnd.github.squirrel-girl-preview+json"
+      },
+      "method": "POST",
+      "params": {
+        "comment_id": { "required": true, "type": "integer" },
+        "content": {
+          "enum": [
+            "+1",
+            "-1",
+            "laugh",
+            "confused",
+            "heart",
+            "hooray",
+            "rocket",
+            "eyes"
+          ],
+          "required": true,
+          "type": "string"
+        },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/pulls/comments/:comment_id/reactions"
+    },
+    "createForTeamDiscussion": {
+      "headers": {
+        "accept": "application/vnd.github.echo-preview+json,application/vnd.github.squirrel-girl-preview+json"
+      },
+      "method": "POST",
+      "params": {
+        "content": {
+          "enum": [
+            "+1",
+            "-1",
+            "laugh",
+            "confused",
+            "heart",
+            "hooray",
+            "rocket",
+            "eyes"
+          ],
+          "required": true,
+          "type": "string"
+        },
+        "discussion_number": { "required": true, "type": "integer" },
+        "team_id": { "required": true, "type": "integer" }
+      },
+      "url": "/teams/:team_id/discussions/:discussion_number/reactions"
+    },
+    "createForTeamDiscussionComment": {
+      "headers": {
+        "accept": "application/vnd.github.echo-preview+json,application/vnd.github.squirrel-girl-preview+json"
+      },
+      "method": "POST",
+      "params": {
+        "comment_number": { "required": true, "type": "integer" },
+        "content": {
+          "enum": [
+            "+1",
+            "-1",
+            "laugh",
+            "confused",
+            "heart",
+            "hooray",
+            "rocket",
+            "eyes"
+          ],
+          "required": true,
+          "type": "string"
+        },
+        "discussion_number": { "required": true, "type": "integer" },
+        "team_id": { "required": true, "type": "integer" }
+      },
+      "url": "/teams/:team_id/discussions/:discussion_number/comments/:comment_number/reactions"
+    },
+    "delete": {
+      "headers": {
+        "accept": "application/vnd.github.echo-preview+json,application/vnd.github.squirrel-girl-preview+json"
+      },
+      "method": "DELETE",
+      "params": { "reaction_id": { "required": true, "type": "integer" } },
+      "url": "/reactions/:reaction_id"
+    },
+    "listForCommitComment": {
+      "headers": {
+        "accept": "application/vnd.github.squirrel-girl-preview+json"
+      },
+      "method": "GET",
+      "params": {
+        "comment_id": { "required": true, "type": "integer" },
+        "content": {
+          "enum": [
+            "+1",
+            "-1",
+            "laugh",
+            "confused",
+            "heart",
+            "hooray",
+            "rocket",
+            "eyes"
+          ],
+          "type": "string"
+        },
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/comments/:comment_id/reactions"
+    },
+    "listForIssue": {
+      "headers": {
+        "accept": "application/vnd.github.squirrel-girl-preview+json"
+      },
+      "method": "GET",
+      "params": {
+        "content": {
+          "enum": [
+            "+1",
+            "-1",
+            "laugh",
+            "confused",
+            "heart",
+            "hooray",
+            "rocket",
+            "eyes"
+          ],
+          "type": "string"
+        },
+        "issue_number": { "required": true, "type": "integer" },
+        "number": {
+          "alias": "issue_number",
+          "deprecated": true,
+          "type": "integer"
+        },
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/issues/:issue_number/reactions"
+    },
+    "listForIssueComment": {
+      "headers": {
+        "accept": "application/vnd.github.squirrel-girl-preview+json"
+      },
+      "method": "GET",
+      "params": {
+        "comment_id": { "required": true, "type": "integer" },
+        "content": {
+          "enum": [
+            "+1",
+            "-1",
+            "laugh",
+            "confused",
+            "heart",
+            "hooray",
+            "rocket",
+            "eyes"
+          ],
+          "type": "string"
+        },
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/issues/comments/:comment_id/reactions"
+    },
+    "listForPullRequestReviewComment": {
+      "headers": {
+        "accept": "application/vnd.github.squirrel-girl-preview+json"
+      },
+      "method": "GET",
+      "params": {
+        "comment_id": { "required": true, "type": "integer" },
+        "content": {
+          "enum": [
+            "+1",
+            "-1",
+            "laugh",
+            "confused",
+            "heart",
+            "hooray",
+            "rocket",
+            "eyes"
+          ],
+          "type": "string"
+        },
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/pulls/comments/:comment_id/reactions"
+    },
+    "listForTeamDiscussion": {
+      "headers": {
+        "accept": "application/vnd.github.echo-preview+json,application/vnd.github.squirrel-girl-preview+json"
+      },
+      "method": "GET",
+      "params": {
+        "content": {
+          "enum": [
+            "+1",
+            "-1",
+            "laugh",
+            "confused",
+            "heart",
+            "hooray",
+            "rocket",
+            "eyes"
+          ],
+          "type": "string"
+        },
+        "discussion_number": { "required": true, "type": "integer" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "team_id": { "required": true, "type": "integer" }
+      },
+      "url": "/teams/:team_id/discussions/:discussion_number/reactions"
+    },
+    "listForTeamDiscussionComment": {
+      "headers": {
+        "accept": "application/vnd.github.echo-preview+json,application/vnd.github.squirrel-girl-preview+json"
+      },
+      "method": "GET",
+      "params": {
+        "comment_number": { "required": true, "type": "integer" },
+        "content": {
+          "enum": [
+            "+1",
+            "-1",
+            "laugh",
+            "confused",
+            "heart",
+            "hooray",
+            "rocket",
+            "eyes"
+          ],
+          "type": "string"
+        },
+        "discussion_number": { "required": true, "type": "integer" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "team_id": { "required": true, "type": "integer" }
+      },
+      "url": "/teams/:team_id/discussions/:discussion_number/comments/:comment_number/reactions"
+    }
+  },
+  "repos": {
+    "acceptInvitation": {
+      "method": "PATCH",
+      "params": { "invitation_id": { "required": true, "type": "integer" } },
+      "url": "/user/repository_invitations/:invitation_id"
+    },
+    "addCollaborator": {
+      "method": "PUT",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "permission": { "enum": ["pull", "push", "admin"], "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/collaborators/:username"
+    },
+    "addDeployKey": {
+      "method": "POST",
+      "params": {
+        "key": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "read_only": { "type": "boolean" },
+        "repo": { "required": true, "type": "string" },
+        "title": { "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/keys"
+    },
+    "addProtectedBranchAdminEnforcement": {
+      "method": "POST",
+      "params": {
+        "branch": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/branches/:branch/protection/enforce_admins"
+    },
+    "addProtectedBranchAppRestrictions": {
+      "method": "POST",
+      "params": {
+        "apps": { "mapTo": "data", "required": true, "type": "string[]" },
+        "branch": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/branches/:branch/protection/restrictions/apps"
+    },
+    "addProtectedBranchRequiredSignatures": {
+      "headers": { "accept": "application/vnd.github.zzzax-preview+json" },
+      "method": "POST",
+      "params": {
+        "branch": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/branches/:branch/protection/required_signatures"
+    },
+    "addProtectedBranchRequiredStatusChecksContexts": {
+      "method": "POST",
+      "params": {
+        "branch": { "required": true, "type": "string" },
+        "contexts": { "mapTo": "data", "required": true, "type": "string[]" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/branches/:branch/protection/required_status_checks/contexts"
+    },
+    "addProtectedBranchTeamRestrictions": {
+      "method": "POST",
+      "params": {
+        "branch": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "teams": { "mapTo": "data", "required": true, "type": "string[]" }
+      },
+      "url": "/repos/:owner/:repo/branches/:branch/protection/restrictions/teams"
+    },
+    "addProtectedBranchUserRestrictions": {
+      "method": "POST",
+      "params": {
+        "branch": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "users": { "mapTo": "data", "required": true, "type": "string[]" }
+      },
+      "url": "/repos/:owner/:repo/branches/:branch/protection/restrictions/users"
+    },
+    "checkCollaborator": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/collaborators/:username"
+    },
+    "checkVulnerabilityAlerts": {
+      "headers": { "accept": "application/vnd.github.dorian-preview+json" },
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/vulnerability-alerts"
+    },
+    "compareCommits": {
+      "method": "GET",
+      "params": {
+        "base": { "required": true, "type": "string" },
+        "head": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/compare/:base...:head"
+    },
+    "createCommitComment": {
+      "method": "POST",
+      "params": {
+        "body": { "required": true, "type": "string" },
+        "commit_sha": { "required": true, "type": "string" },
+        "line": { "type": "integer" },
+        "owner": { "required": true, "type": "string" },
+        "path": { "type": "string" },
+        "position": { "type": "integer" },
+        "repo": { "required": true, "type": "string" },
+        "sha": { "alias": "commit_sha", "deprecated": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/commits/:commit_sha/comments"
+    },
+    "createDeployment": {
+      "method": "POST",
+      "params": {
+        "auto_merge": { "type": "boolean" },
+        "description": { "type": "string" },
+        "environment": { "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "payload": { "type": "string" },
+        "production_environment": { "type": "boolean" },
+        "ref": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "required_contexts": { "type": "string[]" },
+        "task": { "type": "string" },
+        "transient_environment": { "type": "boolean" }
+      },
+      "url": "/repos/:owner/:repo/deployments"
+    },
+    "createDeploymentStatus": {
+      "method": "POST",
+      "params": {
+        "auto_inactive": { "type": "boolean" },
+        "deployment_id": { "required": true, "type": "integer" },
+        "description": { "type": "string" },
+        "environment": {
+          "enum": ["production", "staging", "qa"],
+          "type": "string"
+        },
+        "environment_url": { "type": "string" },
+        "log_url": { "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "state": {
+          "enum": [
+            "error",
+            "failure",
+            "inactive",
+            "in_progress",
+            "queued",
+            "pending",
+            "success"
+          ],
+          "required": true,
+          "type": "string"
+        },
+        "target_url": { "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/deployments/:deployment_id/statuses"
+    },
+    "createDispatchEvent": {
+      "headers": { "accept": "application/vnd.github.everest-preview+json" },
+      "method": "POST",
+      "params": {
+        "client_payload": { "type": "object" },
+        "event_type": { "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/dispatches"
+    },
+    "createFile": {
+      "deprecated": "octokit.repos.createFile() has been renamed to octokit.repos.createOrUpdateFile() (2019-06-07)",
+      "method": "PUT",
+      "params": {
+        "author": { "type": "object" },
+        "author.email": { "required": true, "type": "string" },
+        "author.name": { "required": true, "type": "string" },
+        "branch": { "type": "string" },
+        "committer": { "type": "object" },
+        "committer.email": { "required": true, "type": "string" },
+        "committer.name": { "required": true, "type": "string" },
+        "content": { "required": true, "type": "string" },
+        "message": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "path": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "sha": { "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/contents/:path"
+    },
+    "createForAuthenticatedUser": {
+      "method": "POST",
+      "params": {
+        "allow_merge_commit": { "type": "boolean" },
+        "allow_rebase_merge": { "type": "boolean" },
+        "allow_squash_merge": { "type": "boolean" },
+        "auto_init": { "type": "boolean" },
+        "description": { "type": "string" },
+        "gitignore_template": { "type": "string" },
+        "has_issues": { "type": "boolean" },
+        "has_projects": { "type": "boolean" },
+        "has_wiki": { "type": "boolean" },
+        "homepage": { "type": "string" },
+        "is_template": { "type": "boolean" },
+        "license_template": { "type": "string" },
+        "name": { "required": true, "type": "string" },
+        "private": { "type": "boolean" },
+        "team_id": { "type": "integer" }
+      },
+      "url": "/user/repos"
+    },
+    "createFork": {
+      "method": "POST",
+      "params": {
+        "organization": { "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/forks"
+    },
+    "createHook": {
+      "method": "POST",
+      "params": {
+        "active": { "type": "boolean" },
+        "config": { "required": true, "type": "object" },
+        "config.content_type": { "type": "string" },
+        "config.insecure_ssl": { "type": "string" },
+        "config.secret": { "type": "string" },
+        "config.url": { "required": true, "type": "string" },
+        "events": { "type": "string[]" },
+        "name": { "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/hooks"
+    },
+    "createInOrg": {
+      "method": "POST",
+      "params": {
+        "allow_merge_commit": { "type": "boolean" },
+        "allow_rebase_merge": { "type": "boolean" },
+        "allow_squash_merge": { "type": "boolean" },
+        "auto_init": { "type": "boolean" },
+        "description": { "type": "string" },
+        "gitignore_template": { "type": "string" },
+        "has_issues": { "type": "boolean" },
+        "has_projects": { "type": "boolean" },
+        "has_wiki": { "type": "boolean" },
+        "homepage": { "type": "string" },
+        "is_template": { "type": "boolean" },
+        "license_template": { "type": "string" },
+        "name": { "required": true, "type": "string" },
+        "org": { "required": true, "type": "string" },
+        "private": { "type": "boolean" },
+        "team_id": { "type": "integer" }
+      },
+      "url": "/orgs/:org/repos"
+    },
+    "createOrUpdateFile": {
+      "method": "PUT",
+      "params": {
+        "author": { "type": "object" },
+        "author.email": { "required": true, "type": "string" },
+        "author.name": { "required": true, "type": "string" },
+        "branch": { "type": "string" },
+        "committer": { "type": "object" },
+        "committer.email": { "required": true, "type": "string" },
+        "committer.name": { "required": true, "type": "string" },
+        "content": { "required": true, "type": "string" },
+        "message": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "path": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "sha": { "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/contents/:path"
+    },
+    "createRelease": {
+      "method": "POST",
+      "params": {
+        "body": { "type": "string" },
+        "draft": { "type": "boolean" },
+        "name": { "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "prerelease": { "type": "boolean" },
+        "repo": { "required": true, "type": "string" },
+        "tag_name": { "required": true, "type": "string" },
+        "target_commitish": { "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/releases"
+    },
+    "createStatus": {
+      "method": "POST",
+      "params": {
+        "context": { "type": "string" },
+        "description": { "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "sha": { "required": true, "type": "string" },
+        "state": {
+          "enum": ["error", "failure", "pending", "success"],
+          "required": true,
+          "type": "string"
+        },
+        "target_url": { "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/statuses/:sha"
+    },
+    "createUsingTemplate": {
+      "headers": { "accept": "application/vnd.github.baptiste-preview+json" },
+      "method": "POST",
+      "params": {
+        "description": { "type": "string" },
+        "name": { "required": true, "type": "string" },
+        "owner": { "type": "string" },
+        "private": { "type": "boolean" },
+        "template_owner": { "required": true, "type": "string" },
+        "template_repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:template_owner/:template_repo/generate"
+    },
+    "declineInvitation": {
+      "method": "DELETE",
+      "params": { "invitation_id": { "required": true, "type": "integer" } },
+      "url": "/user/repository_invitations/:invitation_id"
+    },
+    "delete": {
+      "method": "DELETE",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo"
+    },
+    "deleteCommitComment": {
+      "method": "DELETE",
+      "params": {
+        "comment_id": { "required": true, "type": "integer" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/comments/:comment_id"
+    },
+    "deleteDownload": {
+      "method": "DELETE",
+      "params": {
+        "download_id": { "required": true, "type": "integer" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/downloads/:download_id"
+    },
+    "deleteFile": {
+      "method": "DELETE",
+      "params": {
+        "author": { "type": "object" },
+        "author.email": { "type": "string" },
+        "author.name": { "type": "string" },
+        "branch": { "type": "string" },
+        "committer": { "type": "object" },
+        "committer.email": { "type": "string" },
+        "committer.name": { "type": "string" },
+        "message": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "path": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "sha": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/contents/:path"
+    },
+    "deleteHook": {
+      "method": "DELETE",
+      "params": {
+        "hook_id": { "required": true, "type": "integer" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/hooks/:hook_id"
+    },
+    "deleteInvitation": {
+      "method": "DELETE",
+      "params": {
+        "invitation_id": { "required": true, "type": "integer" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/invitations/:invitation_id"
+    },
+    "deleteRelease": {
+      "method": "DELETE",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "release_id": { "required": true, "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/releases/:release_id"
+    },
+    "deleteReleaseAsset": {
+      "method": "DELETE",
+      "params": {
+        "asset_id": { "required": true, "type": "integer" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/releases/assets/:asset_id"
+    },
+    "disableAutomatedSecurityFixes": {
+      "headers": { "accept": "application/vnd.github.london-preview+json" },
+      "method": "DELETE",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/automated-security-fixes"
+    },
+    "disablePagesSite": {
+      "headers": { "accept": "application/vnd.github.switcheroo-preview+json" },
+      "method": "DELETE",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/pages"
+    },
+    "disableVulnerabilityAlerts": {
+      "headers": { "accept": "application/vnd.github.dorian-preview+json" },
+      "method": "DELETE",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/vulnerability-alerts"
+    },
+    "enableAutomatedSecurityFixes": {
+      "headers": { "accept": "application/vnd.github.london-preview+json" },
+      "method": "PUT",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/automated-security-fixes"
+    },
+    "enablePagesSite": {
+      "headers": { "accept": "application/vnd.github.switcheroo-preview+json" },
+      "method": "POST",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "source": { "type": "object" },
+        "source.branch": { "enum": ["master", "gh-pages"], "type": "string" },
+        "source.path": { "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/pages"
+    },
+    "enableVulnerabilityAlerts": {
+      "headers": { "accept": "application/vnd.github.dorian-preview+json" },
+      "method": "PUT",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/vulnerability-alerts"
+    },
+    "get": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo"
+    },
+    "getAppsWithAccessToProtectedBranch": {
+      "method": "GET",
+      "params": {
+        "branch": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/branches/:branch/protection/restrictions/apps"
+    },
+    "getArchiveLink": {
+      "method": "GET",
+      "params": {
+        "archive_format": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "ref": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/:archive_format/:ref"
+    },
+    "getBranch": {
+      "method": "GET",
+      "params": {
+        "branch": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/branches/:branch"
+    },
+    "getBranchProtection": {
+      "method": "GET",
+      "params": {
+        "branch": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/branches/:branch/protection"
+    },
+    "getClones": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "per": { "enum": ["day", "week"], "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/traffic/clones"
+    },
+    "getCodeFrequencyStats": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/stats/code_frequency"
+    },
+    "getCollaboratorPermissionLevel": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/collaborators/:username/permission"
+    },
+    "getCombinedStatusForRef": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "ref": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/commits/:ref/status"
+    },
+    "getCommit": {
+      "method": "GET",
+      "params": {
+        "commit_sha": { "alias": "ref", "deprecated": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "ref": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "sha": { "alias": "ref", "deprecated": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/commits/:ref"
+    },
+    "getCommitActivityStats": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/stats/commit_activity"
+    },
+    "getCommitComment": {
+      "method": "GET",
+      "params": {
+        "comment_id": { "required": true, "type": "integer" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/comments/:comment_id"
+    },
+    "getCommitRefSha": {
+      "deprecated": "octokit.repos.getCommitRefSha() is deprecated, see https://developer.github.com/v3/repos/commits/#get-a-single-commit",
+      "headers": { "accept": "application/vnd.github.v3.sha" },
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "ref": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/commits/:ref"
+    },
+    "getContents": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "path": { "required": true, "type": "string" },
+        "ref": { "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/contents/:path"
+    },
+    "getContributorsStats": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/stats/contributors"
+    },
+    "getDeployKey": {
+      "method": "GET",
+      "params": {
+        "key_id": { "required": true, "type": "integer" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/keys/:key_id"
+    },
+    "getDeployment": {
+      "method": "GET",
+      "params": {
+        "deployment_id": { "required": true, "type": "integer" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/deployments/:deployment_id"
+    },
+    "getDeploymentStatus": {
+      "method": "GET",
+      "params": {
+        "deployment_id": { "required": true, "type": "integer" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "status_id": { "required": true, "type": "integer" }
+      },
+      "url": "/repos/:owner/:repo/deployments/:deployment_id/statuses/:status_id"
+    },
+    "getDownload": {
+      "method": "GET",
+      "params": {
+        "download_id": { "required": true, "type": "integer" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/downloads/:download_id"
+    },
+    "getHook": {
+      "method": "GET",
+      "params": {
+        "hook_id": { "required": true, "type": "integer" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/hooks/:hook_id"
+    },
+    "getLatestPagesBuild": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/pages/builds/latest"
+    },
+    "getLatestRelease": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/releases/latest"
+    },
+    "getPages": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/pages"
+    },
+    "getPagesBuild": {
+      "method": "GET",
+      "params": {
+        "build_id": { "required": true, "type": "integer" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/pages/builds/:build_id"
+    },
+    "getParticipationStats": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/stats/participation"
+    },
+    "getProtectedBranchAdminEnforcement": {
+      "method": "GET",
+      "params": {
+        "branch": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/branches/:branch/protection/enforce_admins"
+    },
+    "getProtectedBranchPullRequestReviewEnforcement": {
+      "method": "GET",
+      "params": {
+        "branch": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/branches/:branch/protection/required_pull_request_reviews"
+    },
+    "getProtectedBranchRequiredSignatures": {
+      "headers": { "accept": "application/vnd.github.zzzax-preview+json" },
+      "method": "GET",
+      "params": {
+        "branch": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/branches/:branch/protection/required_signatures"
+    },
+    "getProtectedBranchRequiredStatusChecks": {
+      "method": "GET",
+      "params": {
+        "branch": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/branches/:branch/protection/required_status_checks"
+    },
+    "getProtectedBranchRestrictions": {
+      "method": "GET",
+      "params": {
+        "branch": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/branches/:branch/protection/restrictions"
+    },
+    "getPunchCardStats": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/stats/punch_card"
+    },
+    "getReadme": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "ref": { "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/readme"
+    },
+    "getRelease": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "release_id": { "required": true, "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/releases/:release_id"
+    },
+    "getReleaseAsset": {
+      "method": "GET",
+      "params": {
+        "asset_id": { "required": true, "type": "integer" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/releases/assets/:asset_id"
+    },
+    "getReleaseByTag": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "tag": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/releases/tags/:tag"
+    },
+    "getTeamsWithAccessToProtectedBranch": {
+      "method": "GET",
+      "params": {
+        "branch": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/branches/:branch/protection/restrictions/teams"
+    },
+    "getTopPaths": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/traffic/popular/paths"
+    },
+    "getTopReferrers": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/traffic/popular/referrers"
+    },
+    "getUsersWithAccessToProtectedBranch": {
+      "method": "GET",
+      "params": {
+        "branch": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/branches/:branch/protection/restrictions/users"
+    },
+    "getViews": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "per": { "enum": ["day", "week"], "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/traffic/views"
+    },
+    "list": {
+      "method": "GET",
+      "params": {
+        "affiliation": { "type": "string" },
+        "direction": { "enum": ["asc", "desc"], "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "sort": {
+          "enum": ["created", "updated", "pushed", "full_name"],
+          "type": "string"
+        },
+        "type": {
+          "enum": ["all", "owner", "public", "private", "member"],
+          "type": "string"
+        },
+        "visibility": { "enum": ["all", "public", "private"], "type": "string" }
+      },
+      "url": "/user/repos"
+    },
+    "listAppsWithAccessToProtectedBranch": {
+      "deprecated": "octokit.repos.listAppsWithAccessToProtectedBranch() has been renamed to octokit.repos.getAppsWithAccessToProtectedBranch() (2019-09-13)",
+      "method": "GET",
+      "params": {
+        "branch": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/branches/:branch/protection/restrictions/apps"
+    },
+    "listAssetsForRelease": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "release_id": { "required": true, "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/releases/:release_id/assets"
+    },
+    "listBranches": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "protected": { "type": "boolean" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/branches"
+    },
+    "listBranchesForHeadCommit": {
+      "headers": { "accept": "application/vnd.github.groot-preview+json" },
+      "method": "GET",
+      "params": {
+        "commit_sha": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/commits/:commit_sha/branches-where-head"
+    },
+    "listCollaborators": {
+      "method": "GET",
+      "params": {
+        "affiliation": {
+          "enum": ["outside", "direct", "all"],
+          "type": "string"
+        },
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/collaborators"
+    },
+    "listCommentsForCommit": {
+      "method": "GET",
+      "params": {
+        "commit_sha": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "ref": { "alias": "commit_sha", "deprecated": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/commits/:commit_sha/comments"
+    },
+    "listCommitComments": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/comments"
+    },
+    "listCommits": {
+      "method": "GET",
+      "params": {
+        "author": { "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "path": { "type": "string" },
+        "per_page": { "type": "integer" },
+        "repo": { "required": true, "type": "string" },
+        "sha": { "type": "string" },
+        "since": { "type": "string" },
+        "until": { "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/commits"
+    },
+    "listContributors": {
+      "method": "GET",
+      "params": {
+        "anon": { "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/contributors"
+    },
+    "listDeployKeys": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/keys"
+    },
+    "listDeploymentStatuses": {
+      "method": "GET",
+      "params": {
+        "deployment_id": { "required": true, "type": "integer" },
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/deployments/:deployment_id/statuses"
+    },
+    "listDeployments": {
+      "method": "GET",
+      "params": {
+        "environment": { "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "ref": { "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "sha": { "type": "string" },
+        "task": { "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/deployments"
+    },
+    "listDownloads": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/downloads"
+    },
+    "listForOrg": {
+      "method": "GET",
+      "params": {
+        "direction": { "enum": ["asc", "desc"], "type": "string" },
+        "org": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "sort": {
+          "enum": ["created", "updated", "pushed", "full_name"],
+          "type": "string"
+        },
+        "type": {
+          "enum": ["all", "public", "private", "forks", "sources", "member"],
+          "type": "string"
+        }
+      },
+      "url": "/orgs/:org/repos"
+    },
+    "listForUser": {
+      "method": "GET",
+      "params": {
+        "direction": { "enum": ["asc", "desc"], "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "sort": {
+          "enum": ["created", "updated", "pushed", "full_name"],
+          "type": "string"
+        },
+        "type": { "enum": ["all", "owner", "member"], "type": "string" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/users/:username/repos"
+    },
+    "listForks": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "repo": { "required": true, "type": "string" },
+        "sort": { "enum": ["newest", "oldest", "stargazers"], "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/forks"
+    },
+    "listHooks": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/hooks"
+    },
+    "listInvitations": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/invitations"
+    },
+    "listInvitationsForAuthenticatedUser": {
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" }
+      },
+      "url": "/user/repository_invitations"
+    },
+    "listLanguages": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/languages"
+    },
+    "listPagesBuilds": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/pages/builds"
+    },
+    "listProtectedBranchRequiredStatusChecksContexts": {
+      "method": "GET",
+      "params": {
+        "branch": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/branches/:branch/protection/required_status_checks/contexts"
+    },
+    "listProtectedBranchTeamRestrictions": {
+      "deprecated": "octokit.repos.listProtectedBranchTeamRestrictions() has been renamed to octokit.repos.getTeamsWithAccessToProtectedBranch() (2019-09-09)",
+      "method": "GET",
+      "params": {
+        "branch": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/branches/:branch/protection/restrictions/teams"
+    },
+    "listProtectedBranchUserRestrictions": {
+      "deprecated": "octokit.repos.listProtectedBranchUserRestrictions() has been renamed to octokit.repos.getUsersWithAccessToProtectedBranch() (2019-09-09)",
+      "method": "GET",
+      "params": {
+        "branch": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/branches/:branch/protection/restrictions/users"
+    },
+    "listPublic": {
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "since": { "type": "string" }
+      },
+      "url": "/repositories"
+    },
+    "listPullRequestsAssociatedWithCommit": {
+      "headers": { "accept": "application/vnd.github.groot-preview+json" },
+      "method": "GET",
+      "params": {
+        "commit_sha": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/commits/:commit_sha/pulls"
+    },
+    "listReleases": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/releases"
+    },
+    "listStatusesForRef": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "ref": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/commits/:ref/statuses"
+    },
+    "listTags": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/tags"
+    },
+    "listTeams": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/teams"
+    },
+    "listTeamsWithAccessToProtectedBranch": {
+      "deprecated": "octokit.repos.listTeamsWithAccessToProtectedBranch() has been renamed to octokit.repos.getTeamsWithAccessToProtectedBranch() (2019-09-13)",
+      "method": "GET",
+      "params": {
+        "branch": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/branches/:branch/protection/restrictions/teams"
+    },
+    "listTopics": {
+      "headers": { "accept": "application/vnd.github.mercy-preview+json" },
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/topics"
+    },
+    "listUsersWithAccessToProtectedBranch": {
+      "deprecated": "octokit.repos.listUsersWithAccessToProtectedBranch() has been renamed to octokit.repos.getUsersWithAccessToProtectedBranch() (2019-09-13)",
+      "method": "GET",
+      "params": {
+        "branch": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/branches/:branch/protection/restrictions/users"
+    },
+    "merge": {
+      "method": "POST",
+      "params": {
+        "base": { "required": true, "type": "string" },
+        "commit_message": { "type": "string" },
+        "head": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/merges"
+    },
+    "pingHook": {
+      "method": "POST",
+      "params": {
+        "hook_id": { "required": true, "type": "integer" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/hooks/:hook_id/pings"
+    },
+    "removeBranchProtection": {
+      "method": "DELETE",
+      "params": {
+        "branch": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/branches/:branch/protection"
+    },
+    "removeCollaborator": {
+      "method": "DELETE",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/collaborators/:username"
+    },
+    "removeDeployKey": {
+      "method": "DELETE",
+      "params": {
+        "key_id": { "required": true, "type": "integer" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/keys/:key_id"
+    },
+    "removeProtectedBranchAdminEnforcement": {
+      "method": "DELETE",
+      "params": {
+        "branch": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/branches/:branch/protection/enforce_admins"
+    },
+    "removeProtectedBranchAppRestrictions": {
+      "method": "DELETE",
+      "params": {
+        "apps": { "mapTo": "data", "required": true, "type": "string[]" },
+        "branch": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/branches/:branch/protection/restrictions/apps"
+    },
+    "removeProtectedBranchPullRequestReviewEnforcement": {
+      "method": "DELETE",
+      "params": {
+        "branch": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/branches/:branch/protection/required_pull_request_reviews"
+    },
+    "removeProtectedBranchRequiredSignatures": {
+      "headers": { "accept": "application/vnd.github.zzzax-preview+json" },
+      "method": "DELETE",
+      "params": {
+        "branch": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/branches/:branch/protection/required_signatures"
+    },
+    "removeProtectedBranchRequiredStatusChecks": {
+      "method": "DELETE",
+      "params": {
+        "branch": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/branches/:branch/protection/required_status_checks"
+    },
+    "removeProtectedBranchRequiredStatusChecksContexts": {
+      "method": "DELETE",
+      "params": {
+        "branch": { "required": true, "type": "string" },
+        "contexts": { "mapTo": "data", "required": true, "type": "string[]" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/branches/:branch/protection/required_status_checks/contexts"
+    },
+    "removeProtectedBranchRestrictions": {
+      "method": "DELETE",
+      "params": {
+        "branch": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/branches/:branch/protection/restrictions"
+    },
+    "removeProtectedBranchTeamRestrictions": {
+      "method": "DELETE",
+      "params": {
+        "branch": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "teams": { "mapTo": "data", "required": true, "type": "string[]" }
+      },
+      "url": "/repos/:owner/:repo/branches/:branch/protection/restrictions/teams"
+    },
+    "removeProtectedBranchUserRestrictions": {
+      "method": "DELETE",
+      "params": {
+        "branch": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "users": { "mapTo": "data", "required": true, "type": "string[]" }
+      },
+      "url": "/repos/:owner/:repo/branches/:branch/protection/restrictions/users"
+    },
+    "replaceProtectedBranchAppRestrictions": {
+      "method": "PUT",
+      "params": {
+        "apps": { "mapTo": "data", "required": true, "type": "string[]" },
+        "branch": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/branches/:branch/protection/restrictions/apps"
+    },
+    "replaceProtectedBranchRequiredStatusChecksContexts": {
+      "method": "PUT",
+      "params": {
+        "branch": { "required": true, "type": "string" },
+        "contexts": { "mapTo": "data", "required": true, "type": "string[]" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/branches/:branch/protection/required_status_checks/contexts"
+    },
+    "replaceProtectedBranchTeamRestrictions": {
+      "method": "PUT",
+      "params": {
+        "branch": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "teams": { "mapTo": "data", "required": true, "type": "string[]" }
+      },
+      "url": "/repos/:owner/:repo/branches/:branch/protection/restrictions/teams"
+    },
+    "replaceProtectedBranchUserRestrictions": {
+      "method": "PUT",
+      "params": {
+        "branch": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "users": { "mapTo": "data", "required": true, "type": "string[]" }
+      },
+      "url": "/repos/:owner/:repo/branches/:branch/protection/restrictions/users"
+    },
+    "replaceTopics": {
+      "headers": { "accept": "application/vnd.github.mercy-preview+json" },
+      "method": "PUT",
+      "params": {
+        "names": { "required": true, "type": "string[]" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/topics"
+    },
+    "requestPageBuild": {
+      "method": "POST",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/pages/builds"
+    },
+    "retrieveCommunityProfileMetrics": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/community/profile"
+    },
+    "testPushHook": {
+      "method": "POST",
+      "params": {
+        "hook_id": { "required": true, "type": "integer" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/hooks/:hook_id/tests"
+    },
+    "transfer": {
+      "headers": { "accept": "application/vnd.github.nightshade-preview+json" },
+      "method": "POST",
+      "params": {
+        "new_owner": { "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "team_ids": { "type": "integer[]" }
+      },
+      "url": "/repos/:owner/:repo/transfer"
+    },
+    "update": {
+      "method": "PATCH",
+      "params": {
+        "allow_merge_commit": { "type": "boolean" },
+        "allow_rebase_merge": { "type": "boolean" },
+        "allow_squash_merge": { "type": "boolean" },
+        "archived": { "type": "boolean" },
+        "default_branch": { "type": "string" },
+        "description": { "type": "string" },
+        "has_issues": { "type": "boolean" },
+        "has_projects": { "type": "boolean" },
+        "has_wiki": { "type": "boolean" },
+        "homepage": { "type": "string" },
+        "is_template": { "type": "boolean" },
+        "name": { "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "private": { "type": "boolean" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo"
+    },
+    "updateBranchProtection": {
+      "method": "PUT",
+      "params": {
+        "branch": { "required": true, "type": "string" },
+        "enforce_admins": {
+          "allowNull": true,
+          "required": true,
+          "type": "boolean"
+        },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "required_pull_request_reviews": {
+          "allowNull": true,
+          "required": true,
+          "type": "object"
+        },
+        "required_pull_request_reviews.dismiss_stale_reviews": {
+          "type": "boolean"
+        },
+        "required_pull_request_reviews.dismissal_restrictions": {
+          "type": "object"
+        },
+        "required_pull_request_reviews.dismissal_restrictions.teams": {
+          "type": "string[]"
+        },
+        "required_pull_request_reviews.dismissal_restrictions.users": {
+          "type": "string[]"
+        },
+        "required_pull_request_reviews.require_code_owner_reviews": {
+          "type": "boolean"
+        },
+        "required_pull_request_reviews.required_approving_review_count": {
+          "type": "integer"
+        },
+        "required_status_checks": {
+          "allowNull": true,
+          "required": true,
+          "type": "object"
+        },
+        "required_status_checks.contexts": {
+          "required": true,
+          "type": "string[]"
+        },
+        "required_status_checks.strict": {
+          "required": true,
+          "type": "boolean"
+        },
+        "restrictions": {
+          "allowNull": true,
+          "required": true,
+          "type": "object"
+        },
+        "restrictions.apps": { "type": "string[]" },
+        "restrictions.teams": { "required": true, "type": "string[]" },
+        "restrictions.users": { "required": true, "type": "string[]" }
+      },
+      "url": "/repos/:owner/:repo/branches/:branch/protection"
+    },
+    "updateCommitComment": {
+      "method": "PATCH",
+      "params": {
+        "body": { "required": true, "type": "string" },
+        "comment_id": { "required": true, "type": "integer" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/comments/:comment_id"
+    },
+    "updateFile": {
+      "deprecated": "octokit.repos.updateFile() has been renamed to octokit.repos.createOrUpdateFile() (2019-06-07)",
+      "method": "PUT",
+      "params": {
+        "author": { "type": "object" },
+        "author.email": { "required": true, "type": "string" },
+        "author.name": { "required": true, "type": "string" },
+        "branch": { "type": "string" },
+        "committer": { "type": "object" },
+        "committer.email": { "required": true, "type": "string" },
+        "committer.name": { "required": true, "type": "string" },
+        "content": { "required": true, "type": "string" },
+        "message": { "required": true, "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "path": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "sha": { "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/contents/:path"
+    },
+    "updateHook": {
+      "method": "PATCH",
+      "params": {
+        "active": { "type": "boolean" },
+        "add_events": { "type": "string[]" },
+        "config": { "type": "object" },
+        "config.content_type": { "type": "string" },
+        "config.insecure_ssl": { "type": "string" },
+        "config.secret": { "type": "string" },
+        "config.url": { "required": true, "type": "string" },
+        "events": { "type": "string[]" },
+        "hook_id": { "required": true, "type": "integer" },
+        "owner": { "required": true, "type": "string" },
+        "remove_events": { "type": "string[]" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/hooks/:hook_id"
+    },
+    "updateInformationAboutPagesSite": {
+      "method": "PUT",
+      "params": {
+        "cname": { "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "source": {
+          "enum": ["\"gh-pages\"", "\"master\"", "\"master /docs\""],
+          "type": "string"
+        }
+      },
+      "url": "/repos/:owner/:repo/pages"
+    },
+    "updateInvitation": {
+      "method": "PATCH",
+      "params": {
+        "invitation_id": { "required": true, "type": "integer" },
+        "owner": { "required": true, "type": "string" },
+        "permissions": { "enum": ["read", "write", "admin"], "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/invitations/:invitation_id"
+    },
+    "updateProtectedBranchPullRequestReviewEnforcement": {
+      "method": "PATCH",
+      "params": {
+        "branch": { "required": true, "type": "string" },
+        "dismiss_stale_reviews": { "type": "boolean" },
+        "dismissal_restrictions": { "type": "object" },
+        "dismissal_restrictions.teams": { "type": "string[]" },
+        "dismissal_restrictions.users": { "type": "string[]" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "require_code_owner_reviews": { "type": "boolean" },
+        "required_approving_review_count": { "type": "integer" }
+      },
+      "url": "/repos/:owner/:repo/branches/:branch/protection/required_pull_request_reviews"
+    },
+    "updateProtectedBranchRequiredStatusChecks": {
+      "method": "PATCH",
+      "params": {
+        "branch": { "required": true, "type": "string" },
+        "contexts": { "type": "string[]" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "strict": { "type": "boolean" }
+      },
+      "url": "/repos/:owner/:repo/branches/:branch/protection/required_status_checks"
+    },
+    "updateRelease": {
+      "method": "PATCH",
+      "params": {
+        "body": { "type": "string" },
+        "draft": { "type": "boolean" },
+        "name": { "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "prerelease": { "type": "boolean" },
+        "release_id": { "required": true, "type": "integer" },
+        "repo": { "required": true, "type": "string" },
+        "tag_name": { "type": "string" },
+        "target_commitish": { "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/releases/:release_id"
+    },
+    "updateReleaseAsset": {
+      "method": "PATCH",
+      "params": {
+        "asset_id": { "required": true, "type": "integer" },
+        "label": { "type": "string" },
+        "name": { "type": "string" },
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" }
+      },
+      "url": "/repos/:owner/:repo/releases/assets/:asset_id"
+    },
+    "uploadReleaseAsset": {
+      "method": "POST",
+      "params": {
+        "file": {
+          "mapTo": "data",
+          "required": true,
+          "type": "string | object"
+        },
+        "headers": { "required": true, "type": "object" },
+        "headers.content-length": { "required": true, "type": "integer" },
+        "headers.content-type": { "required": true, "type": "string" },
+        "label": { "type": "string" },
+        "name": { "required": true, "type": "string" },
+        "url": { "required": true, "type": "string" }
+      },
+      "url": ":url"
+    }
+  },
+  "search": {
+    "code": {
+      "method": "GET",
+      "params": {
+        "order": { "enum": ["desc", "asc"], "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "q": { "required": true, "type": "string" },
+        "sort": { "enum": ["indexed"], "type": "string" }
+      },
+      "url": "/search/code"
+    },
+    "commits": {
+      "headers": { "accept": "application/vnd.github.cloak-preview+json" },
+      "method": "GET",
+      "params": {
+        "order": { "enum": ["desc", "asc"], "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "q": { "required": true, "type": "string" },
+        "sort": { "enum": ["author-date", "committer-date"], "type": "string" }
+      },
+      "url": "/search/commits"
+    },
+    "issues": {
+      "deprecated": "octokit.search.issues() has been renamed to octokit.search.issuesAndPullRequests() (2018-12-27)",
+      "method": "GET",
+      "params": {
+        "order": { "enum": ["desc", "asc"], "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "q": { "required": true, "type": "string" },
+        "sort": {
+          "enum": [
+            "comments",
+            "reactions",
+            "reactions-+1",
+            "reactions--1",
+            "reactions-smile",
+            "reactions-thinking_face",
+            "reactions-heart",
+            "reactions-tada",
+            "interactions",
+            "created",
+            "updated"
+          ],
+          "type": "string"
+        }
+      },
+      "url": "/search/issues"
+    },
+    "issuesAndPullRequests": {
+      "method": "GET",
+      "params": {
+        "order": { "enum": ["desc", "asc"], "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "q": { "required": true, "type": "string" },
+        "sort": {
+          "enum": [
+            "comments",
+            "reactions",
+            "reactions-+1",
+            "reactions--1",
+            "reactions-smile",
+            "reactions-thinking_face",
+            "reactions-heart",
+            "reactions-tada",
+            "interactions",
+            "created",
+            "updated"
+          ],
+          "type": "string"
+        }
+      },
+      "url": "/search/issues"
+    },
+    "labels": {
+      "method": "GET",
+      "params": {
+        "order": { "enum": ["desc", "asc"], "type": "string" },
+        "q": { "required": true, "type": "string" },
+        "repository_id": { "required": true, "type": "integer" },
+        "sort": { "enum": ["created", "updated"], "type": "string" }
+      },
+      "url": "/search/labels"
+    },
+    "repos": {
+      "method": "GET",
+      "params": {
+        "order": { "enum": ["desc", "asc"], "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "q": { "required": true, "type": "string" },
+        "sort": {
+          "enum": ["stars", "forks", "help-wanted-issues", "updated"],
+          "type": "string"
+        }
+      },
+      "url": "/search/repositories"
+    },
+    "topics": {
+      "method": "GET",
+      "params": { "q": { "required": true, "type": "string" } },
+      "url": "/search/topics"
+    },
+    "users": {
+      "method": "GET",
+      "params": {
+        "order": { "enum": ["desc", "asc"], "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "q": { "required": true, "type": "string" },
+        "sort": {
+          "enum": ["followers", "repositories", "joined"],
+          "type": "string"
+        }
+      },
+      "url": "/search/users"
+    }
+  },
+  "teams": {
+    "addMember": {
+      "deprecated": "octokit.teams.addMember() is deprecated, see https://developer.github.com/v3/teams/members/#add-team-member",
+      "method": "PUT",
+      "params": {
+        "team_id": { "required": true, "type": "integer" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/teams/:team_id/members/:username"
+    },
+    "addOrUpdateMembership": {
+      "method": "PUT",
+      "params": {
+        "role": { "enum": ["member", "maintainer"], "type": "string" },
+        "team_id": { "required": true, "type": "integer" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/teams/:team_id/memberships/:username"
+    },
+    "addOrUpdateProject": {
+      "headers": { "accept": "application/vnd.github.inertia-preview+json" },
+      "method": "PUT",
+      "params": {
+        "permission": { "enum": ["read", "write", "admin"], "type": "string" },
+        "project_id": { "required": true, "type": "integer" },
+        "team_id": { "required": true, "type": "integer" }
+      },
+      "url": "/teams/:team_id/projects/:project_id"
+    },
+    "addOrUpdateRepo": {
+      "method": "PUT",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "permission": { "enum": ["pull", "push", "admin"], "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "team_id": { "required": true, "type": "integer" }
+      },
+      "url": "/teams/:team_id/repos/:owner/:repo"
+    },
+    "checkManagesRepo": {
+      "method": "GET",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "team_id": { "required": true, "type": "integer" }
+      },
+      "url": "/teams/:team_id/repos/:owner/:repo"
+    },
+    "create": {
+      "method": "POST",
+      "params": {
+        "description": { "type": "string" },
+        "maintainers": { "type": "string[]" },
+        "name": { "required": true, "type": "string" },
+        "org": { "required": true, "type": "string" },
+        "parent_team_id": { "type": "integer" },
+        "permission": { "enum": ["pull", "push", "admin"], "type": "string" },
+        "privacy": { "enum": ["secret", "closed"], "type": "string" },
+        "repo_names": { "type": "string[]" }
+      },
+      "url": "/orgs/:org/teams"
+    },
+    "createDiscussion": {
+      "headers": { "accept": "application/vnd.github.echo-preview+json" },
+      "method": "POST",
+      "params": {
+        "body": { "required": true, "type": "string" },
+        "private": { "type": "boolean" },
+        "team_id": { "required": true, "type": "integer" },
+        "title": { "required": true, "type": "string" }
+      },
+      "url": "/teams/:team_id/discussions"
+    },
+    "createDiscussionComment": {
+      "headers": { "accept": "application/vnd.github.echo-preview+json" },
+      "method": "POST",
+      "params": {
+        "body": { "required": true, "type": "string" },
+        "discussion_number": { "required": true, "type": "integer" },
+        "team_id": { "required": true, "type": "integer" }
+      },
+      "url": "/teams/:team_id/discussions/:discussion_number/comments"
+    },
+    "delete": {
+      "method": "DELETE",
+      "params": { "team_id": { "required": true, "type": "integer" } },
+      "url": "/teams/:team_id"
+    },
+    "deleteDiscussion": {
+      "headers": { "accept": "application/vnd.github.echo-preview+json" },
+      "method": "DELETE",
+      "params": {
+        "discussion_number": { "required": true, "type": "integer" },
+        "team_id": { "required": true, "type": "integer" }
+      },
+      "url": "/teams/:team_id/discussions/:discussion_number"
+    },
+    "deleteDiscussionComment": {
+      "headers": { "accept": "application/vnd.github.echo-preview+json" },
+      "method": "DELETE",
+      "params": {
+        "comment_number": { "required": true, "type": "integer" },
+        "discussion_number": { "required": true, "type": "integer" },
+        "team_id": { "required": true, "type": "integer" }
+      },
+      "url": "/teams/:team_id/discussions/:discussion_number/comments/:comment_number"
+    },
+    "get": {
+      "method": "GET",
+      "params": { "team_id": { "required": true, "type": "integer" } },
+      "url": "/teams/:team_id"
+    },
+    "getByName": {
+      "method": "GET",
+      "params": {
+        "org": { "required": true, "type": "string" },
+        "team_slug": { "required": true, "type": "string" }
+      },
+      "url": "/orgs/:org/teams/:team_slug"
+    },
+    "getDiscussion": {
+      "headers": { "accept": "application/vnd.github.echo-preview+json" },
+      "method": "GET",
+      "params": {
+        "discussion_number": { "required": true, "type": "integer" },
+        "team_id": { "required": true, "type": "integer" }
+      },
+      "url": "/teams/:team_id/discussions/:discussion_number"
+    },
+    "getDiscussionComment": {
+      "headers": { "accept": "application/vnd.github.echo-preview+json" },
+      "method": "GET",
+      "params": {
+        "comment_number": { "required": true, "type": "integer" },
+        "discussion_number": { "required": true, "type": "integer" },
+        "team_id": { "required": true, "type": "integer" }
+      },
+      "url": "/teams/:team_id/discussions/:discussion_number/comments/:comment_number"
+    },
+    "getMember": {
+      "deprecated": "octokit.teams.getMember() is deprecated, see https://developer.github.com/v3/teams/members/#get-team-member",
+      "method": "GET",
+      "params": {
+        "team_id": { "required": true, "type": "integer" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/teams/:team_id/members/:username"
+    },
+    "getMembership": {
+      "method": "GET",
+      "params": {
+        "team_id": { "required": true, "type": "integer" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/teams/:team_id/memberships/:username"
+    },
+    "list": {
+      "method": "GET",
+      "params": {
+        "org": { "required": true, "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" }
+      },
+      "url": "/orgs/:org/teams"
+    },
+    "listChild": {
+      "headers": { "accept": "application/vnd.github.hellcat-preview+json" },
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "team_id": { "required": true, "type": "integer" }
+      },
+      "url": "/teams/:team_id/teams"
+    },
+    "listDiscussionComments": {
+      "headers": { "accept": "application/vnd.github.echo-preview+json" },
+      "method": "GET",
+      "params": {
+        "direction": { "enum": ["asc", "desc"], "type": "string" },
+        "discussion_number": { "required": true, "type": "integer" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "team_id": { "required": true, "type": "integer" }
+      },
+      "url": "/teams/:team_id/discussions/:discussion_number/comments"
+    },
+    "listDiscussions": {
+      "headers": { "accept": "application/vnd.github.echo-preview+json" },
+      "method": "GET",
+      "params": {
+        "direction": { "enum": ["asc", "desc"], "type": "string" },
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "team_id": { "required": true, "type": "integer" }
+      },
+      "url": "/teams/:team_id/discussions"
+    },
+    "listForAuthenticatedUser": {
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" }
+      },
+      "url": "/user/teams"
+    },
+    "listMembers": {
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "role": { "enum": ["member", "maintainer", "all"], "type": "string" },
+        "team_id": { "required": true, "type": "integer" }
+      },
+      "url": "/teams/:team_id/members"
+    },
+    "listPendingInvitations": {
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "team_id": { "required": true, "type": "integer" }
+      },
+      "url": "/teams/:team_id/invitations"
+    },
+    "listProjects": {
+      "headers": { "accept": "application/vnd.github.inertia-preview+json" },
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "team_id": { "required": true, "type": "integer" }
+      },
+      "url": "/teams/:team_id/projects"
+    },
+    "listRepos": {
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "team_id": { "required": true, "type": "integer" }
+      },
+      "url": "/teams/:team_id/repos"
+    },
+    "removeMember": {
+      "deprecated": "octokit.teams.removeMember() is deprecated, see https://developer.github.com/v3/teams/members/#remove-team-member",
+      "method": "DELETE",
+      "params": {
+        "team_id": { "required": true, "type": "integer" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/teams/:team_id/members/:username"
+    },
+    "removeMembership": {
+      "method": "DELETE",
+      "params": {
+        "team_id": { "required": true, "type": "integer" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/teams/:team_id/memberships/:username"
+    },
+    "removeProject": {
+      "method": "DELETE",
+      "params": {
+        "project_id": { "required": true, "type": "integer" },
+        "team_id": { "required": true, "type": "integer" }
+      },
+      "url": "/teams/:team_id/projects/:project_id"
+    },
+    "removeRepo": {
+      "method": "DELETE",
+      "params": {
+        "owner": { "required": true, "type": "string" },
+        "repo": { "required": true, "type": "string" },
+        "team_id": { "required": true, "type": "integer" }
+      },
+      "url": "/teams/:team_id/repos/:owner/:repo"
+    },
+    "reviewProject": {
+      "headers": { "accept": "application/vnd.github.inertia-preview+json" },
+      "method": "GET",
+      "params": {
+        "project_id": { "required": true, "type": "integer" },
+        "team_id": { "required": true, "type": "integer" }
+      },
+      "url": "/teams/:team_id/projects/:project_id"
+    },
+    "update": {
+      "method": "PATCH",
+      "params": {
+        "description": { "type": "string" },
+        "name": { "required": true, "type": "string" },
+        "parent_team_id": { "type": "integer" },
+        "permission": { "enum": ["pull", "push", "admin"], "type": "string" },
+        "privacy": { "enum": ["secret", "closed"], "type": "string" },
+        "team_id": { "required": true, "type": "integer" }
+      },
+      "url": "/teams/:team_id"
+    },
+    "updateDiscussion": {
+      "headers": { "accept": "application/vnd.github.echo-preview+json" },
+      "method": "PATCH",
+      "params": {
+        "body": { "type": "string" },
+        "discussion_number": { "required": true, "type": "integer" },
+        "team_id": { "required": true, "type": "integer" },
+        "title": { "type": "string" }
+      },
+      "url": "/teams/:team_id/discussions/:discussion_number"
+    },
+    "updateDiscussionComment": {
+      "headers": { "accept": "application/vnd.github.echo-preview+json" },
+      "method": "PATCH",
+      "params": {
+        "body": { "required": true, "type": "string" },
+        "comment_number": { "required": true, "type": "integer" },
+        "discussion_number": { "required": true, "type": "integer" },
+        "team_id": { "required": true, "type": "integer" }
+      },
+      "url": "/teams/:team_id/discussions/:discussion_number/comments/:comment_number"
+    }
+  },
+  "users": {
+    "addEmails": {
+      "method": "POST",
+      "params": { "emails": { "required": true, "type": "string[]" } },
+      "url": "/user/emails"
+    },
+    "block": {
+      "method": "PUT",
+      "params": { "username": { "required": true, "type": "string" } },
+      "url": "/user/blocks/:username"
+    },
+    "checkBlocked": {
+      "method": "GET",
+      "params": { "username": { "required": true, "type": "string" } },
+      "url": "/user/blocks/:username"
+    },
+    "checkFollowing": {
+      "method": "GET",
+      "params": { "username": { "required": true, "type": "string" } },
+      "url": "/user/following/:username"
+    },
+    "checkFollowingForUser": {
+      "method": "GET",
+      "params": {
+        "target_user": { "required": true, "type": "string" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/users/:username/following/:target_user"
+    },
+    "createGpgKey": {
+      "method": "POST",
+      "params": { "armored_public_key": { "type": "string" } },
+      "url": "/user/gpg_keys"
+    },
+    "createPublicKey": {
+      "method": "POST",
+      "params": { "key": { "type": "string" }, "title": { "type": "string" } },
+      "url": "/user/keys"
+    },
+    "deleteEmails": {
+      "method": "DELETE",
+      "params": { "emails": { "required": true, "type": "string[]" } },
+      "url": "/user/emails"
+    },
+    "deleteGpgKey": {
+      "method": "DELETE",
+      "params": { "gpg_key_id": { "required": true, "type": "integer" } },
+      "url": "/user/gpg_keys/:gpg_key_id"
+    },
+    "deletePublicKey": {
+      "method": "DELETE",
+      "params": { "key_id": { "required": true, "type": "integer" } },
+      "url": "/user/keys/:key_id"
+    },
+    "follow": {
+      "method": "PUT",
+      "params": { "username": { "required": true, "type": "string" } },
+      "url": "/user/following/:username"
+    },
+    "getAuthenticated": { "method": "GET", "params": {}, "url": "/user" },
+    "getByUsername": {
+      "method": "GET",
+      "params": { "username": { "required": true, "type": "string" } },
+      "url": "/users/:username"
+    },
+    "getContextForUser": {
+      "headers": { "accept": "application/vnd.github.hagar-preview+json" },
+      "method": "GET",
+      "params": {
+        "subject_id": { "type": "string" },
+        "subject_type": {
+          "enum": ["organization", "repository", "issue", "pull_request"],
+          "type": "string"
+        },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/users/:username/hovercard"
+    },
+    "getGpgKey": {
+      "method": "GET",
+      "params": { "gpg_key_id": { "required": true, "type": "integer" } },
+      "url": "/user/gpg_keys/:gpg_key_id"
+    },
+    "getPublicKey": {
+      "method": "GET",
+      "params": { "key_id": { "required": true, "type": "integer" } },
+      "url": "/user/keys/:key_id"
+    },
+    "list": {
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "since": { "type": "string" }
+      },
+      "url": "/users"
+    },
+    "listBlocked": { "method": "GET", "params": {}, "url": "/user/blocks" },
+    "listEmails": {
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" }
+      },
+      "url": "/user/emails"
+    },
+    "listFollowersForAuthenticatedUser": {
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" }
+      },
+      "url": "/user/followers"
+    },
+    "listFollowersForUser": {
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/users/:username/followers"
+    },
+    "listFollowingForAuthenticatedUser": {
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" }
+      },
+      "url": "/user/following"
+    },
+    "listFollowingForUser": {
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/users/:username/following"
+    },
+    "listGpgKeys": {
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" }
+      },
+      "url": "/user/gpg_keys"
+    },
+    "listGpgKeysForUser": {
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/users/:username/gpg_keys"
+    },
+    "listPublicEmails": {
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" }
+      },
+      "url": "/user/public_emails"
+    },
+    "listPublicKeys": {
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" }
+      },
+      "url": "/user/keys"
+    },
+    "listPublicKeysForUser": {
+      "method": "GET",
+      "params": {
+        "page": { "type": "integer" },
+        "per_page": { "type": "integer" },
+        "username": { "required": true, "type": "string" }
+      },
+      "url": "/users/:username/keys"
+    },
+    "togglePrimaryEmailVisibility": {
+      "method": "PATCH",
+      "params": {
+        "email": { "required": true, "type": "string" },
+        "visibility": { "required": true, "type": "string" }
+      },
+      "url": "/user/email/visibility"
+    },
+    "unblock": {
+      "method": "DELETE",
+      "params": { "username": { "required": true, "type": "string" } },
+      "url": "/user/blocks/:username"
+    },
+    "unfollow": {
+      "method": "DELETE",
+      "params": { "username": { "required": true, "type": "string" } },
+      "url": "/user/following/:username"
+    },
+    "updateAuthenticated": {
+      "method": "PATCH",
+      "params": {
+        "bio": { "type": "string" },
+        "blog": { "type": "string" },
+        "company": { "type": "string" },
+        "email": { "type": "string" },
+        "hireable": { "type": "boolean" },
+        "location": { "type": "string" },
+        "name": { "type": "string" }
+      },
+      "url": "/user"
+    }
+  }
+}
diff --git a/setup-maven/node_modules/@octokit/rest/plugins/validate/index.js b/setup-maven/node_modules/@octokit/rest/plugins/validate/index.js
new file mode 100644
index 0000000..9954751
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/plugins/validate/index.js
@@ -0,0 +1,7 @@
+module.exports = octokitValidate;
+
+const validate = require("./validate");
+
+function octokitValidate(octokit) {
+  octokit.hook.before("request", validate.bind(null, octokit));
+}
diff --git a/setup-maven/node_modules/@octokit/rest/plugins/validate/validate.js b/setup-maven/node_modules/@octokit/rest/plugins/validate/validate.js
new file mode 100644
index 0000000..00b3008
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/rest/plugins/validate/validate.js
@@ -0,0 +1,151 @@
+"use strict";
+
+module.exports = validate;
+
+const { RequestError } = require("@octokit/request-error");
+const get = require("lodash.get");
+const set = require("lodash.set");
+
+function validate(octokit, options) {
+  if (!options.request.validate) {
+    return;
+  }
+  const { validate: params } = options.request;
+
+  Object.keys(params).forEach(parameterName => {
+    const parameter = get(params, parameterName);
+
+    const expectedType = parameter.type;
+    let parentParameterName;
+    let parentValue;
+    let parentParamIsPresent = true;
+    let parentParameterIsArray = false;
+
+    if (/\./.test(parameterName)) {
+      parentParameterName = parameterName.replace(/\.[^.]+$/, "");
+      parentParameterIsArray = parentParameterName.slice(-2) === "[]";
+      if (parentParameterIsArray) {
+        parentParameterName = parentParameterName.slice(0, -2);
+      }
+      parentValue = get(options, parentParameterName);
+      parentParamIsPresent =
+        parentParameterName === "headers" ||
+        (typeof parentValue === "object" && parentValue !== null);
+    }
+
+    const values = parentParameterIsArray
+      ? (get(options, parentParameterName) || []).map(
+          value => value[parameterName.split(/\./).pop()]
+        )
+      : [get(options, parameterName)];
+
+    values.forEach((value, i) => {
+      const valueIsPresent = typeof value !== "undefined";
+      const valueIsNull = value === null;
+      const currentParameterName = parentParameterIsArray
+        ? parameterName.replace(/\[\]/, `[${i}]`)
+        : parameterName;
+
+      if (!parameter.required && !valueIsPresent) {
+        return;
+      }
+
+      // if the parent parameter is of type object but allows null
+      // then the child parameters can be ignored
+      if (!parentParamIsPresent) {
+        return;
+      }
+
+      if (parameter.allowNull && valueIsNull) {
+        return;
+      }
+
+      if (!parameter.allowNull && valueIsNull) {
+        throw new RequestError(
+          `'${currentParameterName}' cannot be null`,
+          400,
+          {
+            request: options
+          }
+        );
+      }
+
+      if (parameter.required && !valueIsPresent) {
+        throw new RequestError(
+          `Empty value for parameter '${currentParameterName}': ${JSON.stringify(
+            value
+          )}`,
+          400,
+          {
+            request: options
+          }
+        );
+      }
+
+      // parse to integer before checking for enum
+      // so that string "1" will match enum with number 1
+      if (expectedType === "integer") {
+        const unparsedValue = value;
+        value = parseInt(value, 10);
+        if (isNaN(value)) {
+          throw new RequestError(
+            `Invalid value for parameter '${currentParameterName}': ${JSON.stringify(
+              unparsedValue
+            )} is NaN`,
+            400,
+            {
+              request: options
+            }
+          );
+        }
+      }
+
+      if (parameter.enum && parameter.enum.indexOf(String(value)) === -1) {
+        throw new RequestError(
+          `Invalid value for parameter '${currentParameterName}': ${JSON.stringify(
+            value
+          )}`,
+          400,
+          {
+            request: options
+          }
+        );
+      }
+
+      if (parameter.validation) {
+        const regex = new RegExp(parameter.validation);
+        if (!regex.test(value)) {
+          throw new RequestError(
+            `Invalid value for parameter '${currentParameterName}': ${JSON.stringify(
+              value
+            )}`,
+            400,
+            {
+              request: options
+            }
+          );
+        }
+      }
+
+      if (expectedType === "object" && typeof value === "string") {
+        try {
+          value = JSON.parse(value);
+        } catch (exception) {
+          throw new RequestError(
+            `JSON parse error of value for parameter '${currentParameterName}': ${JSON.stringify(
+              value
+            )}`,
+            400,
+            {
+              request: options
+            }
+          );
+        }
+      }
+
+      set(options, parameter.mapTo || currentParameterName, value);
+    });
+  });
+
+  return options;
+}
diff --git a/setup-maven/node_modules/@octokit/types/.github/ISSUE_TEMPLATE/01_help.md b/setup-maven/node_modules/@octokit/types/.github/ISSUE_TEMPLATE/01_help.md
new file mode 100644
index 0000000..b518515
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/types/.github/ISSUE_TEMPLATE/01_help.md
@@ -0,0 +1,5 @@
+---
+name: "🆘 Help"
+about: "How does this even work 🤷‍♂️"
+labels: support
+---
diff --git a/setup-maven/node_modules/@octokit/types/.github/ISSUE_TEMPLATE/02_bug.md b/setup-maven/node_modules/@octokit/types/.github/ISSUE_TEMPLATE/02_bug.md
new file mode 100644
index 0000000..d7e8325
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/types/.github/ISSUE_TEMPLATE/02_bug.md
@@ -0,0 +1,19 @@
+---
+name: "🐛 Bug Report"
+about: "If something isn't working as expected 🤔"
+labels: bug
+---
+
+<!-- Please replace all placeholders such as this below -->
+
+**What happened?**
+
+<!-- Describe the problem and how to reproduce it. Add screenshots or a link to your repository if possible and helpful -->
+
+**What did you expect to happen?**
+
+<!-- Describe what you expected to happen instead -->
+
+**What the problem might be**
+
+<!-- If you have an idea where the bug might lie, please share here. Otherwise remove the whole section -->
diff --git a/setup-maven/node_modules/@octokit/types/.github/ISSUE_TEMPLATE/03_feature_request.md b/setup-maven/node_modules/@octokit/types/.github/ISSUE_TEMPLATE/03_feature_request.md
new file mode 100644
index 0000000..89a5481
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/types/.github/ISSUE_TEMPLATE/03_feature_request.md
@@ -0,0 +1,19 @@
+---
+name: "🧚‍♂️ Feature Request"
+about: "Wouldn’t it be nice if 💭"
+labels: feature
+---
+
+<!-- Please replace all placeholders such as this below -->
+
+**What’s missing?**
+
+<!-- Describe your feature idea  -->
+
+**Why?**
+
+<!-- Describe the problem you are facing -->
+
+**Alternatives you tried**
+
+<!-- Describe the workarounds you tried so far and how they worked for you -->
diff --git a/setup-maven/node_modules/@octokit/types/.github/ISSUE_TEMPLATE/04_thanks.md b/setup-maven/node_modules/@octokit/types/.github/ISSUE_TEMPLATE/04_thanks.md
new file mode 100644
index 0000000..c67ce83
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/types/.github/ISSUE_TEMPLATE/04_thanks.md
@@ -0,0 +1,19 @@
+---
+name: "💝 Thank you"
+about: "@octokit/types is awesome 🙌"
+labels: thanks
+---
+
+<!-- Please replace all placeholders such as this below -->
+
+**How do you use @octokit/types?**
+
+<!-- I’d love to know how you use @octokit/types, to better understand people’s use cases -->
+
+**What do you love about it?**
+
+<!-- Thanks for the kind words 🤗 -->
+
+**How did you learn about it?**
+
+<!-- Just curious -->
diff --git a/setup-maven/node_modules/@octokit/types/.github/workflows/release.yml b/setup-maven/node_modules/@octokit/types/.github/workflows/release.yml
new file mode 100644
index 0000000..b315607
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/types/.github/workflows/release.yml
@@ -0,0 +1,28 @@
+name: Release
+on:
+  push:
+    branches:
+      - master
+
+jobs:
+  release:
+    name: release
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@master
+      - uses: actions/setup-node@v1
+        with:
+          node-version: "12.x"
+      - run: npm ci
+      - run: npx semantic-release
+        env:
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
+      - run: npm run docs
+        env:
+          # workaround "Failed to replace env in config: ${NPM_TOKEN}" error
+          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
+      - uses: maxheld83/ghpages@master
+        env:
+          BUILD_DIR: docs/
+          GH_PAT: ${{ secrets.OCTOKIT_PAT }}
diff --git a/setup-maven/node_modules/@octokit/types/.github/workflows/routes-update.yml b/setup-maven/node_modules/@octokit/types/.github/workflows/routes-update.yml
new file mode 100644
index 0000000..38d841d
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/types/.github/workflows/routes-update.yml
@@ -0,0 +1,39 @@
+name: octokit/routes update
+on:
+  repository_dispatch:
+    types: [octokit-routes-release]
+
+jobs:
+  update_routes:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@master
+      - uses: actions/setup-node@v1
+        with:
+          node-version: "12.x"
+        # try checking out routes-update branch. Ignore error if it does not exist
+      - run: git checkout routes-update || true
+      - run: npm ci
+      - run: npm run update-endpoints
+        env:
+          VERSION: ${{ github.event.client_payload.version }}
+      - name: Create Pull Request
+        uses: gr2m/create-or-update-pull-request-action@v1.x
+        env:
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+        with:
+          title: "🚧 GitHub REST Endpoints changed"
+          body: |
+            See what changed at https://github.com/octokit/routes/releases/latest.
+
+            Make sure to update the commits so that the merge results in helpful release notes, see [Merging the Pull Request & releasing a new version](https://github.com/octokit/rest.js/blob/master/CONTRIBUTING.md#merging-the-pull-request--releasing-a-new-version).
+
+            In general
+
+            - Avoid breaking changes at all costs
+            - If there are no typescript or code changes, use a `docs` prefix
+            - If there are typescript changes but no code changes, use `fix(typescript)` prefix
+            - If there are code changes, use `fix` if a problem was resolved, `feat` if new endpoints / parameters were added, and `feat(deprecation)` if a method was deprecated.
+          branch: "routes-update"
+          commit-message: "WIP octokit/routes updated"
+          author: "Octokit Bot <33075676+octokitbot@users.noreply.github.com>"
diff --git a/setup-maven/node_modules/@octokit/types/.github/workflows/test.yml b/setup-maven/node_modules/@octokit/types/.github/workflows/test.yml
new file mode 100644
index 0000000..702220f
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/types/.github/workflows/test.yml
@@ -0,0 +1,19 @@
+name: Test
+on:
+  push:
+    branches:
+      - master
+      - "greenkeeper/*"
+  pull_request:
+    types: [opened, synchronize]
+
+jobs:
+  test:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@master
+      - uses: actions/setup-node@v1
+        with:
+          node-version: 12
+      - run: npm ci
+      - run: npm test
diff --git a/setup-maven/node_modules/@octokit/types/CODE_OF_CONDUCT.md b/setup-maven/node_modules/@octokit/types/CODE_OF_CONDUCT.md
new file mode 100644
index 0000000..8392e63
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/types/CODE_OF_CONDUCT.md
@@ -0,0 +1,75 @@
+# Contributor Covenant Code of Conduct
+
+## Our Pledge
+
+In the interest of fostering an open and welcoming environment, we as
+contributors and maintainers pledge to making participation in our project and
+our community a harassment-free experience for everyone, regardless of age, body
+size, disability, ethnicity, gender identity and expression, level of experience,
+nationality, personal appearance, race, religion, or sexual identity and
+orientation.
+
+## Our Standards
+
+Examples of behavior that contributes to creating a positive environment
+include:
+
+- Using welcoming and inclusive language
+- Being respectful of differing viewpoints and experiences
+- Gracefully accepting constructive criticism
+- Focusing on what is best for the community
+- Showing empathy towards other community members
+
+Examples of unacceptable behavior by participants include:
+
+- The use of sexualized language or imagery and unwelcome sexual attention or
+  advances
+- Trolling, insulting/derogatory comments, and personal or political attacks
+- Public or private harassment
+- Publishing others' private information, such as a physical or electronic
+  address, without explicit permission
+- Other conduct which could reasonably be considered inappropriate in a
+  professional setting
+
+## Our Responsibilities
+
+Project maintainers are responsible for clarifying the standards of acceptable
+behavior and are expected to take appropriate and fair corrective action in
+response to any instances of unacceptable behavior.
+
+Project maintainers have the right and responsibility to remove, edit, or
+reject comments, commits, code, wiki edits, issues, and other contributions
+that are not aligned to this Code of Conduct, or to ban temporarily or
+permanently any contributor for other behaviors that they deem inappropriate,
+threatening, offensive, or harmful.
+
+## Scope
+
+This Code of Conduct applies both within project spaces and in public spaces
+when an individual is representing the project or its community. Examples of
+representing a project or community include using an official project e-mail
+address, posting via an official social media account, or acting as an appointed
+representative at an online or offline event. Representation of a project may be
+further defined and clarified by project maintainers.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be
+reported by contacting the project team at opensource+octokit@github.com. All
+complaints will be reviewed and investigated and will result in a response that
+is deemed necessary and appropriate to the circumstances. The project team is
+obligated to maintain confidentiality with regard to the reporter of an incident.
+Further details of specific enforcement policies may be posted separately.
+
+Project maintainers who do not follow or enforce the Code of Conduct in good
+faith may face temporary or permanent repercussions as determined by other
+members of the project's leadership.
+
+## Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
+available at [https://contributor-covenant.org/version/1/4][version]
+
+[homepage]: https://contributor-covenant.org
+[version]: https://contributor-covenant.org/version/1/4/
+
diff --git a/setup-maven/node_modules/@octokit/types/CONTRIBUTING.md b/setup-maven/node_modules/@octokit/types/CONTRIBUTING.md
new file mode 100644
index 0000000..6b27599
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/types/CONTRIBUTING.md
@@ -0,0 +1,59 @@
+# How to contribute
+
+Please note that this project is released with a [Contributor Code of Conduct](CODE_OF_CONDUCT.md).
+By participating in this project you agree to abide by its terms.
+
+## Creating an Issue
+
+Before you create a new Issue:
+
+1. Please make sure there is no [open issue](https://github.com/octokit/plugin-paginate-rest/issues?utf8=%E2%9C%93&q=is%3Aissue) yet.
+2. If it is a bug report, include the steps to reproduce the issue and please create a reproducible test case on [runkit.com](https://runkit.com/). Example: https://runkit.com/gr2m/5aa034f1440b420012a6eebf
+3. If it is a feature request, please share the motivation for the new feature, what alternatives you tried, and how you would implement it.
+4. Please include links to the corresponding github documentation.
+
+## Setup the repository locally
+
+First, fork the repository.
+
+Setup the repository locally. Replace `<your account name>` with the name of the account you forked to.
+
+```shell
+git clone https://github.com/<your account name>/plugin-paginate-rest.js.git
+cd plugin-paginate-rest.js
+npm install
+```
+
+Run the tests before making changes to make sure the local setup is working as expected
+
+```shell
+npm test
+```
+
+## Submitting the Pull Request
+
+- Create a new branch locally.
+- Make your changes in that branch to your fork repository
+- Submit a pull request from your topic branch to the master branch on the `octokit/plugin-paginate-rest.js` repository.
+- Be sure to tag any issues your pull request is taking care of / contributing to. Adding "Closes #123" to a pull request description will automatically close the issue once the pull request is merged in.
+
+## Testing a pull request from github repo locally:
+
+You can install `@octokit/plugin-paginate-rest` from each pull request. Replace `[PULL REQUEST NUMBER]`
+
+Once you are done testing, you can revert back to the default module `@octokit/plugin-paginate-rest` from npm with `npm install @octokit/plugin-paginate-rest`
+
+## Merging the Pull Request & releasing a new version
+
+Releases are automated using [semantic-release](https://github.com/semantic-release/semantic-release).
+The following commit message conventions determine which version is released:
+
+1. `fix: ...` or `fix(scope name): ...` prefix in subject: bumps fix version, e.g. `1.2.3` → `1.2.4`
+2. `feat: ...` or `feat(scope name): ...` prefix in subject: bumps feature version, e.g. `1.2.3` → `1.3.0`
+3. `BREAKING CHANGE:` in body: bumps breaking version, e.g. `1.2.3` → `2.0.0`
+
+Only one version number is bumped at a time, the highest version change trumps the others.
+Besides publishing a new version to npm, semantic-release also creates a git tag and release
+on GitHub, generates changelogs from the commit messages and puts them into the release notes.
+s
+If the pull request looks good but does not follow the commit conventions, use the <kbd>Squash & merge</kbd> button.
diff --git a/setup-maven/node_modules/@octokit/types/LICENSE b/setup-maven/node_modules/@octokit/types/LICENSE
new file mode 100644
index 0000000..57bee5f
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/types/LICENSE
@@ -0,0 +1,7 @@
+MIT License Copyright (c) 2019 Octokit contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/setup-maven/node_modules/@octokit/types/README.md b/setup-maven/node_modules/@octokit/types/README.md
new file mode 100644
index 0000000..482dae0
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/types/README.md
@@ -0,0 +1,19 @@
+# types.ts
+
+> Shared TypeScript definitions for Octokit projects
+
+[![@latest](https://img.shields.io/npm/v/@octokit/types.svg)](https://www.npmjs.com/package/@octokit/types)
+[![Build Status](https://github.com/octokit/types.ts/workflows/Test/badge.svg)](https://github.com/octokit/types.ts/actions?workflow=Test)
+[![Greenkeeper](https://badges.greenkeeper.io/octokit/types.ts.svg)](https://greenkeeper.io/)
+
+## Usage
+
+See https://octokit.github.io/types.ts for all exported types
+
+## Contributing
+
+See [CONTRIBUTING.md](CONTRIBUTING.md)
+
+## License
+
+[MIT](LICENSE)
diff --git a/setup-maven/node_modules/@octokit/types/package.json b/setup-maven/node_modules/@octokit/types/package.json
new file mode 100644
index 0000000..68634b7
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/types/package.json
@@ -0,0 +1,100 @@
+{
+  "_from": "@octokit/types@^2.0.0",
+  "_id": "@octokit/types@2.0.2",
+  "_inBundle": false,
+  "_integrity": "sha512-StASIL2lgT3TRjxv17z9pAqbnI7HGu9DrJlg3sEBFfCLaMEqp+O3IQPUF6EZtQ4xkAu2ml6kMBBCtGxjvmtmuQ==",
+  "_location": "/@octokit/types",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "@octokit/types@^2.0.0",
+    "name": "@octokit/types",
+    "escapedName": "@octokit%2ftypes",
+    "scope": "@octokit",
+    "rawSpec": "^2.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^2.0.0"
+  },
+  "_requiredBy": [
+    "/@octokit/endpoint",
+    "/@octokit/request",
+    "/@octokit/request-error"
+  ],
+  "_resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.0.2.tgz",
+  "_shasum": "0888497f5a664e28b0449731d5e88e19b2a74f90",
+  "_spec": "@octokit/types@^2.0.0",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/@octokit/request",
+  "author": {
+    "name": "Gregor Martynus",
+    "url": "https://twitter.com/gr2m"
+  },
+  "bugs": {
+    "url": "https://github.com/octokit/types.ts/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "@types/node": ">= 8"
+  },
+  "deprecated": false,
+  "description": "Shared TypeScript definitions for Octokit projects",
+  "devDependencies": {
+    "@octokit/graphql": "^4.2.2",
+    "handlebars": "^4.4.5",
+    "lodash.set": "^4.3.2",
+    "npm-run-all": "^4.1.5",
+    "pascal-case": "^2.0.1",
+    "prettier": "^1.18.2",
+    "semantic-release": "^15.13.24",
+    "semantic-release-plugin-update-version-in-files": "^1.0.0",
+    "sort-keys": "^4.0.0",
+    "string-to-jsdoc-comment": "^1.0.0",
+    "typedoc": "^0.15.0",
+    "typescript": "^3.6.4"
+  },
+  "homepage": "https://github.com/octokit/types.ts#readme",
+  "keywords": [
+    "github",
+    "api",
+    "sdk",
+    "toolkit",
+    "typescript"
+  ],
+  "license": "MIT",
+  "main": "src/index.ts",
+  "name": "@octokit/types",
+  "publishConfig": {
+    "access": "public"
+  },
+  "release": {
+    "plugins": [
+      "@semantic-release/commit-analyzer",
+      "@semantic-release/release-notes-generator",
+      "@semantic-release/github",
+      "@semantic-release/npm",
+      [
+        "semantic-release-plugin-update-version-in-files",
+        {
+          "files": [
+            "src/VERSION.ts"
+          ]
+        }
+      ]
+    ]
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/octokit/types.ts.git"
+  },
+  "scripts": {
+    "docs": "typedoc --module commonjs --readme none --out docs src/",
+    "lint": "prettier --check '{src,test}/**/*' README.md package.json !src/generated/*",
+    "lint:fix": "prettier --write '{src,test}/**/*' README.md package.json !src/generated/*",
+    "pretest": "npm run -s lint",
+    "test": "tsc --noEmit --declaration src/index.ts",
+    "update-endpoints": "npm-run-all update-endpoints:*",
+    "update-endpoints:fetch-json": "node scripts/update-endpoints/fetch-json",
+    "update-endpoints:typescript": "node scripts/update-endpoints/typescript"
+  },
+  "version": "2.0.2"
+}
diff --git a/setup-maven/node_modules/@octokit/types/scripts/update-endpoints/fetch-json.js b/setup-maven/node_modules/@octokit/types/scripts/update-endpoints/fetch-json.js
new file mode 100644
index 0000000..309a312
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/types/scripts/update-endpoints/fetch-json.js
@@ -0,0 +1,46 @@
+const { writeFileSync } = require("fs");
+const path = require("path");
+
+const { graphql } = require("@octokit/graphql");
+const prettier = require("prettier");
+
+if (!process.env.VERSION) {
+  throw new Error(`VERSION environment variable must be set`);
+}
+
+const QUERY = `
+  query ($version: String) {
+    endpoints(version: $version) {
+      name
+      scope(format: CAMELCASE)
+      id(format: CAMELCASE)
+      method
+      url
+      parameters {
+        alias
+        allowNull
+        deprecated
+        description
+        enum
+        name
+        type
+        required
+      }
+    }
+  }`;
+
+main();
+
+async function main() {
+  const { endpoints } = await graphql(QUERY, {
+    url: "https://octokit-routes-graphql-server.now.sh/",
+    version: process.env.VERSION
+  });
+
+  writeFileSync(
+    path.resolve(__dirname, "generated", "endpoints.json"),
+    prettier.format(JSON.stringify(endpoints), {
+      parser: "json"
+    })
+  );
+}
diff --git a/setup-maven/node_modules/@octokit/types/scripts/update-endpoints/generated/README.md b/setup-maven/node_modules/@octokit/types/scripts/update-endpoints/generated/README.md
new file mode 100644
index 0000000..6beaf58
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/types/scripts/update-endpoints/generated/README.md
@@ -0,0 +1,3 @@
+# DO NOT EDIT FILES IN THIS DIRECTORY
+
+All files are generated automatically and will be overwritten next time [octokit/routes](https://github.com/octokit/routes/) has a new release. If you find a problem, please file an issue.
diff --git a/setup-maven/node_modules/@octokit/types/scripts/update-endpoints/generated/endpoints.json b/setup-maven/node_modules/@octokit/types/scripts/update-endpoints/generated/endpoints.json
new file mode 100644
index 0000000..6c3d62a
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/types/scripts/update-endpoints/generated/endpoints.json
@@ -0,0 +1,25258 @@
+[
+  {
+    "name": "Get the authenticated GitHub App",
+    "scope": "apps",
+    "id": "getAuthenticated",
+    "method": "GET",
+    "url": "/app",
+    "parameters": []
+  },
+  {
+    "name": "Create a GitHub App from a manifest",
+    "scope": "apps",
+    "id": "createFromManifest",
+    "method": "POST",
+    "url": "/app-manifests/{code}/conversions",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "code parameter",
+        "enum": null,
+        "name": "code",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List installations",
+    "scope": "apps",
+    "id": "listInstallations",
+    "method": "GET",
+    "url": "/app/installations",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get an installation",
+    "scope": "apps",
+    "id": "getInstallation",
+    "method": "GET",
+    "url": "/app/installations/{installation_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "installation_id parameter",
+        "enum": null,
+        "name": "installation_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Delete an installation",
+    "scope": "apps",
+    "id": "deleteInstallation",
+    "method": "DELETE",
+    "url": "/app/installations/{installation_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "installation_id parameter",
+        "enum": null,
+        "name": "installation_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Create a new installation token",
+    "scope": "apps",
+    "id": "createInstallationToken",
+    "method": "POST",
+    "url": "/app/installations/{installation_id}/access_tokens",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "installation_id parameter",
+        "enum": null,
+        "name": "installation_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The `id`s of the repositories that the installation token can access. Providing repository `id`s restricts the access of an installation token to specific repositories. You can use the \"[List repositories](https://developer.github.com/v3/apps/installations/#list-repositories)\" endpoint to get the `id` of all repositories that an installation can access. For example, you can select specific repositories when creating an installation token to restrict the number of repositories that can be cloned using the token.",
+        "enum": null,
+        "name": "repository_ids",
+        "type": "integer[]",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The permissions granted to the access token. The permissions object includes the permission names and their access type. For a complete list of permissions and allowable values, see \"[GitHub App permissions](https://developer.github.com/apps/building-github-apps/creating-github-apps-using-url-parameters/#github-app-permissions).\"",
+        "enum": null,
+        "name": "permissions",
+        "type": "object",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List your grants",
+    "scope": "oauthAuthorizations",
+    "id": "listGrants",
+    "method": "GET",
+    "url": "/applications/grants",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get a single grant",
+    "scope": "oauthAuthorizations",
+    "id": "getGrant",
+    "method": "GET",
+    "url": "/applications/grants/{grant_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "grant_id parameter",
+        "enum": null,
+        "name": "grant_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Delete a grant",
+    "scope": "oauthAuthorizations",
+    "id": "deleteGrant",
+    "method": "DELETE",
+    "url": "/applications/grants/{grant_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "grant_id parameter",
+        "enum": null,
+        "name": "grant_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Revoke a grant for an application",
+    "scope": "oauthAuthorizations",
+    "id": "revokeGrantForApplication",
+    "method": "DELETE",
+    "url": "/applications/{client_id}/grants/{access_token}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "client_id parameter",
+        "enum": null,
+        "name": "client_id",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "access_token parameter",
+        "enum": null,
+        "name": "access_token",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Check an authorization",
+    "scope": "oauthAuthorizations",
+    "id": "checkAuthorization",
+    "method": "GET",
+    "url": "/applications/{client_id}/tokens/{access_token}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "client_id parameter",
+        "enum": null,
+        "name": "client_id",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "access_token parameter",
+        "enum": null,
+        "name": "access_token",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Reset an authorization",
+    "scope": "oauthAuthorizations",
+    "id": "resetAuthorization",
+    "method": "POST",
+    "url": "/applications/{client_id}/tokens/{access_token}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "client_id parameter",
+        "enum": null,
+        "name": "client_id",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "access_token parameter",
+        "enum": null,
+        "name": "access_token",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Revoke an authorization for an application",
+    "scope": "oauthAuthorizations",
+    "id": "revokeAuthorizationForApplication",
+    "method": "DELETE",
+    "url": "/applications/{client_id}/tokens/{access_token}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "client_id parameter",
+        "enum": null,
+        "name": "client_id",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "access_token parameter",
+        "enum": null,
+        "name": "access_token",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get a single GitHub App",
+    "scope": "apps",
+    "id": "getBySlug",
+    "method": "GET",
+    "url": "/apps/{app_slug}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "app_slug parameter",
+        "enum": null,
+        "name": "app_slug",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List your authorizations",
+    "scope": "oauthAuthorizations",
+    "id": "listAuthorizations",
+    "method": "GET",
+    "url": "/authorizations",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Create a new authorization",
+    "scope": "oauthAuthorizations",
+    "id": "createAuthorization",
+    "method": "POST",
+    "url": "/authorizations",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A list of scopes that this authorization is in.",
+        "enum": null,
+        "name": "scopes",
+        "type": "string[]",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A note to remind you what the OAuth token is for. Tokens not associated with a specific OAuth application (i.e. personal access tokens) must have a unique note.",
+        "enum": null,
+        "name": "note",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A URL to remind you what app the OAuth token is for.",
+        "enum": null,
+        "name": "note_url",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The 20 character OAuth app client key for which to create the token.",
+        "enum": null,
+        "name": "client_id",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The 40 character OAuth app client secret for which to create the token.",
+        "enum": null,
+        "name": "client_secret",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A unique string to distinguish an authorization from others created for the same client ID and user.",
+        "enum": null,
+        "name": "fingerprint",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get-or-create an authorization for a specific app",
+    "scope": "oauthAuthorizations",
+    "id": "getOrCreateAuthorizationForApp",
+    "method": "PUT",
+    "url": "/authorizations/clients/{client_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "client_id parameter",
+        "enum": null,
+        "name": "client_id",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The 40 character OAuth app client secret associated with the client ID specified in the URL.",
+        "enum": null,
+        "name": "client_secret",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A list of scopes that this authorization is in.",
+        "enum": null,
+        "name": "scopes",
+        "type": "string[]",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A note to remind you what the OAuth token is for.",
+        "enum": null,
+        "name": "note",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A URL to remind you what app the OAuth token is for.",
+        "enum": null,
+        "name": "note_url",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A unique string to distinguish an authorization from others created for the same client and user. If provided, this API is functionally equivalent to [Get-or-create an authorization for a specific app and fingerprint](https://developer.github.com/v3/oauth_authorizations/#get-or-create-an-authorization-for-a-specific-app-and-fingerprint).",
+        "enum": null,
+        "name": "fingerprint",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get-or-create an authorization for a specific app and fingerprint",
+    "scope": "oauthAuthorizations",
+    "id": "getOrCreateAuthorizationForAppAndFingerprint",
+    "method": "PUT",
+    "url": "/authorizations/clients/{client_id}/{fingerprint}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "client_id parameter",
+        "enum": null,
+        "name": "client_id",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "fingerprint parameter",
+        "enum": null,
+        "name": "fingerprint",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The 40 character OAuth app client secret associated with the client ID specified in the URL.",
+        "enum": null,
+        "name": "client_secret",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A list of scopes that this authorization is in.",
+        "enum": null,
+        "name": "scopes",
+        "type": "string[]",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A note to remind you what the OAuth token is for.",
+        "enum": null,
+        "name": "note",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A URL to remind you what app the OAuth token is for.",
+        "enum": null,
+        "name": "note_url",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get-or-create an authorization for a specific app and fingerprint",
+    "scope": "oauthAuthorizations",
+    "id": "getOrCreateAuthorizationForAppFingerprint",
+    "method": "PUT",
+    "url": "/authorizations/clients/{client_id}/{fingerprint}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "client_id parameter",
+        "enum": null,
+        "name": "client_id",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "fingerprint parameter",
+        "enum": null,
+        "name": "fingerprint",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The 40 character OAuth app client secret associated with the client ID specified in the URL.",
+        "enum": null,
+        "name": "client_secret",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A list of scopes that this authorization is in.",
+        "enum": null,
+        "name": "scopes",
+        "type": "string[]",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A note to remind you what the OAuth token is for.",
+        "enum": null,
+        "name": "note",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A URL to remind you what app the OAuth token is for.",
+        "enum": null,
+        "name": "note_url",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get a single authorization",
+    "scope": "oauthAuthorizations",
+    "id": "getAuthorization",
+    "method": "GET",
+    "url": "/authorizations/{authorization_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "authorization_id parameter",
+        "enum": null,
+        "name": "authorization_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Update an existing authorization",
+    "scope": "oauthAuthorizations",
+    "id": "updateAuthorization",
+    "method": "PATCH",
+    "url": "/authorizations/{authorization_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "authorization_id parameter",
+        "enum": null,
+        "name": "authorization_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Replaces the authorization scopes with these.",
+        "enum": null,
+        "name": "scopes",
+        "type": "string[]",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A list of scopes to add to this authorization.",
+        "enum": null,
+        "name": "add_scopes",
+        "type": "string[]",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A list of scopes to remove from this authorization.",
+        "enum": null,
+        "name": "remove_scopes",
+        "type": "string[]",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A note to remind you what the OAuth token is for. Tokens not associated with a specific OAuth application (i.e. personal access tokens) must have a unique note.",
+        "enum": null,
+        "name": "note",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A URL to remind you what app the OAuth token is for.",
+        "enum": null,
+        "name": "note_url",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A unique string to distinguish an authorization from others created for the same client ID and user.",
+        "enum": null,
+        "name": "fingerprint",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Delete an authorization",
+    "scope": "oauthAuthorizations",
+    "id": "deleteAuthorization",
+    "method": "DELETE",
+    "url": "/authorizations/{authorization_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "authorization_id parameter",
+        "enum": null,
+        "name": "authorization_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List all codes of conduct",
+    "scope": "codesOfConduct",
+    "id": "listConductCodes",
+    "method": "GET",
+    "url": "/codes_of_conduct",
+    "parameters": []
+  },
+  {
+    "name": "Get an individual code of conduct",
+    "scope": "codesOfConduct",
+    "id": "getConductCode",
+    "method": "GET",
+    "url": "/codes_of_conduct/{key}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "key parameter",
+        "enum": null,
+        "name": "key",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Create a content attachment",
+    "scope": "apps",
+    "id": "createContentAttachment",
+    "method": "POST",
+    "url": "/content_references/{content_reference_id}/attachments",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "content_reference_id parameter",
+        "enum": null,
+        "name": "content_reference_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The title of the content attachment displayed in the body or comment of an issue or pull request.",
+        "enum": null,
+        "name": "title",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The body text of the content attachment displayed in the body or comment of an issue or pull request. This parameter supports markdown.",
+        "enum": null,
+        "name": "body",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get",
+    "scope": "emojis",
+    "id": "get",
+    "method": "GET",
+    "url": "/emojis",
+    "parameters": []
+  },
+  {
+    "name": "List public events",
+    "scope": "activity",
+    "id": "listPublicEvents",
+    "method": "GET",
+    "url": "/events",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List feeds",
+    "scope": "activity",
+    "id": "listFeeds",
+    "method": "GET",
+    "url": "/feeds",
+    "parameters": []
+  },
+  {
+    "name": "List the authenticated user's gists or if called anonymously, this will return all public gists",
+    "scope": "gists",
+    "id": "list",
+    "method": "GET",
+    "url": "/gists",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Only gists updated at or after this time are returned.",
+        "enum": null,
+        "name": "since",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Create a gist",
+    "scope": "gists",
+    "id": "create",
+    "method": "POST",
+    "url": "/gists",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The filenames and content of each file in the gist. The keys in the `files` object represent the filename and have the type `string`.",
+        "enum": null,
+        "name": "files",
+        "type": "object",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The content of the file.",
+        "enum": null,
+        "name": "files.content",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A descriptive name for this gist.",
+        "enum": null,
+        "name": "description",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "When `true`, the gist will be public and available for anyone to see.",
+        "enum": null,
+        "name": "public",
+        "type": "boolean",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List all public gists",
+    "scope": "gists",
+    "id": "listPublic",
+    "method": "GET",
+    "url": "/gists/public",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Only gists updated at or after this time are returned.",
+        "enum": null,
+        "name": "since",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List starred gists",
+    "scope": "gists",
+    "id": "listStarred",
+    "method": "GET",
+    "url": "/gists/starred",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Only gists updated at or after this time are returned.",
+        "enum": null,
+        "name": "since",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get a single gist",
+    "scope": "gists",
+    "id": "get",
+    "method": "GET",
+    "url": "/gists/{gist_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "gist_id parameter",
+        "enum": null,
+        "name": "gist_id",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Edit a gist",
+    "scope": "gists",
+    "id": "update",
+    "method": "PATCH",
+    "url": "/gists/{gist_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "gist_id parameter",
+        "enum": null,
+        "name": "gist_id",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A descriptive name for this gist.",
+        "enum": null,
+        "name": "description",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The filenames and content that make up this gist.",
+        "enum": null,
+        "name": "files",
+        "type": "object",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The updated content of the file.",
+        "enum": null,
+        "name": "files.content",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The new name for this file. To delete a file, set the value of the filename to `null`.",
+        "enum": null,
+        "name": "files.filename",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Delete a gist",
+    "scope": "gists",
+    "id": "delete",
+    "method": "DELETE",
+    "url": "/gists/{gist_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "gist_id parameter",
+        "enum": null,
+        "name": "gist_id",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List comments on a gist",
+    "scope": "gists",
+    "id": "listComments",
+    "method": "GET",
+    "url": "/gists/{gist_id}/comments",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "gist_id parameter",
+        "enum": null,
+        "name": "gist_id",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Create a comment",
+    "scope": "gists",
+    "id": "createComment",
+    "method": "POST",
+    "url": "/gists/{gist_id}/comments",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "gist_id parameter",
+        "enum": null,
+        "name": "gist_id",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The comment text.",
+        "enum": null,
+        "name": "body",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get a single comment",
+    "scope": "gists",
+    "id": "getComment",
+    "method": "GET",
+    "url": "/gists/{gist_id}/comments/{comment_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "gist_id parameter",
+        "enum": null,
+        "name": "gist_id",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "comment_id parameter",
+        "enum": null,
+        "name": "comment_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Edit a comment",
+    "scope": "gists",
+    "id": "updateComment",
+    "method": "PATCH",
+    "url": "/gists/{gist_id}/comments/{comment_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "gist_id parameter",
+        "enum": null,
+        "name": "gist_id",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "comment_id parameter",
+        "enum": null,
+        "name": "comment_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The comment text.",
+        "enum": null,
+        "name": "body",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Delete a comment",
+    "scope": "gists",
+    "id": "deleteComment",
+    "method": "DELETE",
+    "url": "/gists/{gist_id}/comments/{comment_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "gist_id parameter",
+        "enum": null,
+        "name": "gist_id",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "comment_id parameter",
+        "enum": null,
+        "name": "comment_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List gist commits",
+    "scope": "gists",
+    "id": "listCommits",
+    "method": "GET",
+    "url": "/gists/{gist_id}/commits",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "gist_id parameter",
+        "enum": null,
+        "name": "gist_id",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Fork a gist",
+    "scope": "gists",
+    "id": "fork",
+    "method": "POST",
+    "url": "/gists/{gist_id}/forks",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "gist_id parameter",
+        "enum": null,
+        "name": "gist_id",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List gist forks",
+    "scope": "gists",
+    "id": "listForks",
+    "method": "GET",
+    "url": "/gists/{gist_id}/forks",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "gist_id parameter",
+        "enum": null,
+        "name": "gist_id",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Star a gist",
+    "scope": "gists",
+    "id": "star",
+    "method": "PUT",
+    "url": "/gists/{gist_id}/star",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "gist_id parameter",
+        "enum": null,
+        "name": "gist_id",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Unstar a gist",
+    "scope": "gists",
+    "id": "unstar",
+    "method": "DELETE",
+    "url": "/gists/{gist_id}/star",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "gist_id parameter",
+        "enum": null,
+        "name": "gist_id",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Check if a gist is starred",
+    "scope": "gists",
+    "id": "checkIsStarred",
+    "method": "GET",
+    "url": "/gists/{gist_id}/star",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "gist_id parameter",
+        "enum": null,
+        "name": "gist_id",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get a specific revision of a gist",
+    "scope": "gists",
+    "id": "getRevision",
+    "method": "GET",
+    "url": "/gists/{gist_id}/{sha}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "gist_id parameter",
+        "enum": null,
+        "name": "gist_id",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "sha parameter",
+        "enum": null,
+        "name": "sha",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Listing available templates",
+    "scope": "gitignore",
+    "id": "listTemplates",
+    "method": "GET",
+    "url": "/gitignore/templates",
+    "parameters": []
+  },
+  {
+    "name": "Get a single template",
+    "scope": "gitignore",
+    "id": "getTemplate",
+    "method": "GET",
+    "url": "/gitignore/templates/{name}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "name parameter",
+        "enum": null,
+        "name": "name",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List repositories",
+    "scope": "apps",
+    "id": "listRepos",
+    "method": "GET",
+    "url": "/installation/repositories",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List all issues assigned to the authenticated user across all visible repositories including owned repositories, member repositories, and organization repositories",
+    "scope": "issues",
+    "id": "list",
+    "method": "GET",
+    "url": "/issues",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Indicates which sorts of issues to return. Can be one of:  \n\\* `assigned`: Issues assigned to you  \n\\* `created`: Issues created by you  \n\\* `mentioned`: Issues mentioning you  \n\\* `subscribed`: Issues you're subscribed to updates for  \n\\* `all`: All issues the authenticated user can see, regardless of participation or creation",
+        "enum": ["assigned", "created", "mentioned", "subscribed", "all"],
+        "name": "filter",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Indicates the state of the issues to return. Can be either `open`, `closed`, or `all`.",
+        "enum": ["open", "closed", "all"],
+        "name": "state",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A list of comma separated label names. Example: `bug,ui,@high`",
+        "enum": null,
+        "name": "labels",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "What to sort results by. Can be either `created`, `updated`, `comments`.",
+        "enum": ["created", "updated", "comments"],
+        "name": "sort",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The direction of the sort. Can be either `asc` or `desc`.",
+        "enum": ["asc", "desc"],
+        "name": "direction",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Only issues updated at or after this time are returned. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.",
+        "enum": null,
+        "name": "since",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Search issues",
+    "scope": "search",
+    "id": "issuesLegacy",
+    "method": "GET",
+    "url": "/legacy/issues/search/{owner}/{repository}/{state}/{keyword}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repository parameter",
+        "enum": null,
+        "name": "repository",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Indicates the state of the issues to return. Can be either `open` or `closed`.",
+        "enum": ["open", "closed"],
+        "name": "state",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The search term.",
+        "enum": null,
+        "name": "keyword",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Search repositories",
+    "scope": "search",
+    "id": "reposLegacy",
+    "method": "GET",
+    "url": "/legacy/repos/search/{keyword}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The search term.",
+        "enum": null,
+        "name": "keyword",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Filter results by language.",
+        "enum": null,
+        "name": "language",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The page number to fetch.",
+        "enum": null,
+        "name": "start_page",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The sort field. One of `stars`, `forks`, or `updated`. Default: results are sorted by best match.",
+        "enum": ["stars", "forks", "updated"],
+        "name": "sort",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The sort field. if `sort` param is provided. Can be either `asc` or `desc`.",
+        "enum": ["asc", "desc"],
+        "name": "order",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Email search",
+    "scope": "search",
+    "id": "emailLegacy",
+    "method": "GET",
+    "url": "/legacy/user/email/{email}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The email address.",
+        "enum": null,
+        "name": "email",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Search users",
+    "scope": "search",
+    "id": "usersLegacy",
+    "method": "GET",
+    "url": "/legacy/user/search/{keyword}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The search term.",
+        "enum": null,
+        "name": "keyword",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The page number to fetch.",
+        "enum": null,
+        "name": "start_page",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The sort field. One of `stars`, `forks`, or `updated`. Default: results are sorted by best match.",
+        "enum": ["stars", "forks", "updated"],
+        "name": "sort",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The sort field. if `sort` param is provided. Can be either `asc` or `desc`.",
+        "enum": ["asc", "desc"],
+        "name": "order",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List commonly used licenses",
+    "scope": "licenses",
+    "id": "listCommonlyUsed",
+    "method": "GET",
+    "url": "/licenses",
+    "parameters": []
+  },
+  {
+    "name": "List commonly used licenses",
+    "scope": "licenses",
+    "id": "list",
+    "method": "GET",
+    "url": "/licenses",
+    "parameters": []
+  },
+  {
+    "name": "Get an individual license",
+    "scope": "licenses",
+    "id": "get",
+    "method": "GET",
+    "url": "/licenses/{license}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "license parameter",
+        "enum": null,
+        "name": "license",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Render an arbitrary Markdown document",
+    "scope": "markdown",
+    "id": "render",
+    "method": "POST",
+    "url": "/markdown",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The Markdown text to render in HTML. Markdown content must be 400 KB or less.",
+        "enum": null,
+        "name": "text",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The rendering mode. Can be either:  \n\\* `markdown` to render a document in plain Markdown, just like README.md files are rendered.  \n\\* `gfm` to render a document in [GitHub Flavored Markdown](https://github.github.com/gfm/), which creates links for user mentions as well as references to SHA-1 hashes, issues, and pull requests.",
+        "enum": ["markdown", "gfm"],
+        "name": "mode",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The repository context to use when creating references in `gfm` mode. Omit this parameter when using `markdown` mode.",
+        "enum": null,
+        "name": "context",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Render a Markdown document in raw mode",
+    "scope": "markdown",
+    "id": "renderRaw",
+    "method": "POST",
+    "url": "/markdown/raw",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "data parameter",
+        "enum": null,
+        "name": "data",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Check if a GitHub account is associated with any Marketplace listing",
+    "scope": "apps",
+    "id": "checkAccountIsAssociatedWithAny",
+    "method": "GET",
+    "url": "/marketplace_listing/accounts/{account_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "account_id parameter",
+        "enum": null,
+        "name": "account_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List all plans for your Marketplace listing",
+    "scope": "apps",
+    "id": "listPlans",
+    "method": "GET",
+    "url": "/marketplace_listing/plans",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List all GitHub accounts (user or organization) on a specific plan",
+    "scope": "apps",
+    "id": "listAccountsUserOrOrgOnPlan",
+    "method": "GET",
+    "url": "/marketplace_listing/plans/{plan_id}/accounts",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "plan_id parameter",
+        "enum": null,
+        "name": "plan_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Sorts the GitHub accounts by the date they were created or last updated. Can be one of `created` or `updated`.",
+        "enum": ["created", "updated"],
+        "name": "sort",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "To return the oldest accounts first, set to `asc`. Can be one of `asc` or `desc`. Ignored without the `sort` parameter.",
+        "enum": ["asc", "desc"],
+        "name": "direction",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Check if a GitHub account is associated with any Marketplace listing (stubbed)",
+    "scope": "apps",
+    "id": "checkAccountIsAssociatedWithAnyStubbed",
+    "method": "GET",
+    "url": "/marketplace_listing/stubbed/accounts/{account_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "account_id parameter",
+        "enum": null,
+        "name": "account_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List all plans for your Marketplace listing (stubbed)",
+    "scope": "apps",
+    "id": "listPlansStubbed",
+    "method": "GET",
+    "url": "/marketplace_listing/stubbed/plans",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List all GitHub accounts (user or organization) on a specific plan (stubbed)",
+    "scope": "apps",
+    "id": "listAccountsUserOrOrgOnPlanStubbed",
+    "method": "GET",
+    "url": "/marketplace_listing/stubbed/plans/{plan_id}/accounts",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "plan_id parameter",
+        "enum": null,
+        "name": "plan_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Sorts the GitHub accounts by the date they were created or last updated. Can be one of `created` or `updated`.",
+        "enum": ["created", "updated"],
+        "name": "sort",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "To return the oldest accounts first, set to `asc`. Can be one of `asc` or `desc`. Ignored without the `sort` parameter.",
+        "enum": ["asc", "desc"],
+        "name": "direction",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get",
+    "scope": "meta",
+    "id": "get",
+    "method": "GET",
+    "url": "/meta",
+    "parameters": []
+  },
+  {
+    "name": "List public events for a network of repositories",
+    "scope": "activity",
+    "id": "listPublicEventsForRepoNetwork",
+    "method": "GET",
+    "url": "/networks/{owner}/{repo}/events",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List your notifications",
+    "scope": "activity",
+    "id": "listNotifications",
+    "method": "GET",
+    "url": "/notifications",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "If `true`, show notifications marked as read.",
+        "enum": null,
+        "name": "all",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "If `true`, only shows notifications in which the user is directly participating or mentioned.",
+        "enum": null,
+        "name": "participating",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Only show notifications updated after the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.",
+        "enum": null,
+        "name": "since",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Only show notifications updated before the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.",
+        "enum": null,
+        "name": "before",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Mark as read",
+    "scope": "activity",
+    "id": "markAsRead",
+    "method": "PUT",
+    "url": "/notifications",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Describes the last point that notifications were checked. Anything updated since this time will not be updated. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Default: The current timestamp.",
+        "enum": null,
+        "name": "last_read_at",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "View a single thread",
+    "scope": "activity",
+    "id": "getThread",
+    "method": "GET",
+    "url": "/notifications/threads/{thread_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "thread_id parameter",
+        "enum": null,
+        "name": "thread_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Mark a thread as read",
+    "scope": "activity",
+    "id": "markThreadAsRead",
+    "method": "PATCH",
+    "url": "/notifications/threads/{thread_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "thread_id parameter",
+        "enum": null,
+        "name": "thread_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get a thread subscription",
+    "scope": "activity",
+    "id": "getThreadSubscription",
+    "method": "GET",
+    "url": "/notifications/threads/{thread_id}/subscription",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "thread_id parameter",
+        "enum": null,
+        "name": "thread_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Set a thread subscription",
+    "scope": "activity",
+    "id": "setThreadSubscription",
+    "method": "PUT",
+    "url": "/notifications/threads/{thread_id}/subscription",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "thread_id parameter",
+        "enum": null,
+        "name": "thread_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Unsubscribes and subscribes you to a conversation. Set `ignored` to `true` to block all notifications from this thread.",
+        "enum": null,
+        "name": "ignored",
+        "type": "boolean",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Delete a thread subscription",
+    "scope": "activity",
+    "id": "deleteThreadSubscription",
+    "method": "DELETE",
+    "url": "/notifications/threads/{thread_id}/subscription",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "thread_id parameter",
+        "enum": null,
+        "name": "thread_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List all organizations",
+    "scope": "orgs",
+    "id": "list",
+    "method": "GET",
+    "url": "/organizations",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The integer ID of the last Organization that you've seen.",
+        "enum": null,
+        "name": "since",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get an organization",
+    "scope": "orgs",
+    "id": "get",
+    "method": "GET",
+    "url": "/orgs/{org}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Edit an organization",
+    "scope": "orgs",
+    "id": "update",
+    "method": "PATCH",
+    "url": "/orgs/{org}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Billing email address. This address is not publicized.",
+        "enum": null,
+        "name": "billing_email",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The company name.",
+        "enum": null,
+        "name": "company",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The publicly visible email address.",
+        "enum": null,
+        "name": "email",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The location.",
+        "enum": null,
+        "name": "location",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The shorthand name of the company.",
+        "enum": null,
+        "name": "name",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The description of the company.",
+        "enum": null,
+        "name": "description",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Toggles whether organization projects are enabled for the organization.",
+        "enum": null,
+        "name": "has_organization_projects",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Toggles whether repository projects are enabled for repositories that belong to the organization.",
+        "enum": null,
+        "name": "has_repository_projects",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Default permission level members have for organization repositories:  \n\\* `read` - can pull, but not push to or administer this repository.  \n\\* `write` - can pull and push, but not administer this repository.  \n\\* `admin` - can pull, push, and administer this repository.  \n\\* `none` - no permissions granted by default.",
+        "enum": ["read", "write", "admin", "none"],
+        "name": "default_repository_permission",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Toggles the ability of non-admin organization members to create repositories. Can be one of:  \n\\* `true` - all organization members can create repositories.  \n\\* `false` - only admin members can create repositories.  \nDefault: `true`  \n**Note:** Another parameter can override the this parameter. See [this note](https://developer.github.com/v3/orgs/#members_can_create_repositories) for details. **Note:** Another parameter can override the this parameter. See [this note](https://developer.github.com/v3/orgs/#members_can_create_repositories) for details.",
+        "enum": null,
+        "name": "members_can_create_repositories",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Specifies which types of repositories non-admin organization members can create. Can be one of:  \n\\* `all` - all organization members can create public and private repositories.  \n\\* `private` - members can create private repositories. This option is only available to repositories that are part of an organization on [GitHub Business Cloud](https://github.com/pricing/business-cloud).  \n\\* `none` - only admin members can create repositories.  \n**Note:** Using this parameter will override values set in `members_can_create_repositories`. See [this note](https://developer.github.com/v3/orgs/#members_can_create_repositories) for details.",
+        "enum": ["all", "private", "none"],
+        "name": "members_allowed_repository_creation_type",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List blocked users",
+    "scope": "orgs",
+    "id": "listBlockedUsers",
+    "method": "GET",
+    "url": "/orgs/{org}/blocks",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Check whether a user is blocked from an organization",
+    "scope": "orgs",
+    "id": "checkBlockedUser",
+    "method": "GET",
+    "url": "/orgs/{org}/blocks/{username}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Block a user",
+    "scope": "orgs",
+    "id": "blockUser",
+    "method": "PUT",
+    "url": "/orgs/{org}/blocks/{username}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Unblock a user",
+    "scope": "orgs",
+    "id": "unblockUser",
+    "method": "DELETE",
+    "url": "/orgs/{org}/blocks/{username}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List credential authorizations for an organization",
+    "scope": "orgs",
+    "id": "listCredentialAuthorizations",
+    "method": "GET",
+    "url": "/orgs/{org}/credential-authorizations",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Remove a credential authorization for an organization",
+    "scope": "orgs",
+    "id": "removeCredentialAuthorization",
+    "method": "DELETE",
+    "url": "/orgs/{org}/credential-authorizations/{credential_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "credential_id parameter",
+        "enum": null,
+        "name": "credential_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List public events for an organization",
+    "scope": "activity",
+    "id": "listPublicEventsForOrg",
+    "method": "GET",
+    "url": "/orgs/{org}/events",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List hooks",
+    "scope": "orgs",
+    "id": "listHooks",
+    "method": "GET",
+    "url": "/orgs/{org}/hooks",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Create a hook",
+    "scope": "orgs",
+    "id": "createHook",
+    "method": "POST",
+    "url": "/orgs/{org}/hooks",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Must be passed as \"web\".",
+        "enum": null,
+        "name": "name",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Key/value pairs to provide settings for this webhook. [These are defined below](https://developer.github.com/v3/orgs/hooks/#create-hook-config-params).",
+        "enum": null,
+        "name": "config",
+        "type": "object",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The URL to which the payloads will be delivered.",
+        "enum": null,
+        "name": "config.url",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The media type used to serialize the payloads. Supported values include `json` and `form`. The default is `form`.",
+        "enum": null,
+        "name": "config.content_type",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "If provided, the `secret` will be used as the `key` to generate the HMAC hex digest value in the [`X-Hub-Signature`](https://developer.github.com/webhooks/#delivery-headers) header.",
+        "enum": null,
+        "name": "config.secret",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Determines whether the SSL certificate of the host for `url` will be verified when delivering payloads. Supported values include `0` (verification is performed) and `1` (verification is not performed). The default is `0`. **We strongly recommend not setting this to `1` as you are subject to man-in-the-middle and other attacks.**",
+        "enum": null,
+        "name": "config.insecure_ssl",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Determines what [events](https://developer.github.com/v3/activity/events/types/) the hook is triggered for.",
+        "enum": null,
+        "name": "events",
+        "type": "string[]",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Determines if notifications are sent when the webhook is triggered. Set to `true` to send notifications.",
+        "enum": null,
+        "name": "active",
+        "type": "boolean",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get single hook",
+    "scope": "orgs",
+    "id": "getHook",
+    "method": "GET",
+    "url": "/orgs/{org}/hooks/{hook_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "hook_id parameter",
+        "enum": null,
+        "name": "hook_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Edit a hook",
+    "scope": "orgs",
+    "id": "updateHook",
+    "method": "PATCH",
+    "url": "/orgs/{org}/hooks/{hook_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "hook_id parameter",
+        "enum": null,
+        "name": "hook_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Key/value pairs to provide settings for this webhook. [These are defined below](https://developer.github.com/v3/orgs/hooks/#update-hook-config-params).",
+        "enum": null,
+        "name": "config",
+        "type": "object",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The URL to which the payloads will be delivered.",
+        "enum": null,
+        "name": "config.url",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The media type used to serialize the payloads. Supported values include `json` and `form`. The default is `form`.",
+        "enum": null,
+        "name": "config.content_type",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "If provided, the `secret` will be used as the `key` to generate the HMAC hex digest value in the [`X-Hub-Signature`](https://developer.github.com/webhooks/#delivery-headers) header.",
+        "enum": null,
+        "name": "config.secret",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Determines whether the SSL certificate of the host for `url` will be verified when delivering payloads. Supported values include `0` (verification is performed) and `1` (verification is not performed). The default is `0`. **We strongly recommend not setting this to `1` as you are subject to man-in-the-middle and other attacks.**",
+        "enum": null,
+        "name": "config.insecure_ssl",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Determines what [events](https://developer.github.com/v3/activity/events/types/) the hook is triggered for.",
+        "enum": null,
+        "name": "events",
+        "type": "string[]",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Determines if notifications are sent when the webhook is triggered. Set to `true` to send notifications.",
+        "enum": null,
+        "name": "active",
+        "type": "boolean",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Delete a hook",
+    "scope": "orgs",
+    "id": "deleteHook",
+    "method": "DELETE",
+    "url": "/orgs/{org}/hooks/{hook_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "hook_id parameter",
+        "enum": null,
+        "name": "hook_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Ping a hook",
+    "scope": "orgs",
+    "id": "pingHook",
+    "method": "POST",
+    "url": "/orgs/{org}/hooks/{hook_id}/pings",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "hook_id parameter",
+        "enum": null,
+        "name": "hook_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get an organization installation",
+    "scope": "apps",
+    "id": "getOrgInstallation",
+    "method": "GET",
+    "url": "/orgs/{org}/installation",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get an organization installation",
+    "scope": "apps",
+    "id": "findOrgInstallation",
+    "method": "GET",
+    "url": "/orgs/{org}/installation",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get interaction restrictions for an organization",
+    "scope": "interactions",
+    "id": "getRestrictionsForOrg",
+    "method": "GET",
+    "url": "/orgs/{org}/interaction-limits",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Add or update interaction restrictions for an organization",
+    "scope": "interactions",
+    "id": "addOrUpdateRestrictionsForOrg",
+    "method": "PUT",
+    "url": "/orgs/{org}/interaction-limits",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Specifies the group of GitHub users who can comment, open issues, or create pull requests in public repositories for the given organization. Must be one of: `existing_users`, `contributors_only`, or `collaborators_only`.",
+        "enum": ["existing_users", "contributors_only", "collaborators_only"],
+        "name": "limit",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Remove interaction restrictions for an organization",
+    "scope": "interactions",
+    "id": "removeRestrictionsForOrg",
+    "method": "DELETE",
+    "url": "/orgs/{org}/interaction-limits",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List pending organization invitations",
+    "scope": "orgs",
+    "id": "listPendingInvitations",
+    "method": "GET",
+    "url": "/orgs/{org}/invitations",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Create organization invitation",
+    "scope": "orgs",
+    "id": "createInvitation",
+    "method": "POST",
+    "url": "/orgs/{org}/invitations",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "**Required unless you provide `email`**. GitHub user ID for the person you are inviting.",
+        "enum": null,
+        "name": "invitee_id",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "**Required unless you provide `invitee_id`**. Email address of the person you are inviting, which can be an existing GitHub user.",
+        "enum": null,
+        "name": "email",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Specify role for new member. Can be one of:  \n\\* `admin` - Organization owners with full administrative rights to the organization and complete access to all repositories and teams.  \n\\* `direct_member` - Non-owner organization members with ability to see other members and join teams by invitation.  \n\\* `billing_manager` - Non-owner organization members with ability to manage the billing settings of your organization.",
+        "enum": ["admin", "direct_member", "billing_manager"],
+        "name": "role",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Specify IDs for the teams you want to invite new members to.",
+        "enum": null,
+        "name": "team_ids",
+        "type": "integer[]",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List organization invitation teams",
+    "scope": "orgs",
+    "id": "listInvitationTeams",
+    "method": "GET",
+    "url": "/orgs/{org}/invitations/{invitation_id}/teams",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "invitation_id parameter",
+        "enum": null,
+        "name": "invitation_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List all issues for a given organization assigned to the authenticated user",
+    "scope": "issues",
+    "id": "listForOrg",
+    "method": "GET",
+    "url": "/orgs/{org}/issues",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Indicates which sorts of issues to return. Can be one of:  \n\\* `assigned`: Issues assigned to you  \n\\* `created`: Issues created by you  \n\\* `mentioned`: Issues mentioning you  \n\\* `subscribed`: Issues you're subscribed to updates for  \n\\* `all`: All issues the authenticated user can see, regardless of participation or creation",
+        "enum": ["assigned", "created", "mentioned", "subscribed", "all"],
+        "name": "filter",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Indicates the state of the issues to return. Can be either `open`, `closed`, or `all`.",
+        "enum": ["open", "closed", "all"],
+        "name": "state",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A list of comma separated label names. Example: `bug,ui,@high`",
+        "enum": null,
+        "name": "labels",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "What to sort results by. Can be either `created`, `updated`, `comments`.",
+        "enum": ["created", "updated", "comments"],
+        "name": "sort",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The direction of the sort. Can be either `asc` or `desc`.",
+        "enum": ["asc", "desc"],
+        "name": "direction",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Only issues updated at or after this time are returned. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.",
+        "enum": null,
+        "name": "since",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Members list",
+    "scope": "orgs",
+    "id": "listMembers",
+    "method": "GET",
+    "url": "/orgs/{org}/members",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Filter members returned in the list. Can be one of:  \n\\* `2fa_disabled` - Members without [two-factor authentication](https://github.com/blog/1614-two-factor-authentication) enabled. Available for organization owners.  \n\\* `all` - All members the authenticated user can see.",
+        "enum": ["2fa_disabled", "all"],
+        "name": "filter",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Filter members returned by their role. Can be one of:  \n\\* `all` - All members of the organization, regardless of role.  \n\\* `admin` - Organization owners.  \n\\* `member` - Non-owner organization members.",
+        "enum": ["all", "admin", "member"],
+        "name": "role",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Check membership",
+    "scope": "orgs",
+    "id": "checkMembership",
+    "method": "GET",
+    "url": "/orgs/{org}/members/{username}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Remove a member",
+    "scope": "orgs",
+    "id": "removeMember",
+    "method": "DELETE",
+    "url": "/orgs/{org}/members/{username}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get organization membership",
+    "scope": "orgs",
+    "id": "getMembership",
+    "method": "GET",
+    "url": "/orgs/{org}/memberships/{username}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Add or update organization membership",
+    "scope": "orgs",
+    "id": "addOrUpdateMembership",
+    "method": "PUT",
+    "url": "/orgs/{org}/memberships/{username}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The role to give the user in the organization. Can be one of:  \n\\* `admin` - The user will become an owner of the organization.  \n\\* `member` - The user will become a non-owner member of the organization.",
+        "enum": ["admin", "member"],
+        "name": "role",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Remove organization membership",
+    "scope": "orgs",
+    "id": "removeMembership",
+    "method": "DELETE",
+    "url": "/orgs/{org}/memberships/{username}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Start an organization migration",
+    "scope": "migrations",
+    "id": "startForOrg",
+    "method": "POST",
+    "url": "/orgs/{org}/migrations",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A list of arrays indicating which repositories should be migrated.",
+        "enum": null,
+        "name": "repositories",
+        "type": "string[]",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Indicates whether repositories should be locked (to prevent manipulation) while migrating data.",
+        "enum": null,
+        "name": "lock_repositories",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Indicates whether attachments should be excluded from the migration (to reduce migration archive file size).",
+        "enum": null,
+        "name": "exclude_attachments",
+        "type": "boolean",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get a list of organization migrations",
+    "scope": "migrations",
+    "id": "listForOrg",
+    "method": "GET",
+    "url": "/orgs/{org}/migrations",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get the status of an organization migration",
+    "scope": "migrations",
+    "id": "getStatusForOrg",
+    "method": "GET",
+    "url": "/orgs/{org}/migrations/{migration_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "migration_id parameter",
+        "enum": null,
+        "name": "migration_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Download an organization migration archive",
+    "scope": "migrations",
+    "id": "getArchiveForOrg",
+    "method": "GET",
+    "url": "/orgs/{org}/migrations/{migration_id}/archive",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "migration_id parameter",
+        "enum": null,
+        "name": "migration_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Delete an organization migration archive",
+    "scope": "migrations",
+    "id": "deleteArchiveForOrg",
+    "method": "DELETE",
+    "url": "/orgs/{org}/migrations/{migration_id}/archive",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "migration_id parameter",
+        "enum": null,
+        "name": "migration_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Unlock an organization repository",
+    "scope": "migrations",
+    "id": "unlockRepoForOrg",
+    "method": "DELETE",
+    "url": "/orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "migration_id parameter",
+        "enum": null,
+        "name": "migration_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo_name parameter",
+        "enum": null,
+        "name": "repo_name",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List outside collaborators",
+    "scope": "orgs",
+    "id": "listOutsideCollaborators",
+    "method": "GET",
+    "url": "/orgs/{org}/outside_collaborators",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Filter the list of outside collaborators. Can be one of:  \n\\* `2fa_disabled`: Outside collaborators without [two-factor authentication](https://github.com/blog/1614-two-factor-authentication) enabled.  \n\\* `all`: All outside collaborators.",
+        "enum": ["2fa_disabled", "all"],
+        "name": "filter",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Remove outside collaborator",
+    "scope": "orgs",
+    "id": "removeOutsideCollaborator",
+    "method": "DELETE",
+    "url": "/orgs/{org}/outside_collaborators/{username}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Convert member to outside collaborator",
+    "scope": "orgs",
+    "id": "convertMemberToOutsideCollaborator",
+    "method": "PUT",
+    "url": "/orgs/{org}/outside_collaborators/{username}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List organization projects",
+    "scope": "projects",
+    "id": "listForOrg",
+    "method": "GET",
+    "url": "/orgs/{org}/projects",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Indicates the state of the projects to return. Can be either `open`, `closed`, or `all`.",
+        "enum": ["open", "closed", "all"],
+        "name": "state",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Create an organization project",
+    "scope": "projects",
+    "id": "createForOrg",
+    "method": "POST",
+    "url": "/orgs/{org}/projects",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The name of the project.",
+        "enum": null,
+        "name": "name",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The description of the project.",
+        "enum": null,
+        "name": "body",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Public members list",
+    "scope": "orgs",
+    "id": "listPublicMembers",
+    "method": "GET",
+    "url": "/orgs/{org}/public_members",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Check public membership",
+    "scope": "orgs",
+    "id": "checkPublicMembership",
+    "method": "GET",
+    "url": "/orgs/{org}/public_members/{username}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Publicize a user's membership",
+    "scope": "orgs",
+    "id": "publicizeMembership",
+    "method": "PUT",
+    "url": "/orgs/{org}/public_members/{username}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Conceal a user's membership",
+    "scope": "orgs",
+    "id": "concealMembership",
+    "method": "DELETE",
+    "url": "/orgs/{org}/public_members/{username}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List organization repositories",
+    "scope": "repos",
+    "id": "listForOrg",
+    "method": "GET",
+    "url": "/orgs/{org}/repos",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Can be one of `all`, `public`, `private`, `forks`, `sources`, `member`.",
+        "enum": ["all", "public", "private", "forks", "sources", "member"],
+        "name": "type",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Can be one of `created`, `updated`, `pushed`, `full_name`.",
+        "enum": ["created", "updated", "pushed", "full_name"],
+        "name": "sort",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Can be one of `asc` or `desc`. Default: when using `full_name`: `asc`, otherwise `desc`",
+        "enum": ["asc", "desc"],
+        "name": "direction",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Creates a new repository in the specified organization",
+    "scope": "repos",
+    "id": "createInOrg",
+    "method": "POST",
+    "url": "/orgs/{org}/repos",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The name of the repository.",
+        "enum": null,
+        "name": "name",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A short description of the repository.",
+        "enum": null,
+        "name": "description",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A URL with more information about the repository.",
+        "enum": null,
+        "name": "homepage",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Either `true` to create a private repository or `false` to create a public one. Creating private repositories requires a paid GitHub account.",
+        "enum": null,
+        "name": "private",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Either `true` to enable issues for this repository or `false` to disable them.",
+        "enum": null,
+        "name": "has_issues",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Either `true` to enable projects for this repository or `false` to disable them. **Note:** If you're creating a repository in an organization that has disabled repository projects, the default is `false`, and if you pass `true`, the API returns an error.",
+        "enum": null,
+        "name": "has_projects",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Either `true` to enable the wiki for this repository or `false` to disable it.",
+        "enum": null,
+        "name": "has_wiki",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Either `true` to make this repo available as a template repository or `false` to prevent it.",
+        "enum": null,
+        "name": "is_template",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The id of the team that will be granted access to this repository. This is only valid when creating a repository in an organization.",
+        "enum": null,
+        "name": "team_id",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Pass `true` to create an initial commit with empty README.",
+        "enum": null,
+        "name": "auto_init",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Desired language or platform [.gitignore template](https://github.com/github/gitignore) to apply. Use the name of the template without the extension. For example, \"Haskell\".",
+        "enum": null,
+        "name": "gitignore_template",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Choose an [open source license template](https://choosealicense.com/) that best suits your needs, and then use the [license keyword](https://help.github.com/articles/licensing-a-repository/#searching-github-by-license-type) as the `license_template` string. For example, \"mit\" or \"mpl-2.0\".",
+        "enum": null,
+        "name": "license_template",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Either `true` to allow squash-merging pull requests, or `false` to prevent squash-merging.",
+        "enum": null,
+        "name": "allow_squash_merge",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Either `true` to allow merging pull requests with a merge commit, or `false` to prevent merging pull requests with merge commits.",
+        "enum": null,
+        "name": "allow_merge_commit",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Either `true` to allow rebase-merging pull requests, or `false` to prevent rebase-merging.",
+        "enum": null,
+        "name": "allow_rebase_merge",
+        "type": "boolean",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List IdP groups in an organization",
+    "scope": "teams",
+    "id": "listIdPGroupsForOrg",
+    "method": "GET",
+    "url": "/orgs/{org}/team-sync/groups",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List teams",
+    "scope": "teams",
+    "id": "list",
+    "method": "GET",
+    "url": "/orgs/{org}/teams",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Create team",
+    "scope": "teams",
+    "id": "create",
+    "method": "POST",
+    "url": "/orgs/{org}/teams",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The name of the team.",
+        "enum": null,
+        "name": "name",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The description of the team.",
+        "enum": null,
+        "name": "description",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The logins of organization members to add as maintainers of the team.",
+        "enum": null,
+        "name": "maintainers",
+        "type": "string[]",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The full name (e.g., \"organization-name/repository-name\") of repositories to add the team to.",
+        "enum": null,
+        "name": "repo_names",
+        "type": "string[]",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The level of privacy this team should have. The options are:  \n**For a non-nested team:**  \n\\* `secret` - only visible to organization owners and members of this team.  \n\\* `closed` - visible to all members of this organization.  \nDefault: `secret`  \n**For a parent or child team:**  \n\\* `closed` - visible to all members of this organization.  \nDefault for child team: `closed`  \n**Note**: You must pass the `hellcat-preview` media type to set privacy default to `closed` for child teams.",
+        "enum": ["secret", "closed"],
+        "name": "privacy",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "**Deprecated**. The permission that new repositories will be added to the team with when none is specified. Can be one of:  \n\\* `pull` - team members can pull, but not push to or administer newly-added repositories.  \n\\* `push` - team members can pull and push, but not administer newly-added repositories.  \n\\* `admin` - team members can pull, push and administer newly-added repositories.",
+        "enum": ["pull", "push", "admin"],
+        "name": "permission",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The ID of a team to set as the parent team. **Note**: You must pass the `hellcat-preview` media type to use this parameter.",
+        "enum": null,
+        "name": "parent_team_id",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get team by name",
+    "scope": "teams",
+    "id": "getByName",
+    "method": "GET",
+    "url": "/orgs/{org}/teams/{team_slug}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "team_slug parameter",
+        "enum": null,
+        "name": "team_slug",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get a project card",
+    "scope": "projects",
+    "id": "getCard",
+    "method": "GET",
+    "url": "/projects/columns/cards/{card_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "card_id parameter",
+        "enum": null,
+        "name": "card_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Update a project card",
+    "scope": "projects",
+    "id": "updateCard",
+    "method": "PATCH",
+    "url": "/projects/columns/cards/{card_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "card_id parameter",
+        "enum": null,
+        "name": "card_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The card's note content. Only valid for cards without another type of content, so this cannot be specified if the card already has a `content_id` and `content_type`.",
+        "enum": null,
+        "name": "note",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Use `true` to archive a project card. Specify `false` if you need to restore a previously archived project card.",
+        "enum": null,
+        "name": "archived",
+        "type": "boolean",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Delete a project card",
+    "scope": "projects",
+    "id": "deleteCard",
+    "method": "DELETE",
+    "url": "/projects/columns/cards/{card_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "card_id parameter",
+        "enum": null,
+        "name": "card_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Move a project card",
+    "scope": "projects",
+    "id": "moveCard",
+    "method": "POST",
+    "url": "/projects/columns/cards/{card_id}/moves",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "card_id parameter",
+        "enum": null,
+        "name": "card_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Can be one of `top`, `bottom`, or `after:<card_id>`, where `<card_id>` is the `id` value of a card in the same column, or in the new column specified by `column_id`.",
+        "enum": null,
+        "name": "position",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The `id` value of a column in the same project.",
+        "enum": null,
+        "name": "column_id",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get a project column",
+    "scope": "projects",
+    "id": "getColumn",
+    "method": "GET",
+    "url": "/projects/columns/{column_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "column_id parameter",
+        "enum": null,
+        "name": "column_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Update a project column",
+    "scope": "projects",
+    "id": "updateColumn",
+    "method": "PATCH",
+    "url": "/projects/columns/{column_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "column_id parameter",
+        "enum": null,
+        "name": "column_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The new name of the column.",
+        "enum": null,
+        "name": "name",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Delete a project column",
+    "scope": "projects",
+    "id": "deleteColumn",
+    "method": "DELETE",
+    "url": "/projects/columns/{column_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "column_id parameter",
+        "enum": null,
+        "name": "column_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List project cards",
+    "scope": "projects",
+    "id": "listCards",
+    "method": "GET",
+    "url": "/projects/columns/{column_id}/cards",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "column_id parameter",
+        "enum": null,
+        "name": "column_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Filters the project cards that are returned by the card's state. Can be one of `all`,`archived`, or `not_archived`.",
+        "enum": ["all", "archived", "not_archived"],
+        "name": "archived_state",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Create a project card",
+    "scope": "projects",
+    "id": "createCard",
+    "method": "POST",
+    "url": "/projects/columns/{column_id}/cards",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "column_id parameter",
+        "enum": null,
+        "name": "column_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The card's note content. Only valid for cards without another type of content, so you must omit when specifying `content_id` and `content_type`.",
+        "enum": null,
+        "name": "note",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The issue or pull request id you want to associate with this card. You can use the [List issues for a repository](https://developer.github.com/v3/issues/#list-issues-for-a-repository) and [List pull requests](https://developer.github.com/v3/pulls/#list-pull-requests) endpoints to find this id.  \n**Note:** Depending on whether you use the issue id or pull request id, you will need to specify `Issue` or `PullRequest` as the `content_type`.",
+        "enum": null,
+        "name": "content_id",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "**Required if you provide `content_id`**. The type of content you want to associate with this card. Use `Issue` when `content_id` is an issue id and use `PullRequest` when `content_id` is a pull request id.",
+        "enum": null,
+        "name": "content_type",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Move a project column",
+    "scope": "projects",
+    "id": "moveColumn",
+    "method": "POST",
+    "url": "/projects/columns/{column_id}/moves",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "column_id parameter",
+        "enum": null,
+        "name": "column_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Can be one of `first`, `last`, or `after:<column_id>`, where `<column_id>` is the `id` value of a column in the same project.",
+        "enum": null,
+        "name": "position",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get a project",
+    "scope": "projects",
+    "id": "get",
+    "method": "GET",
+    "url": "/projects/{project_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "project_id parameter",
+        "enum": null,
+        "name": "project_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Update a project",
+    "scope": "projects",
+    "id": "update",
+    "method": "PATCH",
+    "url": "/projects/{project_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "project_id parameter",
+        "enum": null,
+        "name": "project_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The name of the project.",
+        "enum": null,
+        "name": "name",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The description of the project.",
+        "enum": null,
+        "name": "body",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "State of the project. Either `open` or `closed`.",
+        "enum": ["open", "closed"],
+        "name": "state",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The permission level that determines whether all members of the project's organization can see and/or make changes to the project. Setting `organization_permission` is only available for organization projects. If an organization member belongs to a team with a higher level of access or is a collaborator with a higher level of access, their permission level is not lowered by `organization_permission`. For information on changing access for a team or collaborator, see [Add or update team project](https://developer.github.com/v3/teams/#add-or-update-team-project) or [Add user as a collaborator](https://developer.github.com/v3/projects/collaborators/#add-user-as-a-collaborator).  \n  \n**Note:** Updating a project's `organization_permission` requires `admin` access to the project.  \n  \nCan be one of:  \n\\* `read` - Organization members can read, but not write to or administer this project.  \n\\* `write` - Organization members can read and write, but not administer this project.  \n\\* `admin` - Organization members can read, write and administer this project.  \n\\* `none` - Organization members can only see this project if it is public.",
+        "enum": null,
+        "name": "organization_permission",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Sets the visibility of a project board. Setting `private` is only available for organization and user projects. **Note:** Updating a project's visibility requires `admin` access to the project.  \n  \nCan be one of:  \n\\* `false` - Anyone can see the project.  \n\\* `true` - Only the user can view a project board created on a user account. Organization members with the appropriate `organization_permission` can see project boards in an organization account.",
+        "enum": null,
+        "name": "private",
+        "type": "boolean",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Delete a project",
+    "scope": "projects",
+    "id": "delete",
+    "method": "DELETE",
+    "url": "/projects/{project_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "project_id parameter",
+        "enum": null,
+        "name": "project_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List collaborators",
+    "scope": "projects",
+    "id": "listCollaborators",
+    "method": "GET",
+    "url": "/projects/{project_id}/collaborators",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "project_id parameter",
+        "enum": null,
+        "name": "project_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Filters the collaborators by their affiliation. Can be one of:  \n\\* `outside`: Outside collaborators of a project that are not a member of the project's organization.  \n\\* `direct`: Collaborators with permissions to a project, regardless of organization membership status.  \n\\* `all`: All collaborators the authenticated user can see.",
+        "enum": ["outside", "direct", "all"],
+        "name": "affiliation",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Add user as a collaborator",
+    "scope": "projects",
+    "id": "addCollaborator",
+    "method": "PUT",
+    "url": "/projects/{project_id}/collaborators/{username}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "project_id parameter",
+        "enum": null,
+        "name": "project_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The permission to grant the collaborator. Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see \"[HTTP verbs](https://developer.github.com/v3/#http-verbs).\" Can be one of:  \n\\* `read` - can read, but not write to or administer this project.  \n\\* `write` - can read and write, but not administer this project.  \n\\* `admin` - can read, write and administer this project.",
+        "enum": ["read", "write", "admin"],
+        "name": "permission",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Remove user as a collaborator",
+    "scope": "projects",
+    "id": "removeCollaborator",
+    "method": "DELETE",
+    "url": "/projects/{project_id}/collaborators/{username}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "project_id parameter",
+        "enum": null,
+        "name": "project_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Review a user's permission level",
+    "scope": "projects",
+    "id": "reviewUserPermissionLevel",
+    "method": "GET",
+    "url": "/projects/{project_id}/collaborators/{username}/permission",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "project_id parameter",
+        "enum": null,
+        "name": "project_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List project columns",
+    "scope": "projects",
+    "id": "listColumns",
+    "method": "GET",
+    "url": "/projects/{project_id}/columns",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "project_id parameter",
+        "enum": null,
+        "name": "project_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Create a project column",
+    "scope": "projects",
+    "id": "createColumn",
+    "method": "POST",
+    "url": "/projects/{project_id}/columns",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "project_id parameter",
+        "enum": null,
+        "name": "project_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The name of the column.",
+        "enum": null,
+        "name": "name",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get your current rate limit status",
+    "scope": "rateLimit",
+    "id": "get",
+    "method": "GET",
+    "url": "/rate_limit",
+    "parameters": []
+  },
+  {
+    "name": "Delete a reaction",
+    "scope": "reactions",
+    "id": "delete",
+    "method": "DELETE",
+    "url": "/reactions/{reaction_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "reaction_id parameter",
+        "enum": null,
+        "name": "reaction_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get",
+    "scope": "repos",
+    "id": "get",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Edit",
+    "scope": "repos",
+    "id": "update",
+    "method": "PATCH",
+    "url": "/repos/{owner}/{repo}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The name of the repository.",
+        "enum": null,
+        "name": "name",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A short description of the repository.",
+        "enum": null,
+        "name": "description",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A URL with more information about the repository.",
+        "enum": null,
+        "name": "homepage",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Either `true` to make the repository private or `false` to make it public. Creating private repositories requires a paid GitHub account. Default: `false`.  \n**Note**: You will get a `422` error if the organization restricts [changing repository visibility](https://help.github.com/articles/repository-permission-levels-for-an-organization#changing-the-visibility-of-repositories) to organization owners and a non-owner tries to change the value of private. **Note**: You will get a `422` error if the organization restricts [changing repository visibility](https://help.github.com/articles/repository-permission-levels-for-an-organization#changing-the-visibility-of-repositories) to organization owners and a non-owner tries to change the value of private.",
+        "enum": null,
+        "name": "private",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Either `true` to enable issues for this repository or `false` to disable them.",
+        "enum": null,
+        "name": "has_issues",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Either `true` to enable projects for this repository or `false` to disable them. **Note:** If you're creating a repository in an organization that has disabled repository projects, the default is `false`, and if you pass `true`, the API returns an error.",
+        "enum": null,
+        "name": "has_projects",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Either `true` to enable the wiki for this repository or `false` to disable it.",
+        "enum": null,
+        "name": "has_wiki",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Either `true` to make this repo available as a template repository or `false` to prevent it.",
+        "enum": null,
+        "name": "is_template",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Updates the default branch for this repository.",
+        "enum": null,
+        "name": "default_branch",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Either `true` to allow squash-merging pull requests, or `false` to prevent squash-merging.",
+        "enum": null,
+        "name": "allow_squash_merge",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Either `true` to allow merging pull requests with a merge commit, or `false` to prevent merging pull requests with merge commits.",
+        "enum": null,
+        "name": "allow_merge_commit",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Either `true` to allow rebase-merging pull requests, or `false` to prevent rebase-merging.",
+        "enum": null,
+        "name": "allow_rebase_merge",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "`true` to archive this repository. **Note**: You cannot unarchive repositories through the API.",
+        "enum": null,
+        "name": "archived",
+        "type": "boolean",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Delete a repository",
+    "scope": "repos",
+    "id": "delete",
+    "method": "DELETE",
+    "url": "/repos/{owner}/{repo}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List assignees",
+    "scope": "issues",
+    "id": "listAssignees",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/assignees",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Check assignee",
+    "scope": "issues",
+    "id": "checkAssignee",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/assignees/{assignee}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "assignee parameter",
+        "enum": null,
+        "name": "assignee",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Enable automated security fixes",
+    "scope": "repos",
+    "id": "enableAutomatedSecurityFixes",
+    "method": "PUT",
+    "url": "/repos/{owner}/{repo}/automated-security-fixes",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Disable automated security fixes",
+    "scope": "repos",
+    "id": "disableAutomatedSecurityFixes",
+    "method": "DELETE",
+    "url": "/repos/{owner}/{repo}/automated-security-fixes",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List branches",
+    "scope": "repos",
+    "id": "listBranches",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/branches",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Setting to `true` returns only protected branches. When set to `false`, only unprotected branches are returned. Omitting this parameter returns all branches.",
+        "enum": null,
+        "name": "protected",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get branch",
+    "scope": "repos",
+    "id": "getBranch",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/branches/{branch}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "branch parameter",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get branch protection",
+    "scope": "repos",
+    "id": "getBranchProtection",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/branches/{branch}/protection",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "branch parameter",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Update branch protection",
+    "scope": "repos",
+    "id": "updateBranchProtection",
+    "method": "PUT",
+    "url": "/repos/{owner}/{repo}/branches/{branch}/protection",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "branch parameter",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": true,
+        "deprecated": null,
+        "description": "Require status checks to pass before merging. Set to `null` to disable.",
+        "enum": null,
+        "name": "required_status_checks",
+        "type": "object",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Require branches to be up to date before merging.",
+        "enum": null,
+        "name": "required_status_checks.strict",
+        "type": "boolean",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The list of status checks to require in order to merge into this branch",
+        "enum": null,
+        "name": "required_status_checks.contexts",
+        "type": "string[]",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": true,
+        "deprecated": null,
+        "description": "Enforce all configured restrictions for administrators. Set to `true` to enforce required status checks for repository administrators. Set to `null` to disable.",
+        "enum": null,
+        "name": "enforce_admins",
+        "type": "boolean",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": true,
+        "deprecated": null,
+        "description": "Require at least one approving review on a pull request, before merging. Set to `null` to disable.",
+        "enum": null,
+        "name": "required_pull_request_reviews",
+        "type": "object",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Specify which users and teams can dismiss pull request reviews. Pass an empty `dismissal_restrictions` object to disable. User and team `dismissal_restrictions` are only available for organization-owned repositories. Omit this parameter for personal repositories.",
+        "enum": null,
+        "name": "required_pull_request_reviews.dismissal_restrictions",
+        "type": "object",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The list of user `login`s with dismissal access",
+        "enum": null,
+        "name": "required_pull_request_reviews.dismissal_restrictions.users",
+        "type": "string[]",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The list of team `slug`s with dismissal access",
+        "enum": null,
+        "name": "required_pull_request_reviews.dismissal_restrictions.teams",
+        "type": "string[]",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Set to `true` if you want to automatically dismiss approving reviews when someone pushes a new commit.",
+        "enum": null,
+        "name": "required_pull_request_reviews.dismiss_stale_reviews",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Blocks merging pull requests until [code owners](https://help.github.com/articles/about-code-owners/) review them.",
+        "enum": null,
+        "name": "required_pull_request_reviews.require_code_owner_reviews",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Specify the number of reviewers required to approve pull requests. Use a number between 1 and 6.",
+        "enum": null,
+        "name": "required_pull_request_reviews.required_approving_review_count",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": true,
+        "deprecated": null,
+        "description": "Restrict who can push to this branch. User, app, and team `restrictions` are only available for organization-owned repositories. Set to `null` to disable.",
+        "enum": null,
+        "name": "restrictions",
+        "type": "object",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The list of user `login`s with push access",
+        "enum": null,
+        "name": "restrictions.users",
+        "type": "string[]",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The list of team `slug`s with push access",
+        "enum": null,
+        "name": "restrictions.teams",
+        "type": "string[]",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The list of app `slug`s with push access",
+        "enum": null,
+        "name": "restrictions.apps",
+        "type": "string[]",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Remove branch protection",
+    "scope": "repos",
+    "id": "removeBranchProtection",
+    "method": "DELETE",
+    "url": "/repos/{owner}/{repo}/branches/{branch}/protection",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "branch parameter",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get admin enforcement of protected branch",
+    "scope": "repos",
+    "id": "getProtectedBranchAdminEnforcement",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "branch parameter",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Add admin enforcement of protected branch",
+    "scope": "repos",
+    "id": "addProtectedBranchAdminEnforcement",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "branch parameter",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Remove admin enforcement of protected branch",
+    "scope": "repos",
+    "id": "removeProtectedBranchAdminEnforcement",
+    "method": "DELETE",
+    "url": "/repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "branch parameter",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get pull request review enforcement of protected branch",
+    "scope": "repos",
+    "id": "getProtectedBranchPullRequestReviewEnforcement",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "branch parameter",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Update pull request review enforcement of protected branch",
+    "scope": "repos",
+    "id": "updateProtectedBranchPullRequestReviewEnforcement",
+    "method": "PATCH",
+    "url": "/repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "branch parameter",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Specify which users and teams can dismiss pull request reviews. Pass an empty `dismissal_restrictions` object to disable. User and team `dismissal_restrictions` are only available for organization-owned repositories. Omit this parameter for personal repositories.",
+        "enum": null,
+        "name": "dismissal_restrictions",
+        "type": "object",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The list of user `login`s with dismissal access",
+        "enum": null,
+        "name": "dismissal_restrictions.users",
+        "type": "string[]",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The list of team `slug`s with dismissal access",
+        "enum": null,
+        "name": "dismissal_restrictions.teams",
+        "type": "string[]",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Set to `true` if you want to automatically dismiss approving reviews when someone pushes a new commit.",
+        "enum": null,
+        "name": "dismiss_stale_reviews",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Blocks merging pull requests until [code owners](https://help.github.com/articles/about-code-owners/) have reviewed.",
+        "enum": null,
+        "name": "require_code_owner_reviews",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Specifies the number of reviewers required to approve pull requests. Use a number between 1 and 6.",
+        "enum": null,
+        "name": "required_approving_review_count",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Remove pull request review enforcement of protected branch",
+    "scope": "repos",
+    "id": "removeProtectedBranchPullRequestReviewEnforcement",
+    "method": "DELETE",
+    "url": "/repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "branch parameter",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get required signatures of protected branch",
+    "scope": "repos",
+    "id": "getProtectedBranchRequiredSignatures",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/branches/{branch}/protection/required_signatures",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "branch parameter",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Add required signatures of protected branch",
+    "scope": "repos",
+    "id": "addProtectedBranchRequiredSignatures",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/branches/{branch}/protection/required_signatures",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "branch parameter",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Remove required signatures of protected branch",
+    "scope": "repos",
+    "id": "removeProtectedBranchRequiredSignatures",
+    "method": "DELETE",
+    "url": "/repos/{owner}/{repo}/branches/{branch}/protection/required_signatures",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "branch parameter",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get required status checks of protected branch",
+    "scope": "repos",
+    "id": "getProtectedBranchRequiredStatusChecks",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "branch parameter",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Update required status checks of protected branch",
+    "scope": "repos",
+    "id": "updateProtectedBranchRequiredStatusChecks",
+    "method": "PATCH",
+    "url": "/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "branch parameter",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Require branches to be up to date before merging.",
+        "enum": null,
+        "name": "strict",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The list of status checks to require in order to merge into this branch",
+        "enum": null,
+        "name": "contexts",
+        "type": "string[]",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Remove required status checks of protected branch",
+    "scope": "repos",
+    "id": "removeProtectedBranchRequiredStatusChecks",
+    "method": "DELETE",
+    "url": "/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "branch parameter",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List required status checks contexts of protected branch",
+    "scope": "repos",
+    "id": "listProtectedBranchRequiredStatusChecksContexts",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "branch parameter",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Replace required status checks contexts of protected branch",
+    "scope": "repos",
+    "id": "replaceProtectedBranchRequiredStatusChecksContexts",
+    "method": "PUT",
+    "url": "/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "branch parameter",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "contexts parameter",
+        "enum": null,
+        "name": "contexts",
+        "type": "string[]",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Add required status checks contexts of protected branch",
+    "scope": "repos",
+    "id": "addProtectedBranchRequiredStatusChecksContexts",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "branch parameter",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "contexts parameter",
+        "enum": null,
+        "name": "contexts",
+        "type": "string[]",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Remove required status checks contexts of protected branch",
+    "scope": "repos",
+    "id": "removeProtectedBranchRequiredStatusChecksContexts",
+    "method": "DELETE",
+    "url": "/repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "branch parameter",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "contexts parameter",
+        "enum": null,
+        "name": "contexts",
+        "type": "string[]",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get restrictions of protected branch",
+    "scope": "repos",
+    "id": "getProtectedBranchRestrictions",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/branches/{branch}/protection/restrictions",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "branch parameter",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Remove restrictions of protected branch",
+    "scope": "repos",
+    "id": "removeProtectedBranchRestrictions",
+    "method": "DELETE",
+    "url": "/repos/{owner}/{repo}/branches/{branch}/protection/restrictions",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "branch parameter",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get apps with access to protected branch",
+    "scope": "repos",
+    "id": "getAppsWithAccessToProtectedBranch",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "branch parameter",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get apps with access to protected branch",
+    "scope": "repos",
+    "id": "listAppsWithAccessToProtectedBranch",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "branch parameter",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Replace app restrictions of protected branch",
+    "scope": "repos",
+    "id": "replaceProtectedBranchAppRestrictions",
+    "method": "PUT",
+    "url": "/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "branch parameter",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "apps parameter",
+        "enum": null,
+        "name": "apps",
+        "type": "string[]",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Add app restrictions of protected branch",
+    "scope": "repos",
+    "id": "addProtectedBranchAppRestrictions",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "branch parameter",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "apps parameter",
+        "enum": null,
+        "name": "apps",
+        "type": "string[]",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Remove app restrictions of protected branch",
+    "scope": "repos",
+    "id": "removeProtectedBranchAppRestrictions",
+    "method": "DELETE",
+    "url": "/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "branch parameter",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "apps parameter",
+        "enum": null,
+        "name": "apps",
+        "type": "string[]",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get teams with access to protected branch",
+    "scope": "repos",
+    "id": "getTeamsWithAccessToProtectedBranch",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "branch parameter",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get teams with access to protected branch",
+    "scope": "repos",
+    "id": "listProtectedBranchTeamRestrictions",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "branch parameter",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get teams with access to protected branch",
+    "scope": "repos",
+    "id": "listTeamsWithAccessToProtectedBranch",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "branch parameter",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Replace team restrictions of protected branch",
+    "scope": "repos",
+    "id": "replaceProtectedBranchTeamRestrictions",
+    "method": "PUT",
+    "url": "/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "branch parameter",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "teams parameter",
+        "enum": null,
+        "name": "teams",
+        "type": "string[]",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Add team restrictions of protected branch",
+    "scope": "repos",
+    "id": "addProtectedBranchTeamRestrictions",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "branch parameter",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "teams parameter",
+        "enum": null,
+        "name": "teams",
+        "type": "string[]",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Remove team restrictions of protected branch",
+    "scope": "repos",
+    "id": "removeProtectedBranchTeamRestrictions",
+    "method": "DELETE",
+    "url": "/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "branch parameter",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "teams parameter",
+        "enum": null,
+        "name": "teams",
+        "type": "string[]",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get users with access to protected branch",
+    "scope": "repos",
+    "id": "getUsersWithAccessToProtectedBranch",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "branch parameter",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get users with access to protected branch",
+    "scope": "repos",
+    "id": "listProtectedBranchUserRestrictions",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "branch parameter",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get users with access to protected branch",
+    "scope": "repos",
+    "id": "listUsersWithAccessToProtectedBranch",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "branch parameter",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Replace user restrictions of protected branch",
+    "scope": "repos",
+    "id": "replaceProtectedBranchUserRestrictions",
+    "method": "PUT",
+    "url": "/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "branch parameter",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "users parameter",
+        "enum": null,
+        "name": "users",
+        "type": "string[]",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Add user restrictions of protected branch",
+    "scope": "repos",
+    "id": "addProtectedBranchUserRestrictions",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "branch parameter",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "users parameter",
+        "enum": null,
+        "name": "users",
+        "type": "string[]",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Remove user restrictions of protected branch",
+    "scope": "repos",
+    "id": "removeProtectedBranchUserRestrictions",
+    "method": "DELETE",
+    "url": "/repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "branch parameter",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "users parameter",
+        "enum": null,
+        "name": "users",
+        "type": "string[]",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Create a check run",
+    "scope": "checks",
+    "id": "create",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/check-runs",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The name of the check. For example, \"code-coverage\".",
+        "enum": null,
+        "name": "name",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The SHA of the commit.",
+        "enum": null,
+        "name": "head_sha",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The URL of the integrator's site that has the full details of the check.",
+        "enum": null,
+        "name": "details_url",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A reference for the run on the integrator's system.",
+        "enum": null,
+        "name": "external_id",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The current status. Can be one of `queued`, `in_progress`, or `completed`.",
+        "enum": ["queued", "in_progress", "completed"],
+        "name": "status",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The time that the check run began. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.",
+        "enum": null,
+        "name": "started_at",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "**Required if you provide `completed_at` or a `status` of `completed`**. The final conclusion of the check. Can be one of `success`, `failure`, `neutral`, `cancelled`, `timed_out`, or `action_required`. When the conclusion is `action_required`, additional details should be provided on the site specified by `details_url`.  \n**Note:** Providing `conclusion` will automatically set the `status` parameter to `completed`.",
+        "enum": [
+          "success",
+          "failure",
+          "neutral",
+          "cancelled",
+          "timed_out",
+          "action_required"
+        ],
+        "name": "conclusion",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The time the check completed. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.",
+        "enum": null,
+        "name": "completed_at",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Check runs can accept a variety of data in the `output` object, including a `title` and `summary` and can optionally provide descriptive details about the run. See the [`output` object](https://developer.github.com/v3/checks/runs/#output-object) description.",
+        "enum": null,
+        "name": "output",
+        "type": "object",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The title of the check run.",
+        "enum": null,
+        "name": "output.title",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The summary of the check run. This parameter supports Markdown.",
+        "enum": null,
+        "name": "output.summary",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The details of the check run. This parameter supports Markdown.",
+        "enum": null,
+        "name": "output.text",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Adds information from your analysis to specific lines of code. Annotations are visible on GitHub in the **Checks** and **Files changed** tab of the pull request. The Checks API limits the number of annotations to a maximum of 50 per API request. To create more than 50 annotations, you have to make multiple requests to the [Update a check run](https://developer.github.com/v3/checks/runs/#update-a-check-run) endpoint. Each time you update the check run, annotations are appended to the list of annotations that already exist for the check run. For details about how you can view annotations on GitHub, see \"[About status checks](https://help.github.com/articles/about-status-checks#checks)\". See the [`annotations` object](https://developer.github.com/v3/checks/runs/#annotations-object) description for details about how to use this parameter.",
+        "enum": null,
+        "name": "output.annotations",
+        "type": "object[]",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The path of the file to add an annotation to. For example, `assets/css/main.css`.",
+        "enum": null,
+        "name": "output.annotations[].path",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The start line of the annotation.",
+        "enum": null,
+        "name": "output.annotations[].start_line",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The end line of the annotation.",
+        "enum": null,
+        "name": "output.annotations[].end_line",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The start column of the annotation. Annotations only support `start_column` and `end_column` on the same line. Omit this parameter if `start_line` and `end_line` have different values.",
+        "enum": null,
+        "name": "output.annotations[].start_column",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The end column of the annotation. Annotations only support `start_column` and `end_column` on the same line. Omit this parameter if `start_line` and `end_line` have different values.",
+        "enum": null,
+        "name": "output.annotations[].end_column",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The level of the annotation. Can be one of `notice`, `warning`, or `failure`.",
+        "enum": ["notice", "warning", "failure"],
+        "name": "output.annotations[].annotation_level",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A short description of the feedback for these lines of code. The maximum size is 64 KB.",
+        "enum": null,
+        "name": "output.annotations[].message",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The title that represents the annotation. The maximum size is 255 characters.",
+        "enum": null,
+        "name": "output.annotations[].title",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Details about this annotation. The maximum size is 64 KB.",
+        "enum": null,
+        "name": "output.annotations[].raw_details",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Adds images to the output displayed in the GitHub pull request UI. See the [`images` object](https://developer.github.com/v3/checks/runs/#images-object) description for details.",
+        "enum": null,
+        "name": "output.images",
+        "type": "object[]",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The alternative text for the image.",
+        "enum": null,
+        "name": "output.images[].alt",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The full URL of the image.",
+        "enum": null,
+        "name": "output.images[].image_url",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A short image description.",
+        "enum": null,
+        "name": "output.images[].caption",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Displays a button on GitHub that can be clicked to alert your app to do additional tasks. For example, a code linting app can display a button that automatically fixes detected errors. The button created in this object is displayed after the check run completes. When a user clicks the button, GitHub sends the [`check_run.requested_action` webhook](https://developer.github.com/v3/activity/events/types/#checkrunevent) to your app. Each action includes a `label`, `identifier` and `description`. A maximum of three actions are accepted. See the [`actions` object](https://developer.github.com/v3/checks/runs/#actions-object) description. To learn more about check runs and requested actions, see \"[Check runs and requested actions](https://developer.github.com/v3/checks/runs/#check-runs-and-requested-actions).\" To learn more about check runs and requested actions, see \"[Check runs and requested actions](https://developer.github.com/v3/checks/runs/#check-runs-and-requested-actions).\"",
+        "enum": null,
+        "name": "actions",
+        "type": "object[]",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The text to be displayed on a button in the web UI. The maximum size is 20 characters.",
+        "enum": null,
+        "name": "actions[].label",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A short explanation of what this action would do. The maximum size is 40 characters.",
+        "enum": null,
+        "name": "actions[].description",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A reference for the action on the integrator's system. The maximum size is 20 characters.",
+        "enum": null,
+        "name": "actions[].identifier",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Update a check run",
+    "scope": "checks",
+    "id": "update",
+    "method": "PATCH",
+    "url": "/repos/{owner}/{repo}/check-runs/{check_run_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "check_run_id parameter",
+        "enum": null,
+        "name": "check_run_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The name of the check. For example, \"code-coverage\".",
+        "enum": null,
+        "name": "name",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The URL of the integrator's site that has the full details of the check.",
+        "enum": null,
+        "name": "details_url",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A reference for the run on the integrator's system.",
+        "enum": null,
+        "name": "external_id",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.",
+        "enum": null,
+        "name": "started_at",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The current status. Can be one of `queued`, `in_progress`, or `completed`.",
+        "enum": ["queued", "in_progress", "completed"],
+        "name": "status",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "**Required if you provide `completed_at` or a `status` of `completed`**. The final conclusion of the check. Can be one of `success`, `failure`, `neutral`, `cancelled`, `timed_out`, or `action_required`.  \n**Note:** Providing `conclusion` will automatically set the `status` parameter to `completed`.",
+        "enum": [
+          "success",
+          "failure",
+          "neutral",
+          "cancelled",
+          "timed_out",
+          "action_required"
+        ],
+        "name": "conclusion",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The time the check completed. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.",
+        "enum": null,
+        "name": "completed_at",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Check runs can accept a variety of data in the `output` object, including a `title` and `summary` and can optionally provide descriptive details about the run. See the [`output` object](https://developer.github.com/v3/checks/runs/#output-object-1) description.",
+        "enum": null,
+        "name": "output",
+        "type": "object",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "**Required**.",
+        "enum": null,
+        "name": "output.title",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Can contain Markdown.",
+        "enum": null,
+        "name": "output.summary",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Can contain Markdown.",
+        "enum": null,
+        "name": "output.text",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Adds information from your analysis to specific lines of code. Annotations are visible in GitHub's pull request UI. Annotations are visible in GitHub's pull request UI. The Checks API limits the number of annotations to a maximum of 50 per API request. To create more than 50 annotations, you have to make multiple requests to the [Update a check run](https://developer.github.com/v3/checks/runs/#update-a-check-run) endpoint. Each time you update the check run, annotations are appended to the list of annotations that already exist for the check run. For details about annotations in the UI, see \"[About status checks](https://help.github.com/articles/about-status-checks#checks)\". See the [`annotations` object](https://developer.github.com/v3/checks/runs/#annotations-object-1) description for details.",
+        "enum": null,
+        "name": "output.annotations",
+        "type": "object[]",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The path of the file to add an annotation to. For example, `assets/css/main.css`.",
+        "enum": null,
+        "name": "output.annotations[].path",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The start line of the annotation.",
+        "enum": null,
+        "name": "output.annotations[].start_line",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The end line of the annotation.",
+        "enum": null,
+        "name": "output.annotations[].end_line",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The start column of the annotation. Annotations only support `start_column` and `end_column` on the same line. Omit this parameter if `start_line` and `end_line` have different values.",
+        "enum": null,
+        "name": "output.annotations[].start_column",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The end column of the annotation. Annotations only support `start_column` and `end_column` on the same line. Omit this parameter if `start_line` and `end_line` have different values.",
+        "enum": null,
+        "name": "output.annotations[].end_column",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The level of the annotation. Can be one of `notice`, `warning`, or `failure`.",
+        "enum": ["notice", "warning", "failure"],
+        "name": "output.annotations[].annotation_level",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A short description of the feedback for these lines of code. The maximum size is 64 KB.",
+        "enum": null,
+        "name": "output.annotations[].message",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The title that represents the annotation. The maximum size is 255 characters.",
+        "enum": null,
+        "name": "output.annotations[].title",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Details about this annotation. The maximum size is 64 KB.",
+        "enum": null,
+        "name": "output.annotations[].raw_details",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Adds images to the output displayed in the GitHub pull request UI. See the [`images` object](https://developer.github.com/v3/checks/runs/#annotations-object-1) description for details.",
+        "enum": null,
+        "name": "output.images",
+        "type": "object[]",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The alternative text for the image.",
+        "enum": null,
+        "name": "output.images[].alt",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The full URL of the image.",
+        "enum": null,
+        "name": "output.images[].image_url",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A short image description.",
+        "enum": null,
+        "name": "output.images[].caption",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Possible further actions the integrator can perform, which a user may trigger. Each action includes a `label`, `identifier` and `description`. A maximum of three actions are accepted. See the [`actions` object](https://developer.github.com/v3/checks/runs/#actions-object) description. To learn more about check runs and requested actions, see \"[Check runs and requested actions](https://developer.github.com/v3/checks/runs/#check-runs-and-requested-actions).\"",
+        "enum": null,
+        "name": "actions",
+        "type": "object[]",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The text to be displayed on a button in the web UI. The maximum size is 20 characters.",
+        "enum": null,
+        "name": "actions[].label",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A short explanation of what this action would do. The maximum size is 40 characters.",
+        "enum": null,
+        "name": "actions[].description",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A reference for the action on the integrator's system. The maximum size is 20 characters.",
+        "enum": null,
+        "name": "actions[].identifier",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get a single check run",
+    "scope": "checks",
+    "id": "get",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/check-runs/{check_run_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "check_run_id parameter",
+        "enum": null,
+        "name": "check_run_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List annotations for a check run",
+    "scope": "checks",
+    "id": "listAnnotations",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/check-runs/{check_run_id}/annotations",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "check_run_id parameter",
+        "enum": null,
+        "name": "check_run_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Create a check suite",
+    "scope": "checks",
+    "id": "createSuite",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/check-suites",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The sha of the head commit.",
+        "enum": null,
+        "name": "head_sha",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Set preferences for check suites on a repository",
+    "scope": "checks",
+    "id": "setSuitesPreferences",
+    "method": "PATCH",
+    "url": "/repos/{owner}/{repo}/check-suites/preferences",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Enables or disables automatic creation of CheckSuite events upon pushes to the repository. Enabled by default. See the [`auto_trigger_checks` object](https://developer.github.com/v3/checks/suites/#auto_trigger_checks-object) description for details.",
+        "enum": null,
+        "name": "auto_trigger_checks",
+        "type": "object[]",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The `id` of the GitHub App.",
+        "enum": null,
+        "name": "auto_trigger_checks[].app_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Set to `true` to enable automatic creation of CheckSuite events upon pushes to the repository, or `false` to disable them.",
+        "enum": null,
+        "name": "auto_trigger_checks[].setting",
+        "type": "boolean",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get a single check suite",
+    "scope": "checks",
+    "id": "getSuite",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/check-suites/{check_suite_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "check_suite_id parameter",
+        "enum": null,
+        "name": "check_suite_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List check runs in a check suite",
+    "scope": "checks",
+    "id": "listForSuite",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "check_suite_id parameter",
+        "enum": null,
+        "name": "check_suite_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Returns check runs with the specified `name`.",
+        "enum": null,
+        "name": "check_name",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Returns check runs with the specified `status`. Can be one of `queued`, `in_progress`, or `completed`.",
+        "enum": ["queued", "in_progress", "completed"],
+        "name": "status",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Filters check runs by their `completed_at` timestamp. Can be one of `latest` (returning the most recent check runs) or `all`.",
+        "enum": ["latest", "all"],
+        "name": "filter",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Rerequest check suite",
+    "scope": "checks",
+    "id": "rerequestSuite",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "check_suite_id parameter",
+        "enum": null,
+        "name": "check_suite_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List collaborators",
+    "scope": "repos",
+    "id": "listCollaborators",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/collaborators",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Filter collaborators returned by their affiliation. Can be one of:  \n\\* `outside`: All outside collaborators of an organization-owned repository.  \n\\* `direct`: All collaborators with permissions to an organization-owned repository, regardless of organization membership status.  \n\\* `all`: All collaborators the authenticated user can see.",
+        "enum": ["outside", "direct", "all"],
+        "name": "affiliation",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Check if a user is a collaborator",
+    "scope": "repos",
+    "id": "checkCollaborator",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/collaborators/{username}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Add user as a collaborator",
+    "scope": "repos",
+    "id": "addCollaborator",
+    "method": "PUT",
+    "url": "/repos/{owner}/{repo}/collaborators/{username}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The permission to grant the collaborator. **Only valid on organization-owned repositories.** Can be one of:  \n\\* `pull` - can pull, but not push to or administer this repository.  \n\\* `push` - can pull and push, but not administer this repository.  \n\\* `admin` - can pull, push and administer this repository.",
+        "enum": ["pull", "push", "admin"],
+        "name": "permission",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Remove user as a collaborator",
+    "scope": "repos",
+    "id": "removeCollaborator",
+    "method": "DELETE",
+    "url": "/repos/{owner}/{repo}/collaborators/{username}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Review a user's permission level",
+    "scope": "repos",
+    "id": "getCollaboratorPermissionLevel",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/collaborators/{username}/permission",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List commit comments for a repository",
+    "scope": "repos",
+    "id": "listCommitComments",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/comments",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get a single commit comment",
+    "scope": "repos",
+    "id": "getCommitComment",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/comments/{comment_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "comment_id parameter",
+        "enum": null,
+        "name": "comment_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Update a commit comment",
+    "scope": "repos",
+    "id": "updateCommitComment",
+    "method": "PATCH",
+    "url": "/repos/{owner}/{repo}/comments/{comment_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "comment_id parameter",
+        "enum": null,
+        "name": "comment_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The contents of the comment",
+        "enum": null,
+        "name": "body",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Delete a commit comment",
+    "scope": "repos",
+    "id": "deleteCommitComment",
+    "method": "DELETE",
+    "url": "/repos/{owner}/{repo}/comments/{comment_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "comment_id parameter",
+        "enum": null,
+        "name": "comment_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List reactions for a commit comment",
+    "scope": "reactions",
+    "id": "listForCommitComment",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/comments/{comment_id}/reactions",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "comment_id parameter",
+        "enum": null,
+        "name": "comment_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Returns a single [reaction type](https://developer.github.com/v3/reactions/#reaction-types). Omit this parameter to list all reactions to a commit comment.",
+        "enum": [
+          "+1",
+          "-1",
+          "laugh",
+          "confused",
+          "heart",
+          "hooray",
+          "rocket",
+          "eyes"
+        ],
+        "name": "content",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Create reaction for a commit comment",
+    "scope": "reactions",
+    "id": "createForCommitComment",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/comments/{comment_id}/reactions",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "comment_id parameter",
+        "enum": null,
+        "name": "comment_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The [reaction type](https://developer.github.com/v3/reactions/#reaction-types) to add to the commit comment.",
+        "enum": [
+          "+1",
+          "-1",
+          "laugh",
+          "confused",
+          "heart",
+          "hooray",
+          "rocket",
+          "eyes"
+        ],
+        "name": "content",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List commits on a repository",
+    "scope": "repos",
+    "id": "listCommits",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/commits",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "SHA or branch to start listing commits from. Default: the repository’s default branch (usually `master`).",
+        "enum": null,
+        "name": "sha",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Only commits containing this file path will be returned.",
+        "enum": null,
+        "name": "path",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "GitHub login or email address by which to filter by commit author.",
+        "enum": null,
+        "name": "author",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Only commits after this date will be returned. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.",
+        "enum": null,
+        "name": "since",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Only commits before this date will be returned. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.",
+        "enum": null,
+        "name": "until",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List branches for HEAD commit",
+    "scope": "repos",
+    "id": "listBranchesForHeadCommit",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "commit_sha parameter",
+        "enum": null,
+        "name": "commit_sha",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List comments for a single commit",
+    "scope": "repos",
+    "id": "listCommentsForCommit",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/commits/{commit_sha}/comments",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "commit_sha parameter",
+        "enum": null,
+        "name": "commit_sha",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": "commit_sha",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "ref",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "Create a commit comment",
+    "scope": "repos",
+    "id": "createCommitComment",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/commits/{commit_sha}/comments",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "commit_sha parameter",
+        "enum": null,
+        "name": "commit_sha",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The contents of the comment.",
+        "enum": null,
+        "name": "body",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Relative path of the file to comment on.",
+        "enum": null,
+        "name": "path",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Line index in the diff to comment on.",
+        "enum": null,
+        "name": "position",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "**Deprecated**. Use **position** parameter instead. Line number in the file to comment on.",
+        "enum": null,
+        "name": "line",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": "commit_sha",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "sha",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "List pull requests associated with commit",
+    "scope": "repos",
+    "id": "listPullRequestsAssociatedWithCommit",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/commits/{commit_sha}/pulls",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "commit_sha parameter",
+        "enum": null,
+        "name": "commit_sha",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get a single commit",
+    "scope": "repos",
+    "id": "getCommit",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/commits/{ref}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "ref parameter",
+        "enum": null,
+        "name": "ref",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": "ref",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "sha",
+        "type": null,
+        "required": null
+      },
+      {
+        "alias": "ref",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "commit_sha",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "List check runs for a specific ref",
+    "scope": "checks",
+    "id": "listForRef",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/commits/{ref}/check-runs",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "ref parameter",
+        "enum": null,
+        "name": "ref",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Returns check runs with the specified `name`.",
+        "enum": null,
+        "name": "check_name",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Returns check runs with the specified `status`. Can be one of `queued`, `in_progress`, or `completed`.",
+        "enum": ["queued", "in_progress", "completed"],
+        "name": "status",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Filters check runs by their `completed_at` timestamp. Can be one of `latest` (returning the most recent check runs) or `all`.",
+        "enum": ["latest", "all"],
+        "name": "filter",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List check suites for a specific ref",
+    "scope": "checks",
+    "id": "listSuitesForRef",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/commits/{ref}/check-suites",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "ref parameter",
+        "enum": null,
+        "name": "ref",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Filters check suites by GitHub App `id`.",
+        "enum": null,
+        "name": "app_id",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Filters checks suites by the name of the [check run](https://developer.github.com/v3/checks/runs/).",
+        "enum": null,
+        "name": "check_name",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get the combined status for a specific ref",
+    "scope": "repos",
+    "id": "getCombinedStatusForRef",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/commits/{ref}/status",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "ref parameter",
+        "enum": null,
+        "name": "ref",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List statuses for a specific ref",
+    "scope": "repos",
+    "id": "listStatusesForRef",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/commits/{ref}/statuses",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "ref parameter",
+        "enum": null,
+        "name": "ref",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get the contents of a repository's code of conduct",
+    "scope": "codesOfConduct",
+    "id": "getForRepo",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/community/code_of_conduct",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Retrieve community profile metrics",
+    "scope": "repos",
+    "id": "retrieveCommunityProfileMetrics",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/community/profile",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Compare two commits",
+    "scope": "repos",
+    "id": "compareCommits",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/compare/{base}...{head}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "base parameter",
+        "enum": null,
+        "name": "base",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "head parameter",
+        "enum": null,
+        "name": "head",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get contents",
+    "scope": "repos",
+    "id": "getContents",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/contents/{path}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "path parameter",
+        "enum": null,
+        "name": "path",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The name of the commit/branch/tag. Default: the repository’s default branch (usually `master`)",
+        "enum": null,
+        "name": "ref",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Create or update a file",
+    "scope": "repos",
+    "id": "createOrUpdateFile",
+    "method": "PUT",
+    "url": "/repos/{owner}/{repo}/contents/{path}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "path parameter",
+        "enum": null,
+        "name": "path",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The commit message.",
+        "enum": null,
+        "name": "message",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The new file content, using Base64 encoding.",
+        "enum": null,
+        "name": "content",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "**Required if you are updating a file**. The blob SHA of the file being replaced.",
+        "enum": null,
+        "name": "sha",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The branch name. Default: the repository’s default branch (usually `master`)",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The person that committed the file. Default: the authenticated user.",
+        "enum": null,
+        "name": "committer",
+        "type": "object",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The name of the author or committer of the commit. You'll receive a `422` status code if `name` is omitted.",
+        "enum": null,
+        "name": "committer.name",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The email of the author or committer of the commit. You'll receive a `422` status code if `name` is omitted.",
+        "enum": null,
+        "name": "committer.email",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The author of the file. Default: The `committer` or the authenticated user if you omit `committer`.",
+        "enum": null,
+        "name": "author",
+        "type": "object",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The name of the author or committer of the commit. You'll receive a `422` status code if `name` is omitted.",
+        "enum": null,
+        "name": "author.name",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The email of the author or committer of the commit. You'll receive a `422` status code if `name` is omitted.",
+        "enum": null,
+        "name": "author.email",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Create or update a file",
+    "scope": "repos",
+    "id": "createFile",
+    "method": "PUT",
+    "url": "/repos/{owner}/{repo}/contents/{path}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "path parameter",
+        "enum": null,
+        "name": "path",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The commit message.",
+        "enum": null,
+        "name": "message",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The new file content, using Base64 encoding.",
+        "enum": null,
+        "name": "content",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "**Required if you are updating a file**. The blob SHA of the file being replaced.",
+        "enum": null,
+        "name": "sha",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The branch name. Default: the repository’s default branch (usually `master`)",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The person that committed the file. Default: the authenticated user.",
+        "enum": null,
+        "name": "committer",
+        "type": "object",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The name of the author or committer of the commit. You'll receive a `422` status code if `name` is omitted.",
+        "enum": null,
+        "name": "committer.name",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The email of the author or committer of the commit. You'll receive a `422` status code if `name` is omitted.",
+        "enum": null,
+        "name": "committer.email",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The author of the file. Default: The `committer` or the authenticated user if you omit `committer`.",
+        "enum": null,
+        "name": "author",
+        "type": "object",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The name of the author or committer of the commit. You'll receive a `422` status code if `name` is omitted.",
+        "enum": null,
+        "name": "author.name",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The email of the author or committer of the commit. You'll receive a `422` status code if `name` is omitted.",
+        "enum": null,
+        "name": "author.email",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Create or update a file",
+    "scope": "repos",
+    "id": "updateFile",
+    "method": "PUT",
+    "url": "/repos/{owner}/{repo}/contents/{path}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "path parameter",
+        "enum": null,
+        "name": "path",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The commit message.",
+        "enum": null,
+        "name": "message",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The new file content, using Base64 encoding.",
+        "enum": null,
+        "name": "content",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "**Required if you are updating a file**. The blob SHA of the file being replaced.",
+        "enum": null,
+        "name": "sha",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The branch name. Default: the repository’s default branch (usually `master`)",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The person that committed the file. Default: the authenticated user.",
+        "enum": null,
+        "name": "committer",
+        "type": "object",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The name of the author or committer of the commit. You'll receive a `422` status code if `name` is omitted.",
+        "enum": null,
+        "name": "committer.name",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The email of the author or committer of the commit. You'll receive a `422` status code if `name` is omitted.",
+        "enum": null,
+        "name": "committer.email",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The author of the file. Default: The `committer` or the authenticated user if you omit `committer`.",
+        "enum": null,
+        "name": "author",
+        "type": "object",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The name of the author or committer of the commit. You'll receive a `422` status code if `name` is omitted.",
+        "enum": null,
+        "name": "author.name",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The email of the author or committer of the commit. You'll receive a `422` status code if `name` is omitted.",
+        "enum": null,
+        "name": "author.email",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Delete a file",
+    "scope": "repos",
+    "id": "deleteFile",
+    "method": "DELETE",
+    "url": "/repos/{owner}/{repo}/contents/{path}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "path parameter",
+        "enum": null,
+        "name": "path",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The commit message.",
+        "enum": null,
+        "name": "message",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The blob SHA of the file being replaced.",
+        "enum": null,
+        "name": "sha",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The branch name. Default: the repository’s default branch (usually `master`)",
+        "enum": null,
+        "name": "branch",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "object containing information about the committer.",
+        "enum": null,
+        "name": "committer",
+        "type": "object",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The name of the author (or committer) of the commit",
+        "enum": null,
+        "name": "committer.name",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The email of the author (or committer) of the commit",
+        "enum": null,
+        "name": "committer.email",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "object containing information about the author.",
+        "enum": null,
+        "name": "author",
+        "type": "object",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The name of the author (or committer) of the commit",
+        "enum": null,
+        "name": "author.name",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The email of the author (or committer) of the commit",
+        "enum": null,
+        "name": "author.email",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List contributors",
+    "scope": "repos",
+    "id": "listContributors",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/contributors",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Set to `1` or `true` to include anonymous contributors in results.",
+        "enum": null,
+        "name": "anon",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List deployments",
+    "scope": "repos",
+    "id": "listDeployments",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/deployments",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The SHA recorded at creation time.",
+        "enum": null,
+        "name": "sha",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The name of the ref. This can be a branch, tag, or SHA.",
+        "enum": null,
+        "name": "ref",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The name of the task for the deployment (e.g., `deploy` or `deploy:migrations`).",
+        "enum": null,
+        "name": "task",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The name of the environment that was deployed to (e.g., `staging` or `production`).",
+        "enum": null,
+        "name": "environment",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Create a deployment",
+    "scope": "repos",
+    "id": "createDeployment",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/deployments",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The ref to deploy. This can be a branch, tag, or SHA.",
+        "enum": null,
+        "name": "ref",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Specifies a task to execute (e.g., `deploy` or `deploy:migrations`).",
+        "enum": null,
+        "name": "task",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Attempts to automatically merge the default branch into the requested ref, if it's behind the default branch.",
+        "enum": null,
+        "name": "auto_merge",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The [status](https://developer.github.com/v3/repos/statuses/) contexts to verify against commit status checks. If you omit this parameter, GitHub verifies all unique contexts before creating a deployment. To bypass checking entirely, pass an empty array. Defaults to all unique contexts.",
+        "enum": null,
+        "name": "required_contexts",
+        "type": "string[]",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "JSON payload with extra information about the deployment.",
+        "enum": null,
+        "name": "payload",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Name for the target deployment environment (e.g., `production`, `staging`, `qa`).",
+        "enum": null,
+        "name": "environment",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Short description of the deployment.",
+        "enum": null,
+        "name": "description",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Specifies if the given environment is specific to the deployment and will no longer exist at some point in the future. Default: `false`  \n**Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://developer.github.com/v3/previews/#enhanced-deployments) custom media type. **Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://developer.github.com/v3/previews/#enhanced-deployments) custom media type.",
+        "enum": null,
+        "name": "transient_environment",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Specifies if the given environment is one that end-users directly interact with. Default: `true` when `environment` is `production` and `false` otherwise.  \n**Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://developer.github.com/v3/previews/#enhanced-deployments) custom media type.",
+        "enum": null,
+        "name": "production_environment",
+        "type": "boolean",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get a single deployment",
+    "scope": "repos",
+    "id": "getDeployment",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/deployments/{deployment_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "deployment_id parameter",
+        "enum": null,
+        "name": "deployment_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List deployment statuses",
+    "scope": "repos",
+    "id": "listDeploymentStatuses",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/deployments/{deployment_id}/statuses",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "deployment_id parameter",
+        "enum": null,
+        "name": "deployment_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Create a deployment status",
+    "scope": "repos",
+    "id": "createDeploymentStatus",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/deployments/{deployment_id}/statuses",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "deployment_id parameter",
+        "enum": null,
+        "name": "deployment_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The state of the status. Can be one of `error`, `failure`, `inactive`, `in_progress`, `queued` `pending`, or `success`. **Note:** To use the `inactive` state, you must provide the [`application/vnd.github.ant-man-preview+json`](https://developer.github.com/v3/previews/#enhanced-deployments) custom media type. To use the `in_progress` and `queued` states, you must provide the [`application/vnd.github.flash-preview+json`](https://developer.github.com/v3/previews/#deployment-statuses) custom media type.",
+        "enum": [
+          "error",
+          "failure",
+          "inactive",
+          "in_progress",
+          "queued",
+          "pending",
+          "success"
+        ],
+        "name": "state",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The target URL to associate with this status. This URL should contain output to keep the user updated while the task is running or serve as historical information for what happened in the deployment. **Note:** It's recommended to use the `log_url` parameter, which replaces `target_url`.",
+        "enum": null,
+        "name": "target_url",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The full URL of the deployment's output. This parameter replaces `target_url`. We will continue to accept `target_url` to support legacy uses, but we recommend replacing `target_url` with `log_url`. Setting `log_url` will automatically set `target_url` to the same value. Default: `\"\"`  \n**Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://developer.github.com/v3/previews/#enhanced-deployments) custom media type. **Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://developer.github.com/v3/previews/#enhanced-deployments) custom media type.",
+        "enum": null,
+        "name": "log_url",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A short description of the status. The maximum description length is 140 characters.",
+        "enum": null,
+        "name": "description",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Name for the target deployment environment, which can be changed when setting a deploy status. For example, `production`, `staging`, or `qa`. **Note:** This parameter requires you to use the [`application/vnd.github.flash-preview+json`](https://developer.github.com/v3/previews/#deployment-statuses) custom media type.",
+        "enum": ["production", "staging", "qa"],
+        "name": "environment",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Sets the URL for accessing your environment. Default: `\"\"`  \n**Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://developer.github.com/v3/previews/#enhanced-deployments) custom media type. **Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://developer.github.com/v3/previews/#enhanced-deployments) custom media type.",
+        "enum": null,
+        "name": "environment_url",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Adds a new `inactive` status to all prior non-transient, non-production environment deployments with the same repository and `environment` name as the created status's deployment. An `inactive` status is only added to deployments that had a `success` state. Default: `true`  \n**Note:** To add an `inactive` status to `production` environments, you must use the [`application/vnd.github.flash-preview+json`](https://developer.github.com/v3/previews/#deployment-statuses) custom media type.  \n**Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://developer.github.com/v3/previews/#enhanced-deployments) custom media type.",
+        "enum": null,
+        "name": "auto_inactive",
+        "type": "boolean",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get a single deployment status",
+    "scope": "repos",
+    "id": "getDeploymentStatus",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "deployment_id parameter",
+        "enum": null,
+        "name": "deployment_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "status_id parameter",
+        "enum": null,
+        "name": "status_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Create a repository dispatch event",
+    "scope": "repos",
+    "id": "createDispatchEvent",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/dispatches",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "**Required:** A custom webhook event name.",
+        "enum": null,
+        "name": "event_type",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List downloads for a repository",
+    "scope": "repos",
+    "id": "listDownloads",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/downloads",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get a single download",
+    "scope": "repos",
+    "id": "getDownload",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/downloads/{download_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "download_id parameter",
+        "enum": null,
+        "name": "download_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Delete a download",
+    "scope": "repos",
+    "id": "deleteDownload",
+    "method": "DELETE",
+    "url": "/repos/{owner}/{repo}/downloads/{download_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "download_id parameter",
+        "enum": null,
+        "name": "download_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List repository events",
+    "scope": "activity",
+    "id": "listRepoEvents",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/events",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List forks",
+    "scope": "repos",
+    "id": "listForks",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/forks",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The sort order. Can be either `newest`, `oldest`, or `stargazers`.",
+        "enum": ["newest", "oldest", "stargazers"],
+        "name": "sort",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Create a fork",
+    "scope": "repos",
+    "id": "createFork",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/forks",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Optional parameter to specify the organization name if forking into an organization.",
+        "enum": null,
+        "name": "organization",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Create a blob",
+    "scope": "git",
+    "id": "createBlob",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/git/blobs",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The new blob's content.",
+        "enum": null,
+        "name": "content",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The encoding used for `content`. Currently, `\"utf-8\"` and `\"base64\"` are supported.",
+        "enum": null,
+        "name": "encoding",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get a blob",
+    "scope": "git",
+    "id": "getBlob",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/git/blobs/{file_sha}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "file_sha parameter",
+        "enum": null,
+        "name": "file_sha",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Create a commit",
+    "scope": "git",
+    "id": "createCommit",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/git/commits",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The commit message",
+        "enum": null,
+        "name": "message",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The SHA of the tree object this commit points to",
+        "enum": null,
+        "name": "tree",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The SHAs of the commits that were the parents of this commit. If omitted or empty, the commit will be written as a root commit. For a single parent, an array of one SHA should be provided; for a merge commit, an array of more than one should be provided.",
+        "enum": null,
+        "name": "parents",
+        "type": "string[]",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Information about the author of the commit. By default, the `author` will be the authenticated user and the current date. See the `author` and `committer` object below for details.",
+        "enum": null,
+        "name": "author",
+        "type": "object",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The name of the author (or committer) of the commit",
+        "enum": null,
+        "name": "author.name",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The email of the author (or committer) of the commit",
+        "enum": null,
+        "name": "author.email",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Indicates when this commit was authored (or committed). This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.",
+        "enum": null,
+        "name": "author.date",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Information about the person who is making the commit. By default, `committer` will use the information set in `author`. See the `author` and `committer` object below for details.",
+        "enum": null,
+        "name": "committer",
+        "type": "object",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The name of the author (or committer) of the commit",
+        "enum": null,
+        "name": "committer.name",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The email of the author (or committer) of the commit",
+        "enum": null,
+        "name": "committer.email",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Indicates when this commit was authored (or committed). This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.",
+        "enum": null,
+        "name": "committer.date",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The [PGP signature](https://en.wikipedia.org/wiki/Pretty_Good_Privacy) of the commit. GitHub adds the signature to the `gpgsig` header of the created commit. For a commit signature to be verifiable by Git or GitHub, it must be an ASCII-armored detached PGP signature over the string commit as it would be written to the object database. To pass a `signature` parameter, you need to first manually create a valid PGP signature, which can be complicated. You may find it easier to [use the command line](https://git-scm.com/book/id/v2/Git-Tools-Signing-Your-Work) to create signed commits.",
+        "enum": null,
+        "name": "signature",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get a commit",
+    "scope": "git",
+    "id": "getCommit",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/git/commits/{commit_sha}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "commit_sha parameter",
+        "enum": null,
+        "name": "commit_sha",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List matching references",
+    "scope": "git",
+    "id": "listMatchingRefs",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/git/matching-refs/{ref}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "ref parameter",
+        "enum": null,
+        "name": "ref",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get a single reference",
+    "scope": "git",
+    "id": "getRef",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/git/ref/{ref}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "ref parameter",
+        "enum": null,
+        "name": "ref",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Create a reference",
+    "scope": "git",
+    "id": "createRef",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/git/refs",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The name of the fully qualified reference (ie: `refs/heads/master`). If it doesn't start with 'refs' and have at least two slashes, it will be rejected.",
+        "enum": null,
+        "name": "ref",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The SHA1 value for this reference.",
+        "enum": null,
+        "name": "sha",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Update a reference",
+    "scope": "git",
+    "id": "updateRef",
+    "method": "PATCH",
+    "url": "/repos/{owner}/{repo}/git/refs/{ref}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "ref parameter",
+        "enum": null,
+        "name": "ref",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The SHA1 value to set this reference to",
+        "enum": null,
+        "name": "sha",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Indicates whether to force the update or to make sure the update is a fast-forward update. Leaving this out or setting it to `false` will make sure you're not overwriting work.",
+        "enum": null,
+        "name": "force",
+        "type": "boolean",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Delete a reference",
+    "scope": "git",
+    "id": "deleteRef",
+    "method": "DELETE",
+    "url": "/repos/{owner}/{repo}/git/refs/{ref}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "ref parameter",
+        "enum": null,
+        "name": "ref",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Create a tag object",
+    "scope": "git",
+    "id": "createTag",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/git/tags",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The tag's name. This is typically a version (e.g., \"v0.0.1\").",
+        "enum": null,
+        "name": "tag",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The tag message.",
+        "enum": null,
+        "name": "message",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The SHA of the git object this is tagging.",
+        "enum": null,
+        "name": "object",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The type of the object we're tagging. Normally this is a `commit` but it can also be a `tree` or a `blob`.",
+        "enum": ["commit", "tree", "blob"],
+        "name": "type",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "An object with information about the individual creating the tag.",
+        "enum": null,
+        "name": "tagger",
+        "type": "object",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The name of the author of the tag",
+        "enum": null,
+        "name": "tagger.name",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The email of the author of the tag",
+        "enum": null,
+        "name": "tagger.email",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "When this object was tagged. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.",
+        "enum": null,
+        "name": "tagger.date",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get a tag",
+    "scope": "git",
+    "id": "getTag",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/git/tags/{tag_sha}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "tag_sha parameter",
+        "enum": null,
+        "name": "tag_sha",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Create a tree",
+    "scope": "git",
+    "id": "createTree",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/git/trees",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Objects (of `path`, `mode`, `type`, and `sha`) specifying a tree structure.",
+        "enum": null,
+        "name": "tree",
+        "type": "object[]",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The file referenced in the tree.",
+        "enum": null,
+        "name": "tree[].path",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The file mode; one of `100644` for file (blob), `100755` for executable (blob), `040000` for subdirectory (tree), `160000` for submodule (commit), or `120000` for a blob that specifies the path of a symlink.",
+        "enum": ["100644", "100755", "040000", "160000", "120000"],
+        "name": "tree[].mode",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Either `blob`, `tree`, or `commit`.",
+        "enum": ["blob", "tree", "commit"],
+        "name": "tree[].type",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The SHA1 checksum ID of the object in the tree. Also called `tree.sha`.  \n  \n**Note:** Use either `tree.sha` or `content` to specify the contents of the entry. Using both `tree.sha` and `content` will return an error.",
+        "enum": null,
+        "name": "tree[].sha",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The content you want this file to have. GitHub will write this blob out and use that SHA for this entry. Use either this, or `tree.sha`.  \n  \n**Note:** Use either `tree.sha` or `content` to specify the contents of the entry. Using both `tree.sha` and `content` will return an error.",
+        "enum": null,
+        "name": "tree[].content",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The SHA1 of the tree you want to update with new data. If you don't set this, the commit will be created on top of everything; however, it will only contain your change, the rest of your files will show up as deleted.",
+        "enum": null,
+        "name": "base_tree",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get a tree",
+    "scope": "git",
+    "id": "getTree",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/git/trees/{tree_sha}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "tree_sha parameter",
+        "enum": null,
+        "name": "tree_sha",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "recursive parameter",
+        "enum": ["1"],
+        "name": "recursive",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List hooks",
+    "scope": "repos",
+    "id": "listHooks",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/hooks",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Create a hook",
+    "scope": "repos",
+    "id": "createHook",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/hooks",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Use `web` to create a webhook. Default: `web`. This parameter only accepts the value `web`.",
+        "enum": null,
+        "name": "name",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Key/value pairs to provide settings for this webhook. [These are defined below](https://developer.github.com/v3/repos/hooks/#create-hook-config-params).",
+        "enum": null,
+        "name": "config",
+        "type": "object",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The URL to which the payloads will be delivered.",
+        "enum": null,
+        "name": "config.url",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The media type used to serialize the payloads. Supported values include `json` and `form`. The default is `form`.",
+        "enum": null,
+        "name": "config.content_type",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "If provided, the `secret` will be used as the `key` to generate the HMAC hex digest value in the [`X-Hub-Signature`](https://developer.github.com/webhooks/#delivery-headers) header.",
+        "enum": null,
+        "name": "config.secret",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Determines whether the SSL certificate of the host for `url` will be verified when delivering payloads. Supported values include `0` (verification is performed) and `1` (verification is not performed). The default is `0`. **We strongly recommend not setting this to `1` as you are subject to man-in-the-middle and other attacks.**",
+        "enum": null,
+        "name": "config.insecure_ssl",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Determines what [events](https://developer.github.com/v3/activity/events/types/) the hook is triggered for.",
+        "enum": null,
+        "name": "events",
+        "type": "string[]",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Determines if notifications are sent when the webhook is triggered. Set to `true` to send notifications.",
+        "enum": null,
+        "name": "active",
+        "type": "boolean",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get single hook",
+    "scope": "repos",
+    "id": "getHook",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/hooks/{hook_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "hook_id parameter",
+        "enum": null,
+        "name": "hook_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Edit a hook",
+    "scope": "repos",
+    "id": "updateHook",
+    "method": "PATCH",
+    "url": "/repos/{owner}/{repo}/hooks/{hook_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "hook_id parameter",
+        "enum": null,
+        "name": "hook_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Key/value pairs to provide settings for this webhook. [These are defined below](https://developer.github.com/v3/repos/hooks/#create-hook-config-params).",
+        "enum": null,
+        "name": "config",
+        "type": "object",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The URL to which the payloads will be delivered.",
+        "enum": null,
+        "name": "config.url",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The media type used to serialize the payloads. Supported values include `json` and `form`. The default is `form`.",
+        "enum": null,
+        "name": "config.content_type",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "If provided, the `secret` will be used as the `key` to generate the HMAC hex digest value in the [`X-Hub-Signature`](https://developer.github.com/webhooks/#delivery-headers) header.",
+        "enum": null,
+        "name": "config.secret",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Determines whether the SSL certificate of the host for `url` will be verified when delivering payloads. Supported values include `0` (verification is performed) and `1` (verification is not performed). The default is `0`. **We strongly recommend not setting this to `1` as you are subject to man-in-the-middle and other attacks.**",
+        "enum": null,
+        "name": "config.insecure_ssl",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Determines what [events](https://developer.github.com/v3/activity/events/types/) the hook is triggered for. This replaces the entire array of events.",
+        "enum": null,
+        "name": "events",
+        "type": "string[]",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Determines a list of events to be added to the list of events that the Hook triggers for.",
+        "enum": null,
+        "name": "add_events",
+        "type": "string[]",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Determines a list of events to be removed from the list of events that the Hook triggers for.",
+        "enum": null,
+        "name": "remove_events",
+        "type": "string[]",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Determines if notifications are sent when the webhook is triggered. Set to `true` to send notifications.",
+        "enum": null,
+        "name": "active",
+        "type": "boolean",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Delete a hook",
+    "scope": "repos",
+    "id": "deleteHook",
+    "method": "DELETE",
+    "url": "/repos/{owner}/{repo}/hooks/{hook_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "hook_id parameter",
+        "enum": null,
+        "name": "hook_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Ping a hook",
+    "scope": "repos",
+    "id": "pingHook",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/hooks/{hook_id}/pings",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "hook_id parameter",
+        "enum": null,
+        "name": "hook_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Test a push hook",
+    "scope": "repos",
+    "id": "testPushHook",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/hooks/{hook_id}/tests",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "hook_id parameter",
+        "enum": null,
+        "name": "hook_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Start an import",
+    "scope": "migrations",
+    "id": "startImport",
+    "method": "PUT",
+    "url": "/repos/{owner}/{repo}/import",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The URL of the originating repository.",
+        "enum": null,
+        "name": "vcs_url",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The originating VCS type. Can be one of `subversion`, `git`, `mercurial`, or `tfvc`. Please be aware that without this parameter, the import job will take additional time to detect the VCS type before beginning the import. This detection step will be reflected in the response.",
+        "enum": ["subversion", "git", "mercurial", "tfvc"],
+        "name": "vcs",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "If authentication is required, the username to provide to `vcs_url`.",
+        "enum": null,
+        "name": "vcs_username",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "If authentication is required, the password to provide to `vcs_url`.",
+        "enum": null,
+        "name": "vcs_password",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "For a tfvc import, the name of the project that is being imported.",
+        "enum": null,
+        "name": "tfvc_project",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get import progress",
+    "scope": "migrations",
+    "id": "getImportProgress",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/import",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Update existing import",
+    "scope": "migrations",
+    "id": "updateImport",
+    "method": "PATCH",
+    "url": "/repos/{owner}/{repo}/import",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The username to provide to the originating repository.",
+        "enum": null,
+        "name": "vcs_username",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The password to provide to the originating repository.",
+        "enum": null,
+        "name": "vcs_password",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Cancel an import",
+    "scope": "migrations",
+    "id": "cancelImport",
+    "method": "DELETE",
+    "url": "/repos/{owner}/{repo}/import",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get commit authors",
+    "scope": "migrations",
+    "id": "getCommitAuthors",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/import/authors",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Only authors found after this id are returned. Provide the highest author ID you've seen so far. New authors may be added to the list at any point while the importer is performing the `raw` step.",
+        "enum": null,
+        "name": "since",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Map a commit author",
+    "scope": "migrations",
+    "id": "mapCommitAuthor",
+    "method": "PATCH",
+    "url": "/repos/{owner}/{repo}/import/authors/{author_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "author_id parameter",
+        "enum": null,
+        "name": "author_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The new Git author email.",
+        "enum": null,
+        "name": "email",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The new Git author name.",
+        "enum": null,
+        "name": "name",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get large files",
+    "scope": "migrations",
+    "id": "getLargeFiles",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/import/large_files",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Set Git LFS preference",
+    "scope": "migrations",
+    "id": "setLfsPreference",
+    "method": "PATCH",
+    "url": "/repos/{owner}/{repo}/import/lfs",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Can be one of `opt_in` (large files will be stored using Git LFS) or `opt_out` (large files will be removed during the import).",
+        "enum": ["opt_in", "opt_out"],
+        "name": "use_lfs",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get a repository installation",
+    "scope": "apps",
+    "id": "getRepoInstallation",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/installation",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get a repository installation",
+    "scope": "apps",
+    "id": "findRepoInstallation",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/installation",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get interaction restrictions for a repository",
+    "scope": "interactions",
+    "id": "getRestrictionsForRepo",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/interaction-limits",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Add or update interaction restrictions for a repository",
+    "scope": "interactions",
+    "id": "addOrUpdateRestrictionsForRepo",
+    "method": "PUT",
+    "url": "/repos/{owner}/{repo}/interaction-limits",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Specifies the group of GitHub users who can comment, open issues, or create pull requests for the given repository. Must be one of: `existing_users`, `contributors_only`, or `collaborators_only`.",
+        "enum": ["existing_users", "contributors_only", "collaborators_only"],
+        "name": "limit",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Remove interaction restrictions for a repository",
+    "scope": "interactions",
+    "id": "removeRestrictionsForRepo",
+    "method": "DELETE",
+    "url": "/repos/{owner}/{repo}/interaction-limits",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List invitations for a repository",
+    "scope": "repos",
+    "id": "listInvitations",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/invitations",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Delete a repository invitation",
+    "scope": "repos",
+    "id": "deleteInvitation",
+    "method": "DELETE",
+    "url": "/repos/{owner}/{repo}/invitations/{invitation_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "invitation_id parameter",
+        "enum": null,
+        "name": "invitation_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Update a repository invitation",
+    "scope": "repos",
+    "id": "updateInvitation",
+    "method": "PATCH",
+    "url": "/repos/{owner}/{repo}/invitations/{invitation_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "invitation_id parameter",
+        "enum": null,
+        "name": "invitation_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The permissions that the associated user will have on the repository. Valid values are `read`, `write`, and `admin`.",
+        "enum": ["read", "write", "admin"],
+        "name": "permissions",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List issues for a repository",
+    "scope": "issues",
+    "id": "listForRepo",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/issues",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "If an `integer` is passed, it should refer to a milestone by its `number` field. If the string `*` is passed, issues with any milestone are accepted. If the string `none` is passed, issues without milestones are returned.",
+        "enum": null,
+        "name": "milestone",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Indicates the state of the issues to return. Can be either `open`, `closed`, or `all`.",
+        "enum": ["open", "closed", "all"],
+        "name": "state",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Can be the name of a user. Pass in `none` for issues with no assigned user, and `*` for issues assigned to any user.",
+        "enum": null,
+        "name": "assignee",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The user that created the issue.",
+        "enum": null,
+        "name": "creator",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A user that's mentioned in the issue.",
+        "enum": null,
+        "name": "mentioned",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A list of comma separated label names. Example: `bug,ui,@high`",
+        "enum": null,
+        "name": "labels",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "What to sort results by. Can be either `created`, `updated`, `comments`.",
+        "enum": ["created", "updated", "comments"],
+        "name": "sort",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The direction of the sort. Can be either `asc` or `desc`.",
+        "enum": ["asc", "desc"],
+        "name": "direction",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Only issues updated at or after this time are returned. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.",
+        "enum": null,
+        "name": "since",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Create an issue",
+    "scope": "issues",
+    "id": "create",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/issues",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The title of the issue.",
+        "enum": null,
+        "name": "title",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The contents of the issue.",
+        "enum": null,
+        "name": "body",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Login for the user that this issue should be assigned to. _NOTE: Only users with push access can set the assignee for new issues. The assignee is silently dropped otherwise. **This field is deprecated.**_",
+        "enum": null,
+        "name": "assignee",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The `number` of the milestone to associate this issue with. _NOTE: Only users with push access can set the milestone for new issues. The milestone is silently dropped otherwise._",
+        "enum": null,
+        "name": "milestone",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Labels to associate with this issue. _NOTE: Only users with push access can set labels for new issues. Labels are silently dropped otherwise._",
+        "enum": null,
+        "name": "labels",
+        "type": "string[]",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Logins for Users to assign to this issue. _NOTE: Only users with push access can set assignees for new issues. Assignees are silently dropped otherwise._",
+        "enum": null,
+        "name": "assignees",
+        "type": "string[]",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List comments in a repository",
+    "scope": "issues",
+    "id": "listCommentsForRepo",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/issues/comments",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Either `created` or `updated`.",
+        "enum": ["created", "updated"],
+        "name": "sort",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Either `asc` or `desc`. Ignored without the `sort` parameter.",
+        "enum": ["asc", "desc"],
+        "name": "direction",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Only comments updated at or after this time are returned. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.",
+        "enum": null,
+        "name": "since",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get a single comment",
+    "scope": "issues",
+    "id": "getComment",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/issues/comments/{comment_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "comment_id parameter",
+        "enum": null,
+        "name": "comment_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Edit a comment",
+    "scope": "issues",
+    "id": "updateComment",
+    "method": "PATCH",
+    "url": "/repos/{owner}/{repo}/issues/comments/{comment_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "comment_id parameter",
+        "enum": null,
+        "name": "comment_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The contents of the comment.",
+        "enum": null,
+        "name": "body",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Delete a comment",
+    "scope": "issues",
+    "id": "deleteComment",
+    "method": "DELETE",
+    "url": "/repos/{owner}/{repo}/issues/comments/{comment_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "comment_id parameter",
+        "enum": null,
+        "name": "comment_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List reactions for an issue comment",
+    "scope": "reactions",
+    "id": "listForIssueComment",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/issues/comments/{comment_id}/reactions",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "comment_id parameter",
+        "enum": null,
+        "name": "comment_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Returns a single [reaction type](https://developer.github.com/v3/reactions/#reaction-types). Omit this parameter to list all reactions to an issue comment.",
+        "enum": [
+          "+1",
+          "-1",
+          "laugh",
+          "confused",
+          "heart",
+          "hooray",
+          "rocket",
+          "eyes"
+        ],
+        "name": "content",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Create reaction for an issue comment",
+    "scope": "reactions",
+    "id": "createForIssueComment",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/issues/comments/{comment_id}/reactions",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "comment_id parameter",
+        "enum": null,
+        "name": "comment_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The [reaction type](https://developer.github.com/v3/reactions/#reaction-types) to add to the issue comment.",
+        "enum": [
+          "+1",
+          "-1",
+          "laugh",
+          "confused",
+          "heart",
+          "hooray",
+          "rocket",
+          "eyes"
+        ],
+        "name": "content",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List events for a repository",
+    "scope": "issues",
+    "id": "listEventsForRepo",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/issues/events",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get a single event",
+    "scope": "issues",
+    "id": "getEvent",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/issues/events/{event_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "event_id parameter",
+        "enum": null,
+        "name": "event_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get a single issue",
+    "scope": "issues",
+    "id": "get",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/issues/{issue_number}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "issue_number parameter",
+        "enum": null,
+        "name": "issue_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": "issue_number",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "number",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "Edit an issue",
+    "scope": "issues",
+    "id": "update",
+    "method": "PATCH",
+    "url": "/repos/{owner}/{repo}/issues/{issue_number}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "issue_number parameter",
+        "enum": null,
+        "name": "issue_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The title of the issue.",
+        "enum": null,
+        "name": "title",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The contents of the issue.",
+        "enum": null,
+        "name": "body",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Login for the user that this issue should be assigned to. **This field is deprecated.**",
+        "enum": null,
+        "name": "assignee",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "State of the issue. Either `open` or `closed`.",
+        "enum": ["open", "closed"],
+        "name": "state",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": true,
+        "deprecated": null,
+        "description": "The `number` of the milestone to associate this issue with or `null` to remove current. _NOTE: Only users with push access can set the milestone for issues. The milestone is silently dropped otherwise._",
+        "enum": null,
+        "name": "milestone",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Labels to associate with this issue. Pass one or more Labels to _replace_ the set of Labels on this Issue. Send an empty array (`[]`) to clear all Labels from the Issue. _NOTE: Only users with push access can set labels for issues. Labels are silently dropped otherwise._",
+        "enum": null,
+        "name": "labels",
+        "type": "string[]",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Logins for Users to assign to this issue. Pass one or more user logins to _replace_ the set of assignees on this Issue. Send an empty array (`[]`) to clear all assignees from the Issue. _NOTE: Only users with push access can set assignees for new issues. Assignees are silently dropped otherwise._",
+        "enum": null,
+        "name": "assignees",
+        "type": "string[]",
+        "required": false
+      },
+      {
+        "alias": "issue_number",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "number",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "Add assignees to an issue",
+    "scope": "issues",
+    "id": "addAssignees",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/issues/{issue_number}/assignees",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "issue_number parameter",
+        "enum": null,
+        "name": "issue_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Usernames of people to assign this issue to. _NOTE: Only users with push access can add assignees to an issue. Assignees are silently ignored otherwise._",
+        "enum": null,
+        "name": "assignees",
+        "type": "string[]",
+        "required": false
+      },
+      {
+        "alias": "issue_number",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "number",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "Remove assignees from an issue",
+    "scope": "issues",
+    "id": "removeAssignees",
+    "method": "DELETE",
+    "url": "/repos/{owner}/{repo}/issues/{issue_number}/assignees",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "issue_number parameter",
+        "enum": null,
+        "name": "issue_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Usernames of assignees to remove from an issue. _NOTE: Only users with push access can remove assignees from an issue. Assignees are silently ignored otherwise._",
+        "enum": null,
+        "name": "assignees",
+        "type": "string[]",
+        "required": false
+      },
+      {
+        "alias": "issue_number",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "number",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "List comments on an issue",
+    "scope": "issues",
+    "id": "listComments",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/issues/{issue_number}/comments",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "issue_number parameter",
+        "enum": null,
+        "name": "issue_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Only comments updated at or after this time are returned. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.",
+        "enum": null,
+        "name": "since",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": "issue_number",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "number",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "Create a comment",
+    "scope": "issues",
+    "id": "createComment",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/issues/{issue_number}/comments",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "issue_number parameter",
+        "enum": null,
+        "name": "issue_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The contents of the comment.",
+        "enum": null,
+        "name": "body",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": "issue_number",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "number",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "List events for an issue",
+    "scope": "issues",
+    "id": "listEvents",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/issues/{issue_number}/events",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "issue_number parameter",
+        "enum": null,
+        "name": "issue_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": "issue_number",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "number",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "List labels on an issue",
+    "scope": "issues",
+    "id": "listLabelsOnIssue",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/issues/{issue_number}/labels",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "issue_number parameter",
+        "enum": null,
+        "name": "issue_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": "issue_number",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "number",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "Add labels to an issue",
+    "scope": "issues",
+    "id": "addLabels",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/issues/{issue_number}/labels",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "issue_number parameter",
+        "enum": null,
+        "name": "issue_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The name of the label to add to the issue. Must contain at least one label. **Note:** Alternatively, you can pass a single label as a `string` or an `array` of labels directly, but GitHub recommends passing an object with the `labels` key.",
+        "enum": null,
+        "name": "labels",
+        "type": "string[]",
+        "required": true
+      },
+      {
+        "alias": "issue_number",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "number",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "Replace all labels for an issue",
+    "scope": "issues",
+    "id": "replaceLabels",
+    "method": "PUT",
+    "url": "/repos/{owner}/{repo}/issues/{issue_number}/labels",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "issue_number parameter",
+        "enum": null,
+        "name": "issue_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The names of the labels to add to the issue. You can pass an empty array to remove all labels. **Note:** Alternatively, you can pass a single label as a `string` or an `array` of labels directly, but GitHub recommends passing an object with the `labels` key.",
+        "enum": null,
+        "name": "labels",
+        "type": "string[]",
+        "required": false
+      },
+      {
+        "alias": "issue_number",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "number",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "Remove all labels from an issue",
+    "scope": "issues",
+    "id": "removeLabels",
+    "method": "DELETE",
+    "url": "/repos/{owner}/{repo}/issues/{issue_number}/labels",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "issue_number parameter",
+        "enum": null,
+        "name": "issue_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": "issue_number",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "number",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "Remove a label from an issue",
+    "scope": "issues",
+    "id": "removeLabel",
+    "method": "DELETE",
+    "url": "/repos/{owner}/{repo}/issues/{issue_number}/labels/{name}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "issue_number parameter",
+        "enum": null,
+        "name": "issue_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "name parameter",
+        "enum": null,
+        "name": "name",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": "issue_number",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "number",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "Lock an issue",
+    "scope": "issues",
+    "id": "lock",
+    "method": "PUT",
+    "url": "/repos/{owner}/{repo}/issues/{issue_number}/lock",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "issue_number parameter",
+        "enum": null,
+        "name": "issue_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The reason for locking the issue or pull request conversation. Lock will fail if you don't use one of these reasons:  \n\\* `off-topic`  \n\\* `too heated`  \n\\* `resolved`  \n\\* `spam`",
+        "enum": ["off-topic", "too heated", "resolved", "spam"],
+        "name": "lock_reason",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": "issue_number",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "number",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "Unlock an issue",
+    "scope": "issues",
+    "id": "unlock",
+    "method": "DELETE",
+    "url": "/repos/{owner}/{repo}/issues/{issue_number}/lock",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "issue_number parameter",
+        "enum": null,
+        "name": "issue_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": "issue_number",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "number",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "List reactions for an issue",
+    "scope": "reactions",
+    "id": "listForIssue",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/issues/{issue_number}/reactions",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "issue_number parameter",
+        "enum": null,
+        "name": "issue_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Returns a single [reaction type](https://developer.github.com/v3/reactions/#reaction-types). Omit this parameter to list all reactions to an issue.",
+        "enum": [
+          "+1",
+          "-1",
+          "laugh",
+          "confused",
+          "heart",
+          "hooray",
+          "rocket",
+          "eyes"
+        ],
+        "name": "content",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": "issue_number",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "number",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "Create reaction for an issue",
+    "scope": "reactions",
+    "id": "createForIssue",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/issues/{issue_number}/reactions",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "issue_number parameter",
+        "enum": null,
+        "name": "issue_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The [reaction type](https://developer.github.com/v3/reactions/#reaction-types) to add to the issue.",
+        "enum": [
+          "+1",
+          "-1",
+          "laugh",
+          "confused",
+          "heart",
+          "hooray",
+          "rocket",
+          "eyes"
+        ],
+        "name": "content",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": "issue_number",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "number",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "List events for an issue",
+    "scope": "issues",
+    "id": "listEventsForTimeline",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/issues/{issue_number}/timeline",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "issue_number parameter",
+        "enum": null,
+        "name": "issue_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": "issue_number",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "number",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "List deploy keys",
+    "scope": "repos",
+    "id": "listDeployKeys",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/keys",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Add a new deploy key",
+    "scope": "repos",
+    "id": "addDeployKey",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/keys",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A name for the key.",
+        "enum": null,
+        "name": "title",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The contents of the key.",
+        "enum": null,
+        "name": "key",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "If `true`, the key will only be able to read repository contents. Otherwise, the key will be able to read and write.  \n  \nDeploy keys with write access can perform the same actions as an organization member with admin access, or a collaborator on a personal repository. For more information, see \"[Repository permission levels for an organization](https://help.github.com/articles/repository-permission-levels-for-an-organization/)\" and \"[Permission levels for a user account repository](https://help.github.com/articles/permission-levels-for-a-user-account-repository/).\"",
+        "enum": null,
+        "name": "read_only",
+        "type": "boolean",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get a deploy key",
+    "scope": "repos",
+    "id": "getDeployKey",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/keys/{key_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "key_id parameter",
+        "enum": null,
+        "name": "key_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Remove a deploy key",
+    "scope": "repos",
+    "id": "removeDeployKey",
+    "method": "DELETE",
+    "url": "/repos/{owner}/{repo}/keys/{key_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "key_id parameter",
+        "enum": null,
+        "name": "key_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List all labels for this repository",
+    "scope": "issues",
+    "id": "listLabelsForRepo",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/labels",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Create a label",
+    "scope": "issues",
+    "id": "createLabel",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/labels",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The name of the label. Emoji can be added to label names, using either native emoji or colon-style markup. For example, typing `:strawberry:` will render the emoji ![:strawberry:](https://github.githubassets.com/images/icons/emoji/unicode/1f353.png \":strawberry:\"). For a full list of available emoji and codes, see [emoji-cheat-sheet.com](http://emoji-cheat-sheet.com/).",
+        "enum": null,
+        "name": "name",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The [hexadecimal color code](http://www.color-hex.com/) for the label, without the leading `#`.",
+        "enum": null,
+        "name": "color",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A short description of the label.",
+        "enum": null,
+        "name": "description",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get a single label",
+    "scope": "issues",
+    "id": "getLabel",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/labels/{name}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "name parameter",
+        "enum": null,
+        "name": "name",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Update a label",
+    "scope": "issues",
+    "id": "updateLabel",
+    "method": "PATCH",
+    "url": "/repos/{owner}/{repo}/labels/{name}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "name parameter",
+        "enum": null,
+        "name": "name",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The new name of the label. Emoji can be added to label names, using either native emoji or colon-style markup. For example, typing `:strawberry:` will render the emoji ![:strawberry:](https://github.githubassets.com/images/icons/emoji/unicode/1f353.png \":strawberry:\"). For a full list of available emoji and codes, see [emoji-cheat-sheet.com](http://emoji-cheat-sheet.com/).",
+        "enum": null,
+        "name": "new_name",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The [hexadecimal color code](http://www.color-hex.com/) for the label, without the leading `#`.",
+        "enum": null,
+        "name": "color",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A short description of the label.",
+        "enum": null,
+        "name": "description",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Delete a label",
+    "scope": "issues",
+    "id": "deleteLabel",
+    "method": "DELETE",
+    "url": "/repos/{owner}/{repo}/labels/{name}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "name parameter",
+        "enum": null,
+        "name": "name",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List languages",
+    "scope": "repos",
+    "id": "listLanguages",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/languages",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get the contents of a repository's license",
+    "scope": "licenses",
+    "id": "getForRepo",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/license",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Perform a merge",
+    "scope": "repos",
+    "id": "merge",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/merges",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The name of the base branch that the head will be merged into.",
+        "enum": null,
+        "name": "base",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The head to merge. This can be a branch name or a commit SHA1.",
+        "enum": null,
+        "name": "head",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Commit message to use for the merge commit. If omitted, a default message will be used.",
+        "enum": null,
+        "name": "commit_message",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List milestones for a repository",
+    "scope": "issues",
+    "id": "listMilestonesForRepo",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/milestones",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The state of the milestone. Either `open`, `closed`, or `all`.",
+        "enum": ["open", "closed", "all"],
+        "name": "state",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "What to sort results by. Either `due_on` or `completeness`.",
+        "enum": ["due_on", "completeness"],
+        "name": "sort",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The direction of the sort. Either `asc` or `desc`.",
+        "enum": ["asc", "desc"],
+        "name": "direction",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Create a milestone",
+    "scope": "issues",
+    "id": "createMilestone",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/milestones",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The title of the milestone.",
+        "enum": null,
+        "name": "title",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The state of the milestone. Either `open` or `closed`.",
+        "enum": ["open", "closed"],
+        "name": "state",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A description of the milestone.",
+        "enum": null,
+        "name": "description",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The milestone due date. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.",
+        "enum": null,
+        "name": "due_on",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get a single milestone",
+    "scope": "issues",
+    "id": "getMilestone",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/milestones/{milestone_number}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "milestone_number parameter",
+        "enum": null,
+        "name": "milestone_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": "milestone_number",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "number",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "Update a milestone",
+    "scope": "issues",
+    "id": "updateMilestone",
+    "method": "PATCH",
+    "url": "/repos/{owner}/{repo}/milestones/{milestone_number}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "milestone_number parameter",
+        "enum": null,
+        "name": "milestone_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The title of the milestone.",
+        "enum": null,
+        "name": "title",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The state of the milestone. Either `open` or `closed`.",
+        "enum": ["open", "closed"],
+        "name": "state",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A description of the milestone.",
+        "enum": null,
+        "name": "description",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The milestone due date. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.",
+        "enum": null,
+        "name": "due_on",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": "milestone_number",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "number",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "Delete a milestone",
+    "scope": "issues",
+    "id": "deleteMilestone",
+    "method": "DELETE",
+    "url": "/repos/{owner}/{repo}/milestones/{milestone_number}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "milestone_number parameter",
+        "enum": null,
+        "name": "milestone_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": "milestone_number",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "number",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "Get labels for every issue in a milestone",
+    "scope": "issues",
+    "id": "listLabelsForMilestone",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/milestones/{milestone_number}/labels",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "milestone_number parameter",
+        "enum": null,
+        "name": "milestone_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": "milestone_number",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "number",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "List your notifications in a repository",
+    "scope": "activity",
+    "id": "listNotificationsForRepo",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/notifications",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "If `true`, show notifications marked as read.",
+        "enum": null,
+        "name": "all",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "If `true`, only shows notifications in which the user is directly participating or mentioned.",
+        "enum": null,
+        "name": "participating",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Only show notifications updated after the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.",
+        "enum": null,
+        "name": "since",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Only show notifications updated before the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.",
+        "enum": null,
+        "name": "before",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Mark notifications as read in a repository",
+    "scope": "activity",
+    "id": "markNotificationsAsReadForRepo",
+    "method": "PUT",
+    "url": "/repos/{owner}/{repo}/notifications",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Describes the last point that notifications were checked. Anything updated since this time will not be updated. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Default: The current timestamp.",
+        "enum": null,
+        "name": "last_read_at",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get information about a Pages site",
+    "scope": "repos",
+    "id": "getPages",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/pages",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Enable a Pages site",
+    "scope": "repos",
+    "id": "enablePagesSite",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/pages",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "source parameter",
+        "enum": null,
+        "name": "source",
+        "type": "object",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The repository branch used to publish your [site's source files](https://help.github.com/articles/configuring-a-publishing-source-for-github-pages/). Can be either `master` or `gh-pages`.",
+        "enum": ["master", "gh-pages"],
+        "name": "source.branch",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The repository directory that includes the source files for the Pages site. When `branch` is `master`, you can change `path` to `/docs`. When `branch` is `gh-pages`, you are unable to specify a `path` other than `/`.",
+        "enum": null,
+        "name": "source.path",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Disable a Pages site",
+    "scope": "repos",
+    "id": "disablePagesSite",
+    "method": "DELETE",
+    "url": "/repos/{owner}/{repo}/pages",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Update information about a Pages site",
+    "scope": "repos",
+    "id": "updateInformationAboutPagesSite",
+    "method": "PUT",
+    "url": "/repos/{owner}/{repo}/pages",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Specify a custom domain for the repository. Sending a `null` value will remove the custom domain. For more about custom domains, see \"[Using a custom domain with GitHub Pages](https://help.github.com/articles/using-a-custom-domain-with-github-pages/).\"",
+        "enum": null,
+        "name": "cname",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Update the source for the repository. Must include the branch name, and may optionally specify the subdirectory `/docs`. Possible values are `\"gh-pages\"`, `\"master\"`, and `\"master /docs\"`.",
+        "enum": ["\"gh-pages\"", "\"master\"", "\"master /docs\""],
+        "name": "source",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Request a page build",
+    "scope": "repos",
+    "id": "requestPageBuild",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/pages/builds",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List Pages builds",
+    "scope": "repos",
+    "id": "listPagesBuilds",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/pages/builds",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get latest Pages build",
+    "scope": "repos",
+    "id": "getLatestPagesBuild",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/pages/builds/latest",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get a specific Pages build",
+    "scope": "repos",
+    "id": "getPagesBuild",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/pages/builds/{build_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "build_id parameter",
+        "enum": null,
+        "name": "build_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List repository projects",
+    "scope": "projects",
+    "id": "listForRepo",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/projects",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Indicates the state of the projects to return. Can be either `open`, `closed`, or `all`.",
+        "enum": ["open", "closed", "all"],
+        "name": "state",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Create a repository project",
+    "scope": "projects",
+    "id": "createForRepo",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/projects",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The name of the project.",
+        "enum": null,
+        "name": "name",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The description of the project.",
+        "enum": null,
+        "name": "body",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List pull requests",
+    "scope": "pulls",
+    "id": "list",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/pulls",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Either `open`, `closed`, or `all` to filter by state.",
+        "enum": ["open", "closed", "all"],
+        "name": "state",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Filter pulls by head user or head organization and branch name in the format of `user:ref-name` or `organization:ref-name`. For example: `github:new-script-format` or `octocat:test-branch`.",
+        "enum": null,
+        "name": "head",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Filter pulls by base branch name. Example: `gh-pages`.",
+        "enum": null,
+        "name": "base",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "What to sort results by. Can be either `created`, `updated`, `popularity` (comment count) or `long-running` (age, filtering by pulls updated in the last month).",
+        "enum": ["created", "updated", "popularity", "long-running"],
+        "name": "sort",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The direction of the sort. Can be either `asc` or `desc`. Default: `desc` when sort is `created` or sort is not specified, otherwise `asc`.",
+        "enum": ["asc", "desc"],
+        "name": "direction",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Create a pull request",
+    "scope": "pulls",
+    "id": "create",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/pulls",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The title of the new pull request.",
+        "enum": null,
+        "name": "title",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The name of the branch where your changes are implemented. For cross-repository pull requests in the same network, namespace `head` with a user like this: `username:branch`.",
+        "enum": null,
+        "name": "head",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The name of the branch you want the changes pulled into. This should be an existing branch on the current repository. You cannot submit a pull request to one repository that requests a merge to a base of another repository.",
+        "enum": null,
+        "name": "base",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The contents of the pull request.",
+        "enum": null,
+        "name": "body",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Indicates whether [maintainers can modify](https://help.github.com/articles/allowing-changes-to-a-pull-request-branch-created-from-a-fork/) the pull request.",
+        "enum": null,
+        "name": "maintainer_can_modify",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Indicates whether the pull request is a draft. See \"[Draft Pull Requests](https://help.github.com/en/articles/about-pull-requests#draft-pull-requests)\" in the GitHub Help documentation to learn more.",
+        "enum": null,
+        "name": "draft",
+        "type": "boolean",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List comments in a repository",
+    "scope": "pulls",
+    "id": "listCommentsForRepo",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/pulls/comments",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Can be either `created` or `updated` comments.",
+        "enum": ["created", "updated"],
+        "name": "sort",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Can be either `asc` or `desc`. Ignored without `sort` parameter.",
+        "enum": ["asc", "desc"],
+        "name": "direction",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Only returns comments `updated` at or after this time.",
+        "enum": null,
+        "name": "since",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get a single comment",
+    "scope": "pulls",
+    "id": "getComment",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/pulls/comments/{comment_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "comment_id parameter",
+        "enum": null,
+        "name": "comment_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Edit a comment",
+    "scope": "pulls",
+    "id": "updateComment",
+    "method": "PATCH",
+    "url": "/repos/{owner}/{repo}/pulls/comments/{comment_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "comment_id parameter",
+        "enum": null,
+        "name": "comment_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The text of the reply to the review comment.",
+        "enum": null,
+        "name": "body",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Delete a comment",
+    "scope": "pulls",
+    "id": "deleteComment",
+    "method": "DELETE",
+    "url": "/repos/{owner}/{repo}/pulls/comments/{comment_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "comment_id parameter",
+        "enum": null,
+        "name": "comment_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List reactions for a pull request review comment",
+    "scope": "reactions",
+    "id": "listForPullRequestReviewComment",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "comment_id parameter",
+        "enum": null,
+        "name": "comment_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Returns a single [reaction type](https://developer.github.com/v3/reactions/#reaction-types). Omit this parameter to list all reactions to a pull request review comment.",
+        "enum": [
+          "+1",
+          "-1",
+          "laugh",
+          "confused",
+          "heart",
+          "hooray",
+          "rocket",
+          "eyes"
+        ],
+        "name": "content",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Create reaction for a pull request review comment",
+    "scope": "reactions",
+    "id": "createForPullRequestReviewComment",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "comment_id parameter",
+        "enum": null,
+        "name": "comment_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The [reaction type](https://developer.github.com/v3/reactions/#reaction-types) to add to the pull request review comment.",
+        "enum": [
+          "+1",
+          "-1",
+          "laugh",
+          "confused",
+          "heart",
+          "hooray",
+          "rocket",
+          "eyes"
+        ],
+        "name": "content",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get a single pull request",
+    "scope": "pulls",
+    "id": "get",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/pulls/{pull_number}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "pull_number parameter",
+        "enum": null,
+        "name": "pull_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": "pull_number",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "number",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "Update a pull request",
+    "scope": "pulls",
+    "id": "update",
+    "method": "PATCH",
+    "url": "/repos/{owner}/{repo}/pulls/{pull_number}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "pull_number parameter",
+        "enum": null,
+        "name": "pull_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The title of the pull request.",
+        "enum": null,
+        "name": "title",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The contents of the pull request.",
+        "enum": null,
+        "name": "body",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "State of this Pull Request. Either `open` or `closed`.",
+        "enum": ["open", "closed"],
+        "name": "state",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The name of the branch you want your changes pulled into. This should be an existing branch on the current repository. You cannot update the base branch on a pull request to point to another repository.",
+        "enum": null,
+        "name": "base",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Indicates whether [maintainers can modify](https://help.github.com/articles/allowing-changes-to-a-pull-request-branch-created-from-a-fork/) the pull request.",
+        "enum": null,
+        "name": "maintainer_can_modify",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": "pull_number",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "number",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "List comments on a pull request",
+    "scope": "pulls",
+    "id": "listComments",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/pulls/{pull_number}/comments",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "pull_number parameter",
+        "enum": null,
+        "name": "pull_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Can be either `created` or `updated` comments.",
+        "enum": ["created", "updated"],
+        "name": "sort",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Can be either `asc` or `desc`. Ignored without `sort` parameter.",
+        "enum": ["asc", "desc"],
+        "name": "direction",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Only returns comments `updated` at or after this time.",
+        "enum": null,
+        "name": "since",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": "pull_number",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "number",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "Create a comment",
+    "scope": "pulls",
+    "id": "createComment",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/pulls/{pull_number}/comments",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "pull_number parameter",
+        "enum": null,
+        "name": "pull_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The text of the review comment.",
+        "enum": null,
+        "name": "body",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The SHA of the commit needing a comment. Not using the latest commit SHA may render your comment outdated if a subsequent commit modifies the line you specify as the `position`.",
+        "enum": null,
+        "name": "commit_id",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The relative path to the file that necessitates a comment.",
+        "enum": null,
+        "name": "path",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "**Required without `comfort-fade` preview**. The position in the diff where you want to add a review comment. Note this value is not the same as the line number in the file. For help finding the position value, read the note above.",
+        "enum": null,
+        "name": "position",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "**Required with `comfort-fade` preview**. In a split diff view, the side of the diff that the pull request's changes appear on. Can be `LEFT` or `RIGHT`. Use `LEFT` for deletions that appear in red. Use `RIGHT` for additions that appear in green or unchanged lines that appear in white and are shown for context. For a multi-line comment, side represents whether the last line of the comment range is a deletion or addition. For more information, see \"[Diff view options](https://help.github.com/en/articles/about-comparing-branches-in-pull-requests#diff-view-options)\" in the GitHub Help documentation.",
+        "enum": ["LEFT", "RIGHT"],
+        "name": "side",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "**Required with `comfort-fade` preview**. The line of the blob in the pull request diff that the comment applies to. For a multi-line comment, the last line of the range that your comment applies to.",
+        "enum": null,
+        "name": "line",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "**Required when using multi-line comments**. To create multi-line comments, you must use the `comfort-fade` preview header. The `start_line` is the first line in the pull request diff that your multi-line comment applies to. To learn more about multi-line comments, see \"[Commenting on a pull request](https://help.github.com/en/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)\" in the GitHub Help documentation.",
+        "enum": null,
+        "name": "start_line",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "**Required when using multi-line comments**. To create multi-line comments, you must use the `comfort-fade` preview header. The `start_side` is the starting side of the diff that the comment applies to. Can be `LEFT` or `RIGHT`. To learn more about multi-line comments, see \"[Commenting on a pull request](https://help.github.com/en/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)\" in the GitHub Help documentation. See `side` in this table for additional context.",
+        "enum": ["LEFT", "RIGHT", "side"],
+        "name": "start_side",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": "pull_number",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "number",
+        "type": null,
+        "required": null
+      },
+      {
+        "alias": null,
+        "allowNull": null,
+        "deprecated": true,
+        "description": "The comment ID to reply to. **Note**: This must be the ID of a top-level comment, not a reply to that comment. Replies to replies are not supported.",
+        "enum": null,
+        "name": "in_reply_to",
+        "type": "integer",
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "Create a comment",
+    "scope": "pulls",
+    "id": "createCommentReply",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/pulls/{pull_number}/comments",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "pull_number parameter",
+        "enum": null,
+        "name": "pull_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The text of the review comment.",
+        "enum": null,
+        "name": "body",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The SHA of the commit needing a comment. Not using the latest commit SHA may render your comment outdated if a subsequent commit modifies the line you specify as the `position`.",
+        "enum": null,
+        "name": "commit_id",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The relative path to the file that necessitates a comment.",
+        "enum": null,
+        "name": "path",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "**Required without `comfort-fade` preview**. The position in the diff where you want to add a review comment. Note this value is not the same as the line number in the file. For help finding the position value, read the note above.",
+        "enum": null,
+        "name": "position",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "**Required with `comfort-fade` preview**. In a split diff view, the side of the diff that the pull request's changes appear on. Can be `LEFT` or `RIGHT`. Use `LEFT` for deletions that appear in red. Use `RIGHT` for additions that appear in green or unchanged lines that appear in white and are shown for context. For a multi-line comment, side represents whether the last line of the comment range is a deletion or addition. For more information, see \"[Diff view options](https://help.github.com/en/articles/about-comparing-branches-in-pull-requests#diff-view-options)\" in the GitHub Help documentation.",
+        "enum": ["LEFT", "RIGHT"],
+        "name": "side",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "**Required with `comfort-fade` preview**. The line of the blob in the pull request diff that the comment applies to. For a multi-line comment, the last line of the range that your comment applies to.",
+        "enum": null,
+        "name": "line",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "**Required when using multi-line comments**. To create multi-line comments, you must use the `comfort-fade` preview header. The `start_line` is the first line in the pull request diff that your multi-line comment applies to. To learn more about multi-line comments, see \"[Commenting on a pull request](https://help.github.com/en/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)\" in the GitHub Help documentation.",
+        "enum": null,
+        "name": "start_line",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "**Required when using multi-line comments**. To create multi-line comments, you must use the `comfort-fade` preview header. The `start_side` is the starting side of the diff that the comment applies to. Can be `LEFT` or `RIGHT`. To learn more about multi-line comments, see \"[Commenting on a pull request](https://help.github.com/en/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)\" in the GitHub Help documentation. See `side` in this table for additional context.",
+        "enum": ["LEFT", "RIGHT", "side"],
+        "name": "start_side",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": "pull_number",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "number",
+        "type": null,
+        "required": null
+      },
+      {
+        "alias": null,
+        "allowNull": null,
+        "deprecated": true,
+        "description": "The comment ID to reply to. **Note**: This must be the ID of a top-level comment, not a reply to that comment. Replies to replies are not supported.",
+        "enum": null,
+        "name": "in_reply_to",
+        "type": "integer",
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "Create a review comment reply",
+    "scope": "pulls",
+    "id": "createReviewCommentReply",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "pull_number parameter",
+        "enum": null,
+        "name": "pull_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "comment_id parameter",
+        "enum": null,
+        "name": "comment_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The text of the review comment.",
+        "enum": null,
+        "name": "body",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List commits on a pull request",
+    "scope": "pulls",
+    "id": "listCommits",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/pulls/{pull_number}/commits",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "pull_number parameter",
+        "enum": null,
+        "name": "pull_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": "pull_number",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "number",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "List pull requests files",
+    "scope": "pulls",
+    "id": "listFiles",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/pulls/{pull_number}/files",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "pull_number parameter",
+        "enum": null,
+        "name": "pull_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": "pull_number",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "number",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "Get if a pull request has been merged",
+    "scope": "pulls",
+    "id": "checkIfMerged",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/pulls/{pull_number}/merge",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "pull_number parameter",
+        "enum": null,
+        "name": "pull_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": "pull_number",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "number",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "Merge a pull request (Merge Button)",
+    "scope": "pulls",
+    "id": "merge",
+    "method": "PUT",
+    "url": "/repos/{owner}/{repo}/pulls/{pull_number}/merge",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "pull_number parameter",
+        "enum": null,
+        "name": "pull_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Title for the automatic commit message.",
+        "enum": null,
+        "name": "commit_title",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Extra detail to append to automatic commit message.",
+        "enum": null,
+        "name": "commit_message",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "SHA that pull request head must match to allow merge.",
+        "enum": null,
+        "name": "sha",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Merge method to use. Possible values are `merge`, `squash` or `rebase`. Default is `merge`.",
+        "enum": ["merge", "squash", "rebase"],
+        "name": "merge_method",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": "pull_number",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "number",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "List review requests",
+    "scope": "pulls",
+    "id": "listReviewRequests",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "pull_number parameter",
+        "enum": null,
+        "name": "pull_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": "pull_number",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "number",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "Create a review request",
+    "scope": "pulls",
+    "id": "createReviewRequest",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "pull_number parameter",
+        "enum": null,
+        "name": "pull_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "An array of user `login`s that will be requested.",
+        "enum": null,
+        "name": "reviewers",
+        "type": "string[]",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "An array of team `slug`s that will be requested.",
+        "enum": null,
+        "name": "team_reviewers",
+        "type": "string[]",
+        "required": false
+      },
+      {
+        "alias": "pull_number",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "number",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "Delete a review request",
+    "scope": "pulls",
+    "id": "deleteReviewRequest",
+    "method": "DELETE",
+    "url": "/repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "pull_number parameter",
+        "enum": null,
+        "name": "pull_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "An array of user `login`s that will be removed.",
+        "enum": null,
+        "name": "reviewers",
+        "type": "string[]",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "An array of team `slug`s that will be removed.",
+        "enum": null,
+        "name": "team_reviewers",
+        "type": "string[]",
+        "required": false
+      },
+      {
+        "alias": "pull_number",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "number",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "List reviews on a pull request",
+    "scope": "pulls",
+    "id": "listReviews",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/pulls/{pull_number}/reviews",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "pull_number parameter",
+        "enum": null,
+        "name": "pull_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": "pull_number",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "number",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "Create a pull request review",
+    "scope": "pulls",
+    "id": "createReview",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/pulls/{pull_number}/reviews",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "pull_number parameter",
+        "enum": null,
+        "name": "pull_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The SHA of the commit that needs a review. Not using the latest commit SHA may render your review comment outdated if a subsequent commit modifies the line you specify as the `position`. Defaults to the most recent commit in the pull request when you do not specify a value.",
+        "enum": null,
+        "name": "commit_id",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "**Required** when using `REQUEST_CHANGES` or `COMMENT` for the `event` parameter. The body text of the pull request review.",
+        "enum": null,
+        "name": "body",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The review action you want to perform. The review actions include: `APPROVE`, `REQUEST_CHANGES`, or `COMMENT`. By leaving this blank, you set the review action state to `PENDING`, which means you will need to [submit the pull request review](https://developer.github.com/v3/pulls/reviews/#submit-a-pull-request-review) when you are ready.",
+        "enum": ["APPROVE", "REQUEST_CHANGES", "COMMENT"],
+        "name": "event",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Use the following table to specify the location, destination, and contents of the draft review comment.",
+        "enum": null,
+        "name": "comments",
+        "type": "object[]",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The relative path to the file that necessitates a review comment.",
+        "enum": null,
+        "name": "comments[].path",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The position in the diff where you want to add a review comment. Note this value is not the same as the line number in the file. For help finding the position value, read the note below.",
+        "enum": null,
+        "name": "comments[].position",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Text of the review comment.",
+        "enum": null,
+        "name": "comments[].body",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": "pull_number",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "number",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "Get a single review",
+    "scope": "pulls",
+    "id": "getReview",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "pull_number parameter",
+        "enum": null,
+        "name": "pull_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "review_id parameter",
+        "enum": null,
+        "name": "review_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": "pull_number",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "number",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "Delete a pending review",
+    "scope": "pulls",
+    "id": "deletePendingReview",
+    "method": "DELETE",
+    "url": "/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "pull_number parameter",
+        "enum": null,
+        "name": "pull_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "review_id parameter",
+        "enum": null,
+        "name": "review_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": "pull_number",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "number",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "Update a pull request review",
+    "scope": "pulls",
+    "id": "updateReview",
+    "method": "PUT",
+    "url": "/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "pull_number parameter",
+        "enum": null,
+        "name": "pull_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "review_id parameter",
+        "enum": null,
+        "name": "review_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The body text of the pull request review.",
+        "enum": null,
+        "name": "body",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": "pull_number",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "number",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "Get comments for a single review",
+    "scope": "pulls",
+    "id": "getCommentsForReview",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "pull_number parameter",
+        "enum": null,
+        "name": "pull_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "review_id parameter",
+        "enum": null,
+        "name": "review_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": "pull_number",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "number",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "Dismiss a pull request review",
+    "scope": "pulls",
+    "id": "dismissReview",
+    "method": "PUT",
+    "url": "/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "pull_number parameter",
+        "enum": null,
+        "name": "pull_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "review_id parameter",
+        "enum": null,
+        "name": "review_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The message for the pull request review dismissal",
+        "enum": null,
+        "name": "message",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": "pull_number",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "number",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "Submit a pull request review",
+    "scope": "pulls",
+    "id": "submitReview",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "pull_number parameter",
+        "enum": null,
+        "name": "pull_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "review_id parameter",
+        "enum": null,
+        "name": "review_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The body text of the pull request review",
+        "enum": null,
+        "name": "body",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The review action you want to perform. The review actions include: `APPROVE`, `REQUEST_CHANGES`, or `COMMENT`. When you leave this blank, the API returns _HTTP 422 (Unrecognizable entity)_ and sets the review action state to `PENDING`, which means you will need to re-submit the pull request review using a review action.",
+        "enum": ["APPROVE", "REQUEST_CHANGES", "COMMENT"],
+        "name": "event",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": "pull_number",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "number",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "Update a pull request branch",
+    "scope": "pulls",
+    "id": "updateBranch",
+    "method": "PUT",
+    "url": "/repos/{owner}/{repo}/pulls/{pull_number}/update-branch",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "pull_number parameter",
+        "enum": null,
+        "name": "pull_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The expected SHA of the pull request's HEAD ref. This is the most recent commit on the pull request's branch. If the expected SHA does not match the pull request's HEAD, you will receive a `422 Unprocessable Entity` status. You can use the \"[List commits on a repository](https://developer.github.com/v3/repos/commits/#list-commits-on-a-repository)\" endpoint to find the most recent commit SHA. Default: SHA of the pull request's current HEAD ref.",
+        "enum": null,
+        "name": "expected_head_sha",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get the README",
+    "scope": "repos",
+    "id": "getReadme",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/readme",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The name of the commit/branch/tag. Default: the repository’s default branch (usually `master`)",
+        "enum": null,
+        "name": "ref",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List releases for a repository",
+    "scope": "repos",
+    "id": "listReleases",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/releases",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Create a release",
+    "scope": "repos",
+    "id": "createRelease",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/releases",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The name of the tag.",
+        "enum": null,
+        "name": "tag_name",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Specifies the commitish value that determines where the Git tag is created from. Can be any branch or commit SHA. Unused if the Git tag already exists. Default: the repository's default branch (usually `master`).",
+        "enum": null,
+        "name": "target_commitish",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The name of the release.",
+        "enum": null,
+        "name": "name",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Text describing the contents of the tag.",
+        "enum": null,
+        "name": "body",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "`true` to create a draft (unpublished) release, `false` to create a published one.",
+        "enum": null,
+        "name": "draft",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "`true` to identify the release as a prerelease. `false` to identify the release as a full release.",
+        "enum": null,
+        "name": "prerelease",
+        "type": "boolean",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get a single release asset",
+    "scope": "repos",
+    "id": "getReleaseAsset",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/releases/assets/{asset_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "asset_id parameter",
+        "enum": null,
+        "name": "asset_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Edit a release asset",
+    "scope": "repos",
+    "id": "updateReleaseAsset",
+    "method": "PATCH",
+    "url": "/repos/{owner}/{repo}/releases/assets/{asset_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "asset_id parameter",
+        "enum": null,
+        "name": "asset_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The file name of the asset.",
+        "enum": null,
+        "name": "name",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "An alternate short description of the asset. Used in place of the filename.",
+        "enum": null,
+        "name": "label",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Delete a release asset",
+    "scope": "repos",
+    "id": "deleteReleaseAsset",
+    "method": "DELETE",
+    "url": "/repos/{owner}/{repo}/releases/assets/{asset_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "asset_id parameter",
+        "enum": null,
+        "name": "asset_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get the latest release",
+    "scope": "repos",
+    "id": "getLatestRelease",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/releases/latest",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get a release by tag name",
+    "scope": "repos",
+    "id": "getReleaseByTag",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/releases/tags/{tag}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "tag parameter",
+        "enum": null,
+        "name": "tag",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get a single release",
+    "scope": "repos",
+    "id": "getRelease",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/releases/{release_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "release_id parameter",
+        "enum": null,
+        "name": "release_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Edit a release",
+    "scope": "repos",
+    "id": "updateRelease",
+    "method": "PATCH",
+    "url": "/repos/{owner}/{repo}/releases/{release_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "release_id parameter",
+        "enum": null,
+        "name": "release_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The name of the tag.",
+        "enum": null,
+        "name": "tag_name",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Specifies the commitish value that determines where the Git tag is created from. Can be any branch or commit SHA. Unused if the Git tag already exists. Default: the repository's default branch (usually `master`).",
+        "enum": null,
+        "name": "target_commitish",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The name of the release.",
+        "enum": null,
+        "name": "name",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Text describing the contents of the tag.",
+        "enum": null,
+        "name": "body",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "`true` makes the release a draft, and `false` publishes the release.",
+        "enum": null,
+        "name": "draft",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "`true` to identify the release as a prerelease, `false` to identify the release as a full release.",
+        "enum": null,
+        "name": "prerelease",
+        "type": "boolean",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Delete a release",
+    "scope": "repos",
+    "id": "deleteRelease",
+    "method": "DELETE",
+    "url": "/repos/{owner}/{repo}/releases/{release_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "release_id parameter",
+        "enum": null,
+        "name": "release_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List assets for a release",
+    "scope": "repos",
+    "id": "listAssetsForRelease",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/releases/{release_id}/assets",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "release_id parameter",
+        "enum": null,
+        "name": "release_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List Stargazers",
+    "scope": "activity",
+    "id": "listStargazersForRepo",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/stargazers",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get the number of additions and deletions per week",
+    "scope": "repos",
+    "id": "getCodeFrequencyStats",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/stats/code_frequency",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get the last year of commit activity data",
+    "scope": "repos",
+    "id": "getCommitActivityStats",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/stats/commit_activity",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get contributors list with additions, deletions, and commit counts",
+    "scope": "repos",
+    "id": "getContributorsStats",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/stats/contributors",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get the weekly commit count for the repository owner and everyone else",
+    "scope": "repos",
+    "id": "getParticipationStats",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/stats/participation",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get the number of commits per hour in each day",
+    "scope": "repos",
+    "id": "getPunchCardStats",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/stats/punch_card",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Create a status",
+    "scope": "repos",
+    "id": "createStatus",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/statuses/{sha}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "sha parameter",
+        "enum": null,
+        "name": "sha",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The state of the status. Can be one of `error`, `failure`, `pending`, or `success`.",
+        "enum": ["error", "failure", "pending", "success"],
+        "name": "state",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The target URL to associate with this status. This URL will be linked from the GitHub UI to allow users to easily see the source of the status.  \nFor example, if your continuous integration system is posting build status, you would want to provide the deep link for the build output for this specific SHA:  \n`http://ci.example.com/user/repo/build/sha`",
+        "enum": null,
+        "name": "target_url",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A short description of the status.",
+        "enum": null,
+        "name": "description",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A string label to differentiate this status from the status of other systems.",
+        "enum": null,
+        "name": "context",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List watchers",
+    "scope": "activity",
+    "id": "listWatchersForRepo",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/subscribers",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get a Repository Subscription",
+    "scope": "activity",
+    "id": "getRepoSubscription",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/subscription",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Set a Repository Subscription",
+    "scope": "activity",
+    "id": "setRepoSubscription",
+    "method": "PUT",
+    "url": "/repos/{owner}/{repo}/subscription",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Determines if notifications should be received from this repository.",
+        "enum": null,
+        "name": "subscribed",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Determines if all notifications should be blocked from this repository.",
+        "enum": null,
+        "name": "ignored",
+        "type": "boolean",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Delete a Repository Subscription",
+    "scope": "activity",
+    "id": "deleteRepoSubscription",
+    "method": "DELETE",
+    "url": "/repos/{owner}/{repo}/subscription",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List tags",
+    "scope": "repos",
+    "id": "listTags",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/tags",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List teams",
+    "scope": "repos",
+    "id": "listTeams",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/teams",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List all topics for a repository",
+    "scope": "repos",
+    "id": "listTopics",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/topics",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Replace all topics for a repository",
+    "scope": "repos",
+    "id": "replaceTopics",
+    "method": "PUT",
+    "url": "/repos/{owner}/{repo}/topics",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "An array of topics to add to the repository. Pass one or more topics to _replace_ the set of existing topics. Send an empty array (`[]`) to clear all topics from the repository. **Note:** Topic `names` cannot contain uppercase letters.",
+        "enum": null,
+        "name": "names",
+        "type": "string[]",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Clones",
+    "scope": "repos",
+    "id": "getClones",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/traffic/clones",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Must be one of: `day`, `week`.",
+        "enum": ["day", "week"],
+        "name": "per",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List paths",
+    "scope": "repos",
+    "id": "getTopPaths",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/traffic/popular/paths",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List referrers",
+    "scope": "repos",
+    "id": "getTopReferrers",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/traffic/popular/referrers",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Views",
+    "scope": "repos",
+    "id": "getViews",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/traffic/views",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Must be one of: `day`, `week`.",
+        "enum": ["day", "week"],
+        "name": "per",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Transfer a repository",
+    "scope": "repos",
+    "id": "transfer",
+    "method": "POST",
+    "url": "/repos/{owner}/{repo}/transfer",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "**Required:** The username or organization name the repository will be transferred to.",
+        "enum": null,
+        "name": "new_owner",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "ID of the team or teams to add to the repository. Teams can only be added to organization-owned repositories.",
+        "enum": null,
+        "name": "team_ids",
+        "type": "integer[]",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Check if vulnerability alerts are enabled for a repository",
+    "scope": "repos",
+    "id": "checkVulnerabilityAlerts",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/vulnerability-alerts",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Enable vulnerability alerts",
+    "scope": "repos",
+    "id": "enableVulnerabilityAlerts",
+    "method": "PUT",
+    "url": "/repos/{owner}/{repo}/vulnerability-alerts",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Disable vulnerability alerts",
+    "scope": "repos",
+    "id": "disableVulnerabilityAlerts",
+    "method": "DELETE",
+    "url": "/repos/{owner}/{repo}/vulnerability-alerts",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get archive link",
+    "scope": "repos",
+    "id": "getArchiveLink",
+    "method": "GET",
+    "url": "/repos/{owner}/{repo}/{archive_format}/{ref}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "archive_format parameter",
+        "enum": null,
+        "name": "archive_format",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "ref parameter",
+        "enum": null,
+        "name": "ref",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Create repository using a repository template",
+    "scope": "repos",
+    "id": "createUsingTemplate",
+    "method": "POST",
+    "url": "/repos/{template_owner}/{template_repo}/generate",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "template_owner parameter",
+        "enum": null,
+        "name": "template_owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "template_repo parameter",
+        "enum": null,
+        "name": "template_repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The organization or person who will own the new repository. To create a new repository in an organization, the authenticated user must be a member of the specified organization.",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The name of the new repository.",
+        "enum": null,
+        "name": "name",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A short description of the new repository.",
+        "enum": null,
+        "name": "description",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Either `true` to create a new private repository or `false` to create a new public one.",
+        "enum": null,
+        "name": "private",
+        "type": "boolean",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List all public repositories",
+    "scope": "repos",
+    "id": "listPublic",
+    "method": "GET",
+    "url": "/repositories",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The integer ID of the last Repository that you've seen.",
+        "enum": null,
+        "name": "since",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get a list of provisioned identities",
+    "scope": "scim",
+    "id": "listProvisionedIdentities",
+    "method": "GET",
+    "url": "/scim/v2/organizations/{org}/Users",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Used for pagination: the index of the first result to return.",
+        "enum": null,
+        "name": "startIndex",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Used for pagination: the number of results to return.",
+        "enum": null,
+        "name": "count",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Filters results using the equals query parameter operator (`eq`). You can filter results that are equal to `id`, `userName`, `emails`, and `external_id`. For example, to search for an identity with the `userName` Octocat, you would use this query: `?filter=userName%20eq%20\\\"Octocat\\\"`.",
+        "enum": null,
+        "name": "filter",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Provision and invite users",
+    "scope": "scim",
+    "id": "provisionAndInviteUsers",
+    "method": "POST",
+    "url": "/scim/v2/organizations/{org}/Users",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Provision and invite users",
+    "scope": "scim",
+    "id": "provisionInviteUsers",
+    "method": "POST",
+    "url": "/scim/v2/organizations/{org}/Users",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get provisioning details for a single user",
+    "scope": "scim",
+    "id": "getProvisioningDetailsForUser",
+    "method": "GET",
+    "url": "/scim/v2/organizations/{org}/Users/{scim_user_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "scim_user_id parameter",
+        "enum": null,
+        "name": "scim_user_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": "scim_user_id",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "external_identity_guid",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "Replace a provisioned user's information",
+    "scope": "scim",
+    "id": "replaceProvisionedUserInformation",
+    "method": "PUT",
+    "url": "/scim/v2/organizations/{org}/Users/{scim_user_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "scim_user_id parameter",
+        "enum": null,
+        "name": "scim_user_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": "scim_user_id",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "external_identity_guid",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "Replace a provisioned user's information",
+    "scope": "scim",
+    "id": "updateProvisionedOrgMembership",
+    "method": "PUT",
+    "url": "/scim/v2/organizations/{org}/Users/{scim_user_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "scim_user_id parameter",
+        "enum": null,
+        "name": "scim_user_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": "scim_user_id",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "external_identity_guid",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "Update a user attribute",
+    "scope": "scim",
+    "id": "updateUserAttribute",
+    "method": "PATCH",
+    "url": "/scim/v2/organizations/{org}/Users/{scim_user_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "scim_user_id parameter",
+        "enum": null,
+        "name": "scim_user_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": "scim_user_id",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "external_identity_guid",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "Remove a user from the organization",
+    "scope": "scim",
+    "id": "removeUserFromOrg",
+    "method": "DELETE",
+    "url": "/scim/v2/organizations/{org}/Users/{scim_user_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "scim_user_id parameter",
+        "enum": null,
+        "name": "scim_user_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": "scim_user_id",
+        "allowNull": null,
+        "deprecated": true,
+        "description": null,
+        "enum": null,
+        "name": "external_identity_guid",
+        "type": null,
+        "required": null
+      }
+    ]
+  },
+  {
+    "name": "Search code",
+    "scope": "search",
+    "id": "code",
+    "method": "GET",
+    "url": "/search/code",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as GitHub.com. To learn more about the format of the query, see [Constructing a search query](https://developer.github.com/v3/search/#constructing-a-search-query). See \"[Searching code](https://help.github.com/articles/searching-code/)\" for a detailed list of qualifiers.",
+        "enum": null,
+        "name": "q",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Sorts the results of your query. Can only be `indexed`, which indicates how recently a file has been indexed by the GitHub search infrastructure. Default: [best match](https://developer.github.com/v3/search/#ranking-search-results)",
+        "enum": ["indexed"],
+        "name": "sort",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Determines whether the first search result returned is the highest number of matches (`desc`) or lowest number of matches (`asc`). This parameter is ignored unless you provide `sort`.",
+        "enum": ["desc", "asc"],
+        "name": "order",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Search commits",
+    "scope": "search",
+    "id": "commits",
+    "method": "GET",
+    "url": "/search/commits",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as GitHub.com. To learn more about the format of the query, see [Constructing a search query](https://developer.github.com/v3/search/#constructing-a-search-query). See \"[Searching commits](https://help.github.com/articles/searching-commits/)\" for a detailed list of qualifiers.",
+        "enum": null,
+        "name": "q",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Sorts the results of your query by `author-date` or `committer-date`. Default: [best match](https://developer.github.com/v3/search/#ranking-search-results)",
+        "enum": ["author-date", "committer-date"],
+        "name": "sort",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Determines whether the first search result returned is the highest number of matches (`desc`) or lowest number of matches (`asc`). This parameter is ignored unless you provide `sort`.",
+        "enum": ["desc", "asc"],
+        "name": "order",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Search issues and pull requests",
+    "scope": "search",
+    "id": "issuesAndPullRequests",
+    "method": "GET",
+    "url": "/search/issues",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as GitHub.com. To learn more about the format of the query, see [Constructing a search query](https://developer.github.com/v3/search/#constructing-a-search-query). See \"[Searching issues and pull requests](https://help.github.com/articles/searching-issues-and-pull-requests/)\" for a detailed list of qualifiers.",
+        "enum": null,
+        "name": "q",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Sorts the results of your query by the number of `comments`, `reactions`, `reactions-+1`, `reactions--1`, `reactions-smile`, `reactions-thinking_face`, `reactions-heart`, `reactions-tada`, or `interactions`. You can also sort results by how recently the items were `created` or `updated`, Default: [best match](https://developer.github.com/v3/search/#ranking-search-results)",
+        "enum": [
+          "comments",
+          "reactions",
+          "reactions-+1",
+          "reactions--1",
+          "reactions-smile",
+          "reactions-thinking_face",
+          "reactions-heart",
+          "reactions-tada",
+          "interactions",
+          "created",
+          "updated"
+        ],
+        "name": "sort",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Determines whether the first search result returned is the highest number of matches (`desc`) or lowest number of matches (`asc`). This parameter is ignored unless you provide `sort`.",
+        "enum": ["desc", "asc"],
+        "name": "order",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Search issues and pull requests",
+    "scope": "search",
+    "id": "issues",
+    "method": "GET",
+    "url": "/search/issues",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as GitHub.com. To learn more about the format of the query, see [Constructing a search query](https://developer.github.com/v3/search/#constructing-a-search-query). See \"[Searching issues and pull requests](https://help.github.com/articles/searching-issues-and-pull-requests/)\" for a detailed list of qualifiers.",
+        "enum": null,
+        "name": "q",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Sorts the results of your query by the number of `comments`, `reactions`, `reactions-+1`, `reactions--1`, `reactions-smile`, `reactions-thinking_face`, `reactions-heart`, `reactions-tada`, or `interactions`. You can also sort results by how recently the items were `created` or `updated`, Default: [best match](https://developer.github.com/v3/search/#ranking-search-results)",
+        "enum": [
+          "comments",
+          "reactions",
+          "reactions-+1",
+          "reactions--1",
+          "reactions-smile",
+          "reactions-thinking_face",
+          "reactions-heart",
+          "reactions-tada",
+          "interactions",
+          "created",
+          "updated"
+        ],
+        "name": "sort",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Determines whether the first search result returned is the highest number of matches (`desc`) or lowest number of matches (`asc`). This parameter is ignored unless you provide `sort`.",
+        "enum": ["desc", "asc"],
+        "name": "order",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Search labels",
+    "scope": "search",
+    "id": "labels",
+    "method": "GET",
+    "url": "/search/labels",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The id of the repository.",
+        "enum": null,
+        "name": "repository_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The search keywords. This endpoint does not accept qualifiers in the query. To learn more about the format of the query, see [Constructing a search query](https://developer.github.com/v3/search/#constructing-a-search-query).",
+        "enum": null,
+        "name": "q",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Sorts the results of your query by when the label was `created` or `updated`. Default: [best match](https://developer.github.com/v3/search/#ranking-search-results)",
+        "enum": ["created", "updated"],
+        "name": "sort",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Determines whether the first search result returned is the highest number of matches (`desc`) or lowest number of matches (`asc`). This parameter is ignored unless you provide `sort`.",
+        "enum": ["desc", "asc"],
+        "name": "order",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Search repositories",
+    "scope": "search",
+    "id": "repos",
+    "method": "GET",
+    "url": "/search/repositories",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as GitHub.com. To learn more about the format of the query, see [Constructing a search query](https://developer.github.com/v3/search/#constructing-a-search-query). See \"[Searching for repositories](https://help.github.com/articles/searching-for-repositories/)\" for a detailed list of qualifiers.",
+        "enum": null,
+        "name": "q",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Sorts the results of your query by number of `stars`, `forks`, or `help-wanted-issues` or how recently the items were `updated`. Default: [best match](https://developer.github.com/v3/search/#ranking-search-results)",
+        "enum": ["stars", "forks", "help-wanted-issues", "updated"],
+        "name": "sort",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Determines whether the first search result returned is the highest number of matches (`desc`) or lowest number of matches (`asc`). This parameter is ignored unless you provide `sort`.",
+        "enum": ["desc", "asc"],
+        "name": "order",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Search topics",
+    "scope": "search",
+    "id": "topics",
+    "method": "GET",
+    "url": "/search/topics",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as GitHub.com. To learn more about the format of the query, see [Constructing a search query](https://developer.github.com/v3/search/#constructing-a-search-query).",
+        "enum": null,
+        "name": "q",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Search users",
+    "scope": "search",
+    "id": "users",
+    "method": "GET",
+    "url": "/search/users",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as GitHub.com. To learn more about the format of the query, see [Constructing a search query](https://developer.github.com/v3/search/#constructing-a-search-query). See \"[Searching users](https://help.github.com/articles/searching-users/)\" for a detailed list of qualifiers.",
+        "enum": null,
+        "name": "q",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Sorts the results of your query by number of `followers` or `repositories`, or when the person `joined` GitHub. Default: [best match](https://developer.github.com/v3/search/#ranking-search-results)",
+        "enum": ["followers", "repositories", "joined"],
+        "name": "sort",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Determines whether the first search result returned is the highest number of matches (`desc`) or lowest number of matches (`asc`). This parameter is ignored unless you provide `sort`.",
+        "enum": ["desc", "asc"],
+        "name": "order",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get team",
+    "scope": "teams",
+    "id": "get",
+    "method": "GET",
+    "url": "/teams/{team_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "team_id parameter",
+        "enum": null,
+        "name": "team_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Edit team",
+    "scope": "teams",
+    "id": "update",
+    "method": "PATCH",
+    "url": "/teams/{team_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "team_id parameter",
+        "enum": null,
+        "name": "team_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The name of the team.",
+        "enum": null,
+        "name": "name",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The description of the team.",
+        "enum": null,
+        "name": "description",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The level of privacy this team should have. Editing teams without specifying this parameter leaves `privacy` intact. The options are:  \n**For a non-nested team:**  \n\\* `secret` - only visible to organization owners and members of this team.  \n\\* `closed` - visible to all members of this organization.  \n**For a parent or child team:**  \n\\* `closed` - visible to all members of this organization.",
+        "enum": ["secret", "closed"],
+        "name": "privacy",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "**Deprecated**. The permission that new repositories will be added to the team with when none is specified. Can be one of:  \n\\* `pull` - team members can pull, but not push to or administer newly-added repositories.  \n\\* `push` - team members can pull and push, but not administer newly-added repositories.  \n\\* `admin` - team members can pull, push and administer newly-added repositories.",
+        "enum": ["pull", "push", "admin"],
+        "name": "permission",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The ID of a team to set as the parent team. **Note**: You must pass the `hellcat-preview` media type to use this parameter.",
+        "enum": null,
+        "name": "parent_team_id",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Delete team",
+    "scope": "teams",
+    "id": "delete",
+    "method": "DELETE",
+    "url": "/teams/{team_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "team_id parameter",
+        "enum": null,
+        "name": "team_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List discussions",
+    "scope": "teams",
+    "id": "listDiscussions",
+    "method": "GET",
+    "url": "/teams/{team_id}/discussions",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "team_id parameter",
+        "enum": null,
+        "name": "team_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Sorts the discussion comments by the date they were created. To return the oldest comments first, set to `asc`. Can be one of `asc` or `desc`.",
+        "enum": ["asc", "desc"],
+        "name": "direction",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Create a discussion",
+    "scope": "teams",
+    "id": "createDiscussion",
+    "method": "POST",
+    "url": "/teams/{team_id}/discussions",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "team_id parameter",
+        "enum": null,
+        "name": "team_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The discussion post's title.",
+        "enum": null,
+        "name": "title",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The discussion post's body text.",
+        "enum": null,
+        "name": "body",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Private posts are only visible to team members, organization owners, and team maintainers. Public posts are visible to all members of the organization. Set to `true` to create a private post.",
+        "enum": null,
+        "name": "private",
+        "type": "boolean",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get a single discussion",
+    "scope": "teams",
+    "id": "getDiscussion",
+    "method": "GET",
+    "url": "/teams/{team_id}/discussions/{discussion_number}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "team_id parameter",
+        "enum": null,
+        "name": "team_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "discussion_number parameter",
+        "enum": null,
+        "name": "discussion_number",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Edit a discussion",
+    "scope": "teams",
+    "id": "updateDiscussion",
+    "method": "PATCH",
+    "url": "/teams/{team_id}/discussions/{discussion_number}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "team_id parameter",
+        "enum": null,
+        "name": "team_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "discussion_number parameter",
+        "enum": null,
+        "name": "discussion_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The discussion post's title.",
+        "enum": null,
+        "name": "title",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The discussion post's body text.",
+        "enum": null,
+        "name": "body",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Delete a discussion",
+    "scope": "teams",
+    "id": "deleteDiscussion",
+    "method": "DELETE",
+    "url": "/teams/{team_id}/discussions/{discussion_number}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "team_id parameter",
+        "enum": null,
+        "name": "team_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "discussion_number parameter",
+        "enum": null,
+        "name": "discussion_number",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List comments",
+    "scope": "teams",
+    "id": "listDiscussionComments",
+    "method": "GET",
+    "url": "/teams/{team_id}/discussions/{discussion_number}/comments",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "team_id parameter",
+        "enum": null,
+        "name": "team_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "discussion_number parameter",
+        "enum": null,
+        "name": "discussion_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Sorts the discussion comments by the date they were created. To return the oldest comments first, set to `asc`. Can be one of `asc` or `desc`.",
+        "enum": ["asc", "desc"],
+        "name": "direction",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Create a comment",
+    "scope": "teams",
+    "id": "createDiscussionComment",
+    "method": "POST",
+    "url": "/teams/{team_id}/discussions/{discussion_number}/comments",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "team_id parameter",
+        "enum": null,
+        "name": "team_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "discussion_number parameter",
+        "enum": null,
+        "name": "discussion_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The discussion comment's body text.",
+        "enum": null,
+        "name": "body",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get a single comment",
+    "scope": "teams",
+    "id": "getDiscussionComment",
+    "method": "GET",
+    "url": "/teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "team_id parameter",
+        "enum": null,
+        "name": "team_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "discussion_number parameter",
+        "enum": null,
+        "name": "discussion_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "comment_number parameter",
+        "enum": null,
+        "name": "comment_number",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Edit a comment",
+    "scope": "teams",
+    "id": "updateDiscussionComment",
+    "method": "PATCH",
+    "url": "/teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "team_id parameter",
+        "enum": null,
+        "name": "team_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "discussion_number parameter",
+        "enum": null,
+        "name": "discussion_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "comment_number parameter",
+        "enum": null,
+        "name": "comment_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The discussion comment's body text.",
+        "enum": null,
+        "name": "body",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Delete a comment",
+    "scope": "teams",
+    "id": "deleteDiscussionComment",
+    "method": "DELETE",
+    "url": "/teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "team_id parameter",
+        "enum": null,
+        "name": "team_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "discussion_number parameter",
+        "enum": null,
+        "name": "discussion_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "comment_number parameter",
+        "enum": null,
+        "name": "comment_number",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List reactions for a team discussion comment",
+    "scope": "reactions",
+    "id": "listForTeamDiscussionComment",
+    "method": "GET",
+    "url": "/teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "team_id parameter",
+        "enum": null,
+        "name": "team_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "discussion_number parameter",
+        "enum": null,
+        "name": "discussion_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "comment_number parameter",
+        "enum": null,
+        "name": "comment_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Returns a single [reaction type](https://developer.github.com/v3/reactions/#reaction-types). Omit this parameter to list all reactions to a team discussion comment.",
+        "enum": [
+          "+1",
+          "-1",
+          "laugh",
+          "confused",
+          "heart",
+          "hooray",
+          "rocket",
+          "eyes"
+        ],
+        "name": "content",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Create reaction for a team discussion comment",
+    "scope": "reactions",
+    "id": "createForTeamDiscussionComment",
+    "method": "POST",
+    "url": "/teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "team_id parameter",
+        "enum": null,
+        "name": "team_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "discussion_number parameter",
+        "enum": null,
+        "name": "discussion_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "comment_number parameter",
+        "enum": null,
+        "name": "comment_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The [reaction type](https://developer.github.com/v3/reactions/#reaction-types) to add to the team discussion comment.",
+        "enum": [
+          "+1",
+          "-1",
+          "laugh",
+          "confused",
+          "heart",
+          "hooray",
+          "rocket",
+          "eyes"
+        ],
+        "name": "content",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List reactions for a team discussion",
+    "scope": "reactions",
+    "id": "listForTeamDiscussion",
+    "method": "GET",
+    "url": "/teams/{team_id}/discussions/{discussion_number}/reactions",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "team_id parameter",
+        "enum": null,
+        "name": "team_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "discussion_number parameter",
+        "enum": null,
+        "name": "discussion_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Returns a single [reaction type](https://developer.github.com/v3/reactions/#reaction-types). Omit this parameter to list all reactions to a team discussion.",
+        "enum": [
+          "+1",
+          "-1",
+          "laugh",
+          "confused",
+          "heart",
+          "hooray",
+          "rocket",
+          "eyes"
+        ],
+        "name": "content",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Create reaction for a team discussion",
+    "scope": "reactions",
+    "id": "createForTeamDiscussion",
+    "method": "POST",
+    "url": "/teams/{team_id}/discussions/{discussion_number}/reactions",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "team_id parameter",
+        "enum": null,
+        "name": "team_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "discussion_number parameter",
+        "enum": null,
+        "name": "discussion_number",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The [reaction type](https://developer.github.com/v3/reactions/#reaction-types) to add to the team discussion.",
+        "enum": [
+          "+1",
+          "-1",
+          "laugh",
+          "confused",
+          "heart",
+          "hooray",
+          "rocket",
+          "eyes"
+        ],
+        "name": "content",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List pending team invitations",
+    "scope": "teams",
+    "id": "listPendingInvitations",
+    "method": "GET",
+    "url": "/teams/{team_id}/invitations",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "team_id parameter",
+        "enum": null,
+        "name": "team_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List team members",
+    "scope": "teams",
+    "id": "listMembers",
+    "method": "GET",
+    "url": "/teams/{team_id}/members",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "team_id parameter",
+        "enum": null,
+        "name": "team_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Filters members returned by their role in the team. Can be one of:  \n\\* `member` - normal members of the team.  \n\\* `maintainer` - team maintainers.  \n\\* `all` - all members of the team.",
+        "enum": ["member", "maintainer", "all"],
+        "name": "role",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get team member",
+    "scope": "teams",
+    "id": "getMember",
+    "method": "GET",
+    "url": "/teams/{team_id}/members/{username}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "team_id parameter",
+        "enum": null,
+        "name": "team_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Add team member",
+    "scope": "teams",
+    "id": "addMember",
+    "method": "PUT",
+    "url": "/teams/{team_id}/members/{username}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "team_id parameter",
+        "enum": null,
+        "name": "team_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Remove team member",
+    "scope": "teams",
+    "id": "removeMember",
+    "method": "DELETE",
+    "url": "/teams/{team_id}/members/{username}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "team_id parameter",
+        "enum": null,
+        "name": "team_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get team membership",
+    "scope": "teams",
+    "id": "getMembership",
+    "method": "GET",
+    "url": "/teams/{team_id}/memberships/{username}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "team_id parameter",
+        "enum": null,
+        "name": "team_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Add or update team membership",
+    "scope": "teams",
+    "id": "addOrUpdateMembership",
+    "method": "PUT",
+    "url": "/teams/{team_id}/memberships/{username}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "team_id parameter",
+        "enum": null,
+        "name": "team_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The role that this user should have in the team. Can be one of:  \n\\* `member` - a normal member of the team.  \n\\* `maintainer` - a team maintainer. Able to add/remove other team members, promote other team members to team maintainer, and edit the team's name and description.",
+        "enum": ["member", "maintainer"],
+        "name": "role",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Remove team membership",
+    "scope": "teams",
+    "id": "removeMembership",
+    "method": "DELETE",
+    "url": "/teams/{team_id}/memberships/{username}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "team_id parameter",
+        "enum": null,
+        "name": "team_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List team projects",
+    "scope": "teams",
+    "id": "listProjects",
+    "method": "GET",
+    "url": "/teams/{team_id}/projects",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "team_id parameter",
+        "enum": null,
+        "name": "team_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Review a team project",
+    "scope": "teams",
+    "id": "reviewProject",
+    "method": "GET",
+    "url": "/teams/{team_id}/projects/{project_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "team_id parameter",
+        "enum": null,
+        "name": "team_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "project_id parameter",
+        "enum": null,
+        "name": "project_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Add or update team project",
+    "scope": "teams",
+    "id": "addOrUpdateProject",
+    "method": "PUT",
+    "url": "/teams/{team_id}/projects/{project_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "team_id parameter",
+        "enum": null,
+        "name": "team_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "project_id parameter",
+        "enum": null,
+        "name": "project_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The permission to grant to the team for this project. Can be one of:  \n\\* `read` - team members can read, but not write to or administer this project.  \n\\* `write` - team members can read and write, but not administer this project.  \n\\* `admin` - team members can read, write and administer this project.  \nDefault: the team's `permission` attribute will be used to determine what permission to grant the team on this project. Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see \"[HTTP verbs](https://developer.github.com/v3/#http-verbs).\"  \n**Note**: If you pass the `hellcat-preview` media type, you can promote—but not demote—a `permission` attribute inherited from a parent team.",
+        "enum": ["read", "write", "admin"],
+        "name": "permission",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Remove team project",
+    "scope": "teams",
+    "id": "removeProject",
+    "method": "DELETE",
+    "url": "/teams/{team_id}/projects/{project_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "team_id parameter",
+        "enum": null,
+        "name": "team_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "project_id parameter",
+        "enum": null,
+        "name": "project_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List team repos",
+    "scope": "teams",
+    "id": "listRepos",
+    "method": "GET",
+    "url": "/teams/{team_id}/repos",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "team_id parameter",
+        "enum": null,
+        "name": "team_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Check if a team manages a repository",
+    "scope": "teams",
+    "id": "checkManagesRepo",
+    "method": "GET",
+    "url": "/teams/{team_id}/repos/{owner}/{repo}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "team_id parameter",
+        "enum": null,
+        "name": "team_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Add or update team repository",
+    "scope": "teams",
+    "id": "addOrUpdateRepo",
+    "method": "PUT",
+    "url": "/teams/{team_id}/repos/{owner}/{repo}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "team_id parameter",
+        "enum": null,
+        "name": "team_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The permission to grant the team on this repository. Can be one of:  \n\\* `pull` - team members can pull, but not push to or administer this repository.  \n\\* `push` - team members can pull and push, but not administer this repository.  \n\\* `admin` - team members can pull, push and administer this repository.  \n  \nIf no permission is specified, the team's `permission` attribute will be used to determine what permission to grant the team on this repository.  \n**Note**: If you pass the `hellcat-preview` media type, you can promote—but not demote—a `permission` attribute inherited through a parent team.",
+        "enum": ["pull", "push", "admin"],
+        "name": "permission",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Remove team repository",
+    "scope": "teams",
+    "id": "removeRepo",
+    "method": "DELETE",
+    "url": "/teams/{team_id}/repos/{owner}/{repo}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "team_id parameter",
+        "enum": null,
+        "name": "team_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List IdP groups for a team",
+    "scope": "teams",
+    "id": "listIdPGroups",
+    "method": "GET",
+    "url": "/teams/{team_id}/team-sync/group-mappings",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "team_id parameter",
+        "enum": null,
+        "name": "team_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Create or update IdP group connections",
+    "scope": "teams",
+    "id": "createOrUpdateIdPGroupConnections",
+    "method": "PATCH",
+    "url": "/teams/{team_id}/team-sync/group-mappings",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "team_id parameter",
+        "enum": null,
+        "name": "team_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The IdP groups you want to connect to a GitHub team. When updating, the new `groups` object will replace the original one. You must include any existing groups that you don't want to remove.",
+        "enum": null,
+        "name": "groups",
+        "type": "object[]",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "ID of the IdP group.",
+        "enum": null,
+        "name": "groups[].group_id",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Name of the IdP group.",
+        "enum": null,
+        "name": "groups[].group_name",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Description of the IdP group.",
+        "enum": null,
+        "name": "groups[].group_description",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List child teams",
+    "scope": "teams",
+    "id": "listChild",
+    "method": "GET",
+    "url": "/teams/{team_id}/teams",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "team_id parameter",
+        "enum": null,
+        "name": "team_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get the authenticated user",
+    "scope": "users",
+    "id": "getAuthenticated",
+    "method": "GET",
+    "url": "/user",
+    "parameters": []
+  },
+  {
+    "name": "Update the authenticated user",
+    "scope": "users",
+    "id": "updateAuthenticated",
+    "method": "PATCH",
+    "url": "/user",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The new name of the user.",
+        "enum": null,
+        "name": "name",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The publicly visible email address of the user.",
+        "enum": null,
+        "name": "email",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The new blog URL of the user.",
+        "enum": null,
+        "name": "blog",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The new company of the user.",
+        "enum": null,
+        "name": "company",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The new location of the user.",
+        "enum": null,
+        "name": "location",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The new hiring availability of the user.",
+        "enum": null,
+        "name": "hireable",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The new short biography of the user.",
+        "enum": null,
+        "name": "bio",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List blocked users",
+    "scope": "users",
+    "id": "listBlocked",
+    "method": "GET",
+    "url": "/user/blocks",
+    "parameters": []
+  },
+  {
+    "name": "Check whether you've blocked a user",
+    "scope": "users",
+    "id": "checkBlocked",
+    "method": "GET",
+    "url": "/user/blocks/{username}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Block a user",
+    "scope": "users",
+    "id": "block",
+    "method": "PUT",
+    "url": "/user/blocks/{username}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Unblock a user",
+    "scope": "users",
+    "id": "unblock",
+    "method": "DELETE",
+    "url": "/user/blocks/{username}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Toggle primary email visibility",
+    "scope": "users",
+    "id": "togglePrimaryEmailVisibility",
+    "method": "PATCH",
+    "url": "/user/email/visibility",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Specify the _primary_ email address that needs a visibility change.",
+        "enum": null,
+        "name": "email",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Use `public` to enable an authenticated user to view the specified email address, or use `private` so this primary email address cannot be seen publicly.",
+        "enum": null,
+        "name": "visibility",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List email addresses for a user",
+    "scope": "users",
+    "id": "listEmails",
+    "method": "GET",
+    "url": "/user/emails",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Add email address(es)",
+    "scope": "users",
+    "id": "addEmails",
+    "method": "POST",
+    "url": "/user/emails",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Adds one or more email addresses to your GitHub account. Must contain at least one email address. **Note:** Alternatively, you can pass a single email address or an `array` of emails addresses directly, but we recommend that you pass an object using the `emails` key.",
+        "enum": null,
+        "name": "emails",
+        "type": "string[]",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Delete email address(es)",
+    "scope": "users",
+    "id": "deleteEmails",
+    "method": "DELETE",
+    "url": "/user/emails",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Deletes one or more email addresses from your GitHub account. Must contain at least one email address. **Note:** Alternatively, you can pass a single email address or an `array` of emails addresses directly, but we recommend that you pass an object using the `emails` key.",
+        "enum": null,
+        "name": "emails",
+        "type": "string[]",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List the authenticated user's followers",
+    "scope": "users",
+    "id": "listFollowersForAuthenticatedUser",
+    "method": "GET",
+    "url": "/user/followers",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List who the authenticated user is following",
+    "scope": "users",
+    "id": "listFollowingForAuthenticatedUser",
+    "method": "GET",
+    "url": "/user/following",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Check if you are following a user",
+    "scope": "users",
+    "id": "checkFollowing",
+    "method": "GET",
+    "url": "/user/following/{username}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Follow a user",
+    "scope": "users",
+    "id": "follow",
+    "method": "PUT",
+    "url": "/user/following/{username}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Unfollow a user",
+    "scope": "users",
+    "id": "unfollow",
+    "method": "DELETE",
+    "url": "/user/following/{username}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List your GPG keys",
+    "scope": "users",
+    "id": "listGpgKeys",
+    "method": "GET",
+    "url": "/user/gpg_keys",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Create a GPG key",
+    "scope": "users",
+    "id": "createGpgKey",
+    "method": "POST",
+    "url": "/user/gpg_keys",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Your GPG key, generated in ASCII-armored format. See \"[Generating a new GPG key](https://help.github.com/articles/generating-a-new-gpg-key/)\" for help creating a GPG key.",
+        "enum": null,
+        "name": "armored_public_key",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get a single GPG key",
+    "scope": "users",
+    "id": "getGpgKey",
+    "method": "GET",
+    "url": "/user/gpg_keys/{gpg_key_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "gpg_key_id parameter",
+        "enum": null,
+        "name": "gpg_key_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Delete a GPG key",
+    "scope": "users",
+    "id": "deleteGpgKey",
+    "method": "DELETE",
+    "url": "/user/gpg_keys/{gpg_key_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "gpg_key_id parameter",
+        "enum": null,
+        "name": "gpg_key_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List installations for a user",
+    "scope": "apps",
+    "id": "listInstallationsForAuthenticatedUser",
+    "method": "GET",
+    "url": "/user/installations",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List repositories accessible to the user for an installation",
+    "scope": "apps",
+    "id": "listInstallationReposForAuthenticatedUser",
+    "method": "GET",
+    "url": "/user/installations/{installation_id}/repositories",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "installation_id parameter",
+        "enum": null,
+        "name": "installation_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Add repository to installation",
+    "scope": "apps",
+    "id": "addRepoToInstallation",
+    "method": "PUT",
+    "url": "/user/installations/{installation_id}/repositories/{repository_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "installation_id parameter",
+        "enum": null,
+        "name": "installation_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repository_id parameter",
+        "enum": null,
+        "name": "repository_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Remove repository from installation",
+    "scope": "apps",
+    "id": "removeRepoFromInstallation",
+    "method": "DELETE",
+    "url": "/user/installations/{installation_id}/repositories/{repository_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "installation_id parameter",
+        "enum": null,
+        "name": "installation_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repository_id parameter",
+        "enum": null,
+        "name": "repository_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List all issues across owned and member repositories assigned to the authenticated user",
+    "scope": "issues",
+    "id": "listForAuthenticatedUser",
+    "method": "GET",
+    "url": "/user/issues",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Indicates which sorts of issues to return. Can be one of:  \n\\* `assigned`: Issues assigned to you  \n\\* `created`: Issues created by you  \n\\* `mentioned`: Issues mentioning you  \n\\* `subscribed`: Issues you're subscribed to updates for  \n\\* `all`: All issues the authenticated user can see, regardless of participation or creation",
+        "enum": ["assigned", "created", "mentioned", "subscribed", "all"],
+        "name": "filter",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Indicates the state of the issues to return. Can be either `open`, `closed`, or `all`.",
+        "enum": ["open", "closed", "all"],
+        "name": "state",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A list of comma separated label names. Example: `bug,ui,@high`",
+        "enum": null,
+        "name": "labels",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "What to sort results by. Can be either `created`, `updated`, `comments`.",
+        "enum": ["created", "updated", "comments"],
+        "name": "sort",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The direction of the sort. Can be either `asc` or `desc`.",
+        "enum": ["asc", "desc"],
+        "name": "direction",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Only issues updated at or after this time are returned. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.",
+        "enum": null,
+        "name": "since",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List your public keys",
+    "scope": "users",
+    "id": "listPublicKeys",
+    "method": "GET",
+    "url": "/user/keys",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Create a public key",
+    "scope": "users",
+    "id": "createPublicKey",
+    "method": "POST",
+    "url": "/user/keys",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A descriptive name for the new key. Use a name that will help you recognize this key in your GitHub account. For example, if you're using a personal Mac, you might call this key \"Personal MacBook Air\".",
+        "enum": null,
+        "name": "title",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The public SSH key to add to your GitHub account. See \"[Generating a new SSH key](https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/)\" for guidance on how to create a public SSH key.",
+        "enum": null,
+        "name": "key",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get a single public key",
+    "scope": "users",
+    "id": "getPublicKey",
+    "method": "GET",
+    "url": "/user/keys/{key_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "key_id parameter",
+        "enum": null,
+        "name": "key_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Delete a public key",
+    "scope": "users",
+    "id": "deletePublicKey",
+    "method": "DELETE",
+    "url": "/user/keys/{key_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "key_id parameter",
+        "enum": null,
+        "name": "key_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get a user's Marketplace purchases",
+    "scope": "apps",
+    "id": "listMarketplacePurchasesForAuthenticatedUser",
+    "method": "GET",
+    "url": "/user/marketplace_purchases",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get a user's Marketplace purchases (stubbed)",
+    "scope": "apps",
+    "id": "listMarketplacePurchasesForAuthenticatedUserStubbed",
+    "method": "GET",
+    "url": "/user/marketplace_purchases/stubbed",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List your organization memberships",
+    "scope": "orgs",
+    "id": "listMemberships",
+    "method": "GET",
+    "url": "/user/memberships/orgs",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Indicates the state of the memberships to return. Can be either `active` or `pending`. If not specified, the API returns both active and pending memberships.",
+        "enum": ["active", "pending"],
+        "name": "state",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get your organization membership",
+    "scope": "orgs",
+    "id": "getMembershipForAuthenticatedUser",
+    "method": "GET",
+    "url": "/user/memberships/orgs/{org}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Edit your organization membership",
+    "scope": "orgs",
+    "id": "updateMembership",
+    "method": "PATCH",
+    "url": "/user/memberships/orgs/{org}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The state that the membership should be in. Only `\"active\"` will be accepted.",
+        "enum": ["active"],
+        "name": "state",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Start a user migration",
+    "scope": "migrations",
+    "id": "startForAuthenticatedUser",
+    "method": "POST",
+    "url": "/user/migrations",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "An array of repositories to include in the migration.",
+        "enum": null,
+        "name": "repositories",
+        "type": "string[]",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Locks the `repositories` to prevent changes during the migration when set to `true`.",
+        "enum": null,
+        "name": "lock_repositories",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Does not include attachments uploaded to GitHub.com in the migration data when set to `true`. Excluding attachments will reduce the migration archive file size.",
+        "enum": null,
+        "name": "exclude_attachments",
+        "type": "boolean",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get a list of user migrations",
+    "scope": "migrations",
+    "id": "listForAuthenticatedUser",
+    "method": "GET",
+    "url": "/user/migrations",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get the status of a user migration",
+    "scope": "migrations",
+    "id": "getStatusForAuthenticatedUser",
+    "method": "GET",
+    "url": "/user/migrations/{migration_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "migration_id parameter",
+        "enum": null,
+        "name": "migration_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Download a user migration archive",
+    "scope": "migrations",
+    "id": "getArchiveForAuthenticatedUser",
+    "method": "GET",
+    "url": "/user/migrations/{migration_id}/archive",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "migration_id parameter",
+        "enum": null,
+        "name": "migration_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Delete a user migration archive",
+    "scope": "migrations",
+    "id": "deleteArchiveForAuthenticatedUser",
+    "method": "DELETE",
+    "url": "/user/migrations/{migration_id}/archive",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "migration_id parameter",
+        "enum": null,
+        "name": "migration_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Unlock a user repository",
+    "scope": "migrations",
+    "id": "unlockRepoForAuthenticatedUser",
+    "method": "DELETE",
+    "url": "/user/migrations/{migration_id}/repos/{repo_name}/lock",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "migration_id parameter",
+        "enum": null,
+        "name": "migration_id",
+        "type": "integer",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo_name parameter",
+        "enum": null,
+        "name": "repo_name",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List your organizations",
+    "scope": "orgs",
+    "id": "listForAuthenticatedUser",
+    "method": "GET",
+    "url": "/user/orgs",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Create a user project",
+    "scope": "projects",
+    "id": "createForAuthenticatedUser",
+    "method": "POST",
+    "url": "/user/projects",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The name of the project.",
+        "enum": null,
+        "name": "name",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The description of the project.",
+        "enum": null,
+        "name": "body",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List public email addresses for a user",
+    "scope": "users",
+    "id": "listPublicEmails",
+    "method": "GET",
+    "url": "/user/public_emails",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List your repositories",
+    "scope": "repos",
+    "id": "list",
+    "method": "GET",
+    "url": "/user/repos",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Can be one of `all`, `public`, or `private`.",
+        "enum": ["all", "public", "private"],
+        "name": "visibility",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Comma-separated list of values. Can include:  \n\\* `owner`: Repositories that are owned by the authenticated user.  \n\\* `collaborator`: Repositories that the user has been added to as a collaborator.  \n\\* `organization_member`: Repositories that the user has access to through being a member of an organization. This includes every repository on every team that the user is on.",
+        "enum": null,
+        "name": "affiliation",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Can be one of `all`, `owner`, `public`, `private`, `member`. Default: `all`  \n  \nWill cause a `422` error if used in the same request as **visibility** or **affiliation**. Will cause a `422` error if used in the same request as **visibility** or **affiliation**.",
+        "enum": ["all", "owner", "public", "private", "member"],
+        "name": "type",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Can be one of `created`, `updated`, `pushed`, `full_name`.",
+        "enum": ["created", "updated", "pushed", "full_name"],
+        "name": "sort",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Can be one of `asc` or `desc`. Default: `asc` when using `full_name`, otherwise `desc`",
+        "enum": ["asc", "desc"],
+        "name": "direction",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Creates a new repository for the authenticated user",
+    "scope": "repos",
+    "id": "createForAuthenticatedUser",
+    "method": "POST",
+    "url": "/user/repos",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The name of the repository.",
+        "enum": null,
+        "name": "name",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A short description of the repository.",
+        "enum": null,
+        "name": "description",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "A URL with more information about the repository.",
+        "enum": null,
+        "name": "homepage",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Either `true` to create a private repository or `false` to create a public one. Creating private repositories requires a paid GitHub account.",
+        "enum": null,
+        "name": "private",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Either `true` to enable issues for this repository or `false` to disable them.",
+        "enum": null,
+        "name": "has_issues",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Either `true` to enable projects for this repository or `false` to disable them. **Note:** If you're creating a repository in an organization that has disabled repository projects, the default is `false`, and if you pass `true`, the API returns an error.",
+        "enum": null,
+        "name": "has_projects",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Either `true` to enable the wiki for this repository or `false` to disable it.",
+        "enum": null,
+        "name": "has_wiki",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Either `true` to make this repo available as a template repository or `false` to prevent it.",
+        "enum": null,
+        "name": "is_template",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The id of the team that will be granted access to this repository. This is only valid when creating a repository in an organization.",
+        "enum": null,
+        "name": "team_id",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Pass `true` to create an initial commit with empty README.",
+        "enum": null,
+        "name": "auto_init",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Desired language or platform [.gitignore template](https://github.com/github/gitignore) to apply. Use the name of the template without the extension. For example, \"Haskell\".",
+        "enum": null,
+        "name": "gitignore_template",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Choose an [open source license template](https://choosealicense.com/) that best suits your needs, and then use the [license keyword](https://help.github.com/articles/licensing-a-repository/#searching-github-by-license-type) as the `license_template` string. For example, \"mit\" or \"mpl-2.0\".",
+        "enum": null,
+        "name": "license_template",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Either `true` to allow squash-merging pull requests, or `false` to prevent squash-merging.",
+        "enum": null,
+        "name": "allow_squash_merge",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Either `true` to allow merging pull requests with a merge commit, or `false` to prevent merging pull requests with merge commits.",
+        "enum": null,
+        "name": "allow_merge_commit",
+        "type": "boolean",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Either `true` to allow rebase-merging pull requests, or `false` to prevent rebase-merging.",
+        "enum": null,
+        "name": "allow_rebase_merge",
+        "type": "boolean",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List a user's repository invitations",
+    "scope": "repos",
+    "id": "listInvitationsForAuthenticatedUser",
+    "method": "GET",
+    "url": "/user/repository_invitations",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Accept a repository invitation",
+    "scope": "repos",
+    "id": "acceptInvitation",
+    "method": "PATCH",
+    "url": "/user/repository_invitations/{invitation_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "invitation_id parameter",
+        "enum": null,
+        "name": "invitation_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Decline a repository invitation",
+    "scope": "repos",
+    "id": "declineInvitation",
+    "method": "DELETE",
+    "url": "/user/repository_invitations/{invitation_id}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "invitation_id parameter",
+        "enum": null,
+        "name": "invitation_id",
+        "type": "integer",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List repositories being starred by the authenticated user",
+    "scope": "activity",
+    "id": "listReposStarredByAuthenticatedUser",
+    "method": "GET",
+    "url": "/user/starred",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "One of `created` (when the repository was starred) or `updated` (when it was last pushed to).",
+        "enum": ["created", "updated"],
+        "name": "sort",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "One of `asc` (ascending) or `desc` (descending).",
+        "enum": ["asc", "desc"],
+        "name": "direction",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Check if you are starring a repository",
+    "scope": "activity",
+    "id": "checkStarringRepo",
+    "method": "GET",
+    "url": "/user/starred/{owner}/{repo}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Star a repository",
+    "scope": "activity",
+    "id": "starRepo",
+    "method": "PUT",
+    "url": "/user/starred/{owner}/{repo}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Unstar a repository",
+    "scope": "activity",
+    "id": "unstarRepo",
+    "method": "DELETE",
+    "url": "/user/starred/{owner}/{repo}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List repositories being watched by the authenticated user",
+    "scope": "activity",
+    "id": "listWatchedReposForAuthenticatedUser",
+    "method": "GET",
+    "url": "/user/subscriptions",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Check if you are watching a repository (LEGACY)",
+    "scope": "activity",
+    "id": "checkWatchingRepoLegacy",
+    "method": "GET",
+    "url": "/user/subscriptions/{owner}/{repo}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Watch a repository (LEGACY)",
+    "scope": "activity",
+    "id": "watchRepoLegacy",
+    "method": "PUT",
+    "url": "/user/subscriptions/{owner}/{repo}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Stop watching a repository (LEGACY)",
+    "scope": "activity",
+    "id": "stopWatchingRepoLegacy",
+    "method": "DELETE",
+    "url": "/user/subscriptions/{owner}/{repo}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "owner parameter",
+        "enum": null,
+        "name": "owner",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "repo parameter",
+        "enum": null,
+        "name": "repo",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List user teams",
+    "scope": "teams",
+    "id": "listForAuthenticatedUser",
+    "method": "GET",
+    "url": "/user/teams",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get all users",
+    "scope": "users",
+    "id": "list",
+    "method": "GET",
+    "url": "/users",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "The integer ID of the last User that you've seen.",
+        "enum": null,
+        "name": "since",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get a single user",
+    "scope": "users",
+    "id": "getByUsername",
+    "method": "GET",
+    "url": "/users/{username}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List events performed by a user",
+    "scope": "activity",
+    "id": "listEventsForUser",
+    "method": "GET",
+    "url": "/users/{username}/events",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List events for an organization",
+    "scope": "activity",
+    "id": "listEventsForOrg",
+    "method": "GET",
+    "url": "/users/{username}/events/orgs/{org}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "org parameter",
+        "enum": null,
+        "name": "org",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List public events performed by a user",
+    "scope": "activity",
+    "id": "listPublicEventsForUser",
+    "method": "GET",
+    "url": "/users/{username}/events/public",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List a user's followers",
+    "scope": "users",
+    "id": "listFollowersForUser",
+    "method": "GET",
+    "url": "/users/{username}/followers",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List who a user is following",
+    "scope": "users",
+    "id": "listFollowingForUser",
+    "method": "GET",
+    "url": "/users/{username}/following",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Check if one user follows another",
+    "scope": "users",
+    "id": "checkFollowingForUser",
+    "method": "GET",
+    "url": "/users/{username}/following/{target_user}",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "target_user parameter",
+        "enum": null,
+        "name": "target_user",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List public gists for the specified user",
+    "scope": "gists",
+    "id": "listPublicForUser",
+    "method": "GET",
+    "url": "/users/{username}/gists",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Only gists updated at or after this time are returned.",
+        "enum": null,
+        "name": "since",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List GPG keys for a user",
+    "scope": "users",
+    "id": "listGpgKeysForUser",
+    "method": "GET",
+    "url": "/users/{username}/gpg_keys",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get contextual information about a user",
+    "scope": "users",
+    "id": "getContextForUser",
+    "method": "GET",
+    "url": "/users/{username}/hovercard",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Identifies which additional information you'd like to receive about the person's hovercard. Can be `organization`, `repository`, `issue`, `pull_request`. **Required** when using `subject_id`.",
+        "enum": ["organization", "repository", "issue", "pull_request"],
+        "name": "subject_type",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Uses the ID for the `subject_type` you specified. **Required** when using `subject_type`.",
+        "enum": null,
+        "name": "subject_id",
+        "type": "string",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "Get a user installation",
+    "scope": "apps",
+    "id": "getUserInstallation",
+    "method": "GET",
+    "url": "/users/{username}/installation",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "Get a user installation",
+    "scope": "apps",
+    "id": "findUserInstallation",
+    "method": "GET",
+    "url": "/users/{username}/installation",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      }
+    ]
+  },
+  {
+    "name": "List public keys for a user",
+    "scope": "users",
+    "id": "listPublicKeysForUser",
+    "method": "GET",
+    "url": "/users/{username}/keys",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List user organizations",
+    "scope": "orgs",
+    "id": "listForUser",
+    "method": "GET",
+    "url": "/users/{username}/orgs",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List user projects",
+    "scope": "projects",
+    "id": "listForUser",
+    "method": "GET",
+    "url": "/users/{username}/projects",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Indicates the state of the projects to return. Can be either `open`, `closed`, or `all`.",
+        "enum": ["open", "closed", "all"],
+        "name": "state",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List events that a user has received",
+    "scope": "activity",
+    "id": "listReceivedEventsForUser",
+    "method": "GET",
+    "url": "/users/{username}/received_events",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List public events that a user has received",
+    "scope": "activity",
+    "id": "listReceivedPublicEventsForUser",
+    "method": "GET",
+    "url": "/users/{username}/received_events/public",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List user repositories",
+    "scope": "repos",
+    "id": "listForUser",
+    "method": "GET",
+    "url": "/users/{username}/repos",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Can be one of `all`, `owner`, `member`.",
+        "enum": ["all", "owner", "member"],
+        "name": "type",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Can be one of `created`, `updated`, `pushed`, `full_name`.",
+        "enum": ["created", "updated", "pushed", "full_name"],
+        "name": "sort",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Can be one of `asc` or `desc`. Default: `asc` when using `full_name`, otherwise `desc`",
+        "enum": ["asc", "desc"],
+        "name": "direction",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List repositories being starred by a user",
+    "scope": "activity",
+    "id": "listReposStarredByUser",
+    "method": "GET",
+    "url": "/users/{username}/starred",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "One of `created` (when the repository was starred) or `updated` (when it was last pushed to).",
+        "enum": ["created", "updated"],
+        "name": "sort",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "One of `asc` (ascending) or `desc` (descending).",
+        "enum": ["asc", "desc"],
+        "name": "direction",
+        "type": "string",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  },
+  {
+    "name": "List repositories being watched by a user",
+    "scope": "activity",
+    "id": "listReposWatchedByUser",
+    "method": "GET",
+    "url": "/users/{username}/subscriptions",
+    "parameters": [
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "username parameter",
+        "enum": null,
+        "name": "username",
+        "type": "string",
+        "required": true
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Results per page (max 100)",
+        "enum": null,
+        "name": "per_page",
+        "type": "integer",
+        "required": false
+      },
+      {
+        "alias": null,
+        "allowNull": false,
+        "deprecated": null,
+        "description": "Page number of the results to fetch.",
+        "enum": null,
+        "name": "page",
+        "type": "integer",
+        "required": false
+      }
+    ]
+  }
+]
diff --git a/setup-maven/node_modules/@octokit/types/scripts/update-endpoints/templates/endpoints.ts.template b/setup-maven/node_modules/@octokit/types/scripts/update-endpoints/templates/endpoints.ts.template
new file mode 100644
index 0000000..2eceb2f
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/types/scripts/update-endpoints/templates/endpoints.ts.template
@@ -0,0 +1,33 @@
+// DO NOT EDIT THIS FILE
+import { RequestHeaders } from "../RequestHeaders";
+import { RequestRequestOptions } from "../RequestRequestOptions";
+import { Url } from "../Url";
+
+export interface Endpoints {
+  {{#each endpointsByRoute}}
+  "{{@key}}": [{{union this "optionsTypeName"}}, {{union this "requestOptionsTypeName"}}]
+  {{/each}}
+}
+
+{{#each options}}
+type {{in.name}} = {
+{{#each in.parameters}}
+  {{&jsdoc}}
+  {{{name this}}}: {{{type this}}}
+{{/each}}
+}
+type {{out.name}} = {
+  method: "{{out.method}}",
+  url: Url,
+  headers: RequestHeaders,
+  request: RequestRequestOptions
+}
+{{/each}}
+
+{{#childParams}}
+export type {{paramTypeName}} = {
+{{#params}}
+  {{{name this}}}: {{{type this}}}
+{{/params}}
+};
+{{/childParams}}
\ No newline at end of file
diff --git a/setup-maven/node_modules/@octokit/types/scripts/update-endpoints/typescript.js b/setup-maven/node_modules/@octokit/types/scripts/update-endpoints/typescript.js
new file mode 100644
index 0000000..2095c6c
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/types/scripts/update-endpoints/typescript.js
@@ -0,0 +1,179 @@
+const { readFileSync, writeFileSync } = require("fs");
+const { resolve } = require("path");
+
+const Handlebars = require("handlebars");
+const set = require("lodash.set");
+const pascalCase = require("pascal-case");
+const prettier = require("prettier");
+const { stringToJsdocComment } = require("string-to-jsdoc-comment");
+const sortKeys = require("sort-keys");
+
+const ENDPOINTS = require("./generated/Endpoints.json");
+const ENDPOINTS_PATH = resolve(
+  process.cwd(),
+  "src",
+  "generated",
+  "Endpoints.ts"
+);
+const ENDPOINTS_TEMPLATE_PATH = resolve(
+  process.cwd(),
+  "scripts",
+  "update-endpoints",
+  "templates",
+  "endpoints.ts.template"
+);
+
+Handlebars.registerHelper("union", function(endpoints, key) {
+  return endpoints.map(endpoint => endpoint[key]).join(" | ");
+});
+Handlebars.registerHelper("name", function(parameter) {
+  let name = parameter.key;
+
+  if (/[.\[]/.test(name)) {
+    name = `"${name}"`;
+  }
+
+  if (parameter.required) {
+    return name;
+  }
+
+  return `${name}?`;
+});
+
+Handlebars.registerHelper("type", function(parameter) {
+  const type = typeMap[parameter.type] || parameter.type;
+
+  if (parameter.allowNull) {
+    return `${type} | null`;
+  }
+
+  return type;
+});
+const template = Handlebars.compile(
+  readFileSync(ENDPOINTS_TEMPLATE_PATH, "utf8")
+);
+
+const endpointsByRoute = {};
+
+const typeMap = {
+  integer: "number",
+  "integer[]": "number[]"
+};
+
+for (const endpoint of ENDPOINTS) {
+  const route = `${endpoint.method} ${endpoint.url.replace(
+    /\{([^}]+)}/g,
+    ":$1"
+  )}`;
+
+  if (!endpointsByRoute[route]) {
+    endpointsByRoute[route] = [];
+  }
+
+  endpointsByRoute[route].push({
+    optionsTypeName:
+      pascalCase(`${endpoint.scope} ${endpoint.id}`) + "Endpoint",
+    requestOptionsTypeName:
+      pascalCase(`${endpoint.scope} ${endpoint.id}`) + "RequestOptions"
+  });
+}
+
+const options = [];
+const childParams = {};
+
+for (const endpoint of ENDPOINTS) {
+  const { method, parameters } = endpoint;
+
+  const optionsTypeName =
+    pascalCase(`${endpoint.scope} ${endpoint.id}`) + "Endpoint";
+  const requestOptionsTypeName =
+    pascalCase(`${endpoint.scope} ${endpoint.id}`) + "RequestOptions";
+
+  options.push({
+    in: {
+      name: optionsTypeName,
+      parameters: parameters
+        .map(parameterize)
+        // handle "object" & "object[]" types
+        .map(parameter => {
+          if (parameter.deprecated) {
+            return;
+          }
+
+          const namespacedParamsName = pascalCase(
+            `${endpoint.scope}.${endpoint.id}.Params`
+          );
+
+          if (parameter.type === "object" || parameter.type === "object[]") {
+            const childParamsName = pascalCase(
+              `${namespacedParamsName}.${parameter.key}`
+            );
+
+            parameter.type = parameter.type.replace("object", childParamsName);
+
+            if (!childParams[childParamsName]) {
+              childParams[childParamsName] = {};
+            }
+          }
+
+          if (!/\./.test(parameter.key)) {
+            return parameter;
+          }
+
+          const childKey = parameter.key.split(".").pop();
+          const parentKey = parameter.key.replace(/\.[^.]+$/, "");
+
+          parameter.key = childKey;
+
+          const childParamsName = pascalCase(
+            `${namespacedParamsName}.${parentKey}`
+          );
+          set(childParams, `${childParamsName}.${childKey}`, parameter);
+        })
+        .filter(Boolean)
+    },
+    out: {
+      name: requestOptionsTypeName,
+      method
+    }
+  });
+}
+
+const result = template({
+  endpointsByRoute: sortKeys(endpointsByRoute, { deep: true }),
+  options,
+  childParams: Object.keys(childParams).map(key => {
+    if (key === "GistsCreateParamsFiles") {
+      debugger;
+    }
+    return {
+      paramTypeName: key,
+      params: Object.values(childParams[key])
+    };
+  })
+});
+
+writeFileSync(
+  ENDPOINTS_PATH,
+  prettier.format(result, { parser: "typescript" })
+);
+console.log(`${ENDPOINTS_PATH} updated.`);
+
+function parameterize(parameter) {
+  const key = parameter.name;
+  const type = typeMap[parameter.type] || parameter.type;
+  const enums = parameter.enum
+    ? parameter.enum.map(JSON.stringify).join("|")
+    : null;
+
+  return {
+    name: pascalCase(key),
+    key: key,
+    required: parameter.required,
+    type: enums || type,
+    alias: parameter.alias,
+    deprecated: parameter.deprecated,
+    allowNull: parameter.allowNull,
+    jsdoc: stringToJsdocComment(parameter.description)
+  };
+}
diff --git a/setup-maven/node_modules/@octokit/types/src/AuthInterface.ts b/setup-maven/node_modules/@octokit/types/src/AuthInterface.ts
new file mode 100644
index 0000000..8f58743
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/types/src/AuthInterface.ts
@@ -0,0 +1,43 @@
+import { EndpointOptions } from "./EndpointOptions";
+import { OctokitResponse } from "./OctokitResponse";
+import { RequestInterface } from "./RequestInterface";
+import { RequestParameters } from "./RequestParameters";
+import { Route } from "./Route";
+
+/**
+ * Interface to implement complex authentication strategies for Octokit.
+ * An object Implementing the AuthInterface can directly be passed as the
+ * `auth` option in the Octokit constructor.
+ *
+ * For the official implementations of the most common authentication
+ * strategies, see https://github.com/octokit/auth.js
+ */
+export interface AuthInterface<
+  AuthOptions extends any[],
+  Authentication extends any
+> {
+  (...args: AuthOptions): Promise<Authentication>;
+
+  hook: {
+    /**
+     * Sends a request using the passed `request` instance
+     *
+     * @param {object} endpoint Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`.
+     */
+    <T = any>(request: RequestInterface, options: EndpointOptions): Promise<
+      OctokitResponse<T>
+    >;
+
+    /**
+     * Sends a request using the passed `request` instance
+     *
+     * @param {string} route Request method + URL. Example: `'GET /orgs/:org'`
+     * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`.
+     */
+    <T = any>(
+      request: RequestInterface,
+      route: Route,
+      parameters?: RequestParameters
+    ): Promise<OctokitResponse<T>>;
+  };
+}
diff --git a/setup-maven/node_modules/@octokit/types/src/EndpointDefaults.ts b/setup-maven/node_modules/@octokit/types/src/EndpointDefaults.ts
new file mode 100644
index 0000000..024f6eb
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/types/src/EndpointDefaults.ts
@@ -0,0 +1,22 @@
+import { RequestHeaders } from "./RequestHeaders";
+import { RequestMethod } from "./RequestMethod";
+import { RequestParameters } from "./RequestParameters";
+import { Url } from "./Url";
+
+/**
+ * The `.endpoint()` method is guaranteed to set all keys defined by RequestParameters
+ * as well as the method property.
+ */
+export type EndpointDefaults = RequestParameters & {
+  baseUrl: Url;
+  method: RequestMethod;
+  url?: Url;
+  headers: RequestHeaders & {
+    accept: string;
+    "user-agent": string;
+  };
+  mediaType: {
+    format: string;
+    previews: string[];
+  };
+};
diff --git a/setup-maven/node_modules/@octokit/types/src/EndpointInterface.ts b/setup-maven/node_modules/@octokit/types/src/EndpointInterface.ts
new file mode 100644
index 0000000..fee78d6
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/types/src/EndpointInterface.ts
@@ -0,0 +1,74 @@
+import { EndpointDefaults } from "./EndpointDefaults";
+import { EndpointOptions } from "./EndpointOptions";
+import { RequestOptions } from "./RequestOptions";
+import { RequestParameters } from "./RequestParameters";
+import { Route } from "./Route";
+
+import { Endpoints } from "./generated/Endpoints";
+
+export interface EndpointInterface {
+  /**
+   * Transforms a GitHub REST API endpoint into generic request options
+   *
+   * @param {object} endpoint Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`.
+   */
+  (options: EndpointOptions): RequestOptions;
+
+  /**
+   * Transforms a GitHub REST API endpoint into generic request options
+   *
+   * @param {string} route Request method + URL. Example: `'GET /orgs/:org'`
+   * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`.
+   */
+  <R extends Route>(
+    route: keyof Endpoints | R,
+    options?: R extends keyof Endpoints
+      ? Endpoints[R][0] & RequestParameters
+      : RequestParameters
+  ): R extends keyof Endpoints ? Endpoints[R][1] : RequestOptions;
+
+  /**
+   * Object with current default route and parameters
+   */
+  DEFAULTS: EndpointDefaults;
+
+  /**
+   * Returns a new `endpoint` with updated route and parameters
+   */
+  defaults: (newDefaults: RequestParameters) => EndpointInterface;
+
+  merge: {
+    /**
+     * Merges current endpoint defaults with passed route and parameters,
+     * without transforming them into request options.
+     *
+     * @param {string} route Request method + URL. Example: `'GET /orgs/:org'`
+     * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`.
+     *
+     */
+    (route: Route, parameters?: RequestParameters): EndpointDefaults;
+
+    /**
+     * Merges current endpoint defaults with passed route and parameters,
+     * without transforming them into request options.
+     *
+     * @param {object} endpoint Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`.
+     */
+    (options: RequestParameters): EndpointDefaults;
+
+    /**
+     * Returns current default options.
+     *
+     * @deprecated use endpoint.DEFAULTS instead
+     */
+    (): EndpointDefaults;
+  };
+
+  /**
+   * Stateless method to turn endpoint options into request options.
+   * Calling `endpoint(options)` is the same as calling `endpoint.parse(endpoint.merge(options))`.
+   *
+   * @param {object} options `method`, `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`.
+   */
+  parse: (options: EndpointDefaults) => RequestOptions;
+}
diff --git a/setup-maven/node_modules/@octokit/types/src/EndpointOptions.ts b/setup-maven/node_modules/@octokit/types/src/EndpointOptions.ts
new file mode 100644
index 0000000..0170604
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/types/src/EndpointOptions.ts
@@ -0,0 +1,8 @@
+import { RequestMethod } from "./RequestMethod";
+import { Url } from "./Url";
+import { RequestParameters } from "./RequestParameters";
+
+export type EndpointOptions = RequestParameters & {
+  method: RequestMethod;
+  url: Url;
+};
diff --git a/setup-maven/node_modules/@octokit/types/src/Fetch.ts b/setup-maven/node_modules/@octokit/types/src/Fetch.ts
new file mode 100644
index 0000000..983c79b
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/types/src/Fetch.ts
@@ -0,0 +1,4 @@
+/**
+ * Browser's fetch method (or compatible such as fetch-mock)
+ */
+export type Fetch = any;
diff --git a/setup-maven/node_modules/@octokit/types/src/OctokitResponse.ts b/setup-maven/node_modules/@octokit/types/src/OctokitResponse.ts
new file mode 100644
index 0000000..4cec20d
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/types/src/OctokitResponse.ts
@@ -0,0 +1,18 @@
+import { ResponseHeaders } from "./ResponseHeaders";
+import { Url } from "./Url";
+
+export type OctokitResponse<T> = {
+  headers: ResponseHeaders;
+  /**
+   * http response code
+   */
+  status: number;
+  /**
+   * URL of response after all redirects
+   */
+  url: Url;
+  /**
+   *  This is the data you would see in https://developer.Octokit.com/v3/
+   */
+  data: T;
+};
diff --git a/setup-maven/node_modules/@octokit/types/src/RequestHeaders.ts b/setup-maven/node_modules/@octokit/types/src/RequestHeaders.ts
new file mode 100644
index 0000000..0df6636
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/types/src/RequestHeaders.ts
@@ -0,0 +1,15 @@
+export type RequestHeaders = {
+  /**
+   * Avoid setting `headers.accept`, use `mediaType.{format|previews}` option instead.
+   */
+  accept?: string;
+  /**
+   * Use `authorization` to send authenticated request, remember `token ` / `bearer ` prefixes. Example: `token 1234567890abcdef1234567890abcdef12345678`
+   */
+  authorization?: string;
+  /**
+   * `user-agent` is set do a default and can be overwritten as needed.
+   */
+  "user-agent"?: string;
+  [header: string]: string | number | undefined;
+};
diff --git a/setup-maven/node_modules/@octokit/types/src/RequestInterface.ts b/setup-maven/node_modules/@octokit/types/src/RequestInterface.ts
new file mode 100644
index 0000000..bc4c74f
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/types/src/RequestInterface.ts
@@ -0,0 +1,34 @@
+import { EndpointInterface } from "./EndpointInterface";
+import { EndpointOptions } from "./EndpointOptions";
+import { OctokitResponse } from "./OctokitResponse";
+import { RequestParameters } from "./RequestParameters";
+import { Route } from "./Route";
+
+export interface RequestInterface {
+  /**
+   * Sends a request based on endpoint options
+   *
+   * @param {object} endpoint Must set `method` and `url`. Plus URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`.
+   */
+  <T = any>(options: EndpointOptions): Promise<OctokitResponse<T>>;
+
+  /**
+   * Sends a request based on endpoint options
+   *
+   * @param {string} route Request method + URL. Example: `'GET /orgs/:org'`
+   * @param {object} [parameters] URL, query or body parameters, as well as `headers`, `mediaType.{format|previews}`, `request`, or `baseUrl`.
+   */
+  <T = any>(route: Route, parameters?: RequestParameters): Promise<
+    OctokitResponse<T>
+  >;
+
+  /**
+   * Returns a new `endpoint` with updated route and parameters
+   */
+  defaults: (newDefaults: RequestParameters) => RequestInterface;
+
+  /**
+   * Octokit endpoint API, see {@link https://github.com/octokit/endpoint.js|@octokit/endpoint}
+   */
+  endpoint: EndpointInterface;
+}
diff --git a/setup-maven/node_modules/@octokit/types/src/RequestMethod.ts b/setup-maven/node_modules/@octokit/types/src/RequestMethod.ts
new file mode 100644
index 0000000..2910435
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/types/src/RequestMethod.ts
@@ -0,0 +1,10 @@
+/**
+ * HTTP Verb supported by GitHub's REST API
+ */
+export type RequestMethod =
+  | "DELETE"
+  | "GET"
+  | "HEAD"
+  | "PATCH"
+  | "POST"
+  | "PUT";
diff --git a/setup-maven/node_modules/@octokit/types/src/RequestOptions.ts b/setup-maven/node_modules/@octokit/types/src/RequestOptions.ts
new file mode 100644
index 0000000..4d765c0
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/types/src/RequestOptions.ts
@@ -0,0 +1,15 @@
+import { RequestHeaders } from "./RequestHeaders";
+import { RequestMethod } from "./RequestMethod";
+import { RequestRequestOptions } from "./RequestRequestOptions";
+import { Url } from "./Url";
+
+/**
+ * Generic request options as they are returned by the `endpoint()` method
+ */
+export type RequestOptions = {
+  method: RequestMethod;
+  url: Url;
+  headers: RequestHeaders;
+  body?: any;
+  request?: RequestRequestOptions;
+};
diff --git a/setup-maven/node_modules/@octokit/types/src/RequestParameters.ts b/setup-maven/node_modules/@octokit/types/src/RequestParameters.ts
new file mode 100644
index 0000000..9766be0
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/types/src/RequestParameters.ts
@@ -0,0 +1,46 @@
+import { RequestRequestOptions } from "./RequestRequestOptions";
+import { RequestHeaders } from "./RequestHeaders";
+import { Url } from "./Url";
+
+/**
+ * Parameters that can be passed into `request(route, parameters)` or `endpoint(route, parameters)` methods
+ */
+export type RequestParameters = {
+  /**
+   * Base URL to be used when a relative URL is passed, such as `/orgs/:org`.
+   * If `baseUrl` is `https://enterprise.acme-inc.com/api/v3`, then the request
+   * will be sent to `https://enterprise.acme-inc.com/api/v3/orgs/:org`.
+   */
+  baseUrl?: Url;
+  /**
+   * HTTP headers. Use lowercase keys.
+   */
+  headers?: RequestHeaders;
+  /**
+   * Media type options, see {@link https://developer.github.com/v3/media/|GitHub Developer Guide}
+   */
+  mediaType?: {
+    /**
+     * `json` by default. Can be `raw`, `text`, `html`, `full`, `diff`, `patch`, `sha`, `base64`. Depending on endpoint
+     */
+    format?: string;
+    /**
+     * Custom media type names of {@link https://developer.github.com/v3/media/|API Previews} without the `-preview` suffix.
+     * Example for single preview: `['squirrel-girl']`.
+     * Example for multiple previews: `['squirrel-girl', 'mister-fantastic']`.
+     */
+    previews?: string[];
+  };
+  /**
+   * Pass custom meta information for the request. The `request` object will be returned as is.
+   */
+  request?: RequestRequestOptions;
+  /**
+   * Any additional parameter will be passed as follows
+   * 1. URL parameter if `':parameter'` or `{parameter}` is part of `url`
+   * 2. Query parameter if `method` is `'GET'` or `'HEAD'`
+   * 3. Request body if `parameter` is `'data'`
+   * 4. JSON in the request body in the form of `body[parameter]` unless `parameter` key is `'data'`
+   */
+  [parameter: string]: any;
+};
diff --git a/setup-maven/node_modules/@octokit/types/src/RequestRequestOptions.ts b/setup-maven/node_modules/@octokit/types/src/RequestRequestOptions.ts
new file mode 100644
index 0000000..028d6f7
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/types/src/RequestRequestOptions.ts
@@ -0,0 +1,27 @@
+import { Agent } from "http";
+import { Fetch } from "./Fetch";
+import { Signal } from "./Signal";
+
+/**
+ * Octokit-specific request options which are ignored for the actual request, but can be used by Octokit or plugins to manipulate how the request is sent or how a response is handled
+ */
+export type RequestRequestOptions = {
+  /**
+   * Node only. Useful for custom proxy, certificate, or dns lookup.
+   */
+  agent?: Agent;
+  /**
+   * Custom replacement for built-in fetch method. Useful for testing or request hooks.
+   */
+  fetch?: Fetch;
+  /**
+   * Use an `AbortController` instance to cancel a request. In node you can only cancel streamed requests.
+   */
+  signal?: Signal;
+  /**
+   * Node only. Request/response timeout in ms, it resets on redirect. 0 to disable (OS limit applies). `options.request.signal` is recommended instead.
+   */
+  timeout?: number;
+
+  [option: string]: any;
+};
diff --git a/setup-maven/node_modules/@octokit/types/src/ResponseHeaders.ts b/setup-maven/node_modules/@octokit/types/src/ResponseHeaders.ts
new file mode 100644
index 0000000..17267b6
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/types/src/ResponseHeaders.ts
@@ -0,0 +1,21 @@
+export type ResponseHeaders = {
+  "cache-control"?: string;
+  "content-length"?: number;
+  "content-type"?: string;
+  date?: string;
+  etag?: string;
+  "last-modified"?: string;
+  link?: string;
+  location?: string;
+  server?: string;
+  status?: string;
+  vary?: string;
+  "x-github-mediatype"?: string;
+  "x-github-request-id"?: string;
+  "x-oauth-scopes"?: string;
+  "x-ratelimit-limit"?: string;
+  "x-ratelimit-remaining"?: string;
+  "x-ratelimit-reset"?: string;
+
+  [header: string]: string | number | undefined;
+};
diff --git a/setup-maven/node_modules/@octokit/types/src/Route.ts b/setup-maven/node_modules/@octokit/types/src/Route.ts
new file mode 100644
index 0000000..c5229a8
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/types/src/Route.ts
@@ -0,0 +1,4 @@
+/**
+ * String consisting of an optional HTTP method and relative path or absolute URL. Examples: `'/orgs/:org'`, `'PUT /orgs/:org'`, `GET https://example.com/foo/bar`
+ */
+export type Route = string;
diff --git a/setup-maven/node_modules/@octokit/types/src/Signal.ts b/setup-maven/node_modules/@octokit/types/src/Signal.ts
new file mode 100644
index 0000000..bdf9700
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/types/src/Signal.ts
@@ -0,0 +1,6 @@
+/**
+ * Abort signal
+ *
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal
+ */
+export type Signal = any;
diff --git a/setup-maven/node_modules/@octokit/types/src/StrategyInterface.ts b/setup-maven/node_modules/@octokit/types/src/StrategyInterface.ts
new file mode 100644
index 0000000..60a55ad
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/types/src/StrategyInterface.ts
@@ -0,0 +1,9 @@
+import { AuthInterface } from "./AuthInterface";
+
+export interface StrategyInterface<
+  StrategyOptions extends any[],
+  AuthOptions extends any[],
+  Authentication extends object
+> {
+  (...args: StrategyOptions): AuthInterface<AuthOptions, Authentication>;
+}
diff --git a/setup-maven/node_modules/@octokit/types/src/Url.ts b/setup-maven/node_modules/@octokit/types/src/Url.ts
new file mode 100644
index 0000000..9d228cb
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/types/src/Url.ts
@@ -0,0 +1,4 @@
+/**
+ * Relative or absolute URL. Examples: `'/orgs/:org'`, `https://example.com/foo/bar`
+ */
+export type Url = string;
diff --git a/setup-maven/node_modules/@octokit/types/src/VERSION.ts b/setup-maven/node_modules/@octokit/types/src/VERSION.ts
new file mode 100644
index 0000000..6c49faf
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/types/src/VERSION.ts
@@ -0,0 +1 @@
+export const VERSION = "2.0.2";
diff --git a/setup-maven/node_modules/@octokit/types/src/generated/Endpoints.ts b/setup-maven/node_modules/@octokit/types/src/generated/Endpoints.ts
new file mode 100644
index 0000000..3aec914
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/types/src/generated/Endpoints.ts
@@ -0,0 +1,14190 @@
+// DO NOT EDIT THIS FILE
+import { RequestHeaders } from "../RequestHeaders";
+import { RequestRequestOptions } from "../RequestRequestOptions";
+import { Url } from "../Url";
+
+export interface Endpoints {
+  "DELETE /app/installations/:installation_id": [
+    AppsDeleteInstallationEndpoint,
+    AppsDeleteInstallationRequestOptions
+  ];
+  "DELETE /applications/:client_id/grants/:access_token": [
+    OauthAuthorizationsRevokeGrantForApplicationEndpoint,
+    OauthAuthorizationsRevokeGrantForApplicationRequestOptions
+  ];
+  "DELETE /applications/:client_id/tokens/:access_token": [
+    OauthAuthorizationsRevokeAuthorizationForApplicationEndpoint,
+    OauthAuthorizationsRevokeAuthorizationForApplicationRequestOptions
+  ];
+  "DELETE /applications/grants/:grant_id": [
+    OauthAuthorizationsDeleteGrantEndpoint,
+    OauthAuthorizationsDeleteGrantRequestOptions
+  ];
+  "DELETE /authorizations/:authorization_id": [
+    OauthAuthorizationsDeleteAuthorizationEndpoint,
+    OauthAuthorizationsDeleteAuthorizationRequestOptions
+  ];
+  "DELETE /gists/:gist_id": [GistsDeleteEndpoint, GistsDeleteRequestOptions];
+  "DELETE /gists/:gist_id/comments/:comment_id": [
+    GistsDeleteCommentEndpoint,
+    GistsDeleteCommentRequestOptions
+  ];
+  "DELETE /gists/:gist_id/star": [
+    GistsUnstarEndpoint,
+    GistsUnstarRequestOptions
+  ];
+  "DELETE /notifications/threads/:thread_id/subscription": [
+    ActivityDeleteThreadSubscriptionEndpoint,
+    ActivityDeleteThreadSubscriptionRequestOptions
+  ];
+  "DELETE /orgs/:org/blocks/:username": [
+    OrgsUnblockUserEndpoint,
+    OrgsUnblockUserRequestOptions
+  ];
+  "DELETE /orgs/:org/credential-authorizations/:credential_id": [
+    OrgsRemoveCredentialAuthorizationEndpoint,
+    OrgsRemoveCredentialAuthorizationRequestOptions
+  ];
+  "DELETE /orgs/:org/hooks/:hook_id": [
+    OrgsDeleteHookEndpoint,
+    OrgsDeleteHookRequestOptions
+  ];
+  "DELETE /orgs/:org/interaction-limits": [
+    InteractionsRemoveRestrictionsForOrgEndpoint,
+    InteractionsRemoveRestrictionsForOrgRequestOptions
+  ];
+  "DELETE /orgs/:org/members/:username": [
+    OrgsRemoveMemberEndpoint,
+    OrgsRemoveMemberRequestOptions
+  ];
+  "DELETE /orgs/:org/memberships/:username": [
+    OrgsRemoveMembershipEndpoint,
+    OrgsRemoveMembershipRequestOptions
+  ];
+  "DELETE /orgs/:org/migrations/:migration_id/archive": [
+    MigrationsDeleteArchiveForOrgEndpoint,
+    MigrationsDeleteArchiveForOrgRequestOptions
+  ];
+  "DELETE /orgs/:org/migrations/:migration_id/repos/:repo_name/lock": [
+    MigrationsUnlockRepoForOrgEndpoint,
+    MigrationsUnlockRepoForOrgRequestOptions
+  ];
+  "DELETE /orgs/:org/outside_collaborators/:username": [
+    OrgsRemoveOutsideCollaboratorEndpoint,
+    OrgsRemoveOutsideCollaboratorRequestOptions
+  ];
+  "DELETE /orgs/:org/public_members/:username": [
+    OrgsConcealMembershipEndpoint,
+    OrgsConcealMembershipRequestOptions
+  ];
+  "DELETE /projects/:project_id": [
+    ProjectsDeleteEndpoint,
+    ProjectsDeleteRequestOptions
+  ];
+  "DELETE /projects/:project_id/collaborators/:username": [
+    ProjectsRemoveCollaboratorEndpoint,
+    ProjectsRemoveCollaboratorRequestOptions
+  ];
+  "DELETE /projects/columns/:column_id": [
+    ProjectsDeleteColumnEndpoint,
+    ProjectsDeleteColumnRequestOptions
+  ];
+  "DELETE /projects/columns/cards/:card_id": [
+    ProjectsDeleteCardEndpoint,
+    ProjectsDeleteCardRequestOptions
+  ];
+  "DELETE /reactions/:reaction_id": [
+    ReactionsDeleteEndpoint,
+    ReactionsDeleteRequestOptions
+  ];
+  "DELETE /repos/:owner/:repo": [
+    ReposDeleteEndpoint,
+    ReposDeleteRequestOptions
+  ];
+  "DELETE /repos/:owner/:repo/automated-security-fixes": [
+    ReposDisableAutomatedSecurityFixesEndpoint,
+    ReposDisableAutomatedSecurityFixesRequestOptions
+  ];
+  "DELETE /repos/:owner/:repo/branches/:branch/protection": [
+    ReposRemoveBranchProtectionEndpoint,
+    ReposRemoveBranchProtectionRequestOptions
+  ];
+  "DELETE /repos/:owner/:repo/branches/:branch/protection/enforce_admins": [
+    ReposRemoveProtectedBranchAdminEnforcementEndpoint,
+    ReposRemoveProtectedBranchAdminEnforcementRequestOptions
+  ];
+  "DELETE /repos/:owner/:repo/branches/:branch/protection/required_pull_request_reviews": [
+    ReposRemoveProtectedBranchPullRequestReviewEnforcementEndpoint,
+    ReposRemoveProtectedBranchPullRequestReviewEnforcementRequestOptions
+  ];
+  "DELETE /repos/:owner/:repo/branches/:branch/protection/required_signatures": [
+    ReposRemoveProtectedBranchRequiredSignaturesEndpoint,
+    ReposRemoveProtectedBranchRequiredSignaturesRequestOptions
+  ];
+  "DELETE /repos/:owner/:repo/branches/:branch/protection/required_status_checks": [
+    ReposRemoveProtectedBranchRequiredStatusChecksEndpoint,
+    ReposRemoveProtectedBranchRequiredStatusChecksRequestOptions
+  ];
+  "DELETE /repos/:owner/:repo/branches/:branch/protection/required_status_checks/contexts": [
+    ReposRemoveProtectedBranchRequiredStatusChecksContextsEndpoint,
+    ReposRemoveProtectedBranchRequiredStatusChecksContextsRequestOptions
+  ];
+  "DELETE /repos/:owner/:repo/branches/:branch/protection/restrictions": [
+    ReposRemoveProtectedBranchRestrictionsEndpoint,
+    ReposRemoveProtectedBranchRestrictionsRequestOptions
+  ];
+  "DELETE /repos/:owner/:repo/branches/:branch/protection/restrictions/apps": [
+    ReposRemoveProtectedBranchAppRestrictionsEndpoint,
+    ReposRemoveProtectedBranchAppRestrictionsRequestOptions
+  ];
+  "DELETE /repos/:owner/:repo/branches/:branch/protection/restrictions/teams": [
+    ReposRemoveProtectedBranchTeamRestrictionsEndpoint,
+    ReposRemoveProtectedBranchTeamRestrictionsRequestOptions
+  ];
+  "DELETE /repos/:owner/:repo/branches/:branch/protection/restrictions/users": [
+    ReposRemoveProtectedBranchUserRestrictionsEndpoint,
+    ReposRemoveProtectedBranchUserRestrictionsRequestOptions
+  ];
+  "DELETE /repos/:owner/:repo/collaborators/:username": [
+    ReposRemoveCollaboratorEndpoint,
+    ReposRemoveCollaboratorRequestOptions
+  ];
+  "DELETE /repos/:owner/:repo/comments/:comment_id": [
+    ReposDeleteCommitCommentEndpoint,
+    ReposDeleteCommitCommentRequestOptions
+  ];
+  "DELETE /repos/:owner/:repo/contents/:path": [
+    ReposDeleteFileEndpoint,
+    ReposDeleteFileRequestOptions
+  ];
+  "DELETE /repos/:owner/:repo/downloads/:download_id": [
+    ReposDeleteDownloadEndpoint,
+    ReposDeleteDownloadRequestOptions
+  ];
+  "DELETE /repos/:owner/:repo/git/refs/:ref": [
+    GitDeleteRefEndpoint,
+    GitDeleteRefRequestOptions
+  ];
+  "DELETE /repos/:owner/:repo/hooks/:hook_id": [
+    ReposDeleteHookEndpoint,
+    ReposDeleteHookRequestOptions
+  ];
+  "DELETE /repos/:owner/:repo/import": [
+    MigrationsCancelImportEndpoint,
+    MigrationsCancelImportRequestOptions
+  ];
+  "DELETE /repos/:owner/:repo/interaction-limits": [
+    InteractionsRemoveRestrictionsForRepoEndpoint,
+    InteractionsRemoveRestrictionsForRepoRequestOptions
+  ];
+  "DELETE /repos/:owner/:repo/invitations/:invitation_id": [
+    ReposDeleteInvitationEndpoint,
+    ReposDeleteInvitationRequestOptions
+  ];
+  "DELETE /repos/:owner/:repo/issues/:issue_number/assignees": [
+    IssuesRemoveAssigneesEndpoint,
+    IssuesRemoveAssigneesRequestOptions
+  ];
+  "DELETE /repos/:owner/:repo/issues/:issue_number/labels": [
+    IssuesRemoveLabelsEndpoint,
+    IssuesRemoveLabelsRequestOptions
+  ];
+  "DELETE /repos/:owner/:repo/issues/:issue_number/labels/:name": [
+    IssuesRemoveLabelEndpoint,
+    IssuesRemoveLabelRequestOptions
+  ];
+  "DELETE /repos/:owner/:repo/issues/:issue_number/lock": [
+    IssuesUnlockEndpoint,
+    IssuesUnlockRequestOptions
+  ];
+  "DELETE /repos/:owner/:repo/issues/comments/:comment_id": [
+    IssuesDeleteCommentEndpoint,
+    IssuesDeleteCommentRequestOptions
+  ];
+  "DELETE /repos/:owner/:repo/keys/:key_id": [
+    ReposRemoveDeployKeyEndpoint,
+    ReposRemoveDeployKeyRequestOptions
+  ];
+  "DELETE /repos/:owner/:repo/labels/:name": [
+    IssuesDeleteLabelEndpoint,
+    IssuesDeleteLabelRequestOptions
+  ];
+  "DELETE /repos/:owner/:repo/milestones/:milestone_number": [
+    IssuesDeleteMilestoneEndpoint,
+    IssuesDeleteMilestoneRequestOptions
+  ];
+  "DELETE /repos/:owner/:repo/pages": [
+    ReposDisablePagesSiteEndpoint,
+    ReposDisablePagesSiteRequestOptions
+  ];
+  "DELETE /repos/:owner/:repo/pulls/:pull_number/requested_reviewers": [
+    PullsDeleteReviewRequestEndpoint,
+    PullsDeleteReviewRequestRequestOptions
+  ];
+  "DELETE /repos/:owner/:repo/pulls/:pull_number/reviews/:review_id": [
+    PullsDeletePendingReviewEndpoint,
+    PullsDeletePendingReviewRequestOptions
+  ];
+  "DELETE /repos/:owner/:repo/pulls/comments/:comment_id": [
+    PullsDeleteCommentEndpoint,
+    PullsDeleteCommentRequestOptions
+  ];
+  "DELETE /repos/:owner/:repo/releases/:release_id": [
+    ReposDeleteReleaseEndpoint,
+    ReposDeleteReleaseRequestOptions
+  ];
+  "DELETE /repos/:owner/:repo/releases/assets/:asset_id": [
+    ReposDeleteReleaseAssetEndpoint,
+    ReposDeleteReleaseAssetRequestOptions
+  ];
+  "DELETE /repos/:owner/:repo/subscription": [
+    ActivityDeleteRepoSubscriptionEndpoint,
+    ActivityDeleteRepoSubscriptionRequestOptions
+  ];
+  "DELETE /repos/:owner/:repo/vulnerability-alerts": [
+    ReposDisableVulnerabilityAlertsEndpoint,
+    ReposDisableVulnerabilityAlertsRequestOptions
+  ];
+  "DELETE /scim/v2/organizations/:org/Users/:scim_user_id": [
+    ScimRemoveUserFromOrgEndpoint,
+    ScimRemoveUserFromOrgRequestOptions
+  ];
+  "DELETE /teams/:team_id": [TeamsDeleteEndpoint, TeamsDeleteRequestOptions];
+  "DELETE /teams/:team_id/discussions/:discussion_number": [
+    TeamsDeleteDiscussionEndpoint,
+    TeamsDeleteDiscussionRequestOptions
+  ];
+  "DELETE /teams/:team_id/discussions/:discussion_number/comments/:comment_number": [
+    TeamsDeleteDiscussionCommentEndpoint,
+    TeamsDeleteDiscussionCommentRequestOptions
+  ];
+  "DELETE /teams/:team_id/members/:username": [
+    TeamsRemoveMemberEndpoint,
+    TeamsRemoveMemberRequestOptions
+  ];
+  "DELETE /teams/:team_id/memberships/:username": [
+    TeamsRemoveMembershipEndpoint,
+    TeamsRemoveMembershipRequestOptions
+  ];
+  "DELETE /teams/:team_id/projects/:project_id": [
+    TeamsRemoveProjectEndpoint,
+    TeamsRemoveProjectRequestOptions
+  ];
+  "DELETE /teams/:team_id/repos/:owner/:repo": [
+    TeamsRemoveRepoEndpoint,
+    TeamsRemoveRepoRequestOptions
+  ];
+  "DELETE /user/blocks/:username": [
+    UsersUnblockEndpoint,
+    UsersUnblockRequestOptions
+  ];
+  "DELETE /user/emails": [
+    UsersDeleteEmailsEndpoint,
+    UsersDeleteEmailsRequestOptions
+  ];
+  "DELETE /user/following/:username": [
+    UsersUnfollowEndpoint,
+    UsersUnfollowRequestOptions
+  ];
+  "DELETE /user/gpg_keys/:gpg_key_id": [
+    UsersDeleteGpgKeyEndpoint,
+    UsersDeleteGpgKeyRequestOptions
+  ];
+  "DELETE /user/installations/:installation_id/repositories/:repository_id": [
+    AppsRemoveRepoFromInstallationEndpoint,
+    AppsRemoveRepoFromInstallationRequestOptions
+  ];
+  "DELETE /user/keys/:key_id": [
+    UsersDeletePublicKeyEndpoint,
+    UsersDeletePublicKeyRequestOptions
+  ];
+  "DELETE /user/migrations/:migration_id/archive": [
+    MigrationsDeleteArchiveForAuthenticatedUserEndpoint,
+    MigrationsDeleteArchiveForAuthenticatedUserRequestOptions
+  ];
+  "DELETE /user/migrations/:migration_id/repos/:repo_name/lock": [
+    MigrationsUnlockRepoForAuthenticatedUserEndpoint,
+    MigrationsUnlockRepoForAuthenticatedUserRequestOptions
+  ];
+  "DELETE /user/repository_invitations/:invitation_id": [
+    ReposDeclineInvitationEndpoint,
+    ReposDeclineInvitationRequestOptions
+  ];
+  "DELETE /user/starred/:owner/:repo": [
+    ActivityUnstarRepoEndpoint,
+    ActivityUnstarRepoRequestOptions
+  ];
+  "DELETE /user/subscriptions/:owner/:repo": [
+    ActivityStopWatchingRepoLegacyEndpoint,
+    ActivityStopWatchingRepoLegacyRequestOptions
+  ];
+  "GET /app": [
+    AppsGetAuthenticatedEndpoint,
+    AppsGetAuthenticatedRequestOptions
+  ];
+  "GET /app/installations": [
+    AppsListInstallationsEndpoint,
+    AppsListInstallationsRequestOptions
+  ];
+  "GET /app/installations/:installation_id": [
+    AppsGetInstallationEndpoint,
+    AppsGetInstallationRequestOptions
+  ];
+  "GET /applications/:client_id/tokens/:access_token": [
+    OauthAuthorizationsCheckAuthorizationEndpoint,
+    OauthAuthorizationsCheckAuthorizationRequestOptions
+  ];
+  "GET /applications/grants": [
+    OauthAuthorizationsListGrantsEndpoint,
+    OauthAuthorizationsListGrantsRequestOptions
+  ];
+  "GET /applications/grants/:grant_id": [
+    OauthAuthorizationsGetGrantEndpoint,
+    OauthAuthorizationsGetGrantRequestOptions
+  ];
+  "GET /apps/:app_slug": [AppsGetBySlugEndpoint, AppsGetBySlugRequestOptions];
+  "GET /authorizations": [
+    OauthAuthorizationsListAuthorizationsEndpoint,
+    OauthAuthorizationsListAuthorizationsRequestOptions
+  ];
+  "GET /authorizations/:authorization_id": [
+    OauthAuthorizationsGetAuthorizationEndpoint,
+    OauthAuthorizationsGetAuthorizationRequestOptions
+  ];
+  "GET /codes_of_conduct": [
+    CodesOfConductListConductCodesEndpoint,
+    CodesOfConductListConductCodesRequestOptions
+  ];
+  "GET /codes_of_conduct/:key": [
+    CodesOfConductGetConductCodeEndpoint,
+    CodesOfConductGetConductCodeRequestOptions
+  ];
+  "GET /emojis": [EmojisGetEndpoint, EmojisGetRequestOptions];
+  "GET /events": [
+    ActivityListPublicEventsEndpoint,
+    ActivityListPublicEventsRequestOptions
+  ];
+  "GET /feeds": [ActivityListFeedsEndpoint, ActivityListFeedsRequestOptions];
+  "GET /gists": [GistsListEndpoint, GistsListRequestOptions];
+  "GET /gists/:gist_id": [GistsGetEndpoint, GistsGetRequestOptions];
+  "GET /gists/:gist_id/:sha": [
+    GistsGetRevisionEndpoint,
+    GistsGetRevisionRequestOptions
+  ];
+  "GET /gists/:gist_id/comments": [
+    GistsListCommentsEndpoint,
+    GistsListCommentsRequestOptions
+  ];
+  "GET /gists/:gist_id/comments/:comment_id": [
+    GistsGetCommentEndpoint,
+    GistsGetCommentRequestOptions
+  ];
+  "GET /gists/:gist_id/commits": [
+    GistsListCommitsEndpoint,
+    GistsListCommitsRequestOptions
+  ];
+  "GET /gists/:gist_id/forks": [
+    GistsListForksEndpoint,
+    GistsListForksRequestOptions
+  ];
+  "GET /gists/:gist_id/star": [
+    GistsCheckIsStarredEndpoint,
+    GistsCheckIsStarredRequestOptions
+  ];
+  "GET /gists/public": [GistsListPublicEndpoint, GistsListPublicRequestOptions];
+  "GET /gists/starred": [
+    GistsListStarredEndpoint,
+    GistsListStarredRequestOptions
+  ];
+  "GET /gitignore/templates": [
+    GitignoreListTemplatesEndpoint,
+    GitignoreListTemplatesRequestOptions
+  ];
+  "GET /gitignore/templates/:name": [
+    GitignoreGetTemplateEndpoint,
+    GitignoreGetTemplateRequestOptions
+  ];
+  "GET /installation/repositories": [
+    AppsListReposEndpoint,
+    AppsListReposRequestOptions
+  ];
+  "GET /issues": [IssuesListEndpoint, IssuesListRequestOptions];
+  "GET /legacy/issues/search/:owner/:repository/:state/:keyword": [
+    SearchIssuesLegacyEndpoint,
+    SearchIssuesLegacyRequestOptions
+  ];
+  "GET /legacy/repos/search/:keyword": [
+    SearchReposLegacyEndpoint,
+    SearchReposLegacyRequestOptions
+  ];
+  "GET /legacy/user/email/:email": [
+    SearchEmailLegacyEndpoint,
+    SearchEmailLegacyRequestOptions
+  ];
+  "GET /legacy/user/search/:keyword": [
+    SearchUsersLegacyEndpoint,
+    SearchUsersLegacyRequestOptions
+  ];
+  "GET /licenses": [
+    LicensesListCommonlyUsedEndpoint | LicensesListEndpoint,
+    LicensesListCommonlyUsedRequestOptions | LicensesListRequestOptions
+  ];
+  "GET /licenses/:license": [LicensesGetEndpoint, LicensesGetRequestOptions];
+  "GET /marketplace_listing/accounts/:account_id": [
+    AppsCheckAccountIsAssociatedWithAnyEndpoint,
+    AppsCheckAccountIsAssociatedWithAnyRequestOptions
+  ];
+  "GET /marketplace_listing/plans": [
+    AppsListPlansEndpoint,
+    AppsListPlansRequestOptions
+  ];
+  "GET /marketplace_listing/plans/:plan_id/accounts": [
+    AppsListAccountsUserOrOrgOnPlanEndpoint,
+    AppsListAccountsUserOrOrgOnPlanRequestOptions
+  ];
+  "GET /marketplace_listing/stubbed/accounts/:account_id": [
+    AppsCheckAccountIsAssociatedWithAnyStubbedEndpoint,
+    AppsCheckAccountIsAssociatedWithAnyStubbedRequestOptions
+  ];
+  "GET /marketplace_listing/stubbed/plans": [
+    AppsListPlansStubbedEndpoint,
+    AppsListPlansStubbedRequestOptions
+  ];
+  "GET /marketplace_listing/stubbed/plans/:plan_id/accounts": [
+    AppsListAccountsUserOrOrgOnPlanStubbedEndpoint,
+    AppsListAccountsUserOrOrgOnPlanStubbedRequestOptions
+  ];
+  "GET /meta": [MetaGetEndpoint, MetaGetRequestOptions];
+  "GET /networks/:owner/:repo/events": [
+    ActivityListPublicEventsForRepoNetworkEndpoint,
+    ActivityListPublicEventsForRepoNetworkRequestOptions
+  ];
+  "GET /notifications": [
+    ActivityListNotificationsEndpoint,
+    ActivityListNotificationsRequestOptions
+  ];
+  "GET /notifications/threads/:thread_id": [
+    ActivityGetThreadEndpoint,
+    ActivityGetThreadRequestOptions
+  ];
+  "GET /notifications/threads/:thread_id/subscription": [
+    ActivityGetThreadSubscriptionEndpoint,
+    ActivityGetThreadSubscriptionRequestOptions
+  ];
+  "GET /organizations": [OrgsListEndpoint, OrgsListRequestOptions];
+  "GET /orgs/:org": [OrgsGetEndpoint, OrgsGetRequestOptions];
+  "GET /orgs/:org/blocks": [
+    OrgsListBlockedUsersEndpoint,
+    OrgsListBlockedUsersRequestOptions
+  ];
+  "GET /orgs/:org/blocks/:username": [
+    OrgsCheckBlockedUserEndpoint,
+    OrgsCheckBlockedUserRequestOptions
+  ];
+  "GET /orgs/:org/credential-authorizations": [
+    OrgsListCredentialAuthorizationsEndpoint,
+    OrgsListCredentialAuthorizationsRequestOptions
+  ];
+  "GET /orgs/:org/events": [
+    ActivityListPublicEventsForOrgEndpoint,
+    ActivityListPublicEventsForOrgRequestOptions
+  ];
+  "GET /orgs/:org/hooks": [OrgsListHooksEndpoint, OrgsListHooksRequestOptions];
+  "GET /orgs/:org/hooks/:hook_id": [
+    OrgsGetHookEndpoint,
+    OrgsGetHookRequestOptions
+  ];
+  "GET /orgs/:org/installation": [
+    AppsGetOrgInstallationEndpoint | AppsFindOrgInstallationEndpoint,
+    AppsGetOrgInstallationRequestOptions | AppsFindOrgInstallationRequestOptions
+  ];
+  "GET /orgs/:org/interaction-limits": [
+    InteractionsGetRestrictionsForOrgEndpoint,
+    InteractionsGetRestrictionsForOrgRequestOptions
+  ];
+  "GET /orgs/:org/invitations": [
+    OrgsListPendingInvitationsEndpoint,
+    OrgsListPendingInvitationsRequestOptions
+  ];
+  "GET /orgs/:org/invitations/:invitation_id/teams": [
+    OrgsListInvitationTeamsEndpoint,
+    OrgsListInvitationTeamsRequestOptions
+  ];
+  "GET /orgs/:org/issues": [
+    IssuesListForOrgEndpoint,
+    IssuesListForOrgRequestOptions
+  ];
+  "GET /orgs/:org/members": [
+    OrgsListMembersEndpoint,
+    OrgsListMembersRequestOptions
+  ];
+  "GET /orgs/:org/members/:username": [
+    OrgsCheckMembershipEndpoint,
+    OrgsCheckMembershipRequestOptions
+  ];
+  "GET /orgs/:org/memberships/:username": [
+    OrgsGetMembershipEndpoint,
+    OrgsGetMembershipRequestOptions
+  ];
+  "GET /orgs/:org/migrations": [
+    MigrationsListForOrgEndpoint,
+    MigrationsListForOrgRequestOptions
+  ];
+  "GET /orgs/:org/migrations/:migration_id": [
+    MigrationsGetStatusForOrgEndpoint,
+    MigrationsGetStatusForOrgRequestOptions
+  ];
+  "GET /orgs/:org/migrations/:migration_id/archive": [
+    MigrationsGetArchiveForOrgEndpoint,
+    MigrationsGetArchiveForOrgRequestOptions
+  ];
+  "GET /orgs/:org/outside_collaborators": [
+    OrgsListOutsideCollaboratorsEndpoint,
+    OrgsListOutsideCollaboratorsRequestOptions
+  ];
+  "GET /orgs/:org/projects": [
+    ProjectsListForOrgEndpoint,
+    ProjectsListForOrgRequestOptions
+  ];
+  "GET /orgs/:org/public_members": [
+    OrgsListPublicMembersEndpoint,
+    OrgsListPublicMembersRequestOptions
+  ];
+  "GET /orgs/:org/public_members/:username": [
+    OrgsCheckPublicMembershipEndpoint,
+    OrgsCheckPublicMembershipRequestOptions
+  ];
+  "GET /orgs/:org/repos": [
+    ReposListForOrgEndpoint,
+    ReposListForOrgRequestOptions
+  ];
+  "GET /orgs/:org/team-sync/groups": [
+    TeamsListIdPGroupsForOrgEndpoint,
+    TeamsListIdPGroupsForOrgRequestOptions
+  ];
+  "GET /orgs/:org/teams": [TeamsListEndpoint, TeamsListRequestOptions];
+  "GET /orgs/:org/teams/:team_slug": [
+    TeamsGetByNameEndpoint,
+    TeamsGetByNameRequestOptions
+  ];
+  "GET /projects/:project_id": [ProjectsGetEndpoint, ProjectsGetRequestOptions];
+  "GET /projects/:project_id/collaborators": [
+    ProjectsListCollaboratorsEndpoint,
+    ProjectsListCollaboratorsRequestOptions
+  ];
+  "GET /projects/:project_id/collaborators/:username/permission": [
+    ProjectsReviewUserPermissionLevelEndpoint,
+    ProjectsReviewUserPermissionLevelRequestOptions
+  ];
+  "GET /projects/:project_id/columns": [
+    ProjectsListColumnsEndpoint,
+    ProjectsListColumnsRequestOptions
+  ];
+  "GET /projects/columns/:column_id": [
+    ProjectsGetColumnEndpoint,
+    ProjectsGetColumnRequestOptions
+  ];
+  "GET /projects/columns/:column_id/cards": [
+    ProjectsListCardsEndpoint,
+    ProjectsListCardsRequestOptions
+  ];
+  "GET /projects/columns/cards/:card_id": [
+    ProjectsGetCardEndpoint,
+    ProjectsGetCardRequestOptions
+  ];
+  "GET /rate_limit": [RateLimitGetEndpoint, RateLimitGetRequestOptions];
+  "GET /repos/:owner/:repo": [ReposGetEndpoint, ReposGetRequestOptions];
+  "GET /repos/:owner/:repo/:archive_format/:ref": [
+    ReposGetArchiveLinkEndpoint,
+    ReposGetArchiveLinkRequestOptions
+  ];
+  "GET /repos/:owner/:repo/assignees": [
+    IssuesListAssigneesEndpoint,
+    IssuesListAssigneesRequestOptions
+  ];
+  "GET /repos/:owner/:repo/assignees/:assignee": [
+    IssuesCheckAssigneeEndpoint,
+    IssuesCheckAssigneeRequestOptions
+  ];
+  "GET /repos/:owner/:repo/branches": [
+    ReposListBranchesEndpoint,
+    ReposListBranchesRequestOptions
+  ];
+  "GET /repos/:owner/:repo/branches/:branch": [
+    ReposGetBranchEndpoint,
+    ReposGetBranchRequestOptions
+  ];
+  "GET /repos/:owner/:repo/branches/:branch/protection": [
+    ReposGetBranchProtectionEndpoint,
+    ReposGetBranchProtectionRequestOptions
+  ];
+  "GET /repos/:owner/:repo/branches/:branch/protection/enforce_admins": [
+    ReposGetProtectedBranchAdminEnforcementEndpoint,
+    ReposGetProtectedBranchAdminEnforcementRequestOptions
+  ];
+  "GET /repos/:owner/:repo/branches/:branch/protection/required_pull_request_reviews": [
+    ReposGetProtectedBranchPullRequestReviewEnforcementEndpoint,
+    ReposGetProtectedBranchPullRequestReviewEnforcementRequestOptions
+  ];
+  "GET /repos/:owner/:repo/branches/:branch/protection/required_signatures": [
+    ReposGetProtectedBranchRequiredSignaturesEndpoint,
+    ReposGetProtectedBranchRequiredSignaturesRequestOptions
+  ];
+  "GET /repos/:owner/:repo/branches/:branch/protection/required_status_checks": [
+    ReposGetProtectedBranchRequiredStatusChecksEndpoint,
+    ReposGetProtectedBranchRequiredStatusChecksRequestOptions
+  ];
+  "GET /repos/:owner/:repo/branches/:branch/protection/required_status_checks/contexts": [
+    ReposListProtectedBranchRequiredStatusChecksContextsEndpoint,
+    ReposListProtectedBranchRequiredStatusChecksContextsRequestOptions
+  ];
+  "GET /repos/:owner/:repo/branches/:branch/protection/restrictions": [
+    ReposGetProtectedBranchRestrictionsEndpoint,
+    ReposGetProtectedBranchRestrictionsRequestOptions
+  ];
+  "GET /repos/:owner/:repo/branches/:branch/protection/restrictions/apps": [
+
+      | ReposGetAppsWithAccessToProtectedBranchEndpoint
+      | ReposListAppsWithAccessToProtectedBranchEndpoint,
+
+      | ReposGetAppsWithAccessToProtectedBranchRequestOptions
+      | ReposListAppsWithAccessToProtectedBranchRequestOptions
+  ];
+  "GET /repos/:owner/:repo/branches/:branch/protection/restrictions/teams": [
+
+      | ReposGetTeamsWithAccessToProtectedBranchEndpoint
+      | ReposListProtectedBranchTeamRestrictionsEndpoint
+      | ReposListTeamsWithAccessToProtectedBranchEndpoint,
+
+      | ReposGetTeamsWithAccessToProtectedBranchRequestOptions
+      | ReposListProtectedBranchTeamRestrictionsRequestOptions
+      | ReposListTeamsWithAccessToProtectedBranchRequestOptions
+  ];
+  "GET /repos/:owner/:repo/branches/:branch/protection/restrictions/users": [
+
+      | ReposGetUsersWithAccessToProtectedBranchEndpoint
+      | ReposListProtectedBranchUserRestrictionsEndpoint
+      | ReposListUsersWithAccessToProtectedBranchEndpoint,
+
+      | ReposGetUsersWithAccessToProtectedBranchRequestOptions
+      | ReposListProtectedBranchUserRestrictionsRequestOptions
+      | ReposListUsersWithAccessToProtectedBranchRequestOptions
+  ];
+  "GET /repos/:owner/:repo/check-runs/:check_run_id": [
+    ChecksGetEndpoint,
+    ChecksGetRequestOptions
+  ];
+  "GET /repos/:owner/:repo/check-runs/:check_run_id/annotations": [
+    ChecksListAnnotationsEndpoint,
+    ChecksListAnnotationsRequestOptions
+  ];
+  "GET /repos/:owner/:repo/check-suites/:check_suite_id": [
+    ChecksGetSuiteEndpoint,
+    ChecksGetSuiteRequestOptions
+  ];
+  "GET /repos/:owner/:repo/check-suites/:check_suite_id/check-runs": [
+    ChecksListForSuiteEndpoint,
+    ChecksListForSuiteRequestOptions
+  ];
+  "GET /repos/:owner/:repo/collaborators": [
+    ReposListCollaboratorsEndpoint,
+    ReposListCollaboratorsRequestOptions
+  ];
+  "GET /repos/:owner/:repo/collaborators/:username": [
+    ReposCheckCollaboratorEndpoint,
+    ReposCheckCollaboratorRequestOptions
+  ];
+  "GET /repos/:owner/:repo/collaborators/:username/permission": [
+    ReposGetCollaboratorPermissionLevelEndpoint,
+    ReposGetCollaboratorPermissionLevelRequestOptions
+  ];
+  "GET /repos/:owner/:repo/comments": [
+    ReposListCommitCommentsEndpoint,
+    ReposListCommitCommentsRequestOptions
+  ];
+  "GET /repos/:owner/:repo/comments/:comment_id": [
+    ReposGetCommitCommentEndpoint,
+    ReposGetCommitCommentRequestOptions
+  ];
+  "GET /repos/:owner/:repo/comments/:comment_id/reactions": [
+    ReactionsListForCommitCommentEndpoint,
+    ReactionsListForCommitCommentRequestOptions
+  ];
+  "GET /repos/:owner/:repo/commits": [
+    ReposListCommitsEndpoint,
+    ReposListCommitsRequestOptions
+  ];
+  "GET /repos/:owner/:repo/commits/:commit_sha/branches-where-head": [
+    ReposListBranchesForHeadCommitEndpoint,
+    ReposListBranchesForHeadCommitRequestOptions
+  ];
+  "GET /repos/:owner/:repo/commits/:commit_sha/comments": [
+    ReposListCommentsForCommitEndpoint,
+    ReposListCommentsForCommitRequestOptions
+  ];
+  "GET /repos/:owner/:repo/commits/:commit_sha/pulls": [
+    ReposListPullRequestsAssociatedWithCommitEndpoint,
+    ReposListPullRequestsAssociatedWithCommitRequestOptions
+  ];
+  "GET /repos/:owner/:repo/commits/:ref": [
+    ReposGetCommitEndpoint,
+    ReposGetCommitRequestOptions
+  ];
+  "GET /repos/:owner/:repo/commits/:ref/check-runs": [
+    ChecksListForRefEndpoint,
+    ChecksListForRefRequestOptions
+  ];
+  "GET /repos/:owner/:repo/commits/:ref/check-suites": [
+    ChecksListSuitesForRefEndpoint,
+    ChecksListSuitesForRefRequestOptions
+  ];
+  "GET /repos/:owner/:repo/commits/:ref/status": [
+    ReposGetCombinedStatusForRefEndpoint,
+    ReposGetCombinedStatusForRefRequestOptions
+  ];
+  "GET /repos/:owner/:repo/commits/:ref/statuses": [
+    ReposListStatusesForRefEndpoint,
+    ReposListStatusesForRefRequestOptions
+  ];
+  "GET /repos/:owner/:repo/community/code_of_conduct": [
+    CodesOfConductGetForRepoEndpoint,
+    CodesOfConductGetForRepoRequestOptions
+  ];
+  "GET /repos/:owner/:repo/community/profile": [
+    ReposRetrieveCommunityProfileMetricsEndpoint,
+    ReposRetrieveCommunityProfileMetricsRequestOptions
+  ];
+  "GET /repos/:owner/:repo/compare/:base...:head": [
+    ReposCompareCommitsEndpoint,
+    ReposCompareCommitsRequestOptions
+  ];
+  "GET /repos/:owner/:repo/contents/:path": [
+    ReposGetContentsEndpoint,
+    ReposGetContentsRequestOptions
+  ];
+  "GET /repos/:owner/:repo/contributors": [
+    ReposListContributorsEndpoint,
+    ReposListContributorsRequestOptions
+  ];
+  "GET /repos/:owner/:repo/deployments": [
+    ReposListDeploymentsEndpoint,
+    ReposListDeploymentsRequestOptions
+  ];
+  "GET /repos/:owner/:repo/deployments/:deployment_id": [
+    ReposGetDeploymentEndpoint,
+    ReposGetDeploymentRequestOptions
+  ];
+  "GET /repos/:owner/:repo/deployments/:deployment_id/statuses": [
+    ReposListDeploymentStatusesEndpoint,
+    ReposListDeploymentStatusesRequestOptions
+  ];
+  "GET /repos/:owner/:repo/deployments/:deployment_id/statuses/:status_id": [
+    ReposGetDeploymentStatusEndpoint,
+    ReposGetDeploymentStatusRequestOptions
+  ];
+  "GET /repos/:owner/:repo/downloads": [
+    ReposListDownloadsEndpoint,
+    ReposListDownloadsRequestOptions
+  ];
+  "GET /repos/:owner/:repo/downloads/:download_id": [
+    ReposGetDownloadEndpoint,
+    ReposGetDownloadRequestOptions
+  ];
+  "GET /repos/:owner/:repo/events": [
+    ActivityListRepoEventsEndpoint,
+    ActivityListRepoEventsRequestOptions
+  ];
+  "GET /repos/:owner/:repo/forks": [
+    ReposListForksEndpoint,
+    ReposListForksRequestOptions
+  ];
+  "GET /repos/:owner/:repo/git/blobs/:file_sha": [
+    GitGetBlobEndpoint,
+    GitGetBlobRequestOptions
+  ];
+  "GET /repos/:owner/:repo/git/commits/:commit_sha": [
+    GitGetCommitEndpoint,
+    GitGetCommitRequestOptions
+  ];
+  "GET /repos/:owner/:repo/git/matching-refs/:ref": [
+    GitListMatchingRefsEndpoint,
+    GitListMatchingRefsRequestOptions
+  ];
+  "GET /repos/:owner/:repo/git/ref/:ref": [
+    GitGetRefEndpoint,
+    GitGetRefRequestOptions
+  ];
+  "GET /repos/:owner/:repo/git/tags/:tag_sha": [
+    GitGetTagEndpoint,
+    GitGetTagRequestOptions
+  ];
+  "GET /repos/:owner/:repo/git/trees/:tree_sha": [
+    GitGetTreeEndpoint,
+    GitGetTreeRequestOptions
+  ];
+  "GET /repos/:owner/:repo/hooks": [
+    ReposListHooksEndpoint,
+    ReposListHooksRequestOptions
+  ];
+  "GET /repos/:owner/:repo/hooks/:hook_id": [
+    ReposGetHookEndpoint,
+    ReposGetHookRequestOptions
+  ];
+  "GET /repos/:owner/:repo/import": [
+    MigrationsGetImportProgressEndpoint,
+    MigrationsGetImportProgressRequestOptions
+  ];
+  "GET /repos/:owner/:repo/import/authors": [
+    MigrationsGetCommitAuthorsEndpoint,
+    MigrationsGetCommitAuthorsRequestOptions
+  ];
+  "GET /repos/:owner/:repo/import/large_files": [
+    MigrationsGetLargeFilesEndpoint,
+    MigrationsGetLargeFilesRequestOptions
+  ];
+  "GET /repos/:owner/:repo/installation": [
+    AppsGetRepoInstallationEndpoint | AppsFindRepoInstallationEndpoint,
+
+      | AppsGetRepoInstallationRequestOptions
+      | AppsFindRepoInstallationRequestOptions
+  ];
+  "GET /repos/:owner/:repo/interaction-limits": [
+    InteractionsGetRestrictionsForRepoEndpoint,
+    InteractionsGetRestrictionsForRepoRequestOptions
+  ];
+  "GET /repos/:owner/:repo/invitations": [
+    ReposListInvitationsEndpoint,
+    ReposListInvitationsRequestOptions
+  ];
+  "GET /repos/:owner/:repo/issues": [
+    IssuesListForRepoEndpoint,
+    IssuesListForRepoRequestOptions
+  ];
+  "GET /repos/:owner/:repo/issues/:issue_number": [
+    IssuesGetEndpoint,
+    IssuesGetRequestOptions
+  ];
+  "GET /repos/:owner/:repo/issues/:issue_number/comments": [
+    IssuesListCommentsEndpoint,
+    IssuesListCommentsRequestOptions
+  ];
+  "GET /repos/:owner/:repo/issues/:issue_number/events": [
+    IssuesListEventsEndpoint,
+    IssuesListEventsRequestOptions
+  ];
+  "GET /repos/:owner/:repo/issues/:issue_number/labels": [
+    IssuesListLabelsOnIssueEndpoint,
+    IssuesListLabelsOnIssueRequestOptions
+  ];
+  "GET /repos/:owner/:repo/issues/:issue_number/reactions": [
+    ReactionsListForIssueEndpoint,
+    ReactionsListForIssueRequestOptions
+  ];
+  "GET /repos/:owner/:repo/issues/:issue_number/timeline": [
+    IssuesListEventsForTimelineEndpoint,
+    IssuesListEventsForTimelineRequestOptions
+  ];
+  "GET /repos/:owner/:repo/issues/comments": [
+    IssuesListCommentsForRepoEndpoint,
+    IssuesListCommentsForRepoRequestOptions
+  ];
+  "GET /repos/:owner/:repo/issues/comments/:comment_id": [
+    IssuesGetCommentEndpoint,
+    IssuesGetCommentRequestOptions
+  ];
+  "GET /repos/:owner/:repo/issues/comments/:comment_id/reactions": [
+    ReactionsListForIssueCommentEndpoint,
+    ReactionsListForIssueCommentRequestOptions
+  ];
+  "GET /repos/:owner/:repo/issues/events": [
+    IssuesListEventsForRepoEndpoint,
+    IssuesListEventsForRepoRequestOptions
+  ];
+  "GET /repos/:owner/:repo/issues/events/:event_id": [
+    IssuesGetEventEndpoint,
+    IssuesGetEventRequestOptions
+  ];
+  "GET /repos/:owner/:repo/keys": [
+    ReposListDeployKeysEndpoint,
+    ReposListDeployKeysRequestOptions
+  ];
+  "GET /repos/:owner/:repo/keys/:key_id": [
+    ReposGetDeployKeyEndpoint,
+    ReposGetDeployKeyRequestOptions
+  ];
+  "GET /repos/:owner/:repo/labels": [
+    IssuesListLabelsForRepoEndpoint,
+    IssuesListLabelsForRepoRequestOptions
+  ];
+  "GET /repos/:owner/:repo/labels/:name": [
+    IssuesGetLabelEndpoint,
+    IssuesGetLabelRequestOptions
+  ];
+  "GET /repos/:owner/:repo/languages": [
+    ReposListLanguagesEndpoint,
+    ReposListLanguagesRequestOptions
+  ];
+  "GET /repos/:owner/:repo/license": [
+    LicensesGetForRepoEndpoint,
+    LicensesGetForRepoRequestOptions
+  ];
+  "GET /repos/:owner/:repo/milestones": [
+    IssuesListMilestonesForRepoEndpoint,
+    IssuesListMilestonesForRepoRequestOptions
+  ];
+  "GET /repos/:owner/:repo/milestones/:milestone_number": [
+    IssuesGetMilestoneEndpoint,
+    IssuesGetMilestoneRequestOptions
+  ];
+  "GET /repos/:owner/:repo/milestones/:milestone_number/labels": [
+    IssuesListLabelsForMilestoneEndpoint,
+    IssuesListLabelsForMilestoneRequestOptions
+  ];
+  "GET /repos/:owner/:repo/notifications": [
+    ActivityListNotificationsForRepoEndpoint,
+    ActivityListNotificationsForRepoRequestOptions
+  ];
+  "GET /repos/:owner/:repo/pages": [
+    ReposGetPagesEndpoint,
+    ReposGetPagesRequestOptions
+  ];
+  "GET /repos/:owner/:repo/pages/builds": [
+    ReposListPagesBuildsEndpoint,
+    ReposListPagesBuildsRequestOptions
+  ];
+  "GET /repos/:owner/:repo/pages/builds/:build_id": [
+    ReposGetPagesBuildEndpoint,
+    ReposGetPagesBuildRequestOptions
+  ];
+  "GET /repos/:owner/:repo/pages/builds/latest": [
+    ReposGetLatestPagesBuildEndpoint,
+    ReposGetLatestPagesBuildRequestOptions
+  ];
+  "GET /repos/:owner/:repo/projects": [
+    ProjectsListForRepoEndpoint,
+    ProjectsListForRepoRequestOptions
+  ];
+  "GET /repos/:owner/:repo/pulls": [PullsListEndpoint, PullsListRequestOptions];
+  "GET /repos/:owner/:repo/pulls/:pull_number": [
+    PullsGetEndpoint,
+    PullsGetRequestOptions
+  ];
+  "GET /repos/:owner/:repo/pulls/:pull_number/comments": [
+    PullsListCommentsEndpoint,
+    PullsListCommentsRequestOptions
+  ];
+  "GET /repos/:owner/:repo/pulls/:pull_number/commits": [
+    PullsListCommitsEndpoint,
+    PullsListCommitsRequestOptions
+  ];
+  "GET /repos/:owner/:repo/pulls/:pull_number/files": [
+    PullsListFilesEndpoint,
+    PullsListFilesRequestOptions
+  ];
+  "GET /repos/:owner/:repo/pulls/:pull_number/merge": [
+    PullsCheckIfMergedEndpoint,
+    PullsCheckIfMergedRequestOptions
+  ];
+  "GET /repos/:owner/:repo/pulls/:pull_number/requested_reviewers": [
+    PullsListReviewRequestsEndpoint,
+    PullsListReviewRequestsRequestOptions
+  ];
+  "GET /repos/:owner/:repo/pulls/:pull_number/reviews": [
+    PullsListReviewsEndpoint,
+    PullsListReviewsRequestOptions
+  ];
+  "GET /repos/:owner/:repo/pulls/:pull_number/reviews/:review_id": [
+    PullsGetReviewEndpoint,
+    PullsGetReviewRequestOptions
+  ];
+  "GET /repos/:owner/:repo/pulls/:pull_number/reviews/:review_id/comments": [
+    PullsGetCommentsForReviewEndpoint,
+    PullsGetCommentsForReviewRequestOptions
+  ];
+  "GET /repos/:owner/:repo/pulls/comments": [
+    PullsListCommentsForRepoEndpoint,
+    PullsListCommentsForRepoRequestOptions
+  ];
+  "GET /repos/:owner/:repo/pulls/comments/:comment_id": [
+    PullsGetCommentEndpoint,
+    PullsGetCommentRequestOptions
+  ];
+  "GET /repos/:owner/:repo/pulls/comments/:comment_id/reactions": [
+    ReactionsListForPullRequestReviewCommentEndpoint,
+    ReactionsListForPullRequestReviewCommentRequestOptions
+  ];
+  "GET /repos/:owner/:repo/readme": [
+    ReposGetReadmeEndpoint,
+    ReposGetReadmeRequestOptions
+  ];
+  "GET /repos/:owner/:repo/releases": [
+    ReposListReleasesEndpoint,
+    ReposListReleasesRequestOptions
+  ];
+  "GET /repos/:owner/:repo/releases/:release_id": [
+    ReposGetReleaseEndpoint,
+    ReposGetReleaseRequestOptions
+  ];
+  "GET /repos/:owner/:repo/releases/:release_id/assets": [
+    ReposListAssetsForReleaseEndpoint,
+    ReposListAssetsForReleaseRequestOptions
+  ];
+  "GET /repos/:owner/:repo/releases/assets/:asset_id": [
+    ReposGetReleaseAssetEndpoint,
+    ReposGetReleaseAssetRequestOptions
+  ];
+  "GET /repos/:owner/:repo/releases/latest": [
+    ReposGetLatestReleaseEndpoint,
+    ReposGetLatestReleaseRequestOptions
+  ];
+  "GET /repos/:owner/:repo/releases/tags/:tag": [
+    ReposGetReleaseByTagEndpoint,
+    ReposGetReleaseByTagRequestOptions
+  ];
+  "GET /repos/:owner/:repo/stargazers": [
+    ActivityListStargazersForRepoEndpoint,
+    ActivityListStargazersForRepoRequestOptions
+  ];
+  "GET /repos/:owner/:repo/stats/code_frequency": [
+    ReposGetCodeFrequencyStatsEndpoint,
+    ReposGetCodeFrequencyStatsRequestOptions
+  ];
+  "GET /repos/:owner/:repo/stats/commit_activity": [
+    ReposGetCommitActivityStatsEndpoint,
+    ReposGetCommitActivityStatsRequestOptions
+  ];
+  "GET /repos/:owner/:repo/stats/contributors": [
+    ReposGetContributorsStatsEndpoint,
+    ReposGetContributorsStatsRequestOptions
+  ];
+  "GET /repos/:owner/:repo/stats/participation": [
+    ReposGetParticipationStatsEndpoint,
+    ReposGetParticipationStatsRequestOptions
+  ];
+  "GET /repos/:owner/:repo/stats/punch_card": [
+    ReposGetPunchCardStatsEndpoint,
+    ReposGetPunchCardStatsRequestOptions
+  ];
+  "GET /repos/:owner/:repo/subscribers": [
+    ActivityListWatchersForRepoEndpoint,
+    ActivityListWatchersForRepoRequestOptions
+  ];
+  "GET /repos/:owner/:repo/subscription": [
+    ActivityGetRepoSubscriptionEndpoint,
+    ActivityGetRepoSubscriptionRequestOptions
+  ];
+  "GET /repos/:owner/:repo/tags": [
+    ReposListTagsEndpoint,
+    ReposListTagsRequestOptions
+  ];
+  "GET /repos/:owner/:repo/teams": [
+    ReposListTeamsEndpoint,
+    ReposListTeamsRequestOptions
+  ];
+  "GET /repos/:owner/:repo/topics": [
+    ReposListTopicsEndpoint,
+    ReposListTopicsRequestOptions
+  ];
+  "GET /repos/:owner/:repo/traffic/clones": [
+    ReposGetClonesEndpoint,
+    ReposGetClonesRequestOptions
+  ];
+  "GET /repos/:owner/:repo/traffic/popular/paths": [
+    ReposGetTopPathsEndpoint,
+    ReposGetTopPathsRequestOptions
+  ];
+  "GET /repos/:owner/:repo/traffic/popular/referrers": [
+    ReposGetTopReferrersEndpoint,
+    ReposGetTopReferrersRequestOptions
+  ];
+  "GET /repos/:owner/:repo/traffic/views": [
+    ReposGetViewsEndpoint,
+    ReposGetViewsRequestOptions
+  ];
+  "GET /repos/:owner/:repo/vulnerability-alerts": [
+    ReposCheckVulnerabilityAlertsEndpoint,
+    ReposCheckVulnerabilityAlertsRequestOptions
+  ];
+  "GET /repositories": [ReposListPublicEndpoint, ReposListPublicRequestOptions];
+  "GET /scim/v2/organizations/:org/Users": [
+    ScimListProvisionedIdentitiesEndpoint,
+    ScimListProvisionedIdentitiesRequestOptions
+  ];
+  "GET /scim/v2/organizations/:org/Users/:scim_user_id": [
+    ScimGetProvisioningDetailsForUserEndpoint,
+    ScimGetProvisioningDetailsForUserRequestOptions
+  ];
+  "GET /search/code": [SearchCodeEndpoint, SearchCodeRequestOptions];
+  "GET /search/commits": [SearchCommitsEndpoint, SearchCommitsRequestOptions];
+  "GET /search/issues": [
+    SearchIssuesAndPullRequestsEndpoint | SearchIssuesEndpoint,
+    SearchIssuesAndPullRequestsRequestOptions | SearchIssuesRequestOptions
+  ];
+  "GET /search/labels": [SearchLabelsEndpoint, SearchLabelsRequestOptions];
+  "GET /search/repositories": [SearchReposEndpoint, SearchReposRequestOptions];
+  "GET /search/topics": [SearchTopicsEndpoint, SearchTopicsRequestOptions];
+  "GET /search/users": [SearchUsersEndpoint, SearchUsersRequestOptions];
+  "GET /teams/:team_id": [TeamsGetEndpoint, TeamsGetRequestOptions];
+  "GET /teams/:team_id/discussions": [
+    TeamsListDiscussionsEndpoint,
+    TeamsListDiscussionsRequestOptions
+  ];
+  "GET /teams/:team_id/discussions/:discussion_number": [
+    TeamsGetDiscussionEndpoint,
+    TeamsGetDiscussionRequestOptions
+  ];
+  "GET /teams/:team_id/discussions/:discussion_number/comments": [
+    TeamsListDiscussionCommentsEndpoint,
+    TeamsListDiscussionCommentsRequestOptions
+  ];
+  "GET /teams/:team_id/discussions/:discussion_number/comments/:comment_number": [
+    TeamsGetDiscussionCommentEndpoint,
+    TeamsGetDiscussionCommentRequestOptions
+  ];
+  "GET /teams/:team_id/discussions/:discussion_number/comments/:comment_number/reactions": [
+    ReactionsListForTeamDiscussionCommentEndpoint,
+    ReactionsListForTeamDiscussionCommentRequestOptions
+  ];
+  "GET /teams/:team_id/discussions/:discussion_number/reactions": [
+    ReactionsListForTeamDiscussionEndpoint,
+    ReactionsListForTeamDiscussionRequestOptions
+  ];
+  "GET /teams/:team_id/invitations": [
+    TeamsListPendingInvitationsEndpoint,
+    TeamsListPendingInvitationsRequestOptions
+  ];
+  "GET /teams/:team_id/members": [
+    TeamsListMembersEndpoint,
+    TeamsListMembersRequestOptions
+  ];
+  "GET /teams/:team_id/members/:username": [
+    TeamsGetMemberEndpoint,
+    TeamsGetMemberRequestOptions
+  ];
+  "GET /teams/:team_id/memberships/:username": [
+    TeamsGetMembershipEndpoint,
+    TeamsGetMembershipRequestOptions
+  ];
+  "GET /teams/:team_id/projects": [
+    TeamsListProjectsEndpoint,
+    TeamsListProjectsRequestOptions
+  ];
+  "GET /teams/:team_id/projects/:project_id": [
+    TeamsReviewProjectEndpoint,
+    TeamsReviewProjectRequestOptions
+  ];
+  "GET /teams/:team_id/repos": [
+    TeamsListReposEndpoint,
+    TeamsListReposRequestOptions
+  ];
+  "GET /teams/:team_id/repos/:owner/:repo": [
+    TeamsCheckManagesRepoEndpoint,
+    TeamsCheckManagesRepoRequestOptions
+  ];
+  "GET /teams/:team_id/team-sync/group-mappings": [
+    TeamsListIdPGroupsEndpoint,
+    TeamsListIdPGroupsRequestOptions
+  ];
+  "GET /teams/:team_id/teams": [
+    TeamsListChildEndpoint,
+    TeamsListChildRequestOptions
+  ];
+  "GET /user": [
+    UsersGetAuthenticatedEndpoint,
+    UsersGetAuthenticatedRequestOptions
+  ];
+  "GET /user/blocks": [
+    UsersListBlockedEndpoint,
+    UsersListBlockedRequestOptions
+  ];
+  "GET /user/blocks/:username": [
+    UsersCheckBlockedEndpoint,
+    UsersCheckBlockedRequestOptions
+  ];
+  "GET /user/emails": [UsersListEmailsEndpoint, UsersListEmailsRequestOptions];
+  "GET /user/followers": [
+    UsersListFollowersForAuthenticatedUserEndpoint,
+    UsersListFollowersForAuthenticatedUserRequestOptions
+  ];
+  "GET /user/following": [
+    UsersListFollowingForAuthenticatedUserEndpoint,
+    UsersListFollowingForAuthenticatedUserRequestOptions
+  ];
+  "GET /user/following/:username": [
+    UsersCheckFollowingEndpoint,
+    UsersCheckFollowingRequestOptions
+  ];
+  "GET /user/gpg_keys": [
+    UsersListGpgKeysEndpoint,
+    UsersListGpgKeysRequestOptions
+  ];
+  "GET /user/gpg_keys/:gpg_key_id": [
+    UsersGetGpgKeyEndpoint,
+    UsersGetGpgKeyRequestOptions
+  ];
+  "GET /user/installations": [
+    AppsListInstallationsForAuthenticatedUserEndpoint,
+    AppsListInstallationsForAuthenticatedUserRequestOptions
+  ];
+  "GET /user/installations/:installation_id/repositories": [
+    AppsListInstallationReposForAuthenticatedUserEndpoint,
+    AppsListInstallationReposForAuthenticatedUserRequestOptions
+  ];
+  "GET /user/issues": [
+    IssuesListForAuthenticatedUserEndpoint,
+    IssuesListForAuthenticatedUserRequestOptions
+  ];
+  "GET /user/keys": [
+    UsersListPublicKeysEndpoint,
+    UsersListPublicKeysRequestOptions
+  ];
+  "GET /user/keys/:key_id": [
+    UsersGetPublicKeyEndpoint,
+    UsersGetPublicKeyRequestOptions
+  ];
+  "GET /user/marketplace_purchases": [
+    AppsListMarketplacePurchasesForAuthenticatedUserEndpoint,
+    AppsListMarketplacePurchasesForAuthenticatedUserRequestOptions
+  ];
+  "GET /user/marketplace_purchases/stubbed": [
+    AppsListMarketplacePurchasesForAuthenticatedUserStubbedEndpoint,
+    AppsListMarketplacePurchasesForAuthenticatedUserStubbedRequestOptions
+  ];
+  "GET /user/memberships/orgs": [
+    OrgsListMembershipsEndpoint,
+    OrgsListMembershipsRequestOptions
+  ];
+  "GET /user/memberships/orgs/:org": [
+    OrgsGetMembershipForAuthenticatedUserEndpoint,
+    OrgsGetMembershipForAuthenticatedUserRequestOptions
+  ];
+  "GET /user/migrations": [
+    MigrationsListForAuthenticatedUserEndpoint,
+    MigrationsListForAuthenticatedUserRequestOptions
+  ];
+  "GET /user/migrations/:migration_id": [
+    MigrationsGetStatusForAuthenticatedUserEndpoint,
+    MigrationsGetStatusForAuthenticatedUserRequestOptions
+  ];
+  "GET /user/migrations/:migration_id/archive": [
+    MigrationsGetArchiveForAuthenticatedUserEndpoint,
+    MigrationsGetArchiveForAuthenticatedUserRequestOptions
+  ];
+  "GET /user/orgs": [
+    OrgsListForAuthenticatedUserEndpoint,
+    OrgsListForAuthenticatedUserRequestOptions
+  ];
+  "GET /user/public_emails": [
+    UsersListPublicEmailsEndpoint,
+    UsersListPublicEmailsRequestOptions
+  ];
+  "GET /user/repos": [ReposListEndpoint, ReposListRequestOptions];
+  "GET /user/repository_invitations": [
+    ReposListInvitationsForAuthenticatedUserEndpoint,
+    ReposListInvitationsForAuthenticatedUserRequestOptions
+  ];
+  "GET /user/starred": [
+    ActivityListReposStarredByAuthenticatedUserEndpoint,
+    ActivityListReposStarredByAuthenticatedUserRequestOptions
+  ];
+  "GET /user/starred/:owner/:repo": [
+    ActivityCheckStarringRepoEndpoint,
+    ActivityCheckStarringRepoRequestOptions
+  ];
+  "GET /user/subscriptions": [
+    ActivityListWatchedReposForAuthenticatedUserEndpoint,
+    ActivityListWatchedReposForAuthenticatedUserRequestOptions
+  ];
+  "GET /user/subscriptions/:owner/:repo": [
+    ActivityCheckWatchingRepoLegacyEndpoint,
+    ActivityCheckWatchingRepoLegacyRequestOptions
+  ];
+  "GET /user/teams": [
+    TeamsListForAuthenticatedUserEndpoint,
+    TeamsListForAuthenticatedUserRequestOptions
+  ];
+  "GET /users": [UsersListEndpoint, UsersListRequestOptions];
+  "GET /users/:username": [
+    UsersGetByUsernameEndpoint,
+    UsersGetByUsernameRequestOptions
+  ];
+  "GET /users/:username/events": [
+    ActivityListEventsForUserEndpoint,
+    ActivityListEventsForUserRequestOptions
+  ];
+  "GET /users/:username/events/orgs/:org": [
+    ActivityListEventsForOrgEndpoint,
+    ActivityListEventsForOrgRequestOptions
+  ];
+  "GET /users/:username/events/public": [
+    ActivityListPublicEventsForUserEndpoint,
+    ActivityListPublicEventsForUserRequestOptions
+  ];
+  "GET /users/:username/followers": [
+    UsersListFollowersForUserEndpoint,
+    UsersListFollowersForUserRequestOptions
+  ];
+  "GET /users/:username/following": [
+    UsersListFollowingForUserEndpoint,
+    UsersListFollowingForUserRequestOptions
+  ];
+  "GET /users/:username/following/:target_user": [
+    UsersCheckFollowingForUserEndpoint,
+    UsersCheckFollowingForUserRequestOptions
+  ];
+  "GET /users/:username/gists": [
+    GistsListPublicForUserEndpoint,
+    GistsListPublicForUserRequestOptions
+  ];
+  "GET /users/:username/gpg_keys": [
+    UsersListGpgKeysForUserEndpoint,
+    UsersListGpgKeysForUserRequestOptions
+  ];
+  "GET /users/:username/hovercard": [
+    UsersGetContextForUserEndpoint,
+    UsersGetContextForUserRequestOptions
+  ];
+  "GET /users/:username/installation": [
+    AppsGetUserInstallationEndpoint | AppsFindUserInstallationEndpoint,
+
+      | AppsGetUserInstallationRequestOptions
+      | AppsFindUserInstallationRequestOptions
+  ];
+  "GET /users/:username/keys": [
+    UsersListPublicKeysForUserEndpoint,
+    UsersListPublicKeysForUserRequestOptions
+  ];
+  "GET /users/:username/orgs": [
+    OrgsListForUserEndpoint,
+    OrgsListForUserRequestOptions
+  ];
+  "GET /users/:username/projects": [
+    ProjectsListForUserEndpoint,
+    ProjectsListForUserRequestOptions
+  ];
+  "GET /users/:username/received_events": [
+    ActivityListReceivedEventsForUserEndpoint,
+    ActivityListReceivedEventsForUserRequestOptions
+  ];
+  "GET /users/:username/received_events/public": [
+    ActivityListReceivedPublicEventsForUserEndpoint,
+    ActivityListReceivedPublicEventsForUserRequestOptions
+  ];
+  "GET /users/:username/repos": [
+    ReposListForUserEndpoint,
+    ReposListForUserRequestOptions
+  ];
+  "GET /users/:username/starred": [
+    ActivityListReposStarredByUserEndpoint,
+    ActivityListReposStarredByUserRequestOptions
+  ];
+  "GET /users/:username/subscriptions": [
+    ActivityListReposWatchedByUserEndpoint,
+    ActivityListReposWatchedByUserRequestOptions
+  ];
+  "PATCH /authorizations/:authorization_id": [
+    OauthAuthorizationsUpdateAuthorizationEndpoint,
+    OauthAuthorizationsUpdateAuthorizationRequestOptions
+  ];
+  "PATCH /gists/:gist_id": [GistsUpdateEndpoint, GistsUpdateRequestOptions];
+  "PATCH /gists/:gist_id/comments/:comment_id": [
+    GistsUpdateCommentEndpoint,
+    GistsUpdateCommentRequestOptions
+  ];
+  "PATCH /notifications/threads/:thread_id": [
+    ActivityMarkThreadAsReadEndpoint,
+    ActivityMarkThreadAsReadRequestOptions
+  ];
+  "PATCH /orgs/:org": [OrgsUpdateEndpoint, OrgsUpdateRequestOptions];
+  "PATCH /orgs/:org/hooks/:hook_id": [
+    OrgsUpdateHookEndpoint,
+    OrgsUpdateHookRequestOptions
+  ];
+  "PATCH /projects/:project_id": [
+    ProjectsUpdateEndpoint,
+    ProjectsUpdateRequestOptions
+  ];
+  "PATCH /projects/columns/:column_id": [
+    ProjectsUpdateColumnEndpoint,
+    ProjectsUpdateColumnRequestOptions
+  ];
+  "PATCH /projects/columns/cards/:card_id": [
+    ProjectsUpdateCardEndpoint,
+    ProjectsUpdateCardRequestOptions
+  ];
+  "PATCH /repos/:owner/:repo": [ReposUpdateEndpoint, ReposUpdateRequestOptions];
+  "PATCH /repos/:owner/:repo/branches/:branch/protection/required_pull_request_reviews": [
+    ReposUpdateProtectedBranchPullRequestReviewEnforcementEndpoint,
+    ReposUpdateProtectedBranchPullRequestReviewEnforcementRequestOptions
+  ];
+  "PATCH /repos/:owner/:repo/branches/:branch/protection/required_status_checks": [
+    ReposUpdateProtectedBranchRequiredStatusChecksEndpoint,
+    ReposUpdateProtectedBranchRequiredStatusChecksRequestOptions
+  ];
+  "PATCH /repos/:owner/:repo/check-runs/:check_run_id": [
+    ChecksUpdateEndpoint,
+    ChecksUpdateRequestOptions
+  ];
+  "PATCH /repos/:owner/:repo/check-suites/preferences": [
+    ChecksSetSuitesPreferencesEndpoint,
+    ChecksSetSuitesPreferencesRequestOptions
+  ];
+  "PATCH /repos/:owner/:repo/comments/:comment_id": [
+    ReposUpdateCommitCommentEndpoint,
+    ReposUpdateCommitCommentRequestOptions
+  ];
+  "PATCH /repos/:owner/:repo/git/refs/:ref": [
+    GitUpdateRefEndpoint,
+    GitUpdateRefRequestOptions
+  ];
+  "PATCH /repos/:owner/:repo/hooks/:hook_id": [
+    ReposUpdateHookEndpoint,
+    ReposUpdateHookRequestOptions
+  ];
+  "PATCH /repos/:owner/:repo/import": [
+    MigrationsUpdateImportEndpoint,
+    MigrationsUpdateImportRequestOptions
+  ];
+  "PATCH /repos/:owner/:repo/import/authors/:author_id": [
+    MigrationsMapCommitAuthorEndpoint,
+    MigrationsMapCommitAuthorRequestOptions
+  ];
+  "PATCH /repos/:owner/:repo/import/lfs": [
+    MigrationsSetLfsPreferenceEndpoint,
+    MigrationsSetLfsPreferenceRequestOptions
+  ];
+  "PATCH /repos/:owner/:repo/invitations/:invitation_id": [
+    ReposUpdateInvitationEndpoint,
+    ReposUpdateInvitationRequestOptions
+  ];
+  "PATCH /repos/:owner/:repo/issues/:issue_number": [
+    IssuesUpdateEndpoint,
+    IssuesUpdateRequestOptions
+  ];
+  "PATCH /repos/:owner/:repo/issues/comments/:comment_id": [
+    IssuesUpdateCommentEndpoint,
+    IssuesUpdateCommentRequestOptions
+  ];
+  "PATCH /repos/:owner/:repo/labels/:name": [
+    IssuesUpdateLabelEndpoint,
+    IssuesUpdateLabelRequestOptions
+  ];
+  "PATCH /repos/:owner/:repo/milestones/:milestone_number": [
+    IssuesUpdateMilestoneEndpoint,
+    IssuesUpdateMilestoneRequestOptions
+  ];
+  "PATCH /repos/:owner/:repo/pulls/:pull_number": [
+    PullsUpdateEndpoint,
+    PullsUpdateRequestOptions
+  ];
+  "PATCH /repos/:owner/:repo/pulls/comments/:comment_id": [
+    PullsUpdateCommentEndpoint,
+    PullsUpdateCommentRequestOptions
+  ];
+  "PATCH /repos/:owner/:repo/releases/:release_id": [
+    ReposUpdateReleaseEndpoint,
+    ReposUpdateReleaseRequestOptions
+  ];
+  "PATCH /repos/:owner/:repo/releases/assets/:asset_id": [
+    ReposUpdateReleaseAssetEndpoint,
+    ReposUpdateReleaseAssetRequestOptions
+  ];
+  "PATCH /scim/v2/organizations/:org/Users/:scim_user_id": [
+    ScimUpdateUserAttributeEndpoint,
+    ScimUpdateUserAttributeRequestOptions
+  ];
+  "PATCH /teams/:team_id": [TeamsUpdateEndpoint, TeamsUpdateRequestOptions];
+  "PATCH /teams/:team_id/discussions/:discussion_number": [
+    TeamsUpdateDiscussionEndpoint,
+    TeamsUpdateDiscussionRequestOptions
+  ];
+  "PATCH /teams/:team_id/discussions/:discussion_number/comments/:comment_number": [
+    TeamsUpdateDiscussionCommentEndpoint,
+    TeamsUpdateDiscussionCommentRequestOptions
+  ];
+  "PATCH /teams/:team_id/team-sync/group-mappings": [
+    TeamsCreateOrUpdateIdPGroupConnectionsEndpoint,
+    TeamsCreateOrUpdateIdPGroupConnectionsRequestOptions
+  ];
+  "PATCH /user": [
+    UsersUpdateAuthenticatedEndpoint,
+    UsersUpdateAuthenticatedRequestOptions
+  ];
+  "PATCH /user/email/visibility": [
+    UsersTogglePrimaryEmailVisibilityEndpoint,
+    UsersTogglePrimaryEmailVisibilityRequestOptions
+  ];
+  "PATCH /user/memberships/orgs/:org": [
+    OrgsUpdateMembershipEndpoint,
+    OrgsUpdateMembershipRequestOptions
+  ];
+  "PATCH /user/repository_invitations/:invitation_id": [
+    ReposAcceptInvitationEndpoint,
+    ReposAcceptInvitationRequestOptions
+  ];
+  "POST /app-manifests/:code/conversions": [
+    AppsCreateFromManifestEndpoint,
+    AppsCreateFromManifestRequestOptions
+  ];
+  "POST /app/installations/:installation_id/access_tokens": [
+    AppsCreateInstallationTokenEndpoint,
+    AppsCreateInstallationTokenRequestOptions
+  ];
+  "POST /applications/:client_id/tokens/:access_token": [
+    OauthAuthorizationsResetAuthorizationEndpoint,
+    OauthAuthorizationsResetAuthorizationRequestOptions
+  ];
+  "POST /authorizations": [
+    OauthAuthorizationsCreateAuthorizationEndpoint,
+    OauthAuthorizationsCreateAuthorizationRequestOptions
+  ];
+  "POST /content_references/:content_reference_id/attachments": [
+    AppsCreateContentAttachmentEndpoint,
+    AppsCreateContentAttachmentRequestOptions
+  ];
+  "POST /gists": [GistsCreateEndpoint, GistsCreateRequestOptions];
+  "POST /gists/:gist_id/comments": [
+    GistsCreateCommentEndpoint,
+    GistsCreateCommentRequestOptions
+  ];
+  "POST /gists/:gist_id/forks": [GistsForkEndpoint, GistsForkRequestOptions];
+  "POST /markdown": [MarkdownRenderEndpoint, MarkdownRenderRequestOptions];
+  "POST /markdown/raw": [
+    MarkdownRenderRawEndpoint,
+    MarkdownRenderRawRequestOptions
+  ];
+  "POST /orgs/:org/hooks": [
+    OrgsCreateHookEndpoint,
+    OrgsCreateHookRequestOptions
+  ];
+  "POST /orgs/:org/hooks/:hook_id/pings": [
+    OrgsPingHookEndpoint,
+    OrgsPingHookRequestOptions
+  ];
+  "POST /orgs/:org/invitations": [
+    OrgsCreateInvitationEndpoint,
+    OrgsCreateInvitationRequestOptions
+  ];
+  "POST /orgs/:org/migrations": [
+    MigrationsStartForOrgEndpoint,
+    MigrationsStartForOrgRequestOptions
+  ];
+  "POST /orgs/:org/projects": [
+    ProjectsCreateForOrgEndpoint,
+    ProjectsCreateForOrgRequestOptions
+  ];
+  "POST /orgs/:org/repos": [
+    ReposCreateInOrgEndpoint,
+    ReposCreateInOrgRequestOptions
+  ];
+  "POST /orgs/:org/teams": [TeamsCreateEndpoint, TeamsCreateRequestOptions];
+  "POST /projects/:project_id/columns": [
+    ProjectsCreateColumnEndpoint,
+    ProjectsCreateColumnRequestOptions
+  ];
+  "POST /projects/columns/:column_id/cards": [
+    ProjectsCreateCardEndpoint,
+    ProjectsCreateCardRequestOptions
+  ];
+  "POST /projects/columns/:column_id/moves": [
+    ProjectsMoveColumnEndpoint,
+    ProjectsMoveColumnRequestOptions
+  ];
+  "POST /projects/columns/cards/:card_id/moves": [
+    ProjectsMoveCardEndpoint,
+    ProjectsMoveCardRequestOptions
+  ];
+  "POST /repos/:owner/:repo/branches/:branch/protection/enforce_admins": [
+    ReposAddProtectedBranchAdminEnforcementEndpoint,
+    ReposAddProtectedBranchAdminEnforcementRequestOptions
+  ];
+  "POST /repos/:owner/:repo/branches/:branch/protection/required_signatures": [
+    ReposAddProtectedBranchRequiredSignaturesEndpoint,
+    ReposAddProtectedBranchRequiredSignaturesRequestOptions
+  ];
+  "POST /repos/:owner/:repo/branches/:branch/protection/required_status_checks/contexts": [
+    ReposAddProtectedBranchRequiredStatusChecksContextsEndpoint,
+    ReposAddProtectedBranchRequiredStatusChecksContextsRequestOptions
+  ];
+  "POST /repos/:owner/:repo/branches/:branch/protection/restrictions/apps": [
+    ReposAddProtectedBranchAppRestrictionsEndpoint,
+    ReposAddProtectedBranchAppRestrictionsRequestOptions
+  ];
+  "POST /repos/:owner/:repo/branches/:branch/protection/restrictions/teams": [
+    ReposAddProtectedBranchTeamRestrictionsEndpoint,
+    ReposAddProtectedBranchTeamRestrictionsRequestOptions
+  ];
+  "POST /repos/:owner/:repo/branches/:branch/protection/restrictions/users": [
+    ReposAddProtectedBranchUserRestrictionsEndpoint,
+    ReposAddProtectedBranchUserRestrictionsRequestOptions
+  ];
+  "POST /repos/:owner/:repo/check-runs": [
+    ChecksCreateEndpoint,
+    ChecksCreateRequestOptions
+  ];
+  "POST /repos/:owner/:repo/check-suites": [
+    ChecksCreateSuiteEndpoint,
+    ChecksCreateSuiteRequestOptions
+  ];
+  "POST /repos/:owner/:repo/check-suites/:check_suite_id/rerequest": [
+    ChecksRerequestSuiteEndpoint,
+    ChecksRerequestSuiteRequestOptions
+  ];
+  "POST /repos/:owner/:repo/comments/:comment_id/reactions": [
+    ReactionsCreateForCommitCommentEndpoint,
+    ReactionsCreateForCommitCommentRequestOptions
+  ];
+  "POST /repos/:owner/:repo/commits/:commit_sha/comments": [
+    ReposCreateCommitCommentEndpoint,
+    ReposCreateCommitCommentRequestOptions
+  ];
+  "POST /repos/:owner/:repo/deployments": [
+    ReposCreateDeploymentEndpoint,
+    ReposCreateDeploymentRequestOptions
+  ];
+  "POST /repos/:owner/:repo/deployments/:deployment_id/statuses": [
+    ReposCreateDeploymentStatusEndpoint,
+    ReposCreateDeploymentStatusRequestOptions
+  ];
+  "POST /repos/:owner/:repo/dispatches": [
+    ReposCreateDispatchEventEndpoint,
+    ReposCreateDispatchEventRequestOptions
+  ];
+  "POST /repos/:owner/:repo/forks": [
+    ReposCreateForkEndpoint,
+    ReposCreateForkRequestOptions
+  ];
+  "POST /repos/:owner/:repo/git/blobs": [
+    GitCreateBlobEndpoint,
+    GitCreateBlobRequestOptions
+  ];
+  "POST /repos/:owner/:repo/git/commits": [
+    GitCreateCommitEndpoint,
+    GitCreateCommitRequestOptions
+  ];
+  "POST /repos/:owner/:repo/git/refs": [
+    GitCreateRefEndpoint,
+    GitCreateRefRequestOptions
+  ];
+  "POST /repos/:owner/:repo/git/tags": [
+    GitCreateTagEndpoint,
+    GitCreateTagRequestOptions
+  ];
+  "POST /repos/:owner/:repo/git/trees": [
+    GitCreateTreeEndpoint,
+    GitCreateTreeRequestOptions
+  ];
+  "POST /repos/:owner/:repo/hooks": [
+    ReposCreateHookEndpoint,
+    ReposCreateHookRequestOptions
+  ];
+  "POST /repos/:owner/:repo/hooks/:hook_id/pings": [
+    ReposPingHookEndpoint,
+    ReposPingHookRequestOptions
+  ];
+  "POST /repos/:owner/:repo/hooks/:hook_id/tests": [
+    ReposTestPushHookEndpoint,
+    ReposTestPushHookRequestOptions
+  ];
+  "POST /repos/:owner/:repo/issues": [
+    IssuesCreateEndpoint,
+    IssuesCreateRequestOptions
+  ];
+  "POST /repos/:owner/:repo/issues/:issue_number/assignees": [
+    IssuesAddAssigneesEndpoint,
+    IssuesAddAssigneesRequestOptions
+  ];
+  "POST /repos/:owner/:repo/issues/:issue_number/comments": [
+    IssuesCreateCommentEndpoint,
+    IssuesCreateCommentRequestOptions
+  ];
+  "POST /repos/:owner/:repo/issues/:issue_number/labels": [
+    IssuesAddLabelsEndpoint,
+    IssuesAddLabelsRequestOptions
+  ];
+  "POST /repos/:owner/:repo/issues/:issue_number/reactions": [
+    ReactionsCreateForIssueEndpoint,
+    ReactionsCreateForIssueRequestOptions
+  ];
+  "POST /repos/:owner/:repo/issues/comments/:comment_id/reactions": [
+    ReactionsCreateForIssueCommentEndpoint,
+    ReactionsCreateForIssueCommentRequestOptions
+  ];
+  "POST /repos/:owner/:repo/keys": [
+    ReposAddDeployKeyEndpoint,
+    ReposAddDeployKeyRequestOptions
+  ];
+  "POST /repos/:owner/:repo/labels": [
+    IssuesCreateLabelEndpoint,
+    IssuesCreateLabelRequestOptions
+  ];
+  "POST /repos/:owner/:repo/merges": [
+    ReposMergeEndpoint,
+    ReposMergeRequestOptions
+  ];
+  "POST /repos/:owner/:repo/milestones": [
+    IssuesCreateMilestoneEndpoint,
+    IssuesCreateMilestoneRequestOptions
+  ];
+  "POST /repos/:owner/:repo/pages": [
+    ReposEnablePagesSiteEndpoint,
+    ReposEnablePagesSiteRequestOptions
+  ];
+  "POST /repos/:owner/:repo/pages/builds": [
+    ReposRequestPageBuildEndpoint,
+    ReposRequestPageBuildRequestOptions
+  ];
+  "POST /repos/:owner/:repo/projects": [
+    ProjectsCreateForRepoEndpoint,
+    ProjectsCreateForRepoRequestOptions
+  ];
+  "POST /repos/:owner/:repo/pulls": [
+    PullsCreateEndpoint,
+    PullsCreateRequestOptions
+  ];
+  "POST /repos/:owner/:repo/pulls/:pull_number/comments": [
+    PullsCreateCommentEndpoint | PullsCreateCommentReplyEndpoint,
+    PullsCreateCommentRequestOptions | PullsCreateCommentReplyRequestOptions
+  ];
+  "POST /repos/:owner/:repo/pulls/:pull_number/comments/:comment_id/replies": [
+    PullsCreateReviewCommentReplyEndpoint,
+    PullsCreateReviewCommentReplyRequestOptions
+  ];
+  "POST /repos/:owner/:repo/pulls/:pull_number/requested_reviewers": [
+    PullsCreateReviewRequestEndpoint,
+    PullsCreateReviewRequestRequestOptions
+  ];
+  "POST /repos/:owner/:repo/pulls/:pull_number/reviews": [
+    PullsCreateReviewEndpoint,
+    PullsCreateReviewRequestOptions
+  ];
+  "POST /repos/:owner/:repo/pulls/:pull_number/reviews/:review_id/events": [
+    PullsSubmitReviewEndpoint,
+    PullsSubmitReviewRequestOptions
+  ];
+  "POST /repos/:owner/:repo/pulls/comments/:comment_id/reactions": [
+    ReactionsCreateForPullRequestReviewCommentEndpoint,
+    ReactionsCreateForPullRequestReviewCommentRequestOptions
+  ];
+  "POST /repos/:owner/:repo/releases": [
+    ReposCreateReleaseEndpoint,
+    ReposCreateReleaseRequestOptions
+  ];
+  "POST /repos/:owner/:repo/statuses/:sha": [
+    ReposCreateStatusEndpoint,
+    ReposCreateStatusRequestOptions
+  ];
+  "POST /repos/:owner/:repo/transfer": [
+    ReposTransferEndpoint,
+    ReposTransferRequestOptions
+  ];
+  "POST /repos/:template_owner/:template_repo/generate": [
+    ReposCreateUsingTemplateEndpoint,
+    ReposCreateUsingTemplateRequestOptions
+  ];
+  "POST /scim/v2/organizations/:org/Users": [
+    ScimProvisionAndInviteUsersEndpoint | ScimProvisionInviteUsersEndpoint,
+
+      | ScimProvisionAndInviteUsersRequestOptions
+      | ScimProvisionInviteUsersRequestOptions
+  ];
+  "POST /teams/:team_id/discussions": [
+    TeamsCreateDiscussionEndpoint,
+    TeamsCreateDiscussionRequestOptions
+  ];
+  "POST /teams/:team_id/discussions/:discussion_number/comments": [
+    TeamsCreateDiscussionCommentEndpoint,
+    TeamsCreateDiscussionCommentRequestOptions
+  ];
+  "POST /teams/:team_id/discussions/:discussion_number/comments/:comment_number/reactions": [
+    ReactionsCreateForTeamDiscussionCommentEndpoint,
+    ReactionsCreateForTeamDiscussionCommentRequestOptions
+  ];
+  "POST /teams/:team_id/discussions/:discussion_number/reactions": [
+    ReactionsCreateForTeamDiscussionEndpoint,
+    ReactionsCreateForTeamDiscussionRequestOptions
+  ];
+  "POST /user/emails": [UsersAddEmailsEndpoint, UsersAddEmailsRequestOptions];
+  "POST /user/gpg_keys": [
+    UsersCreateGpgKeyEndpoint,
+    UsersCreateGpgKeyRequestOptions
+  ];
+  "POST /user/keys": [
+    UsersCreatePublicKeyEndpoint,
+    UsersCreatePublicKeyRequestOptions
+  ];
+  "POST /user/migrations": [
+    MigrationsStartForAuthenticatedUserEndpoint,
+    MigrationsStartForAuthenticatedUserRequestOptions
+  ];
+  "POST /user/projects": [
+    ProjectsCreateForAuthenticatedUserEndpoint,
+    ProjectsCreateForAuthenticatedUserRequestOptions
+  ];
+  "POST /user/repos": [
+    ReposCreateForAuthenticatedUserEndpoint,
+    ReposCreateForAuthenticatedUserRequestOptions
+  ];
+  "PUT /authorizations/clients/:client_id": [
+    OauthAuthorizationsGetOrCreateAuthorizationForAppEndpoint,
+    OauthAuthorizationsGetOrCreateAuthorizationForAppRequestOptions
+  ];
+  "PUT /authorizations/clients/:client_id/:fingerprint": [
+
+      | OauthAuthorizationsGetOrCreateAuthorizationForAppAndFingerprintEndpoint
+      | OauthAuthorizationsGetOrCreateAuthorizationForAppFingerprintEndpoint,
+
+      | OauthAuthorizationsGetOrCreateAuthorizationForAppAndFingerprintRequestOptions
+      | OauthAuthorizationsGetOrCreateAuthorizationForAppFingerprintRequestOptions
+  ];
+  "PUT /gists/:gist_id/star": [GistsStarEndpoint, GistsStarRequestOptions];
+  "PUT /notifications": [
+    ActivityMarkAsReadEndpoint,
+    ActivityMarkAsReadRequestOptions
+  ];
+  "PUT /notifications/threads/:thread_id/subscription": [
+    ActivitySetThreadSubscriptionEndpoint,
+    ActivitySetThreadSubscriptionRequestOptions
+  ];
+  "PUT /orgs/:org/blocks/:username": [
+    OrgsBlockUserEndpoint,
+    OrgsBlockUserRequestOptions
+  ];
+  "PUT /orgs/:org/interaction-limits": [
+    InteractionsAddOrUpdateRestrictionsForOrgEndpoint,
+    InteractionsAddOrUpdateRestrictionsForOrgRequestOptions
+  ];
+  "PUT /orgs/:org/memberships/:username": [
+    OrgsAddOrUpdateMembershipEndpoint,
+    OrgsAddOrUpdateMembershipRequestOptions
+  ];
+  "PUT /orgs/:org/outside_collaborators/:username": [
+    OrgsConvertMemberToOutsideCollaboratorEndpoint,
+    OrgsConvertMemberToOutsideCollaboratorRequestOptions
+  ];
+  "PUT /orgs/:org/public_members/:username": [
+    OrgsPublicizeMembershipEndpoint,
+    OrgsPublicizeMembershipRequestOptions
+  ];
+  "PUT /projects/:project_id/collaborators/:username": [
+    ProjectsAddCollaboratorEndpoint,
+    ProjectsAddCollaboratorRequestOptions
+  ];
+  "PUT /repos/:owner/:repo/automated-security-fixes": [
+    ReposEnableAutomatedSecurityFixesEndpoint,
+    ReposEnableAutomatedSecurityFixesRequestOptions
+  ];
+  "PUT /repos/:owner/:repo/branches/:branch/protection": [
+    ReposUpdateBranchProtectionEndpoint,
+    ReposUpdateBranchProtectionRequestOptions
+  ];
+  "PUT /repos/:owner/:repo/branches/:branch/protection/required_status_checks/contexts": [
+    ReposReplaceProtectedBranchRequiredStatusChecksContextsEndpoint,
+    ReposReplaceProtectedBranchRequiredStatusChecksContextsRequestOptions
+  ];
+  "PUT /repos/:owner/:repo/branches/:branch/protection/restrictions/apps": [
+    ReposReplaceProtectedBranchAppRestrictionsEndpoint,
+    ReposReplaceProtectedBranchAppRestrictionsRequestOptions
+  ];
+  "PUT /repos/:owner/:repo/branches/:branch/protection/restrictions/teams": [
+    ReposReplaceProtectedBranchTeamRestrictionsEndpoint,
+    ReposReplaceProtectedBranchTeamRestrictionsRequestOptions
+  ];
+  "PUT /repos/:owner/:repo/branches/:branch/protection/restrictions/users": [
+    ReposReplaceProtectedBranchUserRestrictionsEndpoint,
+    ReposReplaceProtectedBranchUserRestrictionsRequestOptions
+  ];
+  "PUT /repos/:owner/:repo/collaborators/:username": [
+    ReposAddCollaboratorEndpoint,
+    ReposAddCollaboratorRequestOptions
+  ];
+  "PUT /repos/:owner/:repo/contents/:path": [
+
+      | ReposCreateOrUpdateFileEndpoint
+      | ReposCreateFileEndpoint
+      | ReposUpdateFileEndpoint,
+
+      | ReposCreateOrUpdateFileRequestOptions
+      | ReposCreateFileRequestOptions
+      | ReposUpdateFileRequestOptions
+  ];
+  "PUT /repos/:owner/:repo/import": [
+    MigrationsStartImportEndpoint,
+    MigrationsStartImportRequestOptions
+  ];
+  "PUT /repos/:owner/:repo/interaction-limits": [
+    InteractionsAddOrUpdateRestrictionsForRepoEndpoint,
+    InteractionsAddOrUpdateRestrictionsForRepoRequestOptions
+  ];
+  "PUT /repos/:owner/:repo/issues/:issue_number/labels": [
+    IssuesReplaceLabelsEndpoint,
+    IssuesReplaceLabelsRequestOptions
+  ];
+  "PUT /repos/:owner/:repo/issues/:issue_number/lock": [
+    IssuesLockEndpoint,
+    IssuesLockRequestOptions
+  ];
+  "PUT /repos/:owner/:repo/notifications": [
+    ActivityMarkNotificationsAsReadForRepoEndpoint,
+    ActivityMarkNotificationsAsReadForRepoRequestOptions
+  ];
+  "PUT /repos/:owner/:repo/pages": [
+    ReposUpdateInformationAboutPagesSiteEndpoint,
+    ReposUpdateInformationAboutPagesSiteRequestOptions
+  ];
+  "PUT /repos/:owner/:repo/pulls/:pull_number/merge": [
+    PullsMergeEndpoint,
+    PullsMergeRequestOptions
+  ];
+  "PUT /repos/:owner/:repo/pulls/:pull_number/reviews/:review_id": [
+    PullsUpdateReviewEndpoint,
+    PullsUpdateReviewRequestOptions
+  ];
+  "PUT /repos/:owner/:repo/pulls/:pull_number/reviews/:review_id/dismissals": [
+    PullsDismissReviewEndpoint,
+    PullsDismissReviewRequestOptions
+  ];
+  "PUT /repos/:owner/:repo/pulls/:pull_number/update-branch": [
+    PullsUpdateBranchEndpoint,
+    PullsUpdateBranchRequestOptions
+  ];
+  "PUT /repos/:owner/:repo/subscription": [
+    ActivitySetRepoSubscriptionEndpoint,
+    ActivitySetRepoSubscriptionRequestOptions
+  ];
+  "PUT /repos/:owner/:repo/topics": [
+    ReposReplaceTopicsEndpoint,
+    ReposReplaceTopicsRequestOptions
+  ];
+  "PUT /repos/:owner/:repo/vulnerability-alerts": [
+    ReposEnableVulnerabilityAlertsEndpoint,
+    ReposEnableVulnerabilityAlertsRequestOptions
+  ];
+  "PUT /scim/v2/organizations/:org/Users/:scim_user_id": [
+
+      | ScimReplaceProvisionedUserInformationEndpoint
+      | ScimUpdateProvisionedOrgMembershipEndpoint,
+
+      | ScimReplaceProvisionedUserInformationRequestOptions
+      | ScimUpdateProvisionedOrgMembershipRequestOptions
+  ];
+  "PUT /teams/:team_id/members/:username": [
+    TeamsAddMemberEndpoint,
+    TeamsAddMemberRequestOptions
+  ];
+  "PUT /teams/:team_id/memberships/:username": [
+    TeamsAddOrUpdateMembershipEndpoint,
+    TeamsAddOrUpdateMembershipRequestOptions
+  ];
+  "PUT /teams/:team_id/projects/:project_id": [
+    TeamsAddOrUpdateProjectEndpoint,
+    TeamsAddOrUpdateProjectRequestOptions
+  ];
+  "PUT /teams/:team_id/repos/:owner/:repo": [
+    TeamsAddOrUpdateRepoEndpoint,
+    TeamsAddOrUpdateRepoRequestOptions
+  ];
+  "PUT /user/blocks/:username": [UsersBlockEndpoint, UsersBlockRequestOptions];
+  "PUT /user/following/:username": [
+    UsersFollowEndpoint,
+    UsersFollowRequestOptions
+  ];
+  "PUT /user/installations/:installation_id/repositories/:repository_id": [
+    AppsAddRepoToInstallationEndpoint,
+    AppsAddRepoToInstallationRequestOptions
+  ];
+  "PUT /user/starred/:owner/:repo": [
+    ActivityStarRepoEndpoint,
+    ActivityStarRepoRequestOptions
+  ];
+  "PUT /user/subscriptions/:owner/:repo": [
+    ActivityWatchRepoLegacyEndpoint,
+    ActivityWatchRepoLegacyRequestOptions
+  ];
+}
+
+type AppsGetAuthenticatedEndpoint = {};
+type AppsGetAuthenticatedRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type AppsCreateFromManifestEndpoint = {
+  /**
+   * code parameter
+   */
+  code: string;
+};
+type AppsCreateFromManifestRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type AppsListInstallationsEndpoint = {
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type AppsListInstallationsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type AppsGetInstallationEndpoint = {
+  /**
+   * installation_id parameter
+   */
+  installation_id: number;
+};
+type AppsGetInstallationRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type AppsDeleteInstallationEndpoint = {
+  /**
+   * installation_id parameter
+   */
+  installation_id: number;
+};
+type AppsDeleteInstallationRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type AppsCreateInstallationTokenEndpoint = {
+  /**
+   * installation_id parameter
+   */
+  installation_id: number;
+  /**
+   * The `id`s of the repositories that the installation token can access. Providing repository `id`s restricts the access of an installation token to specific repositories. You can use the "[List repositories](https://developer.github.com/v3/apps/installations/#list-repositories)" endpoint to get the `id` of all repositories that an installation can access. For example, you can select specific repositories when creating an installation token to restrict the number of repositories that can be cloned using the token.
+   */
+  repository_ids?: number[];
+  /**
+   * The permissions granted to the access token. The permissions object includes the permission names and their access type. For a complete list of permissions and allowable values, see "[GitHub App permissions](https://developer.github.com/apps/building-github-apps/creating-github-apps-using-url-parameters/#github-app-permissions)."
+   */
+  permissions?: AppsCreateInstallationTokenParamsPermissions;
+};
+type AppsCreateInstallationTokenRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OauthAuthorizationsListGrantsEndpoint = {
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type OauthAuthorizationsListGrantsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OauthAuthorizationsGetGrantEndpoint = {
+  /**
+   * grant_id parameter
+   */
+  grant_id: number;
+};
+type OauthAuthorizationsGetGrantRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OauthAuthorizationsDeleteGrantEndpoint = {
+  /**
+   * grant_id parameter
+   */
+  grant_id: number;
+};
+type OauthAuthorizationsDeleteGrantRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OauthAuthorizationsRevokeGrantForApplicationEndpoint = {
+  /**
+   * client_id parameter
+   */
+  client_id: string;
+  /**
+   * access_token parameter
+   */
+  access_token: string;
+};
+type OauthAuthorizationsRevokeGrantForApplicationRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OauthAuthorizationsCheckAuthorizationEndpoint = {
+  /**
+   * client_id parameter
+   */
+  client_id: string;
+  /**
+   * access_token parameter
+   */
+  access_token: string;
+};
+type OauthAuthorizationsCheckAuthorizationRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OauthAuthorizationsResetAuthorizationEndpoint = {
+  /**
+   * client_id parameter
+   */
+  client_id: string;
+  /**
+   * access_token parameter
+   */
+  access_token: string;
+};
+type OauthAuthorizationsResetAuthorizationRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OauthAuthorizationsRevokeAuthorizationForApplicationEndpoint = {
+  /**
+   * client_id parameter
+   */
+  client_id: string;
+  /**
+   * access_token parameter
+   */
+  access_token: string;
+};
+type OauthAuthorizationsRevokeAuthorizationForApplicationRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type AppsGetBySlugEndpoint = {
+  /**
+   * app_slug parameter
+   */
+  app_slug: string;
+};
+type AppsGetBySlugRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OauthAuthorizationsListAuthorizationsEndpoint = {
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type OauthAuthorizationsListAuthorizationsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OauthAuthorizationsCreateAuthorizationEndpoint = {
+  /**
+   * A list of scopes that this authorization is in.
+   */
+  scopes?: string[];
+  /**
+   * A note to remind you what the OAuth token is for. Tokens not associated with a specific OAuth application (i.e. personal access tokens) must have a unique note.
+   */
+  note: string;
+  /**
+   * A URL to remind you what app the OAuth token is for.
+   */
+  note_url?: string;
+  /**
+   * The 20 character OAuth app client key for which to create the token.
+   */
+  client_id?: string;
+  /**
+   * The 40 character OAuth app client secret for which to create the token.
+   */
+  client_secret?: string;
+  /**
+   * A unique string to distinguish an authorization from others created for the same client ID and user.
+   */
+  fingerprint?: string;
+};
+type OauthAuthorizationsCreateAuthorizationRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OauthAuthorizationsGetOrCreateAuthorizationForAppEndpoint = {
+  /**
+   * client_id parameter
+   */
+  client_id: string;
+  /**
+   * The 40 character OAuth app client secret associated with the client ID specified in the URL.
+   */
+  client_secret: string;
+  /**
+   * A list of scopes that this authorization is in.
+   */
+  scopes?: string[];
+  /**
+   * A note to remind you what the OAuth token is for.
+   */
+  note?: string;
+  /**
+   * A URL to remind you what app the OAuth token is for.
+   */
+  note_url?: string;
+  /**
+   * A unique string to distinguish an authorization from others created for the same client and user. If provided, this API is functionally equivalent to [Get-or-create an authorization for a specific app and fingerprint](https://developer.github.com/v3/oauth_authorizations/#get-or-create-an-authorization-for-a-specific-app-and-fingerprint).
+   */
+  fingerprint?: string;
+};
+type OauthAuthorizationsGetOrCreateAuthorizationForAppRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OauthAuthorizationsGetOrCreateAuthorizationForAppAndFingerprintEndpoint = {
+  /**
+   * client_id parameter
+   */
+  client_id: string;
+  /**
+   * fingerprint parameter
+   */
+  fingerprint: string;
+  /**
+   * The 40 character OAuth app client secret associated with the client ID specified in the URL.
+   */
+  client_secret: string;
+  /**
+   * A list of scopes that this authorization is in.
+   */
+  scopes?: string[];
+  /**
+   * A note to remind you what the OAuth token is for.
+   */
+  note?: string;
+  /**
+   * A URL to remind you what app the OAuth token is for.
+   */
+  note_url?: string;
+};
+type OauthAuthorizationsGetOrCreateAuthorizationForAppAndFingerprintRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OauthAuthorizationsGetOrCreateAuthorizationForAppFingerprintEndpoint = {
+  /**
+   * client_id parameter
+   */
+  client_id: string;
+  /**
+   * fingerprint parameter
+   */
+  fingerprint: string;
+  /**
+   * The 40 character OAuth app client secret associated with the client ID specified in the URL.
+   */
+  client_secret: string;
+  /**
+   * A list of scopes that this authorization is in.
+   */
+  scopes?: string[];
+  /**
+   * A note to remind you what the OAuth token is for.
+   */
+  note?: string;
+  /**
+   * A URL to remind you what app the OAuth token is for.
+   */
+  note_url?: string;
+};
+type OauthAuthorizationsGetOrCreateAuthorizationForAppFingerprintRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OauthAuthorizationsGetAuthorizationEndpoint = {
+  /**
+   * authorization_id parameter
+   */
+  authorization_id: number;
+};
+type OauthAuthorizationsGetAuthorizationRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OauthAuthorizationsUpdateAuthorizationEndpoint = {
+  /**
+   * authorization_id parameter
+   */
+  authorization_id: number;
+  /**
+   * Replaces the authorization scopes with these.
+   */
+  scopes?: string[];
+  /**
+   * A list of scopes to add to this authorization.
+   */
+  add_scopes?: string[];
+  /**
+   * A list of scopes to remove from this authorization.
+   */
+  remove_scopes?: string[];
+  /**
+   * A note to remind you what the OAuth token is for. Tokens not associated with a specific OAuth application (i.e. personal access tokens) must have a unique note.
+   */
+  note?: string;
+  /**
+   * A URL to remind you what app the OAuth token is for.
+   */
+  note_url?: string;
+  /**
+   * A unique string to distinguish an authorization from others created for the same client ID and user.
+   */
+  fingerprint?: string;
+};
+type OauthAuthorizationsUpdateAuthorizationRequestOptions = {
+  method: "PATCH";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OauthAuthorizationsDeleteAuthorizationEndpoint = {
+  /**
+   * authorization_id parameter
+   */
+  authorization_id: number;
+};
+type OauthAuthorizationsDeleteAuthorizationRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type CodesOfConductListConductCodesEndpoint = {};
+type CodesOfConductListConductCodesRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type CodesOfConductGetConductCodeEndpoint = {
+  /**
+   * key parameter
+   */
+  key: string;
+};
+type CodesOfConductGetConductCodeRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type AppsCreateContentAttachmentEndpoint = {
+  /**
+   * content_reference_id parameter
+   */
+  content_reference_id: number;
+  /**
+   * The title of the content attachment displayed in the body or comment of an issue or pull request.
+   */
+  title: string;
+  /**
+   * The body text of the content attachment displayed in the body or comment of an issue or pull request. This parameter supports markdown.
+   */
+  body: string;
+};
+type AppsCreateContentAttachmentRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type EmojisGetEndpoint = {};
+type EmojisGetRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ActivityListPublicEventsEndpoint = {
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ActivityListPublicEventsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ActivityListFeedsEndpoint = {};
+type ActivityListFeedsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type GistsListEndpoint = {
+  /**
+   * This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Only gists updated at or after this time are returned.
+   */
+  since?: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type GistsListRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type GistsCreateEndpoint = {
+  /**
+   * The filenames and content of each file in the gist. The keys in the `files` object represent the filename and have the type `string`.
+   */
+  files: GistsCreateParamsFiles;
+  /**
+   * A descriptive name for this gist.
+   */
+  description?: string;
+  /**
+   * When `true`, the gist will be public and available for anyone to see.
+   */
+  public?: boolean;
+};
+type GistsCreateRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type GistsListPublicEndpoint = {
+  /**
+   * This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Only gists updated at or after this time are returned.
+   */
+  since?: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type GistsListPublicRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type GistsListStarredEndpoint = {
+  /**
+   * This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Only gists updated at or after this time are returned.
+   */
+  since?: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type GistsListStarredRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type GistsGetEndpoint = {
+  /**
+   * gist_id parameter
+   */
+  gist_id: string;
+};
+type GistsGetRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type GistsUpdateEndpoint = {
+  /**
+   * gist_id parameter
+   */
+  gist_id: string;
+  /**
+   * A descriptive name for this gist.
+   */
+  description?: string;
+  /**
+   * The filenames and content that make up this gist.
+   */
+  files?: GistsUpdateParamsFiles;
+};
+type GistsUpdateRequestOptions = {
+  method: "PATCH";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type GistsDeleteEndpoint = {
+  /**
+   * gist_id parameter
+   */
+  gist_id: string;
+};
+type GistsDeleteRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type GistsListCommentsEndpoint = {
+  /**
+   * gist_id parameter
+   */
+  gist_id: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type GistsListCommentsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type GistsCreateCommentEndpoint = {
+  /**
+   * gist_id parameter
+   */
+  gist_id: string;
+  /**
+   * The comment text.
+   */
+  body: string;
+};
+type GistsCreateCommentRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type GistsGetCommentEndpoint = {
+  /**
+   * gist_id parameter
+   */
+  gist_id: string;
+  /**
+   * comment_id parameter
+   */
+  comment_id: number;
+};
+type GistsGetCommentRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type GistsUpdateCommentEndpoint = {
+  /**
+   * gist_id parameter
+   */
+  gist_id: string;
+  /**
+   * comment_id parameter
+   */
+  comment_id: number;
+  /**
+   * The comment text.
+   */
+  body: string;
+};
+type GistsUpdateCommentRequestOptions = {
+  method: "PATCH";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type GistsDeleteCommentEndpoint = {
+  /**
+   * gist_id parameter
+   */
+  gist_id: string;
+  /**
+   * comment_id parameter
+   */
+  comment_id: number;
+};
+type GistsDeleteCommentRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type GistsListCommitsEndpoint = {
+  /**
+   * gist_id parameter
+   */
+  gist_id: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type GistsListCommitsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type GistsForkEndpoint = {
+  /**
+   * gist_id parameter
+   */
+  gist_id: string;
+};
+type GistsForkRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type GistsListForksEndpoint = {
+  /**
+   * gist_id parameter
+   */
+  gist_id: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type GistsListForksRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type GistsStarEndpoint = {
+  /**
+   * gist_id parameter
+   */
+  gist_id: string;
+};
+type GistsStarRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type GistsUnstarEndpoint = {
+  /**
+   * gist_id parameter
+   */
+  gist_id: string;
+};
+type GistsUnstarRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type GistsCheckIsStarredEndpoint = {
+  /**
+   * gist_id parameter
+   */
+  gist_id: string;
+};
+type GistsCheckIsStarredRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type GistsGetRevisionEndpoint = {
+  /**
+   * gist_id parameter
+   */
+  gist_id: string;
+  /**
+   * sha parameter
+   */
+  sha: string;
+};
+type GistsGetRevisionRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type GitignoreListTemplatesEndpoint = {};
+type GitignoreListTemplatesRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type GitignoreGetTemplateEndpoint = {
+  /**
+   * name parameter
+   */
+  name: string;
+};
+type GitignoreGetTemplateRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type AppsListReposEndpoint = {
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type AppsListReposRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type IssuesListEndpoint = {
+  /**
+   * Indicates which sorts of issues to return. Can be one of:
+   * \* `assigned`: Issues assigned to you
+   * \* `created`: Issues created by you
+   * \* `mentioned`: Issues mentioning you
+   * \* `subscribed`: Issues you're subscribed to updates for
+   * \* `all`: All issues the authenticated user can see, regardless of participation or creation
+   */
+  filter?: "assigned" | "created" | "mentioned" | "subscribed" | "all";
+  /**
+   * Indicates the state of the issues to return. Can be either `open`, `closed`, or `all`.
+   */
+  state?: "open" | "closed" | "all";
+  /**
+   * A list of comma separated label names. Example: `bug,ui,@high`
+   */
+  labels?: string;
+  /**
+   * What to sort results by. Can be either `created`, `updated`, `comments`.
+   */
+  sort?: "created" | "updated" | "comments";
+  /**
+   * The direction of the sort. Can be either `asc` or `desc`.
+   */
+  direction?: "asc" | "desc";
+  /**
+   * Only issues updated at or after this time are returned. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
+   */
+  since?: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type IssuesListRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type SearchIssuesLegacyEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repository parameter
+   */
+  repository: string;
+  /**
+   * Indicates the state of the issues to return. Can be either `open` or `closed`.
+   */
+  state: "open" | "closed";
+  /**
+   * The search term.
+   */
+  keyword: string;
+};
+type SearchIssuesLegacyRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type SearchReposLegacyEndpoint = {
+  /**
+   * The search term.
+   */
+  keyword: string;
+  /**
+   * Filter results by language.
+   */
+  language?: string;
+  /**
+   * The page number to fetch.
+   */
+  start_page?: string;
+  /**
+   * The sort field. One of `stars`, `forks`, or `updated`. Default: results are sorted by best match.
+   */
+  sort?: "stars" | "forks" | "updated";
+  /**
+   * The sort field. if `sort` param is provided. Can be either `asc` or `desc`.
+   */
+  order?: "asc" | "desc";
+};
+type SearchReposLegacyRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type SearchEmailLegacyEndpoint = {
+  /**
+   * The email address.
+   */
+  email: string;
+};
+type SearchEmailLegacyRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type SearchUsersLegacyEndpoint = {
+  /**
+   * The search term.
+   */
+  keyword: string;
+  /**
+   * The page number to fetch.
+   */
+  start_page?: string;
+  /**
+   * The sort field. One of `stars`, `forks`, or `updated`. Default: results are sorted by best match.
+   */
+  sort?: "stars" | "forks" | "updated";
+  /**
+   * The sort field. if `sort` param is provided. Can be either `asc` or `desc`.
+   */
+  order?: "asc" | "desc";
+};
+type SearchUsersLegacyRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type LicensesListCommonlyUsedEndpoint = {};
+type LicensesListCommonlyUsedRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type LicensesListEndpoint = {};
+type LicensesListRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type LicensesGetEndpoint = {
+  /**
+   * license parameter
+   */
+  license: string;
+};
+type LicensesGetRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type MarkdownRenderEndpoint = {
+  /**
+   * The Markdown text to render in HTML. Markdown content must be 400 KB or less.
+   */
+  text: string;
+  /**
+   * The rendering mode. Can be either:
+   * \* `markdown` to render a document in plain Markdown, just like README.md files are rendered.
+   * \* `gfm` to render a document in [GitHub Flavored Markdown](https://github.github.com/gfm/), which creates links for user mentions as well as references to SHA-1 hashes, issues, and pull requests.
+   */
+  mode?: "markdown" | "gfm";
+  /**
+   * The repository context to use when creating references in `gfm` mode. Omit this parameter when using `markdown` mode.
+   */
+  context?: string;
+};
+type MarkdownRenderRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type MarkdownRenderRawEndpoint = {
+  /**
+   * data parameter
+   */
+  data: string;
+};
+type MarkdownRenderRawRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type AppsCheckAccountIsAssociatedWithAnyEndpoint = {
+  /**
+   * account_id parameter
+   */
+  account_id: number;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type AppsCheckAccountIsAssociatedWithAnyRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type AppsListPlansEndpoint = {
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type AppsListPlansRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type AppsListAccountsUserOrOrgOnPlanEndpoint = {
+  /**
+   * plan_id parameter
+   */
+  plan_id: number;
+  /**
+   * Sorts the GitHub accounts by the date they were created or last updated. Can be one of `created` or `updated`.
+   */
+  sort?: "created" | "updated";
+  /**
+   * To return the oldest accounts first, set to `asc`. Can be one of `asc` or `desc`. Ignored without the `sort` parameter.
+   */
+  direction?: "asc" | "desc";
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type AppsListAccountsUserOrOrgOnPlanRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type AppsCheckAccountIsAssociatedWithAnyStubbedEndpoint = {
+  /**
+   * account_id parameter
+   */
+  account_id: number;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type AppsCheckAccountIsAssociatedWithAnyStubbedRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type AppsListPlansStubbedEndpoint = {
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type AppsListPlansStubbedRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type AppsListAccountsUserOrOrgOnPlanStubbedEndpoint = {
+  /**
+   * plan_id parameter
+   */
+  plan_id: number;
+  /**
+   * Sorts the GitHub accounts by the date they were created or last updated. Can be one of `created` or `updated`.
+   */
+  sort?: "created" | "updated";
+  /**
+   * To return the oldest accounts first, set to `asc`. Can be one of `asc` or `desc`. Ignored without the `sort` parameter.
+   */
+  direction?: "asc" | "desc";
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type AppsListAccountsUserOrOrgOnPlanStubbedRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type MetaGetEndpoint = {};
+type MetaGetRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ActivityListPublicEventsForRepoNetworkEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ActivityListPublicEventsForRepoNetworkRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ActivityListNotificationsEndpoint = {
+  /**
+   * If `true`, show notifications marked as read.
+   */
+  all?: boolean;
+  /**
+   * If `true`, only shows notifications in which the user is directly participating or mentioned.
+   */
+  participating?: boolean;
+  /**
+   * Only show notifications updated after the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
+   */
+  since?: string;
+  /**
+   * Only show notifications updated before the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
+   */
+  before?: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ActivityListNotificationsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ActivityMarkAsReadEndpoint = {
+  /**
+   * Describes the last point that notifications were checked. Anything updated since this time will not be updated. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Default: The current timestamp.
+   */
+  last_read_at?: string;
+};
+type ActivityMarkAsReadRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ActivityGetThreadEndpoint = {
+  /**
+   * thread_id parameter
+   */
+  thread_id: number;
+};
+type ActivityGetThreadRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ActivityMarkThreadAsReadEndpoint = {
+  /**
+   * thread_id parameter
+   */
+  thread_id: number;
+};
+type ActivityMarkThreadAsReadRequestOptions = {
+  method: "PATCH";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ActivityGetThreadSubscriptionEndpoint = {
+  /**
+   * thread_id parameter
+   */
+  thread_id: number;
+};
+type ActivityGetThreadSubscriptionRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ActivitySetThreadSubscriptionEndpoint = {
+  /**
+   * thread_id parameter
+   */
+  thread_id: number;
+  /**
+   * Unsubscribes and subscribes you to a conversation. Set `ignored` to `true` to block all notifications from this thread.
+   */
+  ignored?: boolean;
+};
+type ActivitySetThreadSubscriptionRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ActivityDeleteThreadSubscriptionEndpoint = {
+  /**
+   * thread_id parameter
+   */
+  thread_id: number;
+};
+type ActivityDeleteThreadSubscriptionRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OrgsListEndpoint = {
+  /**
+   * The integer ID of the last Organization that you've seen.
+   */
+  since?: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type OrgsListRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OrgsGetEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+};
+type OrgsGetRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OrgsUpdateEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * Billing email address. This address is not publicized.
+   */
+  billing_email?: string;
+  /**
+   * The company name.
+   */
+  company?: string;
+  /**
+   * The publicly visible email address.
+   */
+  email?: string;
+  /**
+   * The location.
+   */
+  location?: string;
+  /**
+   * The shorthand name of the company.
+   */
+  name?: string;
+  /**
+   * The description of the company.
+   */
+  description?: string;
+  /**
+   * Toggles whether organization projects are enabled for the organization.
+   */
+  has_organization_projects?: boolean;
+  /**
+   * Toggles whether repository projects are enabled for repositories that belong to the organization.
+   */
+  has_repository_projects?: boolean;
+  /**
+   * Default permission level members have for organization repositories:
+   * \* `read` - can pull, but not push to or administer this repository.
+   * \* `write` - can pull and push, but not administer this repository.
+   * \* `admin` - can pull, push, and administer this repository.
+   * \* `none` - no permissions granted by default.
+   */
+  default_repository_permission?: "read" | "write" | "admin" | "none";
+  /**
+   * Toggles the ability of non-admin organization members to create repositories. Can be one of:
+   * \* `true` - all organization members can create repositories.
+   * \* `false` - only admin members can create repositories.
+   * Default: `true`
+   * **Note:** Another parameter can override the this parameter. See [this note](https://developer.github.com/v3/orgs/#members_can_create_repositories) for details. **Note:** Another parameter can override the this parameter. See [this note](https://developer.github.com/v3/orgs/#members_can_create_repositories) for details.
+   */
+  members_can_create_repositories?: boolean;
+  /**
+   * Specifies which types of repositories non-admin organization members can create. Can be one of:
+   * \* `all` - all organization members can create public and private repositories.
+   * \* `private` - members can create private repositories. This option is only available to repositories that are part of an organization on [GitHub Business Cloud](https://github.com/pricing/business-cloud).
+   * \* `none` - only admin members can create repositories.
+   * **Note:** Using this parameter will override values set in `members_can_create_repositories`. See [this note](https://developer.github.com/v3/orgs/#members_can_create_repositories) for details.
+   */
+  members_allowed_repository_creation_type?: "all" | "private" | "none";
+};
+type OrgsUpdateRequestOptions = {
+  method: "PATCH";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OrgsListBlockedUsersEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+};
+type OrgsListBlockedUsersRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OrgsCheckBlockedUserEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * username parameter
+   */
+  username: string;
+};
+type OrgsCheckBlockedUserRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OrgsBlockUserEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * username parameter
+   */
+  username: string;
+};
+type OrgsBlockUserRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OrgsUnblockUserEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * username parameter
+   */
+  username: string;
+};
+type OrgsUnblockUserRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OrgsListCredentialAuthorizationsEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+};
+type OrgsListCredentialAuthorizationsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OrgsRemoveCredentialAuthorizationEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * credential_id parameter
+   */
+  credential_id: number;
+};
+type OrgsRemoveCredentialAuthorizationRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ActivityListPublicEventsForOrgEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ActivityListPublicEventsForOrgRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OrgsListHooksEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type OrgsListHooksRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OrgsCreateHookEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * Must be passed as "web".
+   */
+  name: string;
+  /**
+   * Key/value pairs to provide settings for this webhook. [These are defined below](https://developer.github.com/v3/orgs/hooks/#create-hook-config-params).
+   */
+  config: OrgsCreateHookParamsConfig;
+  /**
+   * Determines what [events](https://developer.github.com/v3/activity/events/types/) the hook is triggered for.
+   */
+  events?: string[];
+  /**
+   * Determines if notifications are sent when the webhook is triggered. Set to `true` to send notifications.
+   */
+  active?: boolean;
+};
+type OrgsCreateHookRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OrgsGetHookEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * hook_id parameter
+   */
+  hook_id: number;
+};
+type OrgsGetHookRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OrgsUpdateHookEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * hook_id parameter
+   */
+  hook_id: number;
+  /**
+   * Key/value pairs to provide settings for this webhook. [These are defined below](https://developer.github.com/v3/orgs/hooks/#update-hook-config-params).
+   */
+  config?: OrgsUpdateHookParamsConfig;
+  /**
+   * Determines what [events](https://developer.github.com/v3/activity/events/types/) the hook is triggered for.
+   */
+  events?: string[];
+  /**
+   * Determines if notifications are sent when the webhook is triggered. Set to `true` to send notifications.
+   */
+  active?: boolean;
+};
+type OrgsUpdateHookRequestOptions = {
+  method: "PATCH";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OrgsDeleteHookEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * hook_id parameter
+   */
+  hook_id: number;
+};
+type OrgsDeleteHookRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OrgsPingHookEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * hook_id parameter
+   */
+  hook_id: number;
+};
+type OrgsPingHookRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type AppsGetOrgInstallationEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+};
+type AppsGetOrgInstallationRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type AppsFindOrgInstallationEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+};
+type AppsFindOrgInstallationRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type InteractionsGetRestrictionsForOrgEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+};
+type InteractionsGetRestrictionsForOrgRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type InteractionsAddOrUpdateRestrictionsForOrgEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * Specifies the group of GitHub users who can comment, open issues, or create pull requests in public repositories for the given organization. Must be one of: `existing_users`, `contributors_only`, or `collaborators_only`.
+   */
+  limit: "existing_users" | "contributors_only" | "collaborators_only";
+};
+type InteractionsAddOrUpdateRestrictionsForOrgRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type InteractionsRemoveRestrictionsForOrgEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+};
+type InteractionsRemoveRestrictionsForOrgRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OrgsListPendingInvitationsEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type OrgsListPendingInvitationsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OrgsCreateInvitationEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * **Required unless you provide `email`**. GitHub user ID for the person you are inviting.
+   */
+  invitee_id?: number;
+  /**
+   * **Required unless you provide `invitee_id`**. Email address of the person you are inviting, which can be an existing GitHub user.
+   */
+  email?: string;
+  /**
+   * Specify role for new member. Can be one of:
+   * \* `admin` - Organization owners with full administrative rights to the organization and complete access to all repositories and teams.
+   * \* `direct_member` - Non-owner organization members with ability to see other members and join teams by invitation.
+   * \* `billing_manager` - Non-owner organization members with ability to manage the billing settings of your organization.
+   */
+  role?: "admin" | "direct_member" | "billing_manager";
+  /**
+   * Specify IDs for the teams you want to invite new members to.
+   */
+  team_ids?: number[];
+};
+type OrgsCreateInvitationRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OrgsListInvitationTeamsEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * invitation_id parameter
+   */
+  invitation_id: number;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type OrgsListInvitationTeamsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type IssuesListForOrgEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * Indicates which sorts of issues to return. Can be one of:
+   * \* `assigned`: Issues assigned to you
+   * \* `created`: Issues created by you
+   * \* `mentioned`: Issues mentioning you
+   * \* `subscribed`: Issues you're subscribed to updates for
+   * \* `all`: All issues the authenticated user can see, regardless of participation or creation
+   */
+  filter?: "assigned" | "created" | "mentioned" | "subscribed" | "all";
+  /**
+   * Indicates the state of the issues to return. Can be either `open`, `closed`, or `all`.
+   */
+  state?: "open" | "closed" | "all";
+  /**
+   * A list of comma separated label names. Example: `bug,ui,@high`
+   */
+  labels?: string;
+  /**
+   * What to sort results by. Can be either `created`, `updated`, `comments`.
+   */
+  sort?: "created" | "updated" | "comments";
+  /**
+   * The direction of the sort. Can be either `asc` or `desc`.
+   */
+  direction?: "asc" | "desc";
+  /**
+   * Only issues updated at or after this time are returned. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
+   */
+  since?: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type IssuesListForOrgRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OrgsListMembersEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * Filter members returned in the list. Can be one of:
+   * \* `2fa_disabled` - Members without [two-factor authentication](https://github.com/blog/1614-two-factor-authentication) enabled. Available for organization owners.
+   * \* `all` - All members the authenticated user can see.
+   */
+  filter?: "2fa_disabled" | "all";
+  /**
+   * Filter members returned by their role. Can be one of:
+   * \* `all` - All members of the organization, regardless of role.
+   * \* `admin` - Organization owners.
+   * \* `member` - Non-owner organization members.
+   */
+  role?: "all" | "admin" | "member";
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type OrgsListMembersRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OrgsCheckMembershipEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * username parameter
+   */
+  username: string;
+};
+type OrgsCheckMembershipRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OrgsRemoveMemberEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * username parameter
+   */
+  username: string;
+};
+type OrgsRemoveMemberRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OrgsGetMembershipEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * username parameter
+   */
+  username: string;
+};
+type OrgsGetMembershipRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OrgsAddOrUpdateMembershipEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * username parameter
+   */
+  username: string;
+  /**
+   * The role to give the user in the organization. Can be one of:
+   * \* `admin` - The user will become an owner of the organization.
+   * \* `member` - The user will become a non-owner member of the organization.
+   */
+  role?: "admin" | "member";
+};
+type OrgsAddOrUpdateMembershipRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OrgsRemoveMembershipEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * username parameter
+   */
+  username: string;
+};
+type OrgsRemoveMembershipRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type MigrationsStartForOrgEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * A list of arrays indicating which repositories should be migrated.
+   */
+  repositories: string[];
+  /**
+   * Indicates whether repositories should be locked (to prevent manipulation) while migrating data.
+   */
+  lock_repositories?: boolean;
+  /**
+   * Indicates whether attachments should be excluded from the migration (to reduce migration archive file size).
+   */
+  exclude_attachments?: boolean;
+};
+type MigrationsStartForOrgRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type MigrationsListForOrgEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type MigrationsListForOrgRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type MigrationsGetStatusForOrgEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * migration_id parameter
+   */
+  migration_id: number;
+};
+type MigrationsGetStatusForOrgRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type MigrationsGetArchiveForOrgEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * migration_id parameter
+   */
+  migration_id: number;
+};
+type MigrationsGetArchiveForOrgRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type MigrationsDeleteArchiveForOrgEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * migration_id parameter
+   */
+  migration_id: number;
+};
+type MigrationsDeleteArchiveForOrgRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type MigrationsUnlockRepoForOrgEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * migration_id parameter
+   */
+  migration_id: number;
+  /**
+   * repo_name parameter
+   */
+  repo_name: string;
+};
+type MigrationsUnlockRepoForOrgRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OrgsListOutsideCollaboratorsEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * Filter the list of outside collaborators. Can be one of:
+   * \* `2fa_disabled`: Outside collaborators without [two-factor authentication](https://github.com/blog/1614-two-factor-authentication) enabled.
+   * \* `all`: All outside collaborators.
+   */
+  filter?: "2fa_disabled" | "all";
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type OrgsListOutsideCollaboratorsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OrgsRemoveOutsideCollaboratorEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * username parameter
+   */
+  username: string;
+};
+type OrgsRemoveOutsideCollaboratorRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OrgsConvertMemberToOutsideCollaboratorEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * username parameter
+   */
+  username: string;
+};
+type OrgsConvertMemberToOutsideCollaboratorRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ProjectsListForOrgEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * Indicates the state of the projects to return. Can be either `open`, `closed`, or `all`.
+   */
+  state?: "open" | "closed" | "all";
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ProjectsListForOrgRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ProjectsCreateForOrgEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * The name of the project.
+   */
+  name: string;
+  /**
+   * The description of the project.
+   */
+  body?: string;
+};
+type ProjectsCreateForOrgRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OrgsListPublicMembersEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type OrgsListPublicMembersRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OrgsCheckPublicMembershipEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * username parameter
+   */
+  username: string;
+};
+type OrgsCheckPublicMembershipRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OrgsPublicizeMembershipEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * username parameter
+   */
+  username: string;
+};
+type OrgsPublicizeMembershipRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OrgsConcealMembershipEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * username parameter
+   */
+  username: string;
+};
+type OrgsConcealMembershipRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposListForOrgEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * Can be one of `all`, `public`, `private`, `forks`, `sources`, `member`.
+   */
+  type?: "all" | "public" | "private" | "forks" | "sources" | "member";
+  /**
+   * Can be one of `created`, `updated`, `pushed`, `full_name`.
+   */
+  sort?: "created" | "updated" | "pushed" | "full_name";
+  /**
+   * Can be one of `asc` or `desc`. Default: when using `full_name`: `asc`, otherwise `desc`
+   */
+  direction?: "asc" | "desc";
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ReposListForOrgRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposCreateInOrgEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * The name of the repository.
+   */
+  name: string;
+  /**
+   * A short description of the repository.
+   */
+  description?: string;
+  /**
+   * A URL with more information about the repository.
+   */
+  homepage?: string;
+  /**
+   * Either `true` to create a private repository or `false` to create a public one. Creating private repositories requires a paid GitHub account.
+   */
+  private?: boolean;
+  /**
+   * Either `true` to enable issues for this repository or `false` to disable them.
+   */
+  has_issues?: boolean;
+  /**
+   * Either `true` to enable projects for this repository or `false` to disable them. **Note:** If you're creating a repository in an organization that has disabled repository projects, the default is `false`, and if you pass `true`, the API returns an error.
+   */
+  has_projects?: boolean;
+  /**
+   * Either `true` to enable the wiki for this repository or `false` to disable it.
+   */
+  has_wiki?: boolean;
+  /**
+   * Either `true` to make this repo available as a template repository or `false` to prevent it.
+   */
+  is_template?: boolean;
+  /**
+   * The id of the team that will be granted access to this repository. This is only valid when creating a repository in an organization.
+   */
+  team_id?: number;
+  /**
+   * Pass `true` to create an initial commit with empty README.
+   */
+  auto_init?: boolean;
+  /**
+   * Desired language or platform [.gitignore template](https://github.com/github/gitignore) to apply. Use the name of the template without the extension. For example, "Haskell".
+   */
+  gitignore_template?: string;
+  /**
+   * Choose an [open source license template](https://choosealicense.com/) that best suits your needs, and then use the [license keyword](https://help.github.com/articles/licensing-a-repository/#searching-github-by-license-type) as the `license_template` string. For example, "mit" or "mpl-2.0".
+   */
+  license_template?: string;
+  /**
+   * Either `true` to allow squash-merging pull requests, or `false` to prevent squash-merging.
+   */
+  allow_squash_merge?: boolean;
+  /**
+   * Either `true` to allow merging pull requests with a merge commit, or `false` to prevent merging pull requests with merge commits.
+   */
+  allow_merge_commit?: boolean;
+  /**
+   * Either `true` to allow rebase-merging pull requests, or `false` to prevent rebase-merging.
+   */
+  allow_rebase_merge?: boolean;
+};
+type ReposCreateInOrgRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type TeamsListIdPGroupsForOrgEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type TeamsListIdPGroupsForOrgRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type TeamsListEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type TeamsListRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type TeamsCreateEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * The name of the team.
+   */
+  name: string;
+  /**
+   * The description of the team.
+   */
+  description?: string;
+  /**
+   * The logins of organization members to add as maintainers of the team.
+   */
+  maintainers?: string[];
+  /**
+   * The full name (e.g., "organization-name/repository-name") of repositories to add the team to.
+   */
+  repo_names?: string[];
+  /**
+   * The level of privacy this team should have. The options are:
+   * **For a non-nested team:**
+   * \* `secret` - only visible to organization owners and members of this team.
+   * \* `closed` - visible to all members of this organization.
+   * Default: `secret`
+   * **For a parent or child team:**
+   * \* `closed` - visible to all members of this organization.
+   * Default for child team: `closed`
+   * **Note**: You must pass the `hellcat-preview` media type to set privacy default to `closed` for child teams.
+   */
+  privacy?: "secret" | "closed";
+  /**
+   * **Deprecated**. The permission that new repositories will be added to the team with when none is specified. Can be one of:
+   * \* `pull` - team members can pull, but not push to or administer newly-added repositories.
+   * \* `push` - team members can pull and push, but not administer newly-added repositories.
+   * \* `admin` - team members can pull, push and administer newly-added repositories.
+   */
+  permission?: "pull" | "push" | "admin";
+  /**
+   * The ID of a team to set as the parent team. **Note**: You must pass the `hellcat-preview` media type to use this parameter.
+   */
+  parent_team_id?: number;
+};
+type TeamsCreateRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type TeamsGetByNameEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * team_slug parameter
+   */
+  team_slug: string;
+};
+type TeamsGetByNameRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ProjectsGetCardEndpoint = {
+  /**
+   * card_id parameter
+   */
+  card_id: number;
+};
+type ProjectsGetCardRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ProjectsUpdateCardEndpoint = {
+  /**
+   * card_id parameter
+   */
+  card_id: number;
+  /**
+   * The card's note content. Only valid for cards without another type of content, so this cannot be specified if the card already has a `content_id` and `content_type`.
+   */
+  note?: string;
+  /**
+   * Use `true` to archive a project card. Specify `false` if you need to restore a previously archived project card.
+   */
+  archived?: boolean;
+};
+type ProjectsUpdateCardRequestOptions = {
+  method: "PATCH";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ProjectsDeleteCardEndpoint = {
+  /**
+   * card_id parameter
+   */
+  card_id: number;
+};
+type ProjectsDeleteCardRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ProjectsMoveCardEndpoint = {
+  /**
+   * card_id parameter
+   */
+  card_id: number;
+  /**
+   * Can be one of `top`, `bottom`, or `after:<card_id>`, where `<card_id>` is the `id` value of a card in the same column, or in the new column specified by `column_id`.
+   */
+  position: string;
+  /**
+   * The `id` value of a column in the same project.
+   */
+  column_id?: number;
+};
+type ProjectsMoveCardRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ProjectsGetColumnEndpoint = {
+  /**
+   * column_id parameter
+   */
+  column_id: number;
+};
+type ProjectsGetColumnRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ProjectsUpdateColumnEndpoint = {
+  /**
+   * column_id parameter
+   */
+  column_id: number;
+  /**
+   * The new name of the column.
+   */
+  name: string;
+};
+type ProjectsUpdateColumnRequestOptions = {
+  method: "PATCH";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ProjectsDeleteColumnEndpoint = {
+  /**
+   * column_id parameter
+   */
+  column_id: number;
+};
+type ProjectsDeleteColumnRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ProjectsListCardsEndpoint = {
+  /**
+   * column_id parameter
+   */
+  column_id: number;
+  /**
+   * Filters the project cards that are returned by the card's state. Can be one of `all`,`archived`, or `not_archived`.
+   */
+  archived_state?: "all" | "archived" | "not_archived";
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ProjectsListCardsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ProjectsCreateCardEndpoint = {
+  /**
+   * column_id parameter
+   */
+  column_id: number;
+  /**
+   * The card's note content. Only valid for cards without another type of content, so you must omit when specifying `content_id` and `content_type`.
+   */
+  note?: string;
+  /**
+   * The issue or pull request id you want to associate with this card. You can use the [List issues for a repository](https://developer.github.com/v3/issues/#list-issues-for-a-repository) and [List pull requests](https://developer.github.com/v3/pulls/#list-pull-requests) endpoints to find this id.
+   * **Note:** Depending on whether you use the issue id or pull request id, you will need to specify `Issue` or `PullRequest` as the `content_type`.
+   */
+  content_id?: number;
+  /**
+   * **Required if you provide `content_id`**. The type of content you want to associate with this card. Use `Issue` when `content_id` is an issue id and use `PullRequest` when `content_id` is a pull request id.
+   */
+  content_type?: string;
+};
+type ProjectsCreateCardRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ProjectsMoveColumnEndpoint = {
+  /**
+   * column_id parameter
+   */
+  column_id: number;
+  /**
+   * Can be one of `first`, `last`, or `after:<column_id>`, where `<column_id>` is the `id` value of a column in the same project.
+   */
+  position: string;
+};
+type ProjectsMoveColumnRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ProjectsGetEndpoint = {
+  /**
+   * project_id parameter
+   */
+  project_id: number;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ProjectsGetRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ProjectsUpdateEndpoint = {
+  /**
+   * project_id parameter
+   */
+  project_id: number;
+  /**
+   * The name of the project.
+   */
+  name?: string;
+  /**
+   * The description of the project.
+   */
+  body?: string;
+  /**
+   * State of the project. Either `open` or `closed`.
+   */
+  state?: "open" | "closed";
+  /**
+   * The permission level that determines whether all members of the project's organization can see and/or make changes to the project. Setting `organization_permission` is only available for organization projects. If an organization member belongs to a team with a higher level of access or is a collaborator with a higher level of access, their permission level is not lowered by `organization_permission`. For information on changing access for a team or collaborator, see [Add or update team project](https://developer.github.com/v3/teams/#add-or-update-team-project) or [Add user as a collaborator](https://developer.github.com/v3/projects/collaborators/#add-user-as-a-collaborator).
+   *
+   * **Note:** Updating a project's `organization_permission` requires `admin` access to the project.
+   *
+   * Can be one of:
+   * \* `read` - Organization members can read, but not write to or administer this project.
+   * \* `write` - Organization members can read and write, but not administer this project.
+   * \* `admin` - Organization members can read, write and administer this project.
+   * \* `none` - Organization members can only see this project if it is public.
+   */
+  organization_permission?: string;
+  /**
+   * Sets the visibility of a project board. Setting `private` is only available for organization and user projects. **Note:** Updating a project's visibility requires `admin` access to the project.
+   *
+   * Can be one of:
+   * \* `false` - Anyone can see the project.
+   * \* `true` - Only the user can view a project board created on a user account. Organization members with the appropriate `organization_permission` can see project boards in an organization account.
+   */
+  private?: boolean;
+};
+type ProjectsUpdateRequestOptions = {
+  method: "PATCH";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ProjectsDeleteEndpoint = {
+  /**
+   * project_id parameter
+   */
+  project_id: number;
+};
+type ProjectsDeleteRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ProjectsListCollaboratorsEndpoint = {
+  /**
+   * project_id parameter
+   */
+  project_id: number;
+  /**
+   * Filters the collaborators by their affiliation. Can be one of:
+   * \* `outside`: Outside collaborators of a project that are not a member of the project's organization.
+   * \* `direct`: Collaborators with permissions to a project, regardless of organization membership status.
+   * \* `all`: All collaborators the authenticated user can see.
+   */
+  affiliation?: "outside" | "direct" | "all";
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ProjectsListCollaboratorsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ProjectsAddCollaboratorEndpoint = {
+  /**
+   * project_id parameter
+   */
+  project_id: number;
+  /**
+   * username parameter
+   */
+  username: string;
+  /**
+   * The permission to grant the collaborator. Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://developer.github.com/v3/#http-verbs)." Can be one of:
+   * \* `read` - can read, but not write to or administer this project.
+   * \* `write` - can read and write, but not administer this project.
+   * \* `admin` - can read, write and administer this project.
+   */
+  permission?: "read" | "write" | "admin";
+};
+type ProjectsAddCollaboratorRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ProjectsRemoveCollaboratorEndpoint = {
+  /**
+   * project_id parameter
+   */
+  project_id: number;
+  /**
+   * username parameter
+   */
+  username: string;
+};
+type ProjectsRemoveCollaboratorRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ProjectsReviewUserPermissionLevelEndpoint = {
+  /**
+   * project_id parameter
+   */
+  project_id: number;
+  /**
+   * username parameter
+   */
+  username: string;
+};
+type ProjectsReviewUserPermissionLevelRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ProjectsListColumnsEndpoint = {
+  /**
+   * project_id parameter
+   */
+  project_id: number;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ProjectsListColumnsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ProjectsCreateColumnEndpoint = {
+  /**
+   * project_id parameter
+   */
+  project_id: number;
+  /**
+   * The name of the column.
+   */
+  name: string;
+};
+type ProjectsCreateColumnRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type RateLimitGetEndpoint = {};
+type RateLimitGetRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReactionsDeleteEndpoint = {
+  /**
+   * reaction_id parameter
+   */
+  reaction_id: number;
+};
+type ReactionsDeleteRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposGetEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+};
+type ReposGetRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposUpdateEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * The name of the repository.
+   */
+  name?: string;
+  /**
+   * A short description of the repository.
+   */
+  description?: string;
+  /**
+   * A URL with more information about the repository.
+   */
+  homepage?: string;
+  /**
+   * Either `true` to make the repository private or `false` to make it public. Creating private repositories requires a paid GitHub account. Default: `false`.
+   * **Note**: You will get a `422` error if the organization restricts [changing repository visibility](https://help.github.com/articles/repository-permission-levels-for-an-organization#changing-the-visibility-of-repositories) to organization owners and a non-owner tries to change the value of private. **Note**: You will get a `422` error if the organization restricts [changing repository visibility](https://help.github.com/articles/repository-permission-levels-for-an-organization#changing-the-visibility-of-repositories) to organization owners and a non-owner tries to change the value of private.
+   */
+  private?: boolean;
+  /**
+   * Either `true` to enable issues for this repository or `false` to disable them.
+   */
+  has_issues?: boolean;
+  /**
+   * Either `true` to enable projects for this repository or `false` to disable them. **Note:** If you're creating a repository in an organization that has disabled repository projects, the default is `false`, and if you pass `true`, the API returns an error.
+   */
+  has_projects?: boolean;
+  /**
+   * Either `true` to enable the wiki for this repository or `false` to disable it.
+   */
+  has_wiki?: boolean;
+  /**
+   * Either `true` to make this repo available as a template repository or `false` to prevent it.
+   */
+  is_template?: boolean;
+  /**
+   * Updates the default branch for this repository.
+   */
+  default_branch?: string;
+  /**
+   * Either `true` to allow squash-merging pull requests, or `false` to prevent squash-merging.
+   */
+  allow_squash_merge?: boolean;
+  /**
+   * Either `true` to allow merging pull requests with a merge commit, or `false` to prevent merging pull requests with merge commits.
+   */
+  allow_merge_commit?: boolean;
+  /**
+   * Either `true` to allow rebase-merging pull requests, or `false` to prevent rebase-merging.
+   */
+  allow_rebase_merge?: boolean;
+  /**
+   * `true` to archive this repository. **Note**: You cannot unarchive repositories through the API.
+   */
+  archived?: boolean;
+};
+type ReposUpdateRequestOptions = {
+  method: "PATCH";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposDeleteEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+};
+type ReposDeleteRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type IssuesListAssigneesEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type IssuesListAssigneesRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type IssuesCheckAssigneeEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * assignee parameter
+   */
+  assignee: string;
+};
+type IssuesCheckAssigneeRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposEnableAutomatedSecurityFixesEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+};
+type ReposEnableAutomatedSecurityFixesRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposDisableAutomatedSecurityFixesEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+};
+type ReposDisableAutomatedSecurityFixesRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposListBranchesEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * Setting to `true` returns only protected branches. When set to `false`, only unprotected branches are returned. Omitting this parameter returns all branches.
+   */
+  protected?: boolean;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ReposListBranchesRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposGetBranchEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * branch parameter
+   */
+  branch: string;
+};
+type ReposGetBranchRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposGetBranchProtectionEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * branch parameter
+   */
+  branch: string;
+};
+type ReposGetBranchProtectionRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposUpdateBranchProtectionEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * branch parameter
+   */
+  branch: string;
+  /**
+   * Require status checks to pass before merging. Set to `null` to disable.
+   */
+  required_status_checks: ReposUpdateBranchProtectionParamsRequiredStatusChecks | null;
+  /**
+   * Enforce all configured restrictions for administrators. Set to `true` to enforce required status checks for repository administrators. Set to `null` to disable.
+   */
+  enforce_admins: boolean | null;
+  /**
+   * Require at least one approving review on a pull request, before merging. Set to `null` to disable.
+   */
+  required_pull_request_reviews: ReposUpdateBranchProtectionParamsRequiredPullRequestReviews | null;
+  /**
+   * Restrict who can push to this branch. User, app, and team `restrictions` are only available for organization-owned repositories. Set to `null` to disable.
+   */
+  restrictions: ReposUpdateBranchProtectionParamsRestrictions | null;
+};
+type ReposUpdateBranchProtectionRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposRemoveBranchProtectionEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * branch parameter
+   */
+  branch: string;
+};
+type ReposRemoveBranchProtectionRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposGetProtectedBranchAdminEnforcementEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * branch parameter
+   */
+  branch: string;
+};
+type ReposGetProtectedBranchAdminEnforcementRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposAddProtectedBranchAdminEnforcementEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * branch parameter
+   */
+  branch: string;
+};
+type ReposAddProtectedBranchAdminEnforcementRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposRemoveProtectedBranchAdminEnforcementEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * branch parameter
+   */
+  branch: string;
+};
+type ReposRemoveProtectedBranchAdminEnforcementRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposGetProtectedBranchPullRequestReviewEnforcementEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * branch parameter
+   */
+  branch: string;
+};
+type ReposGetProtectedBranchPullRequestReviewEnforcementRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposUpdateProtectedBranchPullRequestReviewEnforcementEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * branch parameter
+   */
+  branch: string;
+  /**
+   * Specify which users and teams can dismiss pull request reviews. Pass an empty `dismissal_restrictions` object to disable. User and team `dismissal_restrictions` are only available for organization-owned repositories. Omit this parameter for personal repositories.
+   */
+  dismissal_restrictions?: ReposUpdateProtectedBranchPullRequestReviewEnforcementParamsDismissalRestrictions;
+  /**
+   * Set to `true` if you want to automatically dismiss approving reviews when someone pushes a new commit.
+   */
+  dismiss_stale_reviews?: boolean;
+  /**
+   * Blocks merging pull requests until [code owners](https://help.github.com/articles/about-code-owners/) have reviewed.
+   */
+  require_code_owner_reviews?: boolean;
+  /**
+   * Specifies the number of reviewers required to approve pull requests. Use a number between 1 and 6.
+   */
+  required_approving_review_count?: number;
+};
+type ReposUpdateProtectedBranchPullRequestReviewEnforcementRequestOptions = {
+  method: "PATCH";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposRemoveProtectedBranchPullRequestReviewEnforcementEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * branch parameter
+   */
+  branch: string;
+};
+type ReposRemoveProtectedBranchPullRequestReviewEnforcementRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposGetProtectedBranchRequiredSignaturesEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * branch parameter
+   */
+  branch: string;
+};
+type ReposGetProtectedBranchRequiredSignaturesRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposAddProtectedBranchRequiredSignaturesEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * branch parameter
+   */
+  branch: string;
+};
+type ReposAddProtectedBranchRequiredSignaturesRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposRemoveProtectedBranchRequiredSignaturesEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * branch parameter
+   */
+  branch: string;
+};
+type ReposRemoveProtectedBranchRequiredSignaturesRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposGetProtectedBranchRequiredStatusChecksEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * branch parameter
+   */
+  branch: string;
+};
+type ReposGetProtectedBranchRequiredStatusChecksRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposUpdateProtectedBranchRequiredStatusChecksEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * branch parameter
+   */
+  branch: string;
+  /**
+   * Require branches to be up to date before merging.
+   */
+  strict?: boolean;
+  /**
+   * The list of status checks to require in order to merge into this branch
+   */
+  contexts?: string[];
+};
+type ReposUpdateProtectedBranchRequiredStatusChecksRequestOptions = {
+  method: "PATCH";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposRemoveProtectedBranchRequiredStatusChecksEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * branch parameter
+   */
+  branch: string;
+};
+type ReposRemoveProtectedBranchRequiredStatusChecksRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposListProtectedBranchRequiredStatusChecksContextsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * branch parameter
+   */
+  branch: string;
+};
+type ReposListProtectedBranchRequiredStatusChecksContextsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposReplaceProtectedBranchRequiredStatusChecksContextsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * branch parameter
+   */
+  branch: string;
+  /**
+   * contexts parameter
+   */
+  contexts: string[];
+};
+type ReposReplaceProtectedBranchRequiredStatusChecksContextsRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposAddProtectedBranchRequiredStatusChecksContextsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * branch parameter
+   */
+  branch: string;
+  /**
+   * contexts parameter
+   */
+  contexts: string[];
+};
+type ReposAddProtectedBranchRequiredStatusChecksContextsRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposRemoveProtectedBranchRequiredStatusChecksContextsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * branch parameter
+   */
+  branch: string;
+  /**
+   * contexts parameter
+   */
+  contexts: string[];
+};
+type ReposRemoveProtectedBranchRequiredStatusChecksContextsRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposGetProtectedBranchRestrictionsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * branch parameter
+   */
+  branch: string;
+};
+type ReposGetProtectedBranchRestrictionsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposRemoveProtectedBranchRestrictionsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * branch parameter
+   */
+  branch: string;
+};
+type ReposRemoveProtectedBranchRestrictionsRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposGetAppsWithAccessToProtectedBranchEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * branch parameter
+   */
+  branch: string;
+};
+type ReposGetAppsWithAccessToProtectedBranchRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposListAppsWithAccessToProtectedBranchEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * branch parameter
+   */
+  branch: string;
+};
+type ReposListAppsWithAccessToProtectedBranchRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposReplaceProtectedBranchAppRestrictionsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * branch parameter
+   */
+  branch: string;
+  /**
+   * apps parameter
+   */
+  apps: string[];
+};
+type ReposReplaceProtectedBranchAppRestrictionsRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposAddProtectedBranchAppRestrictionsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * branch parameter
+   */
+  branch: string;
+  /**
+   * apps parameter
+   */
+  apps: string[];
+};
+type ReposAddProtectedBranchAppRestrictionsRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposRemoveProtectedBranchAppRestrictionsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * branch parameter
+   */
+  branch: string;
+  /**
+   * apps parameter
+   */
+  apps: string[];
+};
+type ReposRemoveProtectedBranchAppRestrictionsRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposGetTeamsWithAccessToProtectedBranchEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * branch parameter
+   */
+  branch: string;
+};
+type ReposGetTeamsWithAccessToProtectedBranchRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposListProtectedBranchTeamRestrictionsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * branch parameter
+   */
+  branch: string;
+};
+type ReposListProtectedBranchTeamRestrictionsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposListTeamsWithAccessToProtectedBranchEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * branch parameter
+   */
+  branch: string;
+};
+type ReposListTeamsWithAccessToProtectedBranchRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposReplaceProtectedBranchTeamRestrictionsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * branch parameter
+   */
+  branch: string;
+  /**
+   * teams parameter
+   */
+  teams: string[];
+};
+type ReposReplaceProtectedBranchTeamRestrictionsRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposAddProtectedBranchTeamRestrictionsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * branch parameter
+   */
+  branch: string;
+  /**
+   * teams parameter
+   */
+  teams: string[];
+};
+type ReposAddProtectedBranchTeamRestrictionsRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposRemoveProtectedBranchTeamRestrictionsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * branch parameter
+   */
+  branch: string;
+  /**
+   * teams parameter
+   */
+  teams: string[];
+};
+type ReposRemoveProtectedBranchTeamRestrictionsRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposGetUsersWithAccessToProtectedBranchEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * branch parameter
+   */
+  branch: string;
+};
+type ReposGetUsersWithAccessToProtectedBranchRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposListProtectedBranchUserRestrictionsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * branch parameter
+   */
+  branch: string;
+};
+type ReposListProtectedBranchUserRestrictionsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposListUsersWithAccessToProtectedBranchEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * branch parameter
+   */
+  branch: string;
+};
+type ReposListUsersWithAccessToProtectedBranchRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposReplaceProtectedBranchUserRestrictionsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * branch parameter
+   */
+  branch: string;
+  /**
+   * users parameter
+   */
+  users: string[];
+};
+type ReposReplaceProtectedBranchUserRestrictionsRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposAddProtectedBranchUserRestrictionsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * branch parameter
+   */
+  branch: string;
+  /**
+   * users parameter
+   */
+  users: string[];
+};
+type ReposAddProtectedBranchUserRestrictionsRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposRemoveProtectedBranchUserRestrictionsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * branch parameter
+   */
+  branch: string;
+  /**
+   * users parameter
+   */
+  users: string[];
+};
+type ReposRemoveProtectedBranchUserRestrictionsRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ChecksCreateEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * The name of the check. For example, "code-coverage".
+   */
+  name: string;
+  /**
+   * The SHA of the commit.
+   */
+  head_sha: string;
+  /**
+   * The URL of the integrator's site that has the full details of the check.
+   */
+  details_url?: string;
+  /**
+   * A reference for the run on the integrator's system.
+   */
+  external_id?: string;
+  /**
+   * The current status. Can be one of `queued`, `in_progress`, or `completed`.
+   */
+  status?: "queued" | "in_progress" | "completed";
+  /**
+   * The time that the check run began. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
+   */
+  started_at?: string;
+  /**
+   * **Required if you provide `completed_at` or a `status` of `completed`**. The final conclusion of the check. Can be one of `success`, `failure`, `neutral`, `cancelled`, `timed_out`, or `action_required`. When the conclusion is `action_required`, additional details should be provided on the site specified by `details_url`.
+   * **Note:** Providing `conclusion` will automatically set the `status` parameter to `completed`.
+   */
+  conclusion?:
+    | "success"
+    | "failure"
+    | "neutral"
+    | "cancelled"
+    | "timed_out"
+    | "action_required";
+  /**
+   * The time the check completed. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
+   */
+  completed_at?: string;
+  /**
+   * Check runs can accept a variety of data in the `output` object, including a `title` and `summary` and can optionally provide descriptive details about the run. See the [`output` object](https://developer.github.com/v3/checks/runs/#output-object) description.
+   */
+  output?: ChecksCreateParamsOutput;
+  /**
+   * Displays a button on GitHub that can be clicked to alert your app to do additional tasks. For example, a code linting app can display a button that automatically fixes detected errors. The button created in this object is displayed after the check run completes. When a user clicks the button, GitHub sends the [`check_run.requested_action` webhook](https://developer.github.com/v3/activity/events/types/#checkrunevent) to your app. Each action includes a `label`, `identifier` and `description`. A maximum of three actions are accepted. See the [`actions` object](https://developer.github.com/v3/checks/runs/#actions-object) description. To learn more about check runs and requested actions, see "[Check runs and requested actions](https://developer.github.com/v3/checks/runs/#check-runs-and-requested-actions)." To learn more about check runs and requested actions, see "[Check runs and requested actions](https://developer.github.com/v3/checks/runs/#check-runs-and-requested-actions)."
+   */
+  actions?: ChecksCreateParamsActions[];
+};
+type ChecksCreateRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ChecksUpdateEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * check_run_id parameter
+   */
+  check_run_id: number;
+  /**
+   * The name of the check. For example, "code-coverage".
+   */
+  name?: string;
+  /**
+   * The URL of the integrator's site that has the full details of the check.
+   */
+  details_url?: string;
+  /**
+   * A reference for the run on the integrator's system.
+   */
+  external_id?: string;
+  /**
+   * This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
+   */
+  started_at?: string;
+  /**
+   * The current status. Can be one of `queued`, `in_progress`, or `completed`.
+   */
+  status?: "queued" | "in_progress" | "completed";
+  /**
+   * **Required if you provide `completed_at` or a `status` of `completed`**. The final conclusion of the check. Can be one of `success`, `failure`, `neutral`, `cancelled`, `timed_out`, or `action_required`.
+   * **Note:** Providing `conclusion` will automatically set the `status` parameter to `completed`.
+   */
+  conclusion?:
+    | "success"
+    | "failure"
+    | "neutral"
+    | "cancelled"
+    | "timed_out"
+    | "action_required";
+  /**
+   * The time the check completed. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
+   */
+  completed_at?: string;
+  /**
+   * Check runs can accept a variety of data in the `output` object, including a `title` and `summary` and can optionally provide descriptive details about the run. See the [`output` object](https://developer.github.com/v3/checks/runs/#output-object-1) description.
+   */
+  output?: ChecksUpdateParamsOutput;
+  /**
+   * Possible further actions the integrator can perform, which a user may trigger. Each action includes a `label`, `identifier` and `description`. A maximum of three actions are accepted. See the [`actions` object](https://developer.github.com/v3/checks/runs/#actions-object) description. To learn more about check runs and requested actions, see "[Check runs and requested actions](https://developer.github.com/v3/checks/runs/#check-runs-and-requested-actions)."
+   */
+  actions?: ChecksUpdateParamsActions[];
+};
+type ChecksUpdateRequestOptions = {
+  method: "PATCH";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ChecksGetEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * check_run_id parameter
+   */
+  check_run_id: number;
+};
+type ChecksGetRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ChecksListAnnotationsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * check_run_id parameter
+   */
+  check_run_id: number;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ChecksListAnnotationsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ChecksCreateSuiteEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * The sha of the head commit.
+   */
+  head_sha: string;
+};
+type ChecksCreateSuiteRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ChecksSetSuitesPreferencesEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * Enables or disables automatic creation of CheckSuite events upon pushes to the repository. Enabled by default. See the [`auto_trigger_checks` object](https://developer.github.com/v3/checks/suites/#auto_trigger_checks-object) description for details.
+   */
+  auto_trigger_checks?: ChecksSetSuitesPreferencesParamsAutoTriggerChecks[];
+};
+type ChecksSetSuitesPreferencesRequestOptions = {
+  method: "PATCH";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ChecksGetSuiteEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * check_suite_id parameter
+   */
+  check_suite_id: number;
+};
+type ChecksGetSuiteRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ChecksListForSuiteEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * check_suite_id parameter
+   */
+  check_suite_id: number;
+  /**
+   * Returns check runs with the specified `name`.
+   */
+  check_name?: string;
+  /**
+   * Returns check runs with the specified `status`. Can be one of `queued`, `in_progress`, or `completed`.
+   */
+  status?: "queued" | "in_progress" | "completed";
+  /**
+   * Filters check runs by their `completed_at` timestamp. Can be one of `latest` (returning the most recent check runs) or `all`.
+   */
+  filter?: "latest" | "all";
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ChecksListForSuiteRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ChecksRerequestSuiteEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * check_suite_id parameter
+   */
+  check_suite_id: number;
+};
+type ChecksRerequestSuiteRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposListCollaboratorsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * Filter collaborators returned by their affiliation. Can be one of:
+   * \* `outside`: All outside collaborators of an organization-owned repository.
+   * \* `direct`: All collaborators with permissions to an organization-owned repository, regardless of organization membership status.
+   * \* `all`: All collaborators the authenticated user can see.
+   */
+  affiliation?: "outside" | "direct" | "all";
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ReposListCollaboratorsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposCheckCollaboratorEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * username parameter
+   */
+  username: string;
+};
+type ReposCheckCollaboratorRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposAddCollaboratorEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * username parameter
+   */
+  username: string;
+  /**
+   * The permission to grant the collaborator. **Only valid on organization-owned repositories.** Can be one of:
+   * \* `pull` - can pull, but not push to or administer this repository.
+   * \* `push` - can pull and push, but not administer this repository.
+   * \* `admin` - can pull, push and administer this repository.
+   */
+  permission?: "pull" | "push" | "admin";
+};
+type ReposAddCollaboratorRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposRemoveCollaboratorEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * username parameter
+   */
+  username: string;
+};
+type ReposRemoveCollaboratorRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposGetCollaboratorPermissionLevelEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * username parameter
+   */
+  username: string;
+};
+type ReposGetCollaboratorPermissionLevelRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposListCommitCommentsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ReposListCommitCommentsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposGetCommitCommentEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * comment_id parameter
+   */
+  comment_id: number;
+};
+type ReposGetCommitCommentRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposUpdateCommitCommentEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * comment_id parameter
+   */
+  comment_id: number;
+  /**
+   * The contents of the comment
+   */
+  body: string;
+};
+type ReposUpdateCommitCommentRequestOptions = {
+  method: "PATCH";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposDeleteCommitCommentEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * comment_id parameter
+   */
+  comment_id: number;
+};
+type ReposDeleteCommitCommentRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReactionsListForCommitCommentEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * comment_id parameter
+   */
+  comment_id: number;
+  /**
+   * Returns a single [reaction type](https://developer.github.com/v3/reactions/#reaction-types). Omit this parameter to list all reactions to a commit comment.
+   */
+  content?:
+    | "+1"
+    | "-1"
+    | "laugh"
+    | "confused"
+    | "heart"
+    | "hooray"
+    | "rocket"
+    | "eyes";
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ReactionsListForCommitCommentRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReactionsCreateForCommitCommentEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * comment_id parameter
+   */
+  comment_id: number;
+  /**
+   * The [reaction type](https://developer.github.com/v3/reactions/#reaction-types) to add to the commit comment.
+   */
+  content:
+    | "+1"
+    | "-1"
+    | "laugh"
+    | "confused"
+    | "heart"
+    | "hooray"
+    | "rocket"
+    | "eyes";
+};
+type ReactionsCreateForCommitCommentRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposListCommitsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * SHA or branch to start listing commits from. Default: the repository’s default branch (usually `master`).
+   */
+  sha?: string;
+  /**
+   * Only commits containing this file path will be returned.
+   */
+  path?: string;
+  /**
+   * GitHub login or email address by which to filter by commit author.
+   */
+  author?: string;
+  /**
+   * Only commits after this date will be returned. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
+   */
+  since?: string;
+  /**
+   * Only commits before this date will be returned. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
+   */
+  until?: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ReposListCommitsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposListBranchesForHeadCommitEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * commit_sha parameter
+   */
+  commit_sha: string;
+};
+type ReposListBranchesForHeadCommitRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposListCommentsForCommitEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * commit_sha parameter
+   */
+  commit_sha: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ReposListCommentsForCommitRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposCreateCommitCommentEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * commit_sha parameter
+   */
+  commit_sha: string;
+  /**
+   * The contents of the comment.
+   */
+  body: string;
+  /**
+   * Relative path of the file to comment on.
+   */
+  path?: string;
+  /**
+   * Line index in the diff to comment on.
+   */
+  position?: number;
+  /**
+   * **Deprecated**. Use **position** parameter instead. Line number in the file to comment on.
+   */
+  line?: number;
+};
+type ReposCreateCommitCommentRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposListPullRequestsAssociatedWithCommitEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * commit_sha parameter
+   */
+  commit_sha: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ReposListPullRequestsAssociatedWithCommitRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposGetCommitEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * ref parameter
+   */
+  ref: string;
+};
+type ReposGetCommitRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ChecksListForRefEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * ref parameter
+   */
+  ref: string;
+  /**
+   * Returns check runs with the specified `name`.
+   */
+  check_name?: string;
+  /**
+   * Returns check runs with the specified `status`. Can be one of `queued`, `in_progress`, or `completed`.
+   */
+  status?: "queued" | "in_progress" | "completed";
+  /**
+   * Filters check runs by their `completed_at` timestamp. Can be one of `latest` (returning the most recent check runs) or `all`.
+   */
+  filter?: "latest" | "all";
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ChecksListForRefRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ChecksListSuitesForRefEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * ref parameter
+   */
+  ref: string;
+  /**
+   * Filters check suites by GitHub App `id`.
+   */
+  app_id?: number;
+  /**
+   * Filters checks suites by the name of the [check run](https://developer.github.com/v3/checks/runs/).
+   */
+  check_name?: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ChecksListSuitesForRefRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposGetCombinedStatusForRefEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * ref parameter
+   */
+  ref: string;
+};
+type ReposGetCombinedStatusForRefRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposListStatusesForRefEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * ref parameter
+   */
+  ref: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ReposListStatusesForRefRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type CodesOfConductGetForRepoEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+};
+type CodesOfConductGetForRepoRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposRetrieveCommunityProfileMetricsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+};
+type ReposRetrieveCommunityProfileMetricsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposCompareCommitsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * base parameter
+   */
+  base: string;
+  /**
+   * head parameter
+   */
+  head: string;
+};
+type ReposCompareCommitsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposGetContentsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * path parameter
+   */
+  path: string;
+  /**
+   * The name of the commit/branch/tag. Default: the repository’s default branch (usually `master`)
+   */
+  ref?: string;
+};
+type ReposGetContentsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposCreateOrUpdateFileEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * path parameter
+   */
+  path: string;
+  /**
+   * The commit message.
+   */
+  message: string;
+  /**
+   * The new file content, using Base64 encoding.
+   */
+  content: string;
+  /**
+   * **Required if you are updating a file**. The blob SHA of the file being replaced.
+   */
+  sha?: string;
+  /**
+   * The branch name. Default: the repository’s default branch (usually `master`)
+   */
+  branch?: string;
+  /**
+   * The person that committed the file. Default: the authenticated user.
+   */
+  committer?: ReposCreateOrUpdateFileParamsCommitter;
+  /**
+   * The author of the file. Default: The `committer` or the authenticated user if you omit `committer`.
+   */
+  author?: ReposCreateOrUpdateFileParamsAuthor;
+};
+type ReposCreateOrUpdateFileRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposCreateFileEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * path parameter
+   */
+  path: string;
+  /**
+   * The commit message.
+   */
+  message: string;
+  /**
+   * The new file content, using Base64 encoding.
+   */
+  content: string;
+  /**
+   * **Required if you are updating a file**. The blob SHA of the file being replaced.
+   */
+  sha?: string;
+  /**
+   * The branch name. Default: the repository’s default branch (usually `master`)
+   */
+  branch?: string;
+  /**
+   * The person that committed the file. Default: the authenticated user.
+   */
+  committer?: ReposCreateFileParamsCommitter;
+  /**
+   * The author of the file. Default: The `committer` or the authenticated user if you omit `committer`.
+   */
+  author?: ReposCreateFileParamsAuthor;
+};
+type ReposCreateFileRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposUpdateFileEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * path parameter
+   */
+  path: string;
+  /**
+   * The commit message.
+   */
+  message: string;
+  /**
+   * The new file content, using Base64 encoding.
+   */
+  content: string;
+  /**
+   * **Required if you are updating a file**. The blob SHA of the file being replaced.
+   */
+  sha?: string;
+  /**
+   * The branch name. Default: the repository’s default branch (usually `master`)
+   */
+  branch?: string;
+  /**
+   * The person that committed the file. Default: the authenticated user.
+   */
+  committer?: ReposUpdateFileParamsCommitter;
+  /**
+   * The author of the file. Default: The `committer` or the authenticated user if you omit `committer`.
+   */
+  author?: ReposUpdateFileParamsAuthor;
+};
+type ReposUpdateFileRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposDeleteFileEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * path parameter
+   */
+  path: string;
+  /**
+   * The commit message.
+   */
+  message: string;
+  /**
+   * The blob SHA of the file being replaced.
+   */
+  sha: string;
+  /**
+   * The branch name. Default: the repository’s default branch (usually `master`)
+   */
+  branch?: string;
+  /**
+   * object containing information about the committer.
+   */
+  committer?: ReposDeleteFileParamsCommitter;
+  /**
+   * object containing information about the author.
+   */
+  author?: ReposDeleteFileParamsAuthor;
+};
+type ReposDeleteFileRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposListContributorsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * Set to `1` or `true` to include anonymous contributors in results.
+   */
+  anon?: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ReposListContributorsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposListDeploymentsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * The SHA recorded at creation time.
+   */
+  sha?: string;
+  /**
+   * The name of the ref. This can be a branch, tag, or SHA.
+   */
+  ref?: string;
+  /**
+   * The name of the task for the deployment (e.g., `deploy` or `deploy:migrations`).
+   */
+  task?: string;
+  /**
+   * The name of the environment that was deployed to (e.g., `staging` or `production`).
+   */
+  environment?: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ReposListDeploymentsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposCreateDeploymentEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * The ref to deploy. This can be a branch, tag, or SHA.
+   */
+  ref: string;
+  /**
+   * Specifies a task to execute (e.g., `deploy` or `deploy:migrations`).
+   */
+  task?: string;
+  /**
+   * Attempts to automatically merge the default branch into the requested ref, if it's behind the default branch.
+   */
+  auto_merge?: boolean;
+  /**
+   * The [status](https://developer.github.com/v3/repos/statuses/) contexts to verify against commit status checks. If you omit this parameter, GitHub verifies all unique contexts before creating a deployment. To bypass checking entirely, pass an empty array. Defaults to all unique contexts.
+   */
+  required_contexts?: string[];
+  /**
+   * JSON payload with extra information about the deployment.
+   */
+  payload?: string;
+  /**
+   * Name for the target deployment environment (e.g., `production`, `staging`, `qa`).
+   */
+  environment?: string;
+  /**
+   * Short description of the deployment.
+   */
+  description?: string;
+  /**
+   * Specifies if the given environment is specific to the deployment and will no longer exist at some point in the future. Default: `false`
+   * **Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://developer.github.com/v3/previews/#enhanced-deployments) custom media type. **Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://developer.github.com/v3/previews/#enhanced-deployments) custom media type.
+   */
+  transient_environment?: boolean;
+  /**
+   * Specifies if the given environment is one that end-users directly interact with. Default: `true` when `environment` is `production` and `false` otherwise.
+   * **Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://developer.github.com/v3/previews/#enhanced-deployments) custom media type.
+   */
+  production_environment?: boolean;
+};
+type ReposCreateDeploymentRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposGetDeploymentEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * deployment_id parameter
+   */
+  deployment_id: number;
+};
+type ReposGetDeploymentRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposListDeploymentStatusesEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * deployment_id parameter
+   */
+  deployment_id: number;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ReposListDeploymentStatusesRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposCreateDeploymentStatusEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * deployment_id parameter
+   */
+  deployment_id: number;
+  /**
+   * The state of the status. Can be one of `error`, `failure`, `inactive`, `in_progress`, `queued` `pending`, or `success`. **Note:** To use the `inactive` state, you must provide the [`application/vnd.github.ant-man-preview+json`](https://developer.github.com/v3/previews/#enhanced-deployments) custom media type. To use the `in_progress` and `queued` states, you must provide the [`application/vnd.github.flash-preview+json`](https://developer.github.com/v3/previews/#deployment-statuses) custom media type.
+   */
+  state:
+    | "error"
+    | "failure"
+    | "inactive"
+    | "in_progress"
+    | "queued"
+    | "pending"
+    | "success";
+  /**
+   * The target URL to associate with this status. This URL should contain output to keep the user updated while the task is running or serve as historical information for what happened in the deployment. **Note:** It's recommended to use the `log_url` parameter, which replaces `target_url`.
+   */
+  target_url?: string;
+  /**
+   * The full URL of the deployment's output. This parameter replaces `target_url`. We will continue to accept `target_url` to support legacy uses, but we recommend replacing `target_url` with `log_url`. Setting `log_url` will automatically set `target_url` to the same value. Default: `""`
+   * **Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://developer.github.com/v3/previews/#enhanced-deployments) custom media type. **Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://developer.github.com/v3/previews/#enhanced-deployments) custom media type.
+   */
+  log_url?: string;
+  /**
+   * A short description of the status. The maximum description length is 140 characters.
+   */
+  description?: string;
+  /**
+   * Name for the target deployment environment, which can be changed when setting a deploy status. For example, `production`, `staging`, or `qa`. **Note:** This parameter requires you to use the [`application/vnd.github.flash-preview+json`](https://developer.github.com/v3/previews/#deployment-statuses) custom media type.
+   */
+  environment?: "production" | "staging" | "qa";
+  /**
+   * Sets the URL for accessing your environment. Default: `""`
+   * **Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://developer.github.com/v3/previews/#enhanced-deployments) custom media type. **Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://developer.github.com/v3/previews/#enhanced-deployments) custom media type.
+   */
+  environment_url?: string;
+  /**
+   * Adds a new `inactive` status to all prior non-transient, non-production environment deployments with the same repository and `environment` name as the created status's deployment. An `inactive` status is only added to deployments that had a `success` state. Default: `true`
+   * **Note:** To add an `inactive` status to `production` environments, you must use the [`application/vnd.github.flash-preview+json`](https://developer.github.com/v3/previews/#deployment-statuses) custom media type.
+   * **Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://developer.github.com/v3/previews/#enhanced-deployments) custom media type.
+   */
+  auto_inactive?: boolean;
+};
+type ReposCreateDeploymentStatusRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposGetDeploymentStatusEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * deployment_id parameter
+   */
+  deployment_id: number;
+  /**
+   * status_id parameter
+   */
+  status_id: number;
+};
+type ReposGetDeploymentStatusRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposCreateDispatchEventEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * **Required:** A custom webhook event name.
+   */
+  event_type?: string;
+};
+type ReposCreateDispatchEventRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposListDownloadsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ReposListDownloadsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposGetDownloadEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * download_id parameter
+   */
+  download_id: number;
+};
+type ReposGetDownloadRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposDeleteDownloadEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * download_id parameter
+   */
+  download_id: number;
+};
+type ReposDeleteDownloadRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ActivityListRepoEventsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ActivityListRepoEventsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposListForksEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * The sort order. Can be either `newest`, `oldest`, or `stargazers`.
+   */
+  sort?: "newest" | "oldest" | "stargazers";
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ReposListForksRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposCreateForkEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * Optional parameter to specify the organization name if forking into an organization.
+   */
+  organization?: string;
+};
+type ReposCreateForkRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type GitCreateBlobEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * The new blob's content.
+   */
+  content: string;
+  /**
+   * The encoding used for `content`. Currently, `"utf-8"` and `"base64"` are supported.
+   */
+  encoding?: string;
+};
+type GitCreateBlobRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type GitGetBlobEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * file_sha parameter
+   */
+  file_sha: string;
+};
+type GitGetBlobRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type GitCreateCommitEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * The commit message
+   */
+  message: string;
+  /**
+   * The SHA of the tree object this commit points to
+   */
+  tree: string;
+  /**
+   * The SHAs of the commits that were the parents of this commit. If omitted or empty, the commit will be written as a root commit. For a single parent, an array of one SHA should be provided; for a merge commit, an array of more than one should be provided.
+   */
+  parents: string[];
+  /**
+   * Information about the author of the commit. By default, the `author` will be the authenticated user and the current date. See the `author` and `committer` object below for details.
+   */
+  author?: GitCreateCommitParamsAuthor;
+  /**
+   * Information about the person who is making the commit. By default, `committer` will use the information set in `author`. See the `author` and `committer` object below for details.
+   */
+  committer?: GitCreateCommitParamsCommitter;
+  /**
+   * The [PGP signature](https://en.wikipedia.org/wiki/Pretty_Good_Privacy) of the commit. GitHub adds the signature to the `gpgsig` header of the created commit. For a commit signature to be verifiable by Git or GitHub, it must be an ASCII-armored detached PGP signature over the string commit as it would be written to the object database. To pass a `signature` parameter, you need to first manually create a valid PGP signature, which can be complicated. You may find it easier to [use the command line](https://git-scm.com/book/id/v2/Git-Tools-Signing-Your-Work) to create signed commits.
+   */
+  signature?: string;
+};
+type GitCreateCommitRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type GitGetCommitEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * commit_sha parameter
+   */
+  commit_sha: string;
+};
+type GitGetCommitRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type GitListMatchingRefsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * ref parameter
+   */
+  ref: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type GitListMatchingRefsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type GitGetRefEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * ref parameter
+   */
+  ref: string;
+};
+type GitGetRefRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type GitCreateRefEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * The name of the fully qualified reference (ie: `refs/heads/master`). If it doesn't start with 'refs' and have at least two slashes, it will be rejected.
+   */
+  ref: string;
+  /**
+   * The SHA1 value for this reference.
+   */
+  sha: string;
+};
+type GitCreateRefRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type GitUpdateRefEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * ref parameter
+   */
+  ref: string;
+  /**
+   * The SHA1 value to set this reference to
+   */
+  sha: string;
+  /**
+   * Indicates whether to force the update or to make sure the update is a fast-forward update. Leaving this out or setting it to `false` will make sure you're not overwriting work.
+   */
+  force?: boolean;
+};
+type GitUpdateRefRequestOptions = {
+  method: "PATCH";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type GitDeleteRefEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * ref parameter
+   */
+  ref: string;
+};
+type GitDeleteRefRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type GitCreateTagEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * The tag's name. This is typically a version (e.g., "v0.0.1").
+   */
+  tag: string;
+  /**
+   * The tag message.
+   */
+  message: string;
+  /**
+   * The SHA of the git object this is tagging.
+   */
+  object: string;
+  /**
+   * The type of the object we're tagging. Normally this is a `commit` but it can also be a `tree` or a `blob`.
+   */
+  type: "commit" | "tree" | "blob";
+  /**
+   * An object with information about the individual creating the tag.
+   */
+  tagger?: GitCreateTagParamsTagger;
+};
+type GitCreateTagRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type GitGetTagEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * tag_sha parameter
+   */
+  tag_sha: string;
+};
+type GitGetTagRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type GitCreateTreeEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * Objects (of `path`, `mode`, `type`, and `sha`) specifying a tree structure.
+   */
+  tree: GitCreateTreeParamsTree[];
+  /**
+   * The SHA1 of the tree you want to update with new data. If you don't set this, the commit will be created on top of everything; however, it will only contain your change, the rest of your files will show up as deleted.
+   */
+  base_tree?: string;
+};
+type GitCreateTreeRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type GitGetTreeEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * tree_sha parameter
+   */
+  tree_sha: string;
+  /**
+   * recursive parameter
+   */
+  recursive?: "1";
+};
+type GitGetTreeRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposListHooksEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ReposListHooksRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposCreateHookEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * Use `web` to create a webhook. Default: `web`. This parameter only accepts the value `web`.
+   */
+  name?: string;
+  /**
+   * Key/value pairs to provide settings for this webhook. [These are defined below](https://developer.github.com/v3/repos/hooks/#create-hook-config-params).
+   */
+  config: ReposCreateHookParamsConfig;
+  /**
+   * Determines what [events](https://developer.github.com/v3/activity/events/types/) the hook is triggered for.
+   */
+  events?: string[];
+  /**
+   * Determines if notifications are sent when the webhook is triggered. Set to `true` to send notifications.
+   */
+  active?: boolean;
+};
+type ReposCreateHookRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposGetHookEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * hook_id parameter
+   */
+  hook_id: number;
+};
+type ReposGetHookRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposUpdateHookEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * hook_id parameter
+   */
+  hook_id: number;
+  /**
+   * Key/value pairs to provide settings for this webhook. [These are defined below](https://developer.github.com/v3/repos/hooks/#create-hook-config-params).
+   */
+  config?: ReposUpdateHookParamsConfig;
+  /**
+   * Determines what [events](https://developer.github.com/v3/activity/events/types/) the hook is triggered for. This replaces the entire array of events.
+   */
+  events?: string[];
+  /**
+   * Determines a list of events to be added to the list of events that the Hook triggers for.
+   */
+  add_events?: string[];
+  /**
+   * Determines a list of events to be removed from the list of events that the Hook triggers for.
+   */
+  remove_events?: string[];
+  /**
+   * Determines if notifications are sent when the webhook is triggered. Set to `true` to send notifications.
+   */
+  active?: boolean;
+};
+type ReposUpdateHookRequestOptions = {
+  method: "PATCH";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposDeleteHookEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * hook_id parameter
+   */
+  hook_id: number;
+};
+type ReposDeleteHookRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposPingHookEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * hook_id parameter
+   */
+  hook_id: number;
+};
+type ReposPingHookRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposTestPushHookEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * hook_id parameter
+   */
+  hook_id: number;
+};
+type ReposTestPushHookRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type MigrationsStartImportEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * The URL of the originating repository.
+   */
+  vcs_url: string;
+  /**
+   * The originating VCS type. Can be one of `subversion`, `git`, `mercurial`, or `tfvc`. Please be aware that without this parameter, the import job will take additional time to detect the VCS type before beginning the import. This detection step will be reflected in the response.
+   */
+  vcs?: "subversion" | "git" | "mercurial" | "tfvc";
+  /**
+   * If authentication is required, the username to provide to `vcs_url`.
+   */
+  vcs_username?: string;
+  /**
+   * If authentication is required, the password to provide to `vcs_url`.
+   */
+  vcs_password?: string;
+  /**
+   * For a tfvc import, the name of the project that is being imported.
+   */
+  tfvc_project?: string;
+};
+type MigrationsStartImportRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type MigrationsGetImportProgressEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+};
+type MigrationsGetImportProgressRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type MigrationsUpdateImportEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * The username to provide to the originating repository.
+   */
+  vcs_username?: string;
+  /**
+   * The password to provide to the originating repository.
+   */
+  vcs_password?: string;
+};
+type MigrationsUpdateImportRequestOptions = {
+  method: "PATCH";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type MigrationsCancelImportEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+};
+type MigrationsCancelImportRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type MigrationsGetCommitAuthorsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * Only authors found after this id are returned. Provide the highest author ID you've seen so far. New authors may be added to the list at any point while the importer is performing the `raw` step.
+   */
+  since?: string;
+};
+type MigrationsGetCommitAuthorsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type MigrationsMapCommitAuthorEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * author_id parameter
+   */
+  author_id: number;
+  /**
+   * The new Git author email.
+   */
+  email?: string;
+  /**
+   * The new Git author name.
+   */
+  name?: string;
+};
+type MigrationsMapCommitAuthorRequestOptions = {
+  method: "PATCH";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type MigrationsGetLargeFilesEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+};
+type MigrationsGetLargeFilesRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type MigrationsSetLfsPreferenceEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * Can be one of `opt_in` (large files will be stored using Git LFS) or `opt_out` (large files will be removed during the import).
+   */
+  use_lfs: "opt_in" | "opt_out";
+};
+type MigrationsSetLfsPreferenceRequestOptions = {
+  method: "PATCH";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type AppsGetRepoInstallationEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+};
+type AppsGetRepoInstallationRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type AppsFindRepoInstallationEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+};
+type AppsFindRepoInstallationRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type InteractionsGetRestrictionsForRepoEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+};
+type InteractionsGetRestrictionsForRepoRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type InteractionsAddOrUpdateRestrictionsForRepoEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * Specifies the group of GitHub users who can comment, open issues, or create pull requests for the given repository. Must be one of: `existing_users`, `contributors_only`, or `collaborators_only`.
+   */
+  limit: "existing_users" | "contributors_only" | "collaborators_only";
+};
+type InteractionsAddOrUpdateRestrictionsForRepoRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type InteractionsRemoveRestrictionsForRepoEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+};
+type InteractionsRemoveRestrictionsForRepoRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposListInvitationsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ReposListInvitationsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposDeleteInvitationEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * invitation_id parameter
+   */
+  invitation_id: number;
+};
+type ReposDeleteInvitationRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposUpdateInvitationEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * invitation_id parameter
+   */
+  invitation_id: number;
+  /**
+   * The permissions that the associated user will have on the repository. Valid values are `read`, `write`, and `admin`.
+   */
+  permissions?: "read" | "write" | "admin";
+};
+type ReposUpdateInvitationRequestOptions = {
+  method: "PATCH";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type IssuesListForRepoEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * If an `integer` is passed, it should refer to a milestone by its `number` field. If the string `*` is passed, issues with any milestone are accepted. If the string `none` is passed, issues without milestones are returned.
+   */
+  milestone?: string;
+  /**
+   * Indicates the state of the issues to return. Can be either `open`, `closed`, or `all`.
+   */
+  state?: "open" | "closed" | "all";
+  /**
+   * Can be the name of a user. Pass in `none` for issues with no assigned user, and `*` for issues assigned to any user.
+   */
+  assignee?: string;
+  /**
+   * The user that created the issue.
+   */
+  creator?: string;
+  /**
+   * A user that's mentioned in the issue.
+   */
+  mentioned?: string;
+  /**
+   * A list of comma separated label names. Example: `bug,ui,@high`
+   */
+  labels?: string;
+  /**
+   * What to sort results by. Can be either `created`, `updated`, `comments`.
+   */
+  sort?: "created" | "updated" | "comments";
+  /**
+   * The direction of the sort. Can be either `asc` or `desc`.
+   */
+  direction?: "asc" | "desc";
+  /**
+   * Only issues updated at or after this time are returned. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
+   */
+  since?: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type IssuesListForRepoRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type IssuesCreateEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * The title of the issue.
+   */
+  title: string;
+  /**
+   * The contents of the issue.
+   */
+  body?: string;
+  /**
+   * Login for the user that this issue should be assigned to. _NOTE: Only users with push access can set the assignee for new issues. The assignee is silently dropped otherwise. **This field is deprecated.**_
+   */
+  assignee?: string;
+  /**
+   * The `number` of the milestone to associate this issue with. _NOTE: Only users with push access can set the milestone for new issues. The milestone is silently dropped otherwise._
+   */
+  milestone?: number;
+  /**
+   * Labels to associate with this issue. _NOTE: Only users with push access can set labels for new issues. Labels are silently dropped otherwise._
+   */
+  labels?: string[];
+  /**
+   * Logins for Users to assign to this issue. _NOTE: Only users with push access can set assignees for new issues. Assignees are silently dropped otherwise._
+   */
+  assignees?: string[];
+};
+type IssuesCreateRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type IssuesListCommentsForRepoEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * Either `created` or `updated`.
+   */
+  sort?: "created" | "updated";
+  /**
+   * Either `asc` or `desc`. Ignored without the `sort` parameter.
+   */
+  direction?: "asc" | "desc";
+  /**
+   * Only comments updated at or after this time are returned. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
+   */
+  since?: string;
+};
+type IssuesListCommentsForRepoRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type IssuesGetCommentEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * comment_id parameter
+   */
+  comment_id: number;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type IssuesGetCommentRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type IssuesUpdateCommentEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * comment_id parameter
+   */
+  comment_id: number;
+  /**
+   * The contents of the comment.
+   */
+  body: string;
+};
+type IssuesUpdateCommentRequestOptions = {
+  method: "PATCH";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type IssuesDeleteCommentEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * comment_id parameter
+   */
+  comment_id: number;
+};
+type IssuesDeleteCommentRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReactionsListForIssueCommentEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * comment_id parameter
+   */
+  comment_id: number;
+  /**
+   * Returns a single [reaction type](https://developer.github.com/v3/reactions/#reaction-types). Omit this parameter to list all reactions to an issue comment.
+   */
+  content?:
+    | "+1"
+    | "-1"
+    | "laugh"
+    | "confused"
+    | "heart"
+    | "hooray"
+    | "rocket"
+    | "eyes";
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ReactionsListForIssueCommentRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReactionsCreateForIssueCommentEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * comment_id parameter
+   */
+  comment_id: number;
+  /**
+   * The [reaction type](https://developer.github.com/v3/reactions/#reaction-types) to add to the issue comment.
+   */
+  content:
+    | "+1"
+    | "-1"
+    | "laugh"
+    | "confused"
+    | "heart"
+    | "hooray"
+    | "rocket"
+    | "eyes";
+};
+type ReactionsCreateForIssueCommentRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type IssuesListEventsForRepoEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type IssuesListEventsForRepoRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type IssuesGetEventEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * event_id parameter
+   */
+  event_id: number;
+};
+type IssuesGetEventRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type IssuesGetEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * issue_number parameter
+   */
+  issue_number: number;
+};
+type IssuesGetRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type IssuesUpdateEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * issue_number parameter
+   */
+  issue_number: number;
+  /**
+   * The title of the issue.
+   */
+  title?: string;
+  /**
+   * The contents of the issue.
+   */
+  body?: string;
+  /**
+   * Login for the user that this issue should be assigned to. **This field is deprecated.**
+   */
+  assignee?: string;
+  /**
+   * State of the issue. Either `open` or `closed`.
+   */
+  state?: "open" | "closed";
+  /**
+   * The `number` of the milestone to associate this issue with or `null` to remove current. _NOTE: Only users with push access can set the milestone for issues. The milestone is silently dropped otherwise._
+   */
+  milestone?: number | null;
+  /**
+   * Labels to associate with this issue. Pass one or more Labels to _replace_ the set of Labels on this Issue. Send an empty array (`[]`) to clear all Labels from the Issue. _NOTE: Only users with push access can set labels for issues. Labels are silently dropped otherwise._
+   */
+  labels?: string[];
+  /**
+   * Logins for Users to assign to this issue. Pass one or more user logins to _replace_ the set of assignees on this Issue. Send an empty array (`[]`) to clear all assignees from the Issue. _NOTE: Only users with push access can set assignees for new issues. Assignees are silently dropped otherwise._
+   */
+  assignees?: string[];
+};
+type IssuesUpdateRequestOptions = {
+  method: "PATCH";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type IssuesAddAssigneesEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * issue_number parameter
+   */
+  issue_number: number;
+  /**
+   * Usernames of people to assign this issue to. _NOTE: Only users with push access can add assignees to an issue. Assignees are silently ignored otherwise._
+   */
+  assignees?: string[];
+};
+type IssuesAddAssigneesRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type IssuesRemoveAssigneesEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * issue_number parameter
+   */
+  issue_number: number;
+  /**
+   * Usernames of assignees to remove from an issue. _NOTE: Only users with push access can remove assignees from an issue. Assignees are silently ignored otherwise._
+   */
+  assignees?: string[];
+};
+type IssuesRemoveAssigneesRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type IssuesListCommentsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * issue_number parameter
+   */
+  issue_number: number;
+  /**
+   * Only comments updated at or after this time are returned. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
+   */
+  since?: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type IssuesListCommentsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type IssuesCreateCommentEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * issue_number parameter
+   */
+  issue_number: number;
+  /**
+   * The contents of the comment.
+   */
+  body: string;
+};
+type IssuesCreateCommentRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type IssuesListEventsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * issue_number parameter
+   */
+  issue_number: number;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type IssuesListEventsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type IssuesListLabelsOnIssueEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * issue_number parameter
+   */
+  issue_number: number;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type IssuesListLabelsOnIssueRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type IssuesAddLabelsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * issue_number parameter
+   */
+  issue_number: number;
+  /**
+   * The name of the label to add to the issue. Must contain at least one label. **Note:** Alternatively, you can pass a single label as a `string` or an `array` of labels directly, but GitHub recommends passing an object with the `labels` key.
+   */
+  labels: string[];
+};
+type IssuesAddLabelsRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type IssuesReplaceLabelsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * issue_number parameter
+   */
+  issue_number: number;
+  /**
+   * The names of the labels to add to the issue. You can pass an empty array to remove all labels. **Note:** Alternatively, you can pass a single label as a `string` or an `array` of labels directly, but GitHub recommends passing an object with the `labels` key.
+   */
+  labels?: string[];
+};
+type IssuesReplaceLabelsRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type IssuesRemoveLabelsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * issue_number parameter
+   */
+  issue_number: number;
+};
+type IssuesRemoveLabelsRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type IssuesRemoveLabelEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * issue_number parameter
+   */
+  issue_number: number;
+  /**
+   * name parameter
+   */
+  name: string;
+};
+type IssuesRemoveLabelRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type IssuesLockEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * issue_number parameter
+   */
+  issue_number: number;
+  /**
+   * The reason for locking the issue or pull request conversation. Lock will fail if you don't use one of these reasons:
+   * \* `off-topic`
+   * \* `too heated`
+   * \* `resolved`
+   * \* `spam`
+   */
+  lock_reason?: "off-topic" | "too heated" | "resolved" | "spam";
+};
+type IssuesLockRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type IssuesUnlockEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * issue_number parameter
+   */
+  issue_number: number;
+};
+type IssuesUnlockRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReactionsListForIssueEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * issue_number parameter
+   */
+  issue_number: number;
+  /**
+   * Returns a single [reaction type](https://developer.github.com/v3/reactions/#reaction-types). Omit this parameter to list all reactions to an issue.
+   */
+  content?:
+    | "+1"
+    | "-1"
+    | "laugh"
+    | "confused"
+    | "heart"
+    | "hooray"
+    | "rocket"
+    | "eyes";
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ReactionsListForIssueRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReactionsCreateForIssueEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * issue_number parameter
+   */
+  issue_number: number;
+  /**
+   * The [reaction type](https://developer.github.com/v3/reactions/#reaction-types) to add to the issue.
+   */
+  content:
+    | "+1"
+    | "-1"
+    | "laugh"
+    | "confused"
+    | "heart"
+    | "hooray"
+    | "rocket"
+    | "eyes";
+};
+type ReactionsCreateForIssueRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type IssuesListEventsForTimelineEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * issue_number parameter
+   */
+  issue_number: number;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type IssuesListEventsForTimelineRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposListDeployKeysEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ReposListDeployKeysRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposAddDeployKeyEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * A name for the key.
+   */
+  title?: string;
+  /**
+   * The contents of the key.
+   */
+  key: string;
+  /**
+   * If `true`, the key will only be able to read repository contents. Otherwise, the key will be able to read and write.
+   *
+   * Deploy keys with write access can perform the same actions as an organization member with admin access, or a collaborator on a personal repository. For more information, see "[Repository permission levels for an organization](https://help.github.com/articles/repository-permission-levels-for-an-organization/)" and "[Permission levels for a user account repository](https://help.github.com/articles/permission-levels-for-a-user-account-repository/)."
+   */
+  read_only?: boolean;
+};
+type ReposAddDeployKeyRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposGetDeployKeyEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * key_id parameter
+   */
+  key_id: number;
+};
+type ReposGetDeployKeyRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposRemoveDeployKeyEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * key_id parameter
+   */
+  key_id: number;
+};
+type ReposRemoveDeployKeyRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type IssuesListLabelsForRepoEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type IssuesListLabelsForRepoRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type IssuesCreateLabelEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * The name of the label. Emoji can be added to label names, using either native emoji or colon-style markup. For example, typing `:strawberry:` will render the emoji ![:strawberry:](https://github.githubassets.com/images/icons/emoji/unicode/1f353.png ":strawberry:"). For a full list of available emoji and codes, see [emoji-cheat-sheet.com](http://emoji-cheat-sheet.com/).
+   */
+  name: string;
+  /**
+   * The [hexadecimal color code](http://www.color-hex.com/) for the label, without the leading `#`.
+   */
+  color: string;
+  /**
+   * A short description of the label.
+   */
+  description?: string;
+};
+type IssuesCreateLabelRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type IssuesGetLabelEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * name parameter
+   */
+  name: string;
+};
+type IssuesGetLabelRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type IssuesUpdateLabelEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * name parameter
+   */
+  name: string;
+  /**
+   * The new name of the label. Emoji can be added to label names, using either native emoji or colon-style markup. For example, typing `:strawberry:` will render the emoji ![:strawberry:](https://github.githubassets.com/images/icons/emoji/unicode/1f353.png ":strawberry:"). For a full list of available emoji and codes, see [emoji-cheat-sheet.com](http://emoji-cheat-sheet.com/).
+   */
+  new_name?: string;
+  /**
+   * The [hexadecimal color code](http://www.color-hex.com/) for the label, without the leading `#`.
+   */
+  color?: string;
+  /**
+   * A short description of the label.
+   */
+  description?: string;
+};
+type IssuesUpdateLabelRequestOptions = {
+  method: "PATCH";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type IssuesDeleteLabelEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * name parameter
+   */
+  name: string;
+};
+type IssuesDeleteLabelRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposListLanguagesEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+};
+type ReposListLanguagesRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type LicensesGetForRepoEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+};
+type LicensesGetForRepoRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposMergeEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * The name of the base branch that the head will be merged into.
+   */
+  base: string;
+  /**
+   * The head to merge. This can be a branch name or a commit SHA1.
+   */
+  head: string;
+  /**
+   * Commit message to use for the merge commit. If omitted, a default message will be used.
+   */
+  commit_message?: string;
+};
+type ReposMergeRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type IssuesListMilestonesForRepoEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * The state of the milestone. Either `open`, `closed`, or `all`.
+   */
+  state?: "open" | "closed" | "all";
+  /**
+   * What to sort results by. Either `due_on` or `completeness`.
+   */
+  sort?: "due_on" | "completeness";
+  /**
+   * The direction of the sort. Either `asc` or `desc`.
+   */
+  direction?: "asc" | "desc";
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type IssuesListMilestonesForRepoRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type IssuesCreateMilestoneEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * The title of the milestone.
+   */
+  title: string;
+  /**
+   * The state of the milestone. Either `open` or `closed`.
+   */
+  state?: "open" | "closed";
+  /**
+   * A description of the milestone.
+   */
+  description?: string;
+  /**
+   * The milestone due date. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
+   */
+  due_on?: string;
+};
+type IssuesCreateMilestoneRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type IssuesGetMilestoneEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * milestone_number parameter
+   */
+  milestone_number: number;
+};
+type IssuesGetMilestoneRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type IssuesUpdateMilestoneEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * milestone_number parameter
+   */
+  milestone_number: number;
+  /**
+   * The title of the milestone.
+   */
+  title?: string;
+  /**
+   * The state of the milestone. Either `open` or `closed`.
+   */
+  state?: "open" | "closed";
+  /**
+   * A description of the milestone.
+   */
+  description?: string;
+  /**
+   * The milestone due date. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
+   */
+  due_on?: string;
+};
+type IssuesUpdateMilestoneRequestOptions = {
+  method: "PATCH";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type IssuesDeleteMilestoneEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * milestone_number parameter
+   */
+  milestone_number: number;
+};
+type IssuesDeleteMilestoneRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type IssuesListLabelsForMilestoneEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * milestone_number parameter
+   */
+  milestone_number: number;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type IssuesListLabelsForMilestoneRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ActivityListNotificationsForRepoEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * If `true`, show notifications marked as read.
+   */
+  all?: boolean;
+  /**
+   * If `true`, only shows notifications in which the user is directly participating or mentioned.
+   */
+  participating?: boolean;
+  /**
+   * Only show notifications updated after the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
+   */
+  since?: string;
+  /**
+   * Only show notifications updated before the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
+   */
+  before?: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ActivityListNotificationsForRepoRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ActivityMarkNotificationsAsReadForRepoEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * Describes the last point that notifications were checked. Anything updated since this time will not be updated. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Default: The current timestamp.
+   */
+  last_read_at?: string;
+};
+type ActivityMarkNotificationsAsReadForRepoRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposGetPagesEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+};
+type ReposGetPagesRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposEnablePagesSiteEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * source parameter
+   */
+  source?: ReposEnablePagesSiteParamsSource;
+};
+type ReposEnablePagesSiteRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposDisablePagesSiteEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+};
+type ReposDisablePagesSiteRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposUpdateInformationAboutPagesSiteEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * Specify a custom domain for the repository. Sending a `null` value will remove the custom domain. For more about custom domains, see "[Using a custom domain with GitHub Pages](https://help.github.com/articles/using-a-custom-domain-with-github-pages/)."
+   */
+  cname?: string;
+  /**
+   * Update the source for the repository. Must include the branch name, and may optionally specify the subdirectory `/docs`. Possible values are `"gh-pages"`, `"master"`, and `"master /docs"`.
+   */
+  source?: '"gh-pages"' | '"master"' | '"master /docs"';
+};
+type ReposUpdateInformationAboutPagesSiteRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposRequestPageBuildEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+};
+type ReposRequestPageBuildRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposListPagesBuildsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ReposListPagesBuildsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposGetLatestPagesBuildEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+};
+type ReposGetLatestPagesBuildRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposGetPagesBuildEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * build_id parameter
+   */
+  build_id: number;
+};
+type ReposGetPagesBuildRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ProjectsListForRepoEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * Indicates the state of the projects to return. Can be either `open`, `closed`, or `all`.
+   */
+  state?: "open" | "closed" | "all";
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ProjectsListForRepoRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ProjectsCreateForRepoEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * The name of the project.
+   */
+  name: string;
+  /**
+   * The description of the project.
+   */
+  body?: string;
+};
+type ProjectsCreateForRepoRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type PullsListEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * Either `open`, `closed`, or `all` to filter by state.
+   */
+  state?: "open" | "closed" | "all";
+  /**
+   * Filter pulls by head user or head organization and branch name in the format of `user:ref-name` or `organization:ref-name`. For example: `github:new-script-format` or `octocat:test-branch`.
+   */
+  head?: string;
+  /**
+   * Filter pulls by base branch name. Example: `gh-pages`.
+   */
+  base?: string;
+  /**
+   * What to sort results by. Can be either `created`, `updated`, `popularity` (comment count) or `long-running` (age, filtering by pulls updated in the last month).
+   */
+  sort?: "created" | "updated" | "popularity" | "long-running";
+  /**
+   * The direction of the sort. Can be either `asc` or `desc`. Default: `desc` when sort is `created` or sort is not specified, otherwise `asc`.
+   */
+  direction?: "asc" | "desc";
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type PullsListRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type PullsCreateEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * The title of the new pull request.
+   */
+  title: string;
+  /**
+   * The name of the branch where your changes are implemented. For cross-repository pull requests in the same network, namespace `head` with a user like this: `username:branch`.
+   */
+  head: string;
+  /**
+   * The name of the branch you want the changes pulled into. This should be an existing branch on the current repository. You cannot submit a pull request to one repository that requests a merge to a base of another repository.
+   */
+  base: string;
+  /**
+   * The contents of the pull request.
+   */
+  body?: string;
+  /**
+   * Indicates whether [maintainers can modify](https://help.github.com/articles/allowing-changes-to-a-pull-request-branch-created-from-a-fork/) the pull request.
+   */
+  maintainer_can_modify?: boolean;
+  /**
+   * Indicates whether the pull request is a draft. See "[Draft Pull Requests](https://help.github.com/en/articles/about-pull-requests#draft-pull-requests)" in the GitHub Help documentation to learn more.
+   */
+  draft?: boolean;
+};
+type PullsCreateRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type PullsListCommentsForRepoEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * Can be either `created` or `updated` comments.
+   */
+  sort?: "created" | "updated";
+  /**
+   * Can be either `asc` or `desc`. Ignored without `sort` parameter.
+   */
+  direction?: "asc" | "desc";
+  /**
+   * This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Only returns comments `updated` at or after this time.
+   */
+  since?: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type PullsListCommentsForRepoRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type PullsGetCommentEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * comment_id parameter
+   */
+  comment_id: number;
+};
+type PullsGetCommentRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type PullsUpdateCommentEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * comment_id parameter
+   */
+  comment_id: number;
+  /**
+   * The text of the reply to the review comment.
+   */
+  body: string;
+};
+type PullsUpdateCommentRequestOptions = {
+  method: "PATCH";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type PullsDeleteCommentEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * comment_id parameter
+   */
+  comment_id: number;
+};
+type PullsDeleteCommentRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReactionsListForPullRequestReviewCommentEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * comment_id parameter
+   */
+  comment_id: number;
+  /**
+   * Returns a single [reaction type](https://developer.github.com/v3/reactions/#reaction-types). Omit this parameter to list all reactions to a pull request review comment.
+   */
+  content?:
+    | "+1"
+    | "-1"
+    | "laugh"
+    | "confused"
+    | "heart"
+    | "hooray"
+    | "rocket"
+    | "eyes";
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ReactionsListForPullRequestReviewCommentRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReactionsCreateForPullRequestReviewCommentEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * comment_id parameter
+   */
+  comment_id: number;
+  /**
+   * The [reaction type](https://developer.github.com/v3/reactions/#reaction-types) to add to the pull request review comment.
+   */
+  content:
+    | "+1"
+    | "-1"
+    | "laugh"
+    | "confused"
+    | "heart"
+    | "hooray"
+    | "rocket"
+    | "eyes";
+};
+type ReactionsCreateForPullRequestReviewCommentRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type PullsGetEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * pull_number parameter
+   */
+  pull_number: number;
+};
+type PullsGetRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type PullsUpdateEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * pull_number parameter
+   */
+  pull_number: number;
+  /**
+   * The title of the pull request.
+   */
+  title?: string;
+  /**
+   * The contents of the pull request.
+   */
+  body?: string;
+  /**
+   * State of this Pull Request. Either `open` or `closed`.
+   */
+  state?: "open" | "closed";
+  /**
+   * The name of the branch you want your changes pulled into. This should be an existing branch on the current repository. You cannot update the base branch on a pull request to point to another repository.
+   */
+  base?: string;
+  /**
+   * Indicates whether [maintainers can modify](https://help.github.com/articles/allowing-changes-to-a-pull-request-branch-created-from-a-fork/) the pull request.
+   */
+  maintainer_can_modify?: boolean;
+};
+type PullsUpdateRequestOptions = {
+  method: "PATCH";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type PullsListCommentsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * pull_number parameter
+   */
+  pull_number: number;
+  /**
+   * Can be either `created` or `updated` comments.
+   */
+  sort?: "created" | "updated";
+  /**
+   * Can be either `asc` or `desc`. Ignored without `sort` parameter.
+   */
+  direction?: "asc" | "desc";
+  /**
+   * This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Only returns comments `updated` at or after this time.
+   */
+  since?: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type PullsListCommentsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type PullsCreateCommentEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * pull_number parameter
+   */
+  pull_number: number;
+  /**
+   * The text of the review comment.
+   */
+  body: string;
+  /**
+   * The SHA of the commit needing a comment. Not using the latest commit SHA may render your comment outdated if a subsequent commit modifies the line you specify as the `position`.
+   */
+  commit_id: string;
+  /**
+   * The relative path to the file that necessitates a comment.
+   */
+  path: string;
+  /**
+   * **Required without `comfort-fade` preview**. The position in the diff where you want to add a review comment. Note this value is not the same as the line number in the file. For help finding the position value, read the note above.
+   */
+  position?: number;
+  /**
+   * **Required with `comfort-fade` preview**. In a split diff view, the side of the diff that the pull request's changes appear on. Can be `LEFT` or `RIGHT`. Use `LEFT` for deletions that appear in red. Use `RIGHT` for additions that appear in green or unchanged lines that appear in white and are shown for context. For a multi-line comment, side represents whether the last line of the comment range is a deletion or addition. For more information, see "[Diff view options](https://help.github.com/en/articles/about-comparing-branches-in-pull-requests#diff-view-options)" in the GitHub Help documentation.
+   */
+  side?: "LEFT" | "RIGHT";
+  /**
+   * **Required with `comfort-fade` preview**. The line of the blob in the pull request diff that the comment applies to. For a multi-line comment, the last line of the range that your comment applies to.
+   */
+  line?: number;
+  /**
+   * **Required when using multi-line comments**. To create multi-line comments, you must use the `comfort-fade` preview header. The `start_line` is the first line in the pull request diff that your multi-line comment applies to. To learn more about multi-line comments, see "[Commenting on a pull request](https://help.github.com/en/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)" in the GitHub Help documentation.
+   */
+  start_line?: number;
+  /**
+   * **Required when using multi-line comments**. To create multi-line comments, you must use the `comfort-fade` preview header. The `start_side` is the starting side of the diff that the comment applies to. Can be `LEFT` or `RIGHT`. To learn more about multi-line comments, see "[Commenting on a pull request](https://help.github.com/en/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)" in the GitHub Help documentation. See `side` in this table for additional context.
+   */
+  start_side?: "LEFT" | "RIGHT" | "side";
+};
+type PullsCreateCommentRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type PullsCreateCommentReplyEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * pull_number parameter
+   */
+  pull_number: number;
+  /**
+   * The text of the review comment.
+   */
+  body: string;
+  /**
+   * The SHA of the commit needing a comment. Not using the latest commit SHA may render your comment outdated if a subsequent commit modifies the line you specify as the `position`.
+   */
+  commit_id: string;
+  /**
+   * The relative path to the file that necessitates a comment.
+   */
+  path: string;
+  /**
+   * **Required without `comfort-fade` preview**. The position in the diff where you want to add a review comment. Note this value is not the same as the line number in the file. For help finding the position value, read the note above.
+   */
+  position?: number;
+  /**
+   * **Required with `comfort-fade` preview**. In a split diff view, the side of the diff that the pull request's changes appear on. Can be `LEFT` or `RIGHT`. Use `LEFT` for deletions that appear in red. Use `RIGHT` for additions that appear in green or unchanged lines that appear in white and are shown for context. For a multi-line comment, side represents whether the last line of the comment range is a deletion or addition. For more information, see "[Diff view options](https://help.github.com/en/articles/about-comparing-branches-in-pull-requests#diff-view-options)" in the GitHub Help documentation.
+   */
+  side?: "LEFT" | "RIGHT";
+  /**
+   * **Required with `comfort-fade` preview**. The line of the blob in the pull request diff that the comment applies to. For a multi-line comment, the last line of the range that your comment applies to.
+   */
+  line?: number;
+  /**
+   * **Required when using multi-line comments**. To create multi-line comments, you must use the `comfort-fade` preview header. The `start_line` is the first line in the pull request diff that your multi-line comment applies to. To learn more about multi-line comments, see "[Commenting on a pull request](https://help.github.com/en/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)" in the GitHub Help documentation.
+   */
+  start_line?: number;
+  /**
+   * **Required when using multi-line comments**. To create multi-line comments, you must use the `comfort-fade` preview header. The `start_side` is the starting side of the diff that the comment applies to. Can be `LEFT` or `RIGHT`. To learn more about multi-line comments, see "[Commenting on a pull request](https://help.github.com/en/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)" in the GitHub Help documentation. See `side` in this table for additional context.
+   */
+  start_side?: "LEFT" | "RIGHT" | "side";
+};
+type PullsCreateCommentReplyRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type PullsCreateReviewCommentReplyEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * pull_number parameter
+   */
+  pull_number: number;
+  /**
+   * comment_id parameter
+   */
+  comment_id: number;
+  /**
+   * The text of the review comment.
+   */
+  body: string;
+};
+type PullsCreateReviewCommentReplyRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type PullsListCommitsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * pull_number parameter
+   */
+  pull_number: number;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type PullsListCommitsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type PullsListFilesEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * pull_number parameter
+   */
+  pull_number: number;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type PullsListFilesRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type PullsCheckIfMergedEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * pull_number parameter
+   */
+  pull_number: number;
+};
+type PullsCheckIfMergedRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type PullsMergeEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * pull_number parameter
+   */
+  pull_number: number;
+  /**
+   * Title for the automatic commit message.
+   */
+  commit_title?: string;
+  /**
+   * Extra detail to append to automatic commit message.
+   */
+  commit_message?: string;
+  /**
+   * SHA that pull request head must match to allow merge.
+   */
+  sha?: string;
+  /**
+   * Merge method to use. Possible values are `merge`, `squash` or `rebase`. Default is `merge`.
+   */
+  merge_method?: "merge" | "squash" | "rebase";
+};
+type PullsMergeRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type PullsListReviewRequestsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * pull_number parameter
+   */
+  pull_number: number;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type PullsListReviewRequestsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type PullsCreateReviewRequestEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * pull_number parameter
+   */
+  pull_number: number;
+  /**
+   * An array of user `login`s that will be requested.
+   */
+  reviewers?: string[];
+  /**
+   * An array of team `slug`s that will be requested.
+   */
+  team_reviewers?: string[];
+};
+type PullsCreateReviewRequestRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type PullsDeleteReviewRequestEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * pull_number parameter
+   */
+  pull_number: number;
+  /**
+   * An array of user `login`s that will be removed.
+   */
+  reviewers?: string[];
+  /**
+   * An array of team `slug`s that will be removed.
+   */
+  team_reviewers?: string[];
+};
+type PullsDeleteReviewRequestRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type PullsListReviewsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * pull_number parameter
+   */
+  pull_number: number;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type PullsListReviewsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type PullsCreateReviewEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * pull_number parameter
+   */
+  pull_number: number;
+  /**
+   * The SHA of the commit that needs a review. Not using the latest commit SHA may render your review comment outdated if a subsequent commit modifies the line you specify as the `position`. Defaults to the most recent commit in the pull request when you do not specify a value.
+   */
+  commit_id?: string;
+  /**
+   * **Required** when using `REQUEST_CHANGES` or `COMMENT` for the `event` parameter. The body text of the pull request review.
+   */
+  body?: string;
+  /**
+   * The review action you want to perform. The review actions include: `APPROVE`, `REQUEST_CHANGES`, or `COMMENT`. By leaving this blank, you set the review action state to `PENDING`, which means you will need to [submit the pull request review](https://developer.github.com/v3/pulls/reviews/#submit-a-pull-request-review) when you are ready.
+   */
+  event?: "APPROVE" | "REQUEST_CHANGES" | "COMMENT";
+  /**
+   * Use the following table to specify the location, destination, and contents of the draft review comment.
+   */
+  comments?: PullsCreateReviewParamsComments[];
+};
+type PullsCreateReviewRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type PullsGetReviewEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * pull_number parameter
+   */
+  pull_number: number;
+  /**
+   * review_id parameter
+   */
+  review_id: number;
+};
+type PullsGetReviewRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type PullsDeletePendingReviewEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * pull_number parameter
+   */
+  pull_number: number;
+  /**
+   * review_id parameter
+   */
+  review_id: number;
+};
+type PullsDeletePendingReviewRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type PullsUpdateReviewEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * pull_number parameter
+   */
+  pull_number: number;
+  /**
+   * review_id parameter
+   */
+  review_id: number;
+  /**
+   * The body text of the pull request review.
+   */
+  body: string;
+};
+type PullsUpdateReviewRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type PullsGetCommentsForReviewEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * pull_number parameter
+   */
+  pull_number: number;
+  /**
+   * review_id parameter
+   */
+  review_id: number;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type PullsGetCommentsForReviewRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type PullsDismissReviewEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * pull_number parameter
+   */
+  pull_number: number;
+  /**
+   * review_id parameter
+   */
+  review_id: number;
+  /**
+   * The message for the pull request review dismissal
+   */
+  message: string;
+};
+type PullsDismissReviewRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type PullsSubmitReviewEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * pull_number parameter
+   */
+  pull_number: number;
+  /**
+   * review_id parameter
+   */
+  review_id: number;
+  /**
+   * The body text of the pull request review
+   */
+  body?: string;
+  /**
+   * The review action you want to perform. The review actions include: `APPROVE`, `REQUEST_CHANGES`, or `COMMENT`. When you leave this blank, the API returns _HTTP 422 (Unrecognizable entity)_ and sets the review action state to `PENDING`, which means you will need to re-submit the pull request review using a review action.
+   */
+  event: "APPROVE" | "REQUEST_CHANGES" | "COMMENT";
+};
+type PullsSubmitReviewRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type PullsUpdateBranchEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * pull_number parameter
+   */
+  pull_number: number;
+  /**
+   * The expected SHA of the pull request's HEAD ref. This is the most recent commit on the pull request's branch. If the expected SHA does not match the pull request's HEAD, you will receive a `422 Unprocessable Entity` status. You can use the "[List commits on a repository](https://developer.github.com/v3/repos/commits/#list-commits-on-a-repository)" endpoint to find the most recent commit SHA. Default: SHA of the pull request's current HEAD ref.
+   */
+  expected_head_sha?: string;
+};
+type PullsUpdateBranchRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposGetReadmeEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * The name of the commit/branch/tag. Default: the repository’s default branch (usually `master`)
+   */
+  ref?: string;
+};
+type ReposGetReadmeRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposListReleasesEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ReposListReleasesRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposCreateReleaseEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * The name of the tag.
+   */
+  tag_name: string;
+  /**
+   * Specifies the commitish value that determines where the Git tag is created from. Can be any branch or commit SHA. Unused if the Git tag already exists. Default: the repository's default branch (usually `master`).
+   */
+  target_commitish?: string;
+  /**
+   * The name of the release.
+   */
+  name?: string;
+  /**
+   * Text describing the contents of the tag.
+   */
+  body?: string;
+  /**
+   * `true` to create a draft (unpublished) release, `false` to create a published one.
+   */
+  draft?: boolean;
+  /**
+   * `true` to identify the release as a prerelease. `false` to identify the release as a full release.
+   */
+  prerelease?: boolean;
+};
+type ReposCreateReleaseRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposGetReleaseAssetEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * asset_id parameter
+   */
+  asset_id: number;
+};
+type ReposGetReleaseAssetRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposUpdateReleaseAssetEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * asset_id parameter
+   */
+  asset_id: number;
+  /**
+   * The file name of the asset.
+   */
+  name?: string;
+  /**
+   * An alternate short description of the asset. Used in place of the filename.
+   */
+  label?: string;
+};
+type ReposUpdateReleaseAssetRequestOptions = {
+  method: "PATCH";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposDeleteReleaseAssetEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * asset_id parameter
+   */
+  asset_id: number;
+};
+type ReposDeleteReleaseAssetRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposGetLatestReleaseEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+};
+type ReposGetLatestReleaseRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposGetReleaseByTagEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * tag parameter
+   */
+  tag: string;
+};
+type ReposGetReleaseByTagRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposGetReleaseEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * release_id parameter
+   */
+  release_id: number;
+};
+type ReposGetReleaseRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposUpdateReleaseEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * release_id parameter
+   */
+  release_id: number;
+  /**
+   * The name of the tag.
+   */
+  tag_name?: string;
+  /**
+   * Specifies the commitish value that determines where the Git tag is created from. Can be any branch or commit SHA. Unused if the Git tag already exists. Default: the repository's default branch (usually `master`).
+   */
+  target_commitish?: string;
+  /**
+   * The name of the release.
+   */
+  name?: string;
+  /**
+   * Text describing the contents of the tag.
+   */
+  body?: string;
+  /**
+   * `true` makes the release a draft, and `false` publishes the release.
+   */
+  draft?: boolean;
+  /**
+   * `true` to identify the release as a prerelease, `false` to identify the release as a full release.
+   */
+  prerelease?: boolean;
+};
+type ReposUpdateReleaseRequestOptions = {
+  method: "PATCH";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposDeleteReleaseEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * release_id parameter
+   */
+  release_id: number;
+};
+type ReposDeleteReleaseRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposListAssetsForReleaseEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * release_id parameter
+   */
+  release_id: number;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ReposListAssetsForReleaseRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ActivityListStargazersForRepoEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ActivityListStargazersForRepoRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposGetCodeFrequencyStatsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+};
+type ReposGetCodeFrequencyStatsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposGetCommitActivityStatsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+};
+type ReposGetCommitActivityStatsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposGetContributorsStatsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+};
+type ReposGetContributorsStatsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposGetParticipationStatsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+};
+type ReposGetParticipationStatsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposGetPunchCardStatsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+};
+type ReposGetPunchCardStatsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposCreateStatusEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * sha parameter
+   */
+  sha: string;
+  /**
+   * The state of the status. Can be one of `error`, `failure`, `pending`, or `success`.
+   */
+  state: "error" | "failure" | "pending" | "success";
+  /**
+   * The target URL to associate with this status. This URL will be linked from the GitHub UI to allow users to easily see the source of the status.
+   * For example, if your continuous integration system is posting build status, you would want to provide the deep link for the build output for this specific SHA:
+   * `http://ci.example.com/user/repo/build/sha`
+   */
+  target_url?: string;
+  /**
+   * A short description of the status.
+   */
+  description?: string;
+  /**
+   * A string label to differentiate this status from the status of other systems.
+   */
+  context?: string;
+};
+type ReposCreateStatusRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ActivityListWatchersForRepoEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ActivityListWatchersForRepoRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ActivityGetRepoSubscriptionEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+};
+type ActivityGetRepoSubscriptionRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ActivitySetRepoSubscriptionEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * Determines if notifications should be received from this repository.
+   */
+  subscribed?: boolean;
+  /**
+   * Determines if all notifications should be blocked from this repository.
+   */
+  ignored?: boolean;
+};
+type ActivitySetRepoSubscriptionRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ActivityDeleteRepoSubscriptionEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+};
+type ActivityDeleteRepoSubscriptionRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposListTagsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ReposListTagsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposListTeamsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ReposListTeamsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposListTopicsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+};
+type ReposListTopicsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposReplaceTopicsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * An array of topics to add to the repository. Pass one or more topics to _replace_ the set of existing topics. Send an empty array (`[]`) to clear all topics from the repository. **Note:** Topic `names` cannot contain uppercase letters.
+   */
+  names: string[];
+};
+type ReposReplaceTopicsRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposGetClonesEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * Must be one of: `day`, `week`.
+   */
+  per?: "day" | "week";
+};
+type ReposGetClonesRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposGetTopPathsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+};
+type ReposGetTopPathsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposGetTopReferrersEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+};
+type ReposGetTopReferrersRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposGetViewsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * Must be one of: `day`, `week`.
+   */
+  per?: "day" | "week";
+};
+type ReposGetViewsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposTransferEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * **Required:** The username or organization name the repository will be transferred to.
+   */
+  new_owner?: string;
+  /**
+   * ID of the team or teams to add to the repository. Teams can only be added to organization-owned repositories.
+   */
+  team_ids?: number[];
+};
+type ReposTransferRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposCheckVulnerabilityAlertsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+};
+type ReposCheckVulnerabilityAlertsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposEnableVulnerabilityAlertsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+};
+type ReposEnableVulnerabilityAlertsRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposDisableVulnerabilityAlertsEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+};
+type ReposDisableVulnerabilityAlertsRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposGetArchiveLinkEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * archive_format parameter
+   */
+  archive_format: string;
+  /**
+   * ref parameter
+   */
+  ref: string;
+};
+type ReposGetArchiveLinkRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposCreateUsingTemplateEndpoint = {
+  /**
+   * template_owner parameter
+   */
+  template_owner: string;
+  /**
+   * template_repo parameter
+   */
+  template_repo: string;
+  /**
+   * The organization or person who will own the new repository. To create a new repository in an organization, the authenticated user must be a member of the specified organization.
+   */
+  owner?: string;
+  /**
+   * The name of the new repository.
+   */
+  name: string;
+  /**
+   * A short description of the new repository.
+   */
+  description?: string;
+  /**
+   * Either `true` to create a new private repository or `false` to create a new public one.
+   */
+  private?: boolean;
+};
+type ReposCreateUsingTemplateRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposListPublicEndpoint = {
+  /**
+   * The integer ID of the last Repository that you've seen.
+   */
+  since?: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ReposListPublicRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ScimListProvisionedIdentitiesEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * Used for pagination: the index of the first result to return.
+   */
+  startIndex?: number;
+  /**
+   * Used for pagination: the number of results to return.
+   */
+  count?: number;
+  /**
+   * Filters results using the equals query parameter operator (`eq`). You can filter results that are equal to `id`, `userName`, `emails`, and `external_id`. For example, to search for an identity with the `userName` Octocat, you would use this query: `?filter=userName%20eq%20\"Octocat\"`.
+   */
+  filter?: string;
+};
+type ScimListProvisionedIdentitiesRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ScimProvisionAndInviteUsersEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+};
+type ScimProvisionAndInviteUsersRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ScimProvisionInviteUsersEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+};
+type ScimProvisionInviteUsersRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ScimGetProvisioningDetailsForUserEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * scim_user_id parameter
+   */
+  scim_user_id: number;
+};
+type ScimGetProvisioningDetailsForUserRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ScimReplaceProvisionedUserInformationEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * scim_user_id parameter
+   */
+  scim_user_id: number;
+};
+type ScimReplaceProvisionedUserInformationRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ScimUpdateProvisionedOrgMembershipEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * scim_user_id parameter
+   */
+  scim_user_id: number;
+};
+type ScimUpdateProvisionedOrgMembershipRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ScimUpdateUserAttributeEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * scim_user_id parameter
+   */
+  scim_user_id: number;
+};
+type ScimUpdateUserAttributeRequestOptions = {
+  method: "PATCH";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ScimRemoveUserFromOrgEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * scim_user_id parameter
+   */
+  scim_user_id: number;
+};
+type ScimRemoveUserFromOrgRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type SearchCodeEndpoint = {
+  /**
+   * The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as GitHub.com. To learn more about the format of the query, see [Constructing a search query](https://developer.github.com/v3/search/#constructing-a-search-query). See "[Searching code](https://help.github.com/articles/searching-code/)" for a detailed list of qualifiers.
+   */
+  q: string;
+  /**
+   * Sorts the results of your query. Can only be `indexed`, which indicates how recently a file has been indexed by the GitHub search infrastructure. Default: [best match](https://developer.github.com/v3/search/#ranking-search-results)
+   */
+  sort?: "indexed";
+  /**
+   * Determines whether the first search result returned is the highest number of matches (`desc`) or lowest number of matches (`asc`). This parameter is ignored unless you provide `sort`.
+   */
+  order?: "desc" | "asc";
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type SearchCodeRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type SearchCommitsEndpoint = {
+  /**
+   * The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as GitHub.com. To learn more about the format of the query, see [Constructing a search query](https://developer.github.com/v3/search/#constructing-a-search-query). See "[Searching commits](https://help.github.com/articles/searching-commits/)" for a detailed list of qualifiers.
+   */
+  q: string;
+  /**
+   * Sorts the results of your query by `author-date` or `committer-date`. Default: [best match](https://developer.github.com/v3/search/#ranking-search-results)
+   */
+  sort?: "author-date" | "committer-date";
+  /**
+   * Determines whether the first search result returned is the highest number of matches (`desc`) or lowest number of matches (`asc`). This parameter is ignored unless you provide `sort`.
+   */
+  order?: "desc" | "asc";
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type SearchCommitsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type SearchIssuesAndPullRequestsEndpoint = {
+  /**
+   * The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as GitHub.com. To learn more about the format of the query, see [Constructing a search query](https://developer.github.com/v3/search/#constructing-a-search-query). See "[Searching issues and pull requests](https://help.github.com/articles/searching-issues-and-pull-requests/)" for a detailed list of qualifiers.
+   */
+  q: string;
+  /**
+   * Sorts the results of your query by the number of `comments`, `reactions`, `reactions-+1`, `reactions--1`, `reactions-smile`, `reactions-thinking_face`, `reactions-heart`, `reactions-tada`, or `interactions`. You can also sort results by how recently the items were `created` or `updated`, Default: [best match](https://developer.github.com/v3/search/#ranking-search-results)
+   */
+  sort?:
+    | "comments"
+    | "reactions"
+    | "reactions-+1"
+    | "reactions--1"
+    | "reactions-smile"
+    | "reactions-thinking_face"
+    | "reactions-heart"
+    | "reactions-tada"
+    | "interactions"
+    | "created"
+    | "updated";
+  /**
+   * Determines whether the first search result returned is the highest number of matches (`desc`) or lowest number of matches (`asc`). This parameter is ignored unless you provide `sort`.
+   */
+  order?: "desc" | "asc";
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type SearchIssuesAndPullRequestsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type SearchIssuesEndpoint = {
+  /**
+   * The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as GitHub.com. To learn more about the format of the query, see [Constructing a search query](https://developer.github.com/v3/search/#constructing-a-search-query). See "[Searching issues and pull requests](https://help.github.com/articles/searching-issues-and-pull-requests/)" for a detailed list of qualifiers.
+   */
+  q: string;
+  /**
+   * Sorts the results of your query by the number of `comments`, `reactions`, `reactions-+1`, `reactions--1`, `reactions-smile`, `reactions-thinking_face`, `reactions-heart`, `reactions-tada`, or `interactions`. You can also sort results by how recently the items were `created` or `updated`, Default: [best match](https://developer.github.com/v3/search/#ranking-search-results)
+   */
+  sort?:
+    | "comments"
+    | "reactions"
+    | "reactions-+1"
+    | "reactions--1"
+    | "reactions-smile"
+    | "reactions-thinking_face"
+    | "reactions-heart"
+    | "reactions-tada"
+    | "interactions"
+    | "created"
+    | "updated";
+  /**
+   * Determines whether the first search result returned is the highest number of matches (`desc`) or lowest number of matches (`asc`). This parameter is ignored unless you provide `sort`.
+   */
+  order?: "desc" | "asc";
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type SearchIssuesRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type SearchLabelsEndpoint = {
+  /**
+   * The id of the repository.
+   */
+  repository_id: number;
+  /**
+   * The search keywords. This endpoint does not accept qualifiers in the query. To learn more about the format of the query, see [Constructing a search query](https://developer.github.com/v3/search/#constructing-a-search-query).
+   */
+  q: string;
+  /**
+   * Sorts the results of your query by when the label was `created` or `updated`. Default: [best match](https://developer.github.com/v3/search/#ranking-search-results)
+   */
+  sort?: "created" | "updated";
+  /**
+   * Determines whether the first search result returned is the highest number of matches (`desc`) or lowest number of matches (`asc`). This parameter is ignored unless you provide `sort`.
+   */
+  order?: "desc" | "asc";
+};
+type SearchLabelsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type SearchReposEndpoint = {
+  /**
+   * The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as GitHub.com. To learn more about the format of the query, see [Constructing a search query](https://developer.github.com/v3/search/#constructing-a-search-query). See "[Searching for repositories](https://help.github.com/articles/searching-for-repositories/)" for a detailed list of qualifiers.
+   */
+  q: string;
+  /**
+   * Sorts the results of your query by number of `stars`, `forks`, or `help-wanted-issues` or how recently the items were `updated`. Default: [best match](https://developer.github.com/v3/search/#ranking-search-results)
+   */
+  sort?: "stars" | "forks" | "help-wanted-issues" | "updated";
+  /**
+   * Determines whether the first search result returned is the highest number of matches (`desc`) or lowest number of matches (`asc`). This parameter is ignored unless you provide `sort`.
+   */
+  order?: "desc" | "asc";
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type SearchReposRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type SearchTopicsEndpoint = {
+  /**
+   * The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as GitHub.com. To learn more about the format of the query, see [Constructing a search query](https://developer.github.com/v3/search/#constructing-a-search-query).
+   */
+  q: string;
+};
+type SearchTopicsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type SearchUsersEndpoint = {
+  /**
+   * The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as GitHub.com. To learn more about the format of the query, see [Constructing a search query](https://developer.github.com/v3/search/#constructing-a-search-query). See "[Searching users](https://help.github.com/articles/searching-users/)" for a detailed list of qualifiers.
+   */
+  q: string;
+  /**
+   * Sorts the results of your query by number of `followers` or `repositories`, or when the person `joined` GitHub. Default: [best match](https://developer.github.com/v3/search/#ranking-search-results)
+   */
+  sort?: "followers" | "repositories" | "joined";
+  /**
+   * Determines whether the first search result returned is the highest number of matches (`desc`) or lowest number of matches (`asc`). This parameter is ignored unless you provide `sort`.
+   */
+  order?: "desc" | "asc";
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type SearchUsersRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type TeamsGetEndpoint = {
+  /**
+   * team_id parameter
+   */
+  team_id: number;
+};
+type TeamsGetRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type TeamsUpdateEndpoint = {
+  /**
+   * team_id parameter
+   */
+  team_id: number;
+  /**
+   * The name of the team.
+   */
+  name: string;
+  /**
+   * The description of the team.
+   */
+  description?: string;
+  /**
+   * The level of privacy this team should have. Editing teams without specifying this parameter leaves `privacy` intact. The options are:
+   * **For a non-nested team:**
+   * \* `secret` - only visible to organization owners and members of this team.
+   * \* `closed` - visible to all members of this organization.
+   * **For a parent or child team:**
+   * \* `closed` - visible to all members of this organization.
+   */
+  privacy?: "secret" | "closed";
+  /**
+   * **Deprecated**. The permission that new repositories will be added to the team with when none is specified. Can be one of:
+   * \* `pull` - team members can pull, but not push to or administer newly-added repositories.
+   * \* `push` - team members can pull and push, but not administer newly-added repositories.
+   * \* `admin` - team members can pull, push and administer newly-added repositories.
+   */
+  permission?: "pull" | "push" | "admin";
+  /**
+   * The ID of a team to set as the parent team. **Note**: You must pass the `hellcat-preview` media type to use this parameter.
+   */
+  parent_team_id?: number;
+};
+type TeamsUpdateRequestOptions = {
+  method: "PATCH";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type TeamsDeleteEndpoint = {
+  /**
+   * team_id parameter
+   */
+  team_id: number;
+};
+type TeamsDeleteRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type TeamsListDiscussionsEndpoint = {
+  /**
+   * team_id parameter
+   */
+  team_id: number;
+  /**
+   * Sorts the discussion comments by the date they were created. To return the oldest comments first, set to `asc`. Can be one of `asc` or `desc`.
+   */
+  direction?: "asc" | "desc";
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type TeamsListDiscussionsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type TeamsCreateDiscussionEndpoint = {
+  /**
+   * team_id parameter
+   */
+  team_id: number;
+  /**
+   * The discussion post's title.
+   */
+  title: string;
+  /**
+   * The discussion post's body text.
+   */
+  body: string;
+  /**
+   * Private posts are only visible to team members, organization owners, and team maintainers. Public posts are visible to all members of the organization. Set to `true` to create a private post.
+   */
+  private?: boolean;
+};
+type TeamsCreateDiscussionRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type TeamsGetDiscussionEndpoint = {
+  /**
+   * team_id parameter
+   */
+  team_id: number;
+  /**
+   * discussion_number parameter
+   */
+  discussion_number: number;
+};
+type TeamsGetDiscussionRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type TeamsUpdateDiscussionEndpoint = {
+  /**
+   * team_id parameter
+   */
+  team_id: number;
+  /**
+   * discussion_number parameter
+   */
+  discussion_number: number;
+  /**
+   * The discussion post's title.
+   */
+  title?: string;
+  /**
+   * The discussion post's body text.
+   */
+  body?: string;
+};
+type TeamsUpdateDiscussionRequestOptions = {
+  method: "PATCH";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type TeamsDeleteDiscussionEndpoint = {
+  /**
+   * team_id parameter
+   */
+  team_id: number;
+  /**
+   * discussion_number parameter
+   */
+  discussion_number: number;
+};
+type TeamsDeleteDiscussionRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type TeamsListDiscussionCommentsEndpoint = {
+  /**
+   * team_id parameter
+   */
+  team_id: number;
+  /**
+   * discussion_number parameter
+   */
+  discussion_number: number;
+  /**
+   * Sorts the discussion comments by the date they were created. To return the oldest comments first, set to `asc`. Can be one of `asc` or `desc`.
+   */
+  direction?: "asc" | "desc";
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type TeamsListDiscussionCommentsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type TeamsCreateDiscussionCommentEndpoint = {
+  /**
+   * team_id parameter
+   */
+  team_id: number;
+  /**
+   * discussion_number parameter
+   */
+  discussion_number: number;
+  /**
+   * The discussion comment's body text.
+   */
+  body: string;
+};
+type TeamsCreateDiscussionCommentRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type TeamsGetDiscussionCommentEndpoint = {
+  /**
+   * team_id parameter
+   */
+  team_id: number;
+  /**
+   * discussion_number parameter
+   */
+  discussion_number: number;
+  /**
+   * comment_number parameter
+   */
+  comment_number: number;
+};
+type TeamsGetDiscussionCommentRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type TeamsUpdateDiscussionCommentEndpoint = {
+  /**
+   * team_id parameter
+   */
+  team_id: number;
+  /**
+   * discussion_number parameter
+   */
+  discussion_number: number;
+  /**
+   * comment_number parameter
+   */
+  comment_number: number;
+  /**
+   * The discussion comment's body text.
+   */
+  body: string;
+};
+type TeamsUpdateDiscussionCommentRequestOptions = {
+  method: "PATCH";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type TeamsDeleteDiscussionCommentEndpoint = {
+  /**
+   * team_id parameter
+   */
+  team_id: number;
+  /**
+   * discussion_number parameter
+   */
+  discussion_number: number;
+  /**
+   * comment_number parameter
+   */
+  comment_number: number;
+};
+type TeamsDeleteDiscussionCommentRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReactionsListForTeamDiscussionCommentEndpoint = {
+  /**
+   * team_id parameter
+   */
+  team_id: number;
+  /**
+   * discussion_number parameter
+   */
+  discussion_number: number;
+  /**
+   * comment_number parameter
+   */
+  comment_number: number;
+  /**
+   * Returns a single [reaction type](https://developer.github.com/v3/reactions/#reaction-types). Omit this parameter to list all reactions to a team discussion comment.
+   */
+  content?:
+    | "+1"
+    | "-1"
+    | "laugh"
+    | "confused"
+    | "heart"
+    | "hooray"
+    | "rocket"
+    | "eyes";
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ReactionsListForTeamDiscussionCommentRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReactionsCreateForTeamDiscussionCommentEndpoint = {
+  /**
+   * team_id parameter
+   */
+  team_id: number;
+  /**
+   * discussion_number parameter
+   */
+  discussion_number: number;
+  /**
+   * comment_number parameter
+   */
+  comment_number: number;
+  /**
+   * The [reaction type](https://developer.github.com/v3/reactions/#reaction-types) to add to the team discussion comment.
+   */
+  content:
+    | "+1"
+    | "-1"
+    | "laugh"
+    | "confused"
+    | "heart"
+    | "hooray"
+    | "rocket"
+    | "eyes";
+};
+type ReactionsCreateForTeamDiscussionCommentRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReactionsListForTeamDiscussionEndpoint = {
+  /**
+   * team_id parameter
+   */
+  team_id: number;
+  /**
+   * discussion_number parameter
+   */
+  discussion_number: number;
+  /**
+   * Returns a single [reaction type](https://developer.github.com/v3/reactions/#reaction-types). Omit this parameter to list all reactions to a team discussion.
+   */
+  content?:
+    | "+1"
+    | "-1"
+    | "laugh"
+    | "confused"
+    | "heart"
+    | "hooray"
+    | "rocket"
+    | "eyes";
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ReactionsListForTeamDiscussionRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReactionsCreateForTeamDiscussionEndpoint = {
+  /**
+   * team_id parameter
+   */
+  team_id: number;
+  /**
+   * discussion_number parameter
+   */
+  discussion_number: number;
+  /**
+   * The [reaction type](https://developer.github.com/v3/reactions/#reaction-types) to add to the team discussion.
+   */
+  content:
+    | "+1"
+    | "-1"
+    | "laugh"
+    | "confused"
+    | "heart"
+    | "hooray"
+    | "rocket"
+    | "eyes";
+};
+type ReactionsCreateForTeamDiscussionRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type TeamsListPendingInvitationsEndpoint = {
+  /**
+   * team_id parameter
+   */
+  team_id: number;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type TeamsListPendingInvitationsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type TeamsListMembersEndpoint = {
+  /**
+   * team_id parameter
+   */
+  team_id: number;
+  /**
+   * Filters members returned by their role in the team. Can be one of:
+   * \* `member` - normal members of the team.
+   * \* `maintainer` - team maintainers.
+   * \* `all` - all members of the team.
+   */
+  role?: "member" | "maintainer" | "all";
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type TeamsListMembersRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type TeamsGetMemberEndpoint = {
+  /**
+   * team_id parameter
+   */
+  team_id: number;
+  /**
+   * username parameter
+   */
+  username: string;
+};
+type TeamsGetMemberRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type TeamsAddMemberEndpoint = {
+  /**
+   * team_id parameter
+   */
+  team_id: number;
+  /**
+   * username parameter
+   */
+  username: string;
+};
+type TeamsAddMemberRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type TeamsRemoveMemberEndpoint = {
+  /**
+   * team_id parameter
+   */
+  team_id: number;
+  /**
+   * username parameter
+   */
+  username: string;
+};
+type TeamsRemoveMemberRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type TeamsGetMembershipEndpoint = {
+  /**
+   * team_id parameter
+   */
+  team_id: number;
+  /**
+   * username parameter
+   */
+  username: string;
+};
+type TeamsGetMembershipRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type TeamsAddOrUpdateMembershipEndpoint = {
+  /**
+   * team_id parameter
+   */
+  team_id: number;
+  /**
+   * username parameter
+   */
+  username: string;
+  /**
+   * The role that this user should have in the team. Can be one of:
+   * \* `member` - a normal member of the team.
+   * \* `maintainer` - a team maintainer. Able to add/remove other team members, promote other team members to team maintainer, and edit the team's name and description.
+   */
+  role?: "member" | "maintainer";
+};
+type TeamsAddOrUpdateMembershipRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type TeamsRemoveMembershipEndpoint = {
+  /**
+   * team_id parameter
+   */
+  team_id: number;
+  /**
+   * username parameter
+   */
+  username: string;
+};
+type TeamsRemoveMembershipRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type TeamsListProjectsEndpoint = {
+  /**
+   * team_id parameter
+   */
+  team_id: number;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type TeamsListProjectsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type TeamsReviewProjectEndpoint = {
+  /**
+   * team_id parameter
+   */
+  team_id: number;
+  /**
+   * project_id parameter
+   */
+  project_id: number;
+};
+type TeamsReviewProjectRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type TeamsAddOrUpdateProjectEndpoint = {
+  /**
+   * team_id parameter
+   */
+  team_id: number;
+  /**
+   * project_id parameter
+   */
+  project_id: number;
+  /**
+   * The permission to grant to the team for this project. Can be one of:
+   * \* `read` - team members can read, but not write to or administer this project.
+   * \* `write` - team members can read and write, but not administer this project.
+   * \* `admin` - team members can read, write and administer this project.
+   * Default: the team's `permission` attribute will be used to determine what permission to grant the team on this project. Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://developer.github.com/v3/#http-verbs)."
+   * **Note**: If you pass the `hellcat-preview` media type, you can promote—but not demote—a `permission` attribute inherited from a parent team.
+   */
+  permission?: "read" | "write" | "admin";
+};
+type TeamsAddOrUpdateProjectRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type TeamsRemoveProjectEndpoint = {
+  /**
+   * team_id parameter
+   */
+  team_id: number;
+  /**
+   * project_id parameter
+   */
+  project_id: number;
+};
+type TeamsRemoveProjectRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type TeamsListReposEndpoint = {
+  /**
+   * team_id parameter
+   */
+  team_id: number;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type TeamsListReposRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type TeamsCheckManagesRepoEndpoint = {
+  /**
+   * team_id parameter
+   */
+  team_id: number;
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+};
+type TeamsCheckManagesRepoRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type TeamsAddOrUpdateRepoEndpoint = {
+  /**
+   * team_id parameter
+   */
+  team_id: number;
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+  /**
+   * The permission to grant the team on this repository. Can be one of:
+   * \* `pull` - team members can pull, but not push to or administer this repository.
+   * \* `push` - team members can pull and push, but not administer this repository.
+   * \* `admin` - team members can pull, push and administer this repository.
+   *
+   * If no permission is specified, the team's `permission` attribute will be used to determine what permission to grant the team on this repository.
+   * **Note**: If you pass the `hellcat-preview` media type, you can promote—but not demote—a `permission` attribute inherited through a parent team.
+   */
+  permission?: "pull" | "push" | "admin";
+};
+type TeamsAddOrUpdateRepoRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type TeamsRemoveRepoEndpoint = {
+  /**
+   * team_id parameter
+   */
+  team_id: number;
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+};
+type TeamsRemoveRepoRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type TeamsListIdPGroupsEndpoint = {
+  /**
+   * team_id parameter
+   */
+  team_id: number;
+};
+type TeamsListIdPGroupsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type TeamsCreateOrUpdateIdPGroupConnectionsEndpoint = {
+  /**
+   * team_id parameter
+   */
+  team_id: number;
+  /**
+   * The IdP groups you want to connect to a GitHub team. When updating, the new `groups` object will replace the original one. You must include any existing groups that you don't want to remove.
+   */
+  groups: TeamsCreateOrUpdateIdPGroupConnectionsParamsGroups[];
+};
+type TeamsCreateOrUpdateIdPGroupConnectionsRequestOptions = {
+  method: "PATCH";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type TeamsListChildEndpoint = {
+  /**
+   * team_id parameter
+   */
+  team_id: number;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type TeamsListChildRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type UsersGetAuthenticatedEndpoint = {};
+type UsersGetAuthenticatedRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type UsersUpdateAuthenticatedEndpoint = {
+  /**
+   * The new name of the user.
+   */
+  name?: string;
+  /**
+   * The publicly visible email address of the user.
+   */
+  email?: string;
+  /**
+   * The new blog URL of the user.
+   */
+  blog?: string;
+  /**
+   * The new company of the user.
+   */
+  company?: string;
+  /**
+   * The new location of the user.
+   */
+  location?: string;
+  /**
+   * The new hiring availability of the user.
+   */
+  hireable?: boolean;
+  /**
+   * The new short biography of the user.
+   */
+  bio?: string;
+};
+type UsersUpdateAuthenticatedRequestOptions = {
+  method: "PATCH";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type UsersListBlockedEndpoint = {};
+type UsersListBlockedRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type UsersCheckBlockedEndpoint = {
+  /**
+   * username parameter
+   */
+  username: string;
+};
+type UsersCheckBlockedRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type UsersBlockEndpoint = {
+  /**
+   * username parameter
+   */
+  username: string;
+};
+type UsersBlockRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type UsersUnblockEndpoint = {
+  /**
+   * username parameter
+   */
+  username: string;
+};
+type UsersUnblockRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type UsersTogglePrimaryEmailVisibilityEndpoint = {
+  /**
+   * Specify the _primary_ email address that needs a visibility change.
+   */
+  email: string;
+  /**
+   * Use `public` to enable an authenticated user to view the specified email address, or use `private` so this primary email address cannot be seen publicly.
+   */
+  visibility: string;
+};
+type UsersTogglePrimaryEmailVisibilityRequestOptions = {
+  method: "PATCH";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type UsersListEmailsEndpoint = {
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type UsersListEmailsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type UsersAddEmailsEndpoint = {
+  /**
+   * Adds one or more email addresses to your GitHub account. Must contain at least one email address. **Note:** Alternatively, you can pass a single email address or an `array` of emails addresses directly, but we recommend that you pass an object using the `emails` key.
+   */
+  emails: string[];
+};
+type UsersAddEmailsRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type UsersDeleteEmailsEndpoint = {
+  /**
+   * Deletes one or more email addresses from your GitHub account. Must contain at least one email address. **Note:** Alternatively, you can pass a single email address or an `array` of emails addresses directly, but we recommend that you pass an object using the `emails` key.
+   */
+  emails: string[];
+};
+type UsersDeleteEmailsRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type UsersListFollowersForAuthenticatedUserEndpoint = {
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type UsersListFollowersForAuthenticatedUserRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type UsersListFollowingForAuthenticatedUserEndpoint = {
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type UsersListFollowingForAuthenticatedUserRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type UsersCheckFollowingEndpoint = {
+  /**
+   * username parameter
+   */
+  username: string;
+};
+type UsersCheckFollowingRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type UsersFollowEndpoint = {
+  /**
+   * username parameter
+   */
+  username: string;
+};
+type UsersFollowRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type UsersUnfollowEndpoint = {
+  /**
+   * username parameter
+   */
+  username: string;
+};
+type UsersUnfollowRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type UsersListGpgKeysEndpoint = {
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type UsersListGpgKeysRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type UsersCreateGpgKeyEndpoint = {
+  /**
+   * Your GPG key, generated in ASCII-armored format. See "[Generating a new GPG key](https://help.github.com/articles/generating-a-new-gpg-key/)" for help creating a GPG key.
+   */
+  armored_public_key?: string;
+};
+type UsersCreateGpgKeyRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type UsersGetGpgKeyEndpoint = {
+  /**
+   * gpg_key_id parameter
+   */
+  gpg_key_id: number;
+};
+type UsersGetGpgKeyRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type UsersDeleteGpgKeyEndpoint = {
+  /**
+   * gpg_key_id parameter
+   */
+  gpg_key_id: number;
+};
+type UsersDeleteGpgKeyRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type AppsListInstallationsForAuthenticatedUserEndpoint = {
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type AppsListInstallationsForAuthenticatedUserRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type AppsListInstallationReposForAuthenticatedUserEndpoint = {
+  /**
+   * installation_id parameter
+   */
+  installation_id: number;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type AppsListInstallationReposForAuthenticatedUserRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type AppsAddRepoToInstallationEndpoint = {
+  /**
+   * installation_id parameter
+   */
+  installation_id: number;
+  /**
+   * repository_id parameter
+   */
+  repository_id: number;
+};
+type AppsAddRepoToInstallationRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type AppsRemoveRepoFromInstallationEndpoint = {
+  /**
+   * installation_id parameter
+   */
+  installation_id: number;
+  /**
+   * repository_id parameter
+   */
+  repository_id: number;
+};
+type AppsRemoveRepoFromInstallationRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type IssuesListForAuthenticatedUserEndpoint = {
+  /**
+   * Indicates which sorts of issues to return. Can be one of:
+   * \* `assigned`: Issues assigned to you
+   * \* `created`: Issues created by you
+   * \* `mentioned`: Issues mentioning you
+   * \* `subscribed`: Issues you're subscribed to updates for
+   * \* `all`: All issues the authenticated user can see, regardless of participation or creation
+   */
+  filter?: "assigned" | "created" | "mentioned" | "subscribed" | "all";
+  /**
+   * Indicates the state of the issues to return. Can be either `open`, `closed`, or `all`.
+   */
+  state?: "open" | "closed" | "all";
+  /**
+   * A list of comma separated label names. Example: `bug,ui,@high`
+   */
+  labels?: string;
+  /**
+   * What to sort results by. Can be either `created`, `updated`, `comments`.
+   */
+  sort?: "created" | "updated" | "comments";
+  /**
+   * The direction of the sort. Can be either `asc` or `desc`.
+   */
+  direction?: "asc" | "desc";
+  /**
+   * Only issues updated at or after this time are returned. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
+   */
+  since?: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type IssuesListForAuthenticatedUserRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type UsersListPublicKeysEndpoint = {
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type UsersListPublicKeysRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type UsersCreatePublicKeyEndpoint = {
+  /**
+   * A descriptive name for the new key. Use a name that will help you recognize this key in your GitHub account. For example, if you're using a personal Mac, you might call this key "Personal MacBook Air".
+   */
+  title?: string;
+  /**
+   * The public SSH key to add to your GitHub account. See "[Generating a new SSH key](https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/)" for guidance on how to create a public SSH key.
+   */
+  key?: string;
+};
+type UsersCreatePublicKeyRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type UsersGetPublicKeyEndpoint = {
+  /**
+   * key_id parameter
+   */
+  key_id: number;
+};
+type UsersGetPublicKeyRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type UsersDeletePublicKeyEndpoint = {
+  /**
+   * key_id parameter
+   */
+  key_id: number;
+};
+type UsersDeletePublicKeyRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type AppsListMarketplacePurchasesForAuthenticatedUserEndpoint = {
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type AppsListMarketplacePurchasesForAuthenticatedUserRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type AppsListMarketplacePurchasesForAuthenticatedUserStubbedEndpoint = {
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type AppsListMarketplacePurchasesForAuthenticatedUserStubbedRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OrgsListMembershipsEndpoint = {
+  /**
+   * Indicates the state of the memberships to return. Can be either `active` or `pending`. If not specified, the API returns both active and pending memberships.
+   */
+  state?: "active" | "pending";
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type OrgsListMembershipsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OrgsGetMembershipForAuthenticatedUserEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+};
+type OrgsGetMembershipForAuthenticatedUserRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OrgsUpdateMembershipEndpoint = {
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * The state that the membership should be in. Only `"active"` will be accepted.
+   */
+  state: "active";
+};
+type OrgsUpdateMembershipRequestOptions = {
+  method: "PATCH";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type MigrationsStartForAuthenticatedUserEndpoint = {
+  /**
+   * An array of repositories to include in the migration.
+   */
+  repositories: string[];
+  /**
+   * Locks the `repositories` to prevent changes during the migration when set to `true`.
+   */
+  lock_repositories?: boolean;
+  /**
+   * Does not include attachments uploaded to GitHub.com in the migration data when set to `true`. Excluding attachments will reduce the migration archive file size.
+   */
+  exclude_attachments?: boolean;
+};
+type MigrationsStartForAuthenticatedUserRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type MigrationsListForAuthenticatedUserEndpoint = {
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type MigrationsListForAuthenticatedUserRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type MigrationsGetStatusForAuthenticatedUserEndpoint = {
+  /**
+   * migration_id parameter
+   */
+  migration_id: number;
+};
+type MigrationsGetStatusForAuthenticatedUserRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type MigrationsGetArchiveForAuthenticatedUserEndpoint = {
+  /**
+   * migration_id parameter
+   */
+  migration_id: number;
+};
+type MigrationsGetArchiveForAuthenticatedUserRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type MigrationsDeleteArchiveForAuthenticatedUserEndpoint = {
+  /**
+   * migration_id parameter
+   */
+  migration_id: number;
+};
+type MigrationsDeleteArchiveForAuthenticatedUserRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type MigrationsUnlockRepoForAuthenticatedUserEndpoint = {
+  /**
+   * migration_id parameter
+   */
+  migration_id: number;
+  /**
+   * repo_name parameter
+   */
+  repo_name: string;
+};
+type MigrationsUnlockRepoForAuthenticatedUserRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OrgsListForAuthenticatedUserEndpoint = {
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type OrgsListForAuthenticatedUserRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ProjectsCreateForAuthenticatedUserEndpoint = {
+  /**
+   * The name of the project.
+   */
+  name: string;
+  /**
+   * The description of the project.
+   */
+  body?: string;
+};
+type ProjectsCreateForAuthenticatedUserRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type UsersListPublicEmailsEndpoint = {
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type UsersListPublicEmailsRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposListEndpoint = {
+  /**
+   * Can be one of `all`, `public`, or `private`.
+   */
+  visibility?: "all" | "public" | "private";
+  /**
+   * Comma-separated list of values. Can include:
+   * \* `owner`: Repositories that are owned by the authenticated user.
+   * \* `collaborator`: Repositories that the user has been added to as a collaborator.
+   * \* `organization_member`: Repositories that the user has access to through being a member of an organization. This includes every repository on every team that the user is on.
+   */
+  affiliation?: string;
+  /**
+   * Can be one of `all`, `owner`, `public`, `private`, `member`. Default: `all`
+   *
+   * Will cause a `422` error if used in the same request as **visibility** or **affiliation**. Will cause a `422` error if used in the same request as **visibility** or **affiliation**.
+   */
+  type?: "all" | "owner" | "public" | "private" | "member";
+  /**
+   * Can be one of `created`, `updated`, `pushed`, `full_name`.
+   */
+  sort?: "created" | "updated" | "pushed" | "full_name";
+  /**
+   * Can be one of `asc` or `desc`. Default: `asc` when using `full_name`, otherwise `desc`
+   */
+  direction?: "asc" | "desc";
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ReposListRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposCreateForAuthenticatedUserEndpoint = {
+  /**
+   * The name of the repository.
+   */
+  name: string;
+  /**
+   * A short description of the repository.
+   */
+  description?: string;
+  /**
+   * A URL with more information about the repository.
+   */
+  homepage?: string;
+  /**
+   * Either `true` to create a private repository or `false` to create a public one. Creating private repositories requires a paid GitHub account.
+   */
+  private?: boolean;
+  /**
+   * Either `true` to enable issues for this repository or `false` to disable them.
+   */
+  has_issues?: boolean;
+  /**
+   * Either `true` to enable projects for this repository or `false` to disable them. **Note:** If you're creating a repository in an organization that has disabled repository projects, the default is `false`, and if you pass `true`, the API returns an error.
+   */
+  has_projects?: boolean;
+  /**
+   * Either `true` to enable the wiki for this repository or `false` to disable it.
+   */
+  has_wiki?: boolean;
+  /**
+   * Either `true` to make this repo available as a template repository or `false` to prevent it.
+   */
+  is_template?: boolean;
+  /**
+   * The id of the team that will be granted access to this repository. This is only valid when creating a repository in an organization.
+   */
+  team_id?: number;
+  /**
+   * Pass `true` to create an initial commit with empty README.
+   */
+  auto_init?: boolean;
+  /**
+   * Desired language or platform [.gitignore template](https://github.com/github/gitignore) to apply. Use the name of the template without the extension. For example, "Haskell".
+   */
+  gitignore_template?: string;
+  /**
+   * Choose an [open source license template](https://choosealicense.com/) that best suits your needs, and then use the [license keyword](https://help.github.com/articles/licensing-a-repository/#searching-github-by-license-type) as the `license_template` string. For example, "mit" or "mpl-2.0".
+   */
+  license_template?: string;
+  /**
+   * Either `true` to allow squash-merging pull requests, or `false` to prevent squash-merging.
+   */
+  allow_squash_merge?: boolean;
+  /**
+   * Either `true` to allow merging pull requests with a merge commit, or `false` to prevent merging pull requests with merge commits.
+   */
+  allow_merge_commit?: boolean;
+  /**
+   * Either `true` to allow rebase-merging pull requests, or `false` to prevent rebase-merging.
+   */
+  allow_rebase_merge?: boolean;
+};
+type ReposCreateForAuthenticatedUserRequestOptions = {
+  method: "POST";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposListInvitationsForAuthenticatedUserEndpoint = {
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ReposListInvitationsForAuthenticatedUserRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposAcceptInvitationEndpoint = {
+  /**
+   * invitation_id parameter
+   */
+  invitation_id: number;
+};
+type ReposAcceptInvitationRequestOptions = {
+  method: "PATCH";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposDeclineInvitationEndpoint = {
+  /**
+   * invitation_id parameter
+   */
+  invitation_id: number;
+};
+type ReposDeclineInvitationRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ActivityListReposStarredByAuthenticatedUserEndpoint = {
+  /**
+   * One of `created` (when the repository was starred) or `updated` (when it was last pushed to).
+   */
+  sort?: "created" | "updated";
+  /**
+   * One of `asc` (ascending) or `desc` (descending).
+   */
+  direction?: "asc" | "desc";
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ActivityListReposStarredByAuthenticatedUserRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ActivityCheckStarringRepoEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+};
+type ActivityCheckStarringRepoRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ActivityStarRepoEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+};
+type ActivityStarRepoRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ActivityUnstarRepoEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+};
+type ActivityUnstarRepoRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ActivityListWatchedReposForAuthenticatedUserEndpoint = {
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ActivityListWatchedReposForAuthenticatedUserRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ActivityCheckWatchingRepoLegacyEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+};
+type ActivityCheckWatchingRepoLegacyRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ActivityWatchRepoLegacyEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+};
+type ActivityWatchRepoLegacyRequestOptions = {
+  method: "PUT";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ActivityStopWatchingRepoLegacyEndpoint = {
+  /**
+   * owner parameter
+   */
+  owner: string;
+  /**
+   * repo parameter
+   */
+  repo: string;
+};
+type ActivityStopWatchingRepoLegacyRequestOptions = {
+  method: "DELETE";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type TeamsListForAuthenticatedUserEndpoint = {
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type TeamsListForAuthenticatedUserRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type UsersListEndpoint = {
+  /**
+   * The integer ID of the last User that you've seen.
+   */
+  since?: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type UsersListRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type UsersGetByUsernameEndpoint = {
+  /**
+   * username parameter
+   */
+  username: string;
+};
+type UsersGetByUsernameRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ActivityListEventsForUserEndpoint = {
+  /**
+   * username parameter
+   */
+  username: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ActivityListEventsForUserRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ActivityListEventsForOrgEndpoint = {
+  /**
+   * username parameter
+   */
+  username: string;
+  /**
+   * org parameter
+   */
+  org: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ActivityListEventsForOrgRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ActivityListPublicEventsForUserEndpoint = {
+  /**
+   * username parameter
+   */
+  username: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ActivityListPublicEventsForUserRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type UsersListFollowersForUserEndpoint = {
+  /**
+   * username parameter
+   */
+  username: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type UsersListFollowersForUserRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type UsersListFollowingForUserEndpoint = {
+  /**
+   * username parameter
+   */
+  username: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type UsersListFollowingForUserRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type UsersCheckFollowingForUserEndpoint = {
+  /**
+   * username parameter
+   */
+  username: string;
+  /**
+   * target_user parameter
+   */
+  target_user: string;
+};
+type UsersCheckFollowingForUserRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type GistsListPublicForUserEndpoint = {
+  /**
+   * username parameter
+   */
+  username: string;
+  /**
+   * This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Only gists updated at or after this time are returned.
+   */
+  since?: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type GistsListPublicForUserRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type UsersListGpgKeysForUserEndpoint = {
+  /**
+   * username parameter
+   */
+  username: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type UsersListGpgKeysForUserRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type UsersGetContextForUserEndpoint = {
+  /**
+   * username parameter
+   */
+  username: string;
+  /**
+   * Identifies which additional information you'd like to receive about the person's hovercard. Can be `organization`, `repository`, `issue`, `pull_request`. **Required** when using `subject_id`.
+   */
+  subject_type?: "organization" | "repository" | "issue" | "pull_request";
+  /**
+   * Uses the ID for the `subject_type` you specified. **Required** when using `subject_type`.
+   */
+  subject_id?: string;
+};
+type UsersGetContextForUserRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type AppsGetUserInstallationEndpoint = {
+  /**
+   * username parameter
+   */
+  username: string;
+};
+type AppsGetUserInstallationRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type AppsFindUserInstallationEndpoint = {
+  /**
+   * username parameter
+   */
+  username: string;
+};
+type AppsFindUserInstallationRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type UsersListPublicKeysForUserEndpoint = {
+  /**
+   * username parameter
+   */
+  username: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type UsersListPublicKeysForUserRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type OrgsListForUserEndpoint = {
+  /**
+   * username parameter
+   */
+  username: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type OrgsListForUserRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ProjectsListForUserEndpoint = {
+  /**
+   * username parameter
+   */
+  username: string;
+  /**
+   * Indicates the state of the projects to return. Can be either `open`, `closed`, or `all`.
+   */
+  state?: "open" | "closed" | "all";
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ProjectsListForUserRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ActivityListReceivedEventsForUserEndpoint = {
+  /**
+   * username parameter
+   */
+  username: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ActivityListReceivedEventsForUserRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ActivityListReceivedPublicEventsForUserEndpoint = {
+  /**
+   * username parameter
+   */
+  username: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ActivityListReceivedPublicEventsForUserRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ReposListForUserEndpoint = {
+  /**
+   * username parameter
+   */
+  username: string;
+  /**
+   * Can be one of `all`, `owner`, `member`.
+   */
+  type?: "all" | "owner" | "member";
+  /**
+   * Can be one of `created`, `updated`, `pushed`, `full_name`.
+   */
+  sort?: "created" | "updated" | "pushed" | "full_name";
+  /**
+   * Can be one of `asc` or `desc`. Default: `asc` when using `full_name`, otherwise `desc`
+   */
+  direction?: "asc" | "desc";
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ReposListForUserRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ActivityListReposStarredByUserEndpoint = {
+  /**
+   * username parameter
+   */
+  username: string;
+  /**
+   * One of `created` (when the repository was starred) or `updated` (when it was last pushed to).
+   */
+  sort?: "created" | "updated";
+  /**
+   * One of `asc` (ascending) or `desc` (descending).
+   */
+  direction?: "asc" | "desc";
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ActivityListReposStarredByUserRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+type ActivityListReposWatchedByUserEndpoint = {
+  /**
+   * username parameter
+   */
+  username: string;
+  /**
+   * Results per page (max 100)
+   */
+  per_page?: number;
+  /**
+   * Page number of the results to fetch.
+   */
+  page?: number;
+};
+type ActivityListReposWatchedByUserRequestOptions = {
+  method: "GET";
+  url: Url;
+  headers: RequestHeaders;
+  request: RequestRequestOptions;
+};
+
+export type AppsCreateInstallationTokenParamsPermissions = {};
+export type GistsCreateParamsFiles = {
+  content?: string;
+};
+export type GistsUpdateParamsFiles = {
+  content?: string;
+  filename?: string;
+};
+export type OrgsCreateHookParamsConfig = {
+  url: string;
+  content_type?: string;
+  secret?: string;
+  insecure_ssl?: string;
+};
+export type OrgsUpdateHookParamsConfig = {
+  url: string;
+  content_type?: string;
+  secret?: string;
+  insecure_ssl?: string;
+};
+export type ReposUpdateBranchProtectionParamsRequiredStatusChecks = {
+  strict: boolean;
+  contexts: string[];
+};
+export type ReposUpdateBranchProtectionParamsRequiredPullRequestReviews = {
+  dismissal_restrictions?: ReposUpdateBranchProtectionParamsRequiredPullRequestReviewsDismissalRestrictions;
+  dismiss_stale_reviews?: boolean;
+  require_code_owner_reviews?: boolean;
+  required_approving_review_count?: number;
+};
+export type ReposUpdateBranchProtectionParamsRequiredPullRequestReviewsDismissalRestrictions = {
+  users?: string[];
+  teams?: string[];
+};
+export type ReposUpdateBranchProtectionParamsRestrictions = {
+  users: string[];
+  teams: string[];
+  apps?: string[];
+};
+export type ReposUpdateProtectedBranchPullRequestReviewEnforcementParamsDismissalRestrictions = {
+  users?: string[];
+  teams?: string[];
+};
+export type ChecksCreateParamsOutput = {
+  title: string;
+  summary: string;
+  text?: string;
+  annotations?: ChecksCreateParamsOutputAnnotations[];
+  images?: ChecksCreateParamsOutputImages[];
+};
+export type ChecksCreateParamsOutputAnnotations = {
+  path: string;
+  start_line: number;
+  end_line: number;
+  start_column?: number;
+  end_column?: number;
+  annotation_level: "notice" | "warning" | "failure";
+  message: string;
+  title?: string;
+  raw_details?: string;
+};
+export type ChecksCreateParamsOutputImages = {
+  alt: string;
+  image_url: string;
+  caption?: string;
+};
+export type ChecksCreateParamsActions = {
+  label: string;
+  description: string;
+  identifier: string;
+};
+export type ChecksUpdateParamsOutput = {
+  title?: string;
+  summary: string;
+  text?: string;
+  annotations?: ChecksUpdateParamsOutputAnnotations[];
+  images?: ChecksUpdateParamsOutputImages[];
+};
+export type ChecksUpdateParamsOutputAnnotations = {
+  path: string;
+  start_line: number;
+  end_line: number;
+  start_column?: number;
+  end_column?: number;
+  annotation_level: "notice" | "warning" | "failure";
+  message: string;
+  title?: string;
+  raw_details?: string;
+};
+export type ChecksUpdateParamsOutputImages = {
+  alt: string;
+  image_url: string;
+  caption?: string;
+};
+export type ChecksUpdateParamsActions = {
+  label: string;
+  description: string;
+  identifier: string;
+};
+export type ChecksSetSuitesPreferencesParamsAutoTriggerChecks = {
+  app_id: number;
+  setting: boolean;
+};
+export type ReposCreateOrUpdateFileParamsCommitter = {
+  name: string;
+  email: string;
+};
+export type ReposCreateOrUpdateFileParamsAuthor = {
+  name: string;
+  email: string;
+};
+export type ReposCreateFileParamsCommitter = {
+  name: string;
+  email: string;
+};
+export type ReposCreateFileParamsAuthor = {
+  name: string;
+  email: string;
+};
+export type ReposUpdateFileParamsCommitter = {
+  name: string;
+  email: string;
+};
+export type ReposUpdateFileParamsAuthor = {
+  name: string;
+  email: string;
+};
+export type ReposDeleteFileParamsCommitter = {
+  name?: string;
+  email?: string;
+};
+export type ReposDeleteFileParamsAuthor = {
+  name?: string;
+  email?: string;
+};
+export type GitCreateCommitParamsAuthor = {
+  name?: string;
+  email?: string;
+  date?: string;
+};
+export type GitCreateCommitParamsCommitter = {
+  name?: string;
+  email?: string;
+  date?: string;
+};
+export type GitCreateTagParamsTagger = {
+  name?: string;
+  email?: string;
+  date?: string;
+};
+export type GitCreateTreeParamsTree = {
+  path?: string;
+  mode?: "100644" | "100755" | "040000" | "160000" | "120000";
+  type?: "blob" | "tree" | "commit";
+  sha?: string;
+  content?: string;
+};
+export type ReposCreateHookParamsConfig = {
+  url: string;
+  content_type?: string;
+  secret?: string;
+  insecure_ssl?: string;
+};
+export type ReposUpdateHookParamsConfig = {
+  url: string;
+  content_type?: string;
+  secret?: string;
+  insecure_ssl?: string;
+};
+export type ReposEnablePagesSiteParamsSource = {
+  branch?: "master" | "gh-pages";
+  path?: string;
+};
+export type PullsCreateReviewParamsComments = {
+  path: string;
+  position: number;
+  body: string;
+};
+export type TeamsCreateOrUpdateIdPGroupConnectionsParamsGroups = {
+  group_id: string;
+  group_name: string;
+  group_description: string;
+};
diff --git a/setup-maven/node_modules/@octokit/types/src/generated/README.md b/setup-maven/node_modules/@octokit/types/src/generated/README.md
new file mode 100644
index 0000000..2bc90d2
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/types/src/generated/README.md
@@ -0,0 +1,3 @@
+# ⚠️ Do not edit files in this folder
+
+All files are generated. Manual changes will be overwritten. If you find a problem, please look into how they are generated. When in doubt, please open a new issue.
diff --git a/setup-maven/node_modules/@octokit/types/src/index.ts b/setup-maven/node_modules/@octokit/types/src/index.ts
new file mode 100644
index 0000000..200f0a2
--- /dev/null
+++ b/setup-maven/node_modules/@octokit/types/src/index.ts
@@ -0,0 +1,18 @@
+export * from "./AuthInterface";
+export * from "./EndpointDefaults";
+export * from "./EndpointInterface";
+export * from "./EndpointOptions";
+export * from "./Fetch";
+export * from "./OctokitResponse";
+export * from "./RequestHeaders";
+export * from "./RequestInterface";
+export * from "./RequestMethod";
+export * from "./RequestOptions";
+export * from "./RequestParameters";
+export * from "./RequestRequestOptions";
+export * from "./ResponseHeaders";
+export * from "./Route";
+export * from "./Signal";
+export * from "./StrategyInterface";
+export * from "./Url";
+export * from "./VERSION";
diff --git a/setup-maven/node_modules/@types/node/LICENSE b/setup-maven/node_modules/@types/node/LICENSE
new file mode 100644
index 0000000..2107107
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/LICENSE
@@ -0,0 +1,21 @@
+    MIT License
+
+    Copyright (c) Microsoft Corporation. All rights reserved.
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE
diff --git a/setup-maven/node_modules/@types/node/README.md b/setup-maven/node_modules/@types/node/README.md
new file mode 100644
index 0000000..dd73fe1
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/README.md
@@ -0,0 +1,16 @@
+# Installation
+> `npm install --save @types/node`
+
+# Summary
+This package contains type definitions for Node.js (http://nodejs.org/).
+
+# Details
+Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node.
+
+### Additional Details
+ * Last updated: Mon, 25 Nov 2019 22:58:16 GMT
+ * Dependencies: none
+ * Global values: `Buffer`, `NodeJS`, `Symbol`, `__dirname`, `__filename`, `clearImmediate`, `clearInterval`, `clearTimeout`, `console`, `exports`, `global`, `module`, `process`, `queueMicrotask`, `require`, `setImmediate`, `setInterval`, `setTimeout`
+
+# Credits
+These definitions were written by Microsoft TypeScript (https://github.com/Microsoft), DefinitelyTyped (https://github.com/DefinitelyTyped), Alberto Schiabel (https://github.com/jkomyno), Alexander T. (https://github.com/a-tarasyuk), Alvis HT Tang (https://github.com/alvis), Andrew Makarov (https://github.com/r3nya), Benjamin Toueg (https://github.com/btoueg), Bruno Scheufler (https://github.com/brunoscheufler), Chigozirim C. (https://github.com/smac89), Christian Vaagland Tellnes (https://github.com/tellnes), David Junger (https://github.com/touffy), Deividas Bakanas (https://github.com/DeividasBakanas), Eugene Y. Q. Shen (https://github.com/eyqs), Flarna (https://github.com/Flarna), Hannes Magnusson (https://github.com/Hannes-Magnusson-CK), Hoàng Văn Khải (https://github.com/KSXGitHub), Huw (https://github.com/hoo29), Kelvin Jin (https://github.com/kjin), Klaus Meinhardt (https://github.com/ajafff), Lishude (https://github.com/islishude), Mariusz Wiktorczyk (https://github.com/mwiktorczyk), Mohsen Azimi (https://github.com/mohsen1), Nicolas Even (https://github.com/n-e), Nicolas Voigt (https://github.com/octo-sniffle), Nikita Galkin (https://github.com/galkin), Parambir Singh (https://github.com/parambirs), Sebastian Silbermann (https://github.com/eps1lon), Simon Schick (https://github.com/SimonSchick), Thomas den Hollander (https://github.com/ThomasdenH), Wilco Bakker (https://github.com/WilcoBakker), wwwy3y3 (https://github.com/wwwy3y3), Zane Hannan AU (https://github.com/ZaneHannanAU), Samuel Ainsworth (https://github.com/samuela), Kyle Uehlein (https://github.com/kuehlein), Jordi Oliveras Rovira (https://github.com/j-oliveras), Thanik Bhongbhibhat (https://github.com/bhongy), Marcin Kopacz (https://github.com/chyzwar), Trivikram Kamat (https://github.com/trivikr), Minh Son Nguyen (https://github.com/nguymin4), Junxiao Shi (https://github.com/yoursunny), and Ilia Baryshnikov (https://github.com/qwelias).
diff --git a/setup-maven/node_modules/@types/node/assert.d.ts b/setup-maven/node_modules/@types/node/assert.d.ts
new file mode 100644
index 0000000..1244813
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/assert.d.ts
@@ -0,0 +1,48 @@
+declare module "assert" {
+    function internal(value: any, message?: string | Error): void;
+    namespace internal {
+        class AssertionError implements Error {
+            name: string;
+            message: string;
+            actual: any;
+            expected: any;
+            operator: string;
+            generatedMessage: boolean;
+            code: 'ERR_ASSERTION';
+
+            constructor(options?: {
+                message?: string; actual?: any; expected?: any;
+                operator?: string; stackStartFn?: Function
+            });
+        }
+
+        function fail(message?: string | Error): never;
+        /** @deprecated since v10.0.0 - use fail([message]) or other assert functions instead. */
+        function fail(actual: any, expected: any, message?: string | Error, operator?: string, stackStartFn?: Function): never;
+        function ok(value: any, message?: string | Error): void;
+        function equal(actual: any, expected: any, message?: string | Error): void;
+        function notEqual(actual: any, expected: any, message?: string | Error): void;
+        function deepEqual(actual: any, expected: any, message?: string | Error): void;
+        function notDeepEqual(actual: any, expected: any, message?: string | Error): void;
+        function strictEqual(actual: any, expected: any, message?: string | Error): void;
+        function notStrictEqual(actual: any, expected: any, message?: string | Error): void;
+        function deepStrictEqual(actual: any, expected: any, message?: string | Error): void;
+        function notDeepStrictEqual(actual: any, expected: any, message?: string | Error): void;
+
+        function throws(block: () => any, message?: string | Error): void;
+        function throws(block: () => any, error: RegExp | Function | Object | Error, message?: string | Error): void;
+        function doesNotThrow(block: () => any, message?: string | Error): void;
+        function doesNotThrow(block: () => any, error: RegExp | Function, message?: string | Error): void;
+
+        function ifError(value: any): void;
+
+        function rejects(block: (() => Promise<any>) | Promise<any>, message?: string | Error): Promise<void>;
+        function rejects(block: (() => Promise<any>) | Promise<any>, error: RegExp | Function | Object | Error, message?: string | Error): Promise<void>;
+        function doesNotReject(block: (() => Promise<any>) | Promise<any>, message?: string | Error): Promise<void>;
+        function doesNotReject(block: (() => Promise<any>) | Promise<any>, error: RegExp | Function, message?: string | Error): Promise<void>;
+
+        const strict: typeof internal;
+    }
+
+    export = internal;
+}
diff --git a/setup-maven/node_modules/@types/node/async_hooks.d.ts b/setup-maven/node_modules/@types/node/async_hooks.d.ts
new file mode 100644
index 0000000..cca992e
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/async_hooks.d.ts
@@ -0,0 +1,132 @@
+/**
+ * Async Hooks module: https://nodejs.org/api/async_hooks.html
+ */
+declare module "async_hooks" {
+    /**
+     * Returns the asyncId of the current execution context.
+     */
+    function executionAsyncId(): number;
+
+    /**
+     * Returns the ID of the resource responsible for calling the callback that is currently being executed.
+     */
+    function triggerAsyncId(): number;
+
+    interface HookCallbacks {
+        /**
+         * Called when a class is constructed that has the possibility to emit an asynchronous event.
+         * @param asyncId a unique ID for the async resource
+         * @param type the type of the async resource
+         * @param triggerAsyncId the unique ID of the async resource in whose execution context this async resource was created
+         * @param resource reference to the resource representing the async operation, needs to be released during destroy
+         */
+        init?(asyncId: number, type: string, triggerAsyncId: number, resource: Object): void;
+
+        /**
+         * When an asynchronous operation is initiated or completes a callback is called to notify the user.
+         * The before callback is called just before said callback is executed.
+         * @param asyncId the unique identifier assigned to the resource about to execute the callback.
+         */
+        before?(asyncId: number): void;
+
+        /**
+         * Called immediately after the callback specified in before is completed.
+         * @param asyncId the unique identifier assigned to the resource which has executed the callback.
+         */
+        after?(asyncId: number): void;
+
+        /**
+         * Called when a promise has resolve() called. This may not be in the same execution id
+         * as the promise itself.
+         * @param asyncId the unique id for the promise that was resolve()d.
+         */
+        promiseResolve?(asyncId: number): void;
+
+        /**
+         * Called after the resource corresponding to asyncId is destroyed
+         * @param asyncId a unique ID for the async resource
+         */
+        destroy?(asyncId: number): void;
+    }
+
+    interface AsyncHook {
+        /**
+         * Enable the callbacks for a given AsyncHook instance. If no callbacks are provided enabling is a noop.
+         */
+        enable(): this;
+
+        /**
+         * Disable the callbacks for a given AsyncHook instance from the global pool of AsyncHook callbacks to be executed. Once a hook has been disabled it will not be called again until enabled.
+         */
+        disable(): this;
+    }
+
+    /**
+     * Registers functions to be called for different lifetime events of each async operation.
+     * @param options the callbacks to register
+     * @return an AsyncHooks instance used for disabling and enabling hooks
+     */
+    function createHook(options: HookCallbacks): AsyncHook;
+
+    interface AsyncResourceOptions {
+      /**
+       * The ID of the execution context that created this async event.
+       * Default: `executionAsyncId()`
+       */
+      triggerAsyncId?: number;
+
+      /**
+       * Disables automatic `emitDestroy` when the object is garbage collected.
+       * This usually does not need to be set (even if `emitDestroy` is called
+       * manually), unless the resource's `asyncId` is retrieved and the
+       * sensitive API's `emitDestroy` is called with it.
+       * Default: `false`
+       */
+      requireManualDestroy?: boolean;
+    }
+
+    /**
+     * The class AsyncResource was designed to be extended by the embedder's async resources.
+     * Using this users can easily trigger the lifetime events of their own resources.
+     */
+    class AsyncResource {
+        /**
+         * AsyncResource() is meant to be extended. Instantiating a
+         * new AsyncResource() also triggers init. If triggerAsyncId is omitted then
+         * async_hook.executionAsyncId() is used.
+         * @param type The type of async event.
+         * @param triggerAsyncId The ID of the execution context that created
+         *   this async event (default: `executionAsyncId()`), or an
+         *   AsyncResourceOptions object (since 9.3)
+         */
+        constructor(type: string, triggerAsyncId?: number|AsyncResourceOptions);
+
+        /**
+         * Call the provided function with the provided arguments in the
+         * execution context of the async resource. This will establish the
+         * context, trigger the AsyncHooks before callbacks, call the function,
+         * trigger the AsyncHooks after callbacks, and then restore the original
+         * execution context.
+         * @param fn The function to call in the execution context of this
+         *   async resource.
+         * @param thisArg The receiver to be used for the function call.
+         * @param args Optional arguments to pass to the function.
+         */
+        runInAsyncScope<This, Result>(fn: (this: This, ...args: any[]) => Result, thisArg?: This, ...args: any[]): Result;
+
+        /**
+         * Call AsyncHooks destroy callbacks.
+         */
+        emitDestroy(): void;
+
+        /**
+         * @return the unique ID assigned to this AsyncResource instance.
+         */
+        asyncId(): number;
+
+        /**
+         * @return the trigger ID for this AsyncResource instance.
+         */
+        triggerAsyncId(): number;
+    }
+}
diff --git a/setup-maven/node_modules/@types/node/base.d.ts b/setup-maven/node_modules/@types/node/base.d.ts
new file mode 100644
index 0000000..70983d9
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/base.d.ts
@@ -0,0 +1,41 @@
+// base definnitions for all NodeJS modules that are not specific to any version of TypeScript
+/// <reference path="globals.d.ts" />
+/// <reference path="assert.d.ts" />
+/// <reference path="async_hooks.d.ts" />
+/// <reference path="buffer.d.ts" />
+/// <reference path="child_process.d.ts" />
+/// <reference path="cluster.d.ts" />
+/// <reference path="console.d.ts" />
+/// <reference path="constants.d.ts" />
+/// <reference path="crypto.d.ts" />
+/// <reference path="dgram.d.ts" />
+/// <reference path="dns.d.ts" />
+/// <reference path="domain.d.ts" />
+/// <reference path="events.d.ts" />
+/// <reference path="fs.d.ts" />
+/// <reference path="http.d.ts" />
+/// <reference path="http2.d.ts" />
+/// <reference path="https.d.ts" />
+/// <reference path="inspector.d.ts" />
+/// <reference path="module.d.ts" />
+/// <reference path="net.d.ts" />
+/// <reference path="os.d.ts" />
+/// <reference path="path.d.ts" />
+/// <reference path="perf_hooks.d.ts" />
+/// <reference path="process.d.ts" />
+/// <reference path="punycode.d.ts" />
+/// <reference path="querystring.d.ts" />
+/// <reference path="readline.d.ts" />
+/// <reference path="repl.d.ts" />
+/// <reference path="stream.d.ts" />
+/// <reference path="string_decoder.d.ts" />
+/// <reference path="timers.d.ts" />
+/// <reference path="tls.d.ts" />
+/// <reference path="trace_events.d.ts" />
+/// <reference path="tty.d.ts" />
+/// <reference path="url.d.ts" />
+/// <reference path="util.d.ts" />
+/// <reference path="v8.d.ts" />
+/// <reference path="vm.d.ts" />
+/// <reference path="worker_threads.d.ts" />
+/// <reference path="zlib.d.ts" />
diff --git a/setup-maven/node_modules/@types/node/buffer.d.ts b/setup-maven/node_modules/@types/node/buffer.d.ts
new file mode 100644
index 0000000..7eb1061
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/buffer.d.ts
@@ -0,0 +1,22 @@
+declare module "buffer" {
+    export const INSPECT_MAX_BYTES: number;
+    export const kMaxLength: number;
+    export const kStringMaxLength: number;
+    export const constants: {
+        MAX_LENGTH: number;
+        MAX_STRING_LENGTH: number;
+    };
+    const BuffType: typeof Buffer;
+
+    export type TranscodeEncoding = "ascii" | "utf8" | "utf16le" | "ucs2" | "latin1" | "binary";
+
+    export function transcode(source: Uint8Array, fromEnc: TranscodeEncoding, toEnc: TranscodeEncoding): Buffer;
+
+    export const SlowBuffer: {
+        /** @deprecated since v6.0.0, use Buffer.allocUnsafeSlow() */
+        new(size: number): Buffer;
+        prototype: Buffer;
+    };
+
+    export { BuffType as Buffer };
+}
diff --git a/setup-maven/node_modules/@types/node/child_process.d.ts b/setup-maven/node_modules/@types/node/child_process.d.ts
new file mode 100644
index 0000000..09eeba3
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/child_process.d.ts
@@ -0,0 +1,478 @@
+declare module "child_process" {
+    import * as events from "events";
+    import * as net from "net";
+    import { Writable, Readable, Stream, Pipe } from "stream";
+
+    interface ChildProcess extends events.EventEmitter {
+        stdin: Writable | null;
+        stdout: Readable | null;
+        stderr: Readable | null;
+        readonly channel?: Pipe | null;
+        readonly stdio: [
+            Writable | null, // stdin
+            Readable | null, // stdout
+            Readable | null, // stderr
+            Readable | Writable | null | undefined, // extra
+            Readable | Writable | null | undefined // extra
+        ];
+        readonly killed: boolean;
+        readonly pid: number;
+        readonly connected: boolean;
+        kill(signal?: NodeJS.Signals | number): void;
+        send(message: any, callback?: (error: Error | null) => void): boolean;
+        send(message: any, sendHandle?: net.Socket | net.Server, callback?: (error: Error | null) => void): boolean;
+        send(message: any, sendHandle?: net.Socket | net.Server, options?: MessageOptions, callback?: (error: Error | null) => void): boolean;
+        disconnect(): void;
+        unref(): void;
+        ref(): void;
+
+        /**
+         * events.EventEmitter
+         * 1. close
+         * 2. disconnect
+         * 3. error
+         * 4. exit
+         * 5. message
+         */
+
+        addListener(event: string, listener: (...args: any[]) => void): this;
+        addListener(event: "close", listener: (code: number, signal: NodeJS.Signals) => void): this;
+        addListener(event: "disconnect", listener: () => void): this;
+        addListener(event: "error", listener: (err: Error) => void): this;
+        addListener(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
+        addListener(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this;
+
+        emit(event: string | symbol, ...args: any[]): boolean;
+        emit(event: "close", code: number, signal: NodeJS.Signals): boolean;
+        emit(event: "disconnect"): boolean;
+        emit(event: "error", err: Error): boolean;
+        emit(event: "exit", code: number | null, signal: NodeJS.Signals | null): boolean;
+        emit(event: "message", message: any, sendHandle: net.Socket | net.Server): boolean;
+
+        on(event: string, listener: (...args: any[]) => void): this;
+        on(event: "close", listener: (code: number, signal: NodeJS.Signals) => void): this;
+        on(event: "disconnect", listener: () => void): this;
+        on(event: "error", listener: (err: Error) => void): this;
+        on(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
+        on(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this;
+
+        once(event: string, listener: (...args: any[]) => void): this;
+        once(event: "close", listener: (code: number, signal: NodeJS.Signals) => void): this;
+        once(event: "disconnect", listener: () => void): this;
+        once(event: "error", listener: (err: Error) => void): this;
+        once(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
+        once(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this;
+
+        prependListener(event: string, listener: (...args: any[]) => void): this;
+        prependListener(event: "close", listener: (code: number, signal: NodeJS.Signals) => void): this;
+        prependListener(event: "disconnect", listener: () => void): this;
+        prependListener(event: "error", listener: (err: Error) => void): this;
+        prependListener(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
+        prependListener(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this;
+
+        prependOnceListener(event: string, listener: (...args: any[]) => void): this;
+        prependOnceListener(event: "close", listener: (code: number, signal: NodeJS.Signals) => void): this;
+        prependOnceListener(event: "disconnect", listener: () => void): this;
+        prependOnceListener(event: "error", listener: (err: Error) => void): this;
+        prependOnceListener(event: "exit", listener: (code: number | null, signal: NodeJS.Signals | null) => void): this;
+        prependOnceListener(event: "message", listener: (message: any, sendHandle: net.Socket | net.Server) => void): this;
+    }
+
+    // return this object when stdio option is undefined or not specified
+    interface ChildProcessWithoutNullStreams extends ChildProcess {
+        stdin: Writable;
+        stdout: Readable;
+        stderr: Readable;
+        readonly stdio: [
+            Writable, // stdin
+            Readable, // stdout
+            Readable, // stderr
+            Readable | Writable | null | undefined, // extra, no modification
+            Readable | Writable | null | undefined // extra, no modification
+        ];
+    }
+
+    // return this object when stdio option is a tuple of 3
+    interface ChildProcessByStdio<
+        I extends null | Writable,
+        O extends null | Readable,
+        E extends null | Readable,
+    > extends ChildProcess {
+        stdin: I;
+        stdout: O;
+        stderr: E;
+        readonly stdio: [
+            I,
+            O,
+            E,
+            Readable | Writable | null | undefined, // extra, no modification
+            Readable | Writable | null | undefined // extra, no modification
+        ];
+    }
+
+    interface MessageOptions {
+        keepOpen?: boolean;
+    }
+
+    type StdioOptions = "pipe" | "ignore" | "inherit" | Array<("pipe" | "ipc" | "ignore" | "inherit" | Stream | number | null | undefined)>;
+
+    interface ProcessEnvOptions {
+        uid?: number;
+        gid?: number;
+        cwd?: string;
+        env?: NodeJS.ProcessEnv;
+    }
+
+    interface CommonOptions extends ProcessEnvOptions {
+        /**
+         * @default true
+         */
+        windowsHide?: boolean;
+        /**
+         * @default 0
+         */
+        timeout?: number;
+    }
+
+    interface SpawnOptions extends CommonOptions {
+        argv0?: string;
+        stdio?: StdioOptions;
+        detached?: boolean;
+        shell?: boolean | string;
+        windowsVerbatimArguments?: boolean;
+    }
+
+    interface SpawnOptionsWithoutStdio extends SpawnOptions {
+        stdio?: 'pipe' | Array<null | undefined | 'pipe'>;
+    }
+
+    type StdioNull = 'inherit' | 'ignore' | Stream;
+    type StdioPipe = undefined | null | 'pipe';
+
+    interface SpawnOptionsWithStdioTuple<
+        Stdin extends StdioNull | StdioPipe,
+        Stdout extends StdioNull | StdioPipe,
+        Stderr extends StdioNull | StdioPipe,
+    > extends SpawnOptions {
+        stdio: [Stdin, Stdout, Stderr];
+    }
+
+    // overloads of spawn without 'args'
+    function spawn(command: string, options?: SpawnOptionsWithoutStdio): ChildProcessWithoutNullStreams;
+
+    function spawn(
+        command: string,
+        options: SpawnOptionsWithStdioTuple<StdioPipe, StdioPipe, StdioPipe>,
+    ): ChildProcessByStdio<Writable, Readable, Readable>;
+    function spawn(
+        command: string,
+        options: SpawnOptionsWithStdioTuple<StdioPipe, StdioPipe, StdioNull>,
+    ): ChildProcessByStdio<Writable, Readable, null>;
+    function spawn(
+        command: string,
+        options: SpawnOptionsWithStdioTuple<StdioPipe, StdioNull, StdioPipe>,
+    ): ChildProcessByStdio<Writable, null, Readable>;
+    function spawn(
+        command: string,
+        options: SpawnOptionsWithStdioTuple<StdioNull, StdioPipe, StdioPipe>,
+    ): ChildProcessByStdio<null, Readable, Readable>;
+    function spawn(
+        command: string,
+        options: SpawnOptionsWithStdioTuple<StdioPipe, StdioNull, StdioNull>,
+    ): ChildProcessByStdio<Writable, null, null>;
+    function spawn(
+        command: string,
+        options: SpawnOptionsWithStdioTuple<StdioNull, StdioPipe, StdioNull>,
+    ): ChildProcessByStdio<null, Readable, null>;
+    function spawn(
+        command: string,
+        options: SpawnOptionsWithStdioTuple<StdioNull, StdioNull, StdioPipe>,
+    ): ChildProcessByStdio<null, null, Readable>;
+    function spawn(
+        command: string,
+        options: SpawnOptionsWithStdioTuple<StdioNull, StdioNull, StdioNull>,
+    ): ChildProcessByStdio<null, null, null>;
+
+    function spawn(command: string, options: SpawnOptions): ChildProcess;
+
+    // overloads of spawn with 'args'
+    function spawn(command: string, args?: ReadonlyArray<string>, options?: SpawnOptionsWithoutStdio): ChildProcessWithoutNullStreams;
+
+    function spawn(
+        command: string,
+        args: ReadonlyArray<string>,
+        options: SpawnOptionsWithStdioTuple<StdioPipe, StdioPipe, StdioPipe>,
+    ): ChildProcessByStdio<Writable, Readable, Readable>;
+    function spawn(
+        command: string,
+        args: ReadonlyArray<string>,
+        options: SpawnOptionsWithStdioTuple<StdioPipe, StdioPipe, StdioNull>,
+    ): ChildProcessByStdio<Writable, Readable, null>;
+    function spawn(
+        command: string,
+        args: ReadonlyArray<string>,
+        options: SpawnOptionsWithStdioTuple<StdioPipe, StdioNull, StdioPipe>,
+    ): ChildProcessByStdio<Writable, null, Readable>;
+    function spawn(
+        command: string,
+        args: ReadonlyArray<string>,
+        options: SpawnOptionsWithStdioTuple<StdioNull, StdioPipe, StdioPipe>,
+    ): ChildProcessByStdio<null, Readable, Readable>;
+    function spawn(
+        command: string,
+        args: ReadonlyArray<string>,
+        options: SpawnOptionsWithStdioTuple<StdioPipe, StdioNull, StdioNull>,
+    ): ChildProcessByStdio<Writable, null, null>;
+    function spawn(
+        command: string,
+        args: ReadonlyArray<string>,
+        options: SpawnOptionsWithStdioTuple<StdioNull, StdioPipe, StdioNull>,
+    ): ChildProcessByStdio<null, Readable, null>;
+    function spawn(
+        command: string,
+        args: ReadonlyArray<string>,
+        options: SpawnOptionsWithStdioTuple<StdioNull, StdioNull, StdioPipe>,
+    ): ChildProcessByStdio<null, null, Readable>;
+    function spawn(
+        command: string,
+        args: ReadonlyArray<string>,
+        options: SpawnOptionsWithStdioTuple<StdioNull, StdioNull, StdioNull>,
+    ): ChildProcessByStdio<null, null, null>;
+
+    function spawn(command: string, args: ReadonlyArray<string>, options: SpawnOptions): ChildProcess;
+
+    interface ExecOptions extends CommonOptions {
+        shell?: string;
+        maxBuffer?: number;
+        killSignal?: NodeJS.Signals | number;
+    }
+
+    interface ExecOptionsWithStringEncoding extends ExecOptions {
+        encoding: BufferEncoding;
+    }
+
+    interface ExecOptionsWithBufferEncoding extends ExecOptions {
+        encoding: string | null; // specify `null`.
+    }
+
+    interface ExecException extends Error {
+        cmd?: string;
+        killed?: boolean;
+        code?: number;
+        signal?: NodeJS.Signals;
+    }
+
+    // no `options` definitely means stdout/stderr are `string`.
+    function exec(command: string, callback?: (error: ExecException | null, stdout: string, stderr: string) => void): ChildProcess;
+
+    // `options` with `"buffer"` or `null` for `encoding` means stdout/stderr are definitely `Buffer`.
+    function exec(command: string, options: { encoding: "buffer" | null } & ExecOptions, callback?: (error: ExecException | null, stdout: Buffer, stderr: Buffer) => void): ChildProcess;
+
+    // `options` with well known `encoding` means stdout/stderr are definitely `string`.
+    function exec(command: string, options: { encoding: BufferEncoding } & ExecOptions, callback?: (error: ExecException | null, stdout: string, stderr: string) => void): ChildProcess;
+
+    // `options` with an `encoding` whose type is `string` means stdout/stderr could either be `Buffer` or `string`.
+    // There is no guarantee the `encoding` is unknown as `string` is a superset of `BufferEncoding`.
+    function exec(command: string, options: { encoding: string } & ExecOptions, callback?: (error: ExecException | null, stdout: string | Buffer, stderr: string | Buffer) => void): ChildProcess;
+
+    // `options` without an `encoding` means stdout/stderr are definitely `string`.
+    function exec(command: string, options: ExecOptions, callback?: (error: ExecException | null, stdout: string, stderr: string) => void): ChildProcess;
+
+    // fallback if nothing else matches. Worst case is always `string | Buffer`.
+    function exec(
+        command: string,
+        options: ({ encoding?: string | null } & ExecOptions) | undefined | null,
+        callback?: (error: ExecException | null, stdout: string | Buffer, stderr: string | Buffer) => void,
+    ): ChildProcess;
+
+    interface PromiseWithChild<T> extends Promise<T> {
+        child: ChildProcess;
+    }
+
+    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+    namespace exec {
+        function __promisify__(command: string): PromiseWithChild<{ stdout: string, stderr: string }>;
+        function __promisify__(command: string, options: { encoding: "buffer" | null } & ExecOptions): PromiseWithChild<{ stdout: Buffer, stderr: Buffer }>;
+        function __promisify__(command: string, options: { encoding: BufferEncoding } & ExecOptions): PromiseWithChild<{ stdout: string, stderr: string }>;
+        function __promisify__(command: string, options: ExecOptions): PromiseWithChild<{ stdout: string, stderr: string }>;
+        function __promisify__(command: string, options?: ({ encoding?: string | null } & ExecOptions) | null): PromiseWithChild<{ stdout: string | Buffer, stderr: string | Buffer }>;
+    }
+
+    interface ExecFileOptions extends CommonOptions {
+        maxBuffer?: number;
+        killSignal?: NodeJS.Signals | number;
+        windowsVerbatimArguments?: boolean;
+        shell?: boolean | string;
+    }
+    interface ExecFileOptionsWithStringEncoding extends ExecFileOptions {
+        encoding: BufferEncoding;
+    }
+    interface ExecFileOptionsWithBufferEncoding extends ExecFileOptions {
+        encoding: 'buffer' | null;
+    }
+    interface ExecFileOptionsWithOtherEncoding extends ExecFileOptions {
+        encoding: string;
+    }
+
+    function execFile(file: string): ChildProcess;
+    function execFile(file: string, options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null): ChildProcess;
+    function execFile(file: string, args?: ReadonlyArray<string> | null): ChildProcess;
+    function execFile(file: string, args: ReadonlyArray<string> | undefined | null, options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null): ChildProcess;
+
+    // no `options` definitely means stdout/stderr are `string`.
+    function execFile(file: string, callback: (error: Error | null, stdout: string, stderr: string) => void): ChildProcess;
+    function execFile(file: string, args: ReadonlyArray<string> | undefined | null, callback: (error: Error | null, stdout: string, stderr: string) => void): ChildProcess;
+
+    // `options` with `"buffer"` or `null` for `encoding` means stdout/stderr are definitely `Buffer`.
+    function execFile(file: string, options: ExecFileOptionsWithBufferEncoding, callback: (error: Error | null, stdout: Buffer, stderr: Buffer) => void): ChildProcess;
+    function execFile(
+        file: string,
+        args: ReadonlyArray<string> | undefined | null,
+        options: ExecFileOptionsWithBufferEncoding,
+        callback: (error: Error | null, stdout: Buffer, stderr: Buffer) => void,
+    ): ChildProcess;
+
+    // `options` with well known `encoding` means stdout/stderr are definitely `string`.
+    function execFile(file: string, options: ExecFileOptionsWithStringEncoding, callback: (error: Error | null, stdout: string, stderr: string) => void): ChildProcess;
+    function execFile(
+        file: string,
+        args: ReadonlyArray<string> | undefined | null,
+        options: ExecFileOptionsWithStringEncoding,
+        callback: (error: Error | null, stdout: string, stderr: string) => void,
+    ): ChildProcess;
+
+    // `options` with an `encoding` whose type is `string` means stdout/stderr could either be `Buffer` or `string`.
+    // There is no guarantee the `encoding` is unknown as `string` is a superset of `BufferEncoding`.
+    function execFile(
+        file: string,
+        options: ExecFileOptionsWithOtherEncoding,
+        callback: (error: Error | null, stdout: string | Buffer, stderr: string | Buffer) => void,
+    ): ChildProcess;
+    function execFile(
+        file: string,
+        args: ReadonlyArray<string> | undefined | null,
+        options: ExecFileOptionsWithOtherEncoding,
+        callback: (error: Error | null, stdout: string | Buffer, stderr: string | Buffer) => void,
+    ): ChildProcess;
+
+    // `options` without an `encoding` means stdout/stderr are definitely `string`.
+    function execFile(file: string, options: ExecFileOptions, callback: (error: Error | null, stdout: string, stderr: string) => void): ChildProcess;
+    function execFile(file: string, args: ReadonlyArray<string> | undefined | null, options: ExecFileOptions, callback: (error: Error | null, stdout: string, stderr: string) => void): ChildProcess;
+
+    // fallback if nothing else matches. Worst case is always `string | Buffer`.
+    function execFile(
+        file: string,
+        options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null,
+        callback: ((error: Error | null, stdout: string | Buffer, stderr: string | Buffer) => void) | undefined | null,
+    ): ChildProcess;
+    function execFile(
+        file: string,
+        args: ReadonlyArray<string> | undefined | null,
+        options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null,
+        callback: ((error: Error | null, stdout: string | Buffer, stderr: string | Buffer) => void) | undefined | null,
+    ): ChildProcess;
+
+    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+    namespace execFile {
+        function __promisify__(file: string): PromiseWithChild<{ stdout: string, stderr: string }>;
+        function __promisify__(file: string, args: string[] | undefined | null): PromiseWithChild<{ stdout: string, stderr: string }>;
+        function __promisify__(file: string, options: ExecFileOptionsWithBufferEncoding): PromiseWithChild<{ stdout: Buffer, stderr: Buffer }>;
+        function __promisify__(file: string, args: string[] | undefined | null, options: ExecFileOptionsWithBufferEncoding): PromiseWithChild<{ stdout: Buffer, stderr: Buffer }>;
+        function __promisify__(file: string, options: ExecFileOptionsWithStringEncoding): PromiseWithChild<{ stdout: string, stderr: string }>;
+        function __promisify__(file: string, args: string[] | undefined | null, options: ExecFileOptionsWithStringEncoding): PromiseWithChild<{ stdout: string, stderr: string }>;
+        function __promisify__(file: string, options: ExecFileOptionsWithOtherEncoding): PromiseWithChild<{ stdout: string | Buffer, stderr: string | Buffer }>;
+        function __promisify__(file: string, args: string[] | undefined | null, options: ExecFileOptionsWithOtherEncoding): PromiseWithChild<{ stdout: string | Buffer, stderr: string | Buffer }>;
+        function __promisify__(file: string, options: ExecFileOptions): PromiseWithChild<{ stdout: string, stderr: string }>;
+        function __promisify__(file: string, args: string[] | undefined | null, options: ExecFileOptions): PromiseWithChild<{ stdout: string, stderr: string }>;
+        function __promisify__(file: string, options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null): PromiseWithChild<{ stdout: string | Buffer, stderr: string | Buffer }>;
+        function __promisify__(
+            file: string,
+            args: string[] | undefined | null,
+            options: ({ encoding?: string | null } & ExecFileOptions) | undefined | null,
+        ): PromiseWithChild<{ stdout: string | Buffer, stderr: string | Buffer }>;
+    }
+
+    interface ForkOptions extends ProcessEnvOptions {
+        execPath?: string;
+        execArgv?: string[];
+        silent?: boolean;
+        stdio?: StdioOptions;
+        detached?: boolean;
+        windowsVerbatimArguments?: boolean;
+    }
+    function fork(modulePath: string, args?: ReadonlyArray<string>, options?: ForkOptions): ChildProcess;
+
+    interface SpawnSyncOptions extends CommonOptions {
+        argv0?: string; // Not specified in the docs
+        input?: string | NodeJS.ArrayBufferView;
+        stdio?: StdioOptions;
+        killSignal?: NodeJS.Signals | number;
+        maxBuffer?: number;
+        encoding?: string;
+        shell?: boolean | string;
+        windowsVerbatimArguments?: boolean;
+    }
+    interface SpawnSyncOptionsWithStringEncoding extends SpawnSyncOptions {
+        encoding: BufferEncoding;
+    }
+    interface SpawnSyncOptionsWithBufferEncoding extends SpawnSyncOptions {
+        encoding: string; // specify `null`.
+    }
+    interface SpawnSyncReturns<T> {
+        pid: number;
+        output: string[];
+        stdout: T;
+        stderr: T;
+        status: number | null;
+        signal: NodeJS.Signals | null;
+        error?: Error;
+    }
+    function spawnSync(command: string): SpawnSyncReturns<Buffer>;
+    function spawnSync(command: string, options?: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns<string>;
+    function spawnSync(command: string, options?: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns<Buffer>;
+    function spawnSync(command: string, options?: SpawnSyncOptions): SpawnSyncReturns<Buffer>;
+    function spawnSync(command: string, args?: ReadonlyArray<string>, options?: SpawnSyncOptionsWithStringEncoding): SpawnSyncReturns<string>;
+    function spawnSync(command: string, args?: ReadonlyArray<string>, options?: SpawnSyncOptionsWithBufferEncoding): SpawnSyncReturns<Buffer>;
+    function spawnSync(command: string, args?: ReadonlyArray<string>, options?: SpawnSyncOptions): SpawnSyncReturns<Buffer>;
+
+    interface ExecSyncOptions extends CommonOptions {
+        input?: string | Uint8Array;
+        stdio?: StdioOptions;
+        shell?: string;
+        killSignal?: NodeJS.Signals | number;
+        maxBuffer?: number;
+        encoding?: string;
+    }
+    interface ExecSyncOptionsWithStringEncoding extends ExecSyncOptions {
+        encoding: BufferEncoding;
+    }
+    interface ExecSyncOptionsWithBufferEncoding extends ExecSyncOptions {
+        encoding: string; // specify `null`.
+    }
+    function execSync(command: string): Buffer;
+    function execSync(command: string, options?: ExecSyncOptionsWithStringEncoding): string;
+    function execSync(command: string, options?: ExecSyncOptionsWithBufferEncoding): Buffer;
+    function execSync(command: string, options?: ExecSyncOptions): Buffer;
+
+    interface ExecFileSyncOptions extends CommonOptions {
+        input?: string | NodeJS.ArrayBufferView;
+        stdio?: StdioOptions;
+        killSignal?: NodeJS.Signals | number;
+        maxBuffer?: number;
+        encoding?: string;
+        shell?: boolean | string;
+    }
+    interface ExecFileSyncOptionsWithStringEncoding extends ExecFileSyncOptions {
+        encoding: BufferEncoding;
+    }
+    interface ExecFileSyncOptionsWithBufferEncoding extends ExecFileSyncOptions {
+        encoding: string; // specify `null`.
+    }
+    function execFileSync(command: string): Buffer;
+    function execFileSync(command: string, options?: ExecFileSyncOptionsWithStringEncoding): string;
+    function execFileSync(command: string, options?: ExecFileSyncOptionsWithBufferEncoding): Buffer;
+    function execFileSync(command: string, options?: ExecFileSyncOptions): Buffer;
+    function execFileSync(command: string, args?: ReadonlyArray<string>, options?: ExecFileSyncOptionsWithStringEncoding): string;
+    function execFileSync(command: string, args?: ReadonlyArray<string>, options?: ExecFileSyncOptionsWithBufferEncoding): Buffer;
+    function execFileSync(command: string, args?: ReadonlyArray<string>, options?: ExecFileSyncOptions): Buffer;
+}
diff --git a/setup-maven/node_modules/@types/node/cluster.d.ts b/setup-maven/node_modules/@types/node/cluster.d.ts
new file mode 100644
index 0000000..43340ff
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/cluster.d.ts
@@ -0,0 +1,260 @@
+declare module "cluster" {
+    import * as child from "child_process";
+    import * as events from "events";
+    import * as net from "net";
+
+    // interfaces
+    interface ClusterSettings {
+        execArgv?: string[]; // default: process.execArgv
+        exec?: string;
+        args?: string[];
+        silent?: boolean;
+        stdio?: any[];
+        uid?: number;
+        gid?: number;
+        inspectPort?: number | (() => number);
+    }
+
+    interface Address {
+        address: string;
+        port: number;
+        addressType: number | "udp4" | "udp6";  // 4, 6, -1, "udp4", "udp6"
+    }
+
+    class Worker extends events.EventEmitter {
+        id: number;
+        process: child.ChildProcess;
+        send(message: any, sendHandle?: any, callback?: (error: Error | null) => void): boolean;
+        kill(signal?: string): void;
+        destroy(signal?: string): void;
+        disconnect(): void;
+        isConnected(): boolean;
+        isDead(): boolean;
+        exitedAfterDisconnect: boolean;
+
+        /**
+         * events.EventEmitter
+         *   1. disconnect
+         *   2. error
+         *   3. exit
+         *   4. listening
+         *   5. message
+         *   6. online
+         */
+        addListener(event: string, listener: (...args: any[]) => void): this;
+        addListener(event: "disconnect", listener: () => void): this;
+        addListener(event: "error", listener: (error: Error) => void): this;
+        addListener(event: "exit", listener: (code: number, signal: string) => void): this;
+        addListener(event: "listening", listener: (address: Address) => void): this;
+        addListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this;  // the handle is a net.Socket or net.Server object, or undefined.
+        addListener(event: "online", listener: () => void): this;
+
+        emit(event: string | symbol, ...args: any[]): boolean;
+        emit(event: "disconnect"): boolean;
+        emit(event: "error", error: Error): boolean;
+        emit(event: "exit", code: number, signal: string): boolean;
+        emit(event: "listening", address: Address): boolean;
+        emit(event: "message", message: any, handle: net.Socket | net.Server): boolean;
+        emit(event: "online"): boolean;
+
+        on(event: string, listener: (...args: any[]) => void): this;
+        on(event: "disconnect", listener: () => void): this;
+        on(event: "error", listener: (error: Error) => void): this;
+        on(event: "exit", listener: (code: number, signal: string) => void): this;
+        on(event: "listening", listener: (address: Address) => void): this;
+        on(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this;  // the handle is a net.Socket or net.Server object, or undefined.
+        on(event: "online", listener: () => void): this;
+
+        once(event: string, listener: (...args: any[]) => void): this;
+        once(event: "disconnect", listener: () => void): this;
+        once(event: "error", listener: (error: Error) => void): this;
+        once(event: "exit", listener: (code: number, signal: string) => void): this;
+        once(event: "listening", listener: (address: Address) => void): this;
+        once(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this;  // the handle is a net.Socket or net.Server object, or undefined.
+        once(event: "online", listener: () => void): this;
+
+        prependListener(event: string, listener: (...args: any[]) => void): this;
+        prependListener(event: "disconnect", listener: () => void): this;
+        prependListener(event: "error", listener: (error: Error) => void): this;
+        prependListener(event: "exit", listener: (code: number, signal: string) => void): this;
+        prependListener(event: "listening", listener: (address: Address) => void): this;
+        prependListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this;  // the handle is a net.Socket or net.Server object, or undefined.
+        prependListener(event: "online", listener: () => void): this;
+
+        prependOnceListener(event: string, listener: (...args: any[]) => void): this;
+        prependOnceListener(event: "disconnect", listener: () => void): this;
+        prependOnceListener(event: "error", listener: (error: Error) => void): this;
+        prependOnceListener(event: "exit", listener: (code: number, signal: string) => void): this;
+        prependOnceListener(event: "listening", listener: (address: Address) => void): this;
+        prependOnceListener(event: "message", listener: (message: any, handle: net.Socket | net.Server) => void): this;  // the handle is a net.Socket or net.Server object, or undefined.
+        prependOnceListener(event: "online", listener: () => void): this;
+    }
+
+    interface Cluster extends events.EventEmitter {
+        Worker: Worker;
+        disconnect(callback?: () => void): void;
+        fork(env?: any): Worker;
+        isMaster: boolean;
+        isWorker: boolean;
+        // TODO: cluster.schedulingPolicy
+        settings: ClusterSettings;
+        setupMaster(settings?: ClusterSettings): void;
+        worker?: Worker;
+        workers?: {
+            [index: string]: Worker | undefined
+        };
+
+        /**
+         * events.EventEmitter
+         *   1. disconnect
+         *   2. exit
+         *   3. fork
+         *   4. listening
+         *   5. message
+         *   6. online
+         *   7. setup
+         */
+        addListener(event: string, listener: (...args: any[]) => void): this;
+        addListener(event: "disconnect", listener: (worker: Worker) => void): this;
+        addListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this;
+        addListener(event: "fork", listener: (worker: Worker) => void): this;
+        addListener(event: "listening", listener: (worker: Worker, address: Address) => void): this;
+        addListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this;  // the handle is a net.Socket or net.Server object, or undefined.
+        addListener(event: "online", listener: (worker: Worker) => void): this;
+        addListener(event: "setup", listener: (settings: ClusterSettings) => void): this;
+
+        emit(event: string | symbol, ...args: any[]): boolean;
+        emit(event: "disconnect", worker: Worker): boolean;
+        emit(event: "exit", worker: Worker, code: number, signal: string): boolean;
+        emit(event: "fork", worker: Worker): boolean;
+        emit(event: "listening", worker: Worker, address: Address): boolean;
+        emit(event: "message", worker: Worker, message: any, handle: net.Socket | net.Server): boolean;
+        emit(event: "online", worker: Worker): boolean;
+        emit(event: "setup", settings: ClusterSettings): boolean;
+
+        on(event: string, listener: (...args: any[]) => void): this;
+        on(event: "disconnect", listener: (worker: Worker) => void): this;
+        on(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this;
+        on(event: "fork", listener: (worker: Worker) => void): this;
+        on(event: "listening", listener: (worker: Worker, address: Address) => void): this;
+        on(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this;  // the handle is a net.Socket or net.Server object, or undefined.
+        on(event: "online", listener: (worker: Worker) => void): this;
+        on(event: "setup", listener: (settings: ClusterSettings) => void): this;
+
+        once(event: string, listener: (...args: any[]) => void): this;
+        once(event: "disconnect", listener: (worker: Worker) => void): this;
+        once(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this;
+        once(event: "fork", listener: (worker: Worker) => void): this;
+        once(event: "listening", listener: (worker: Worker, address: Address) => void): this;
+        once(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this;  // the handle is a net.Socket or net.Server object, or undefined.
+        once(event: "online", listener: (worker: Worker) => void): this;
+        once(event: "setup", listener: (settings: ClusterSettings) => void): this;
+
+        prependListener(event: string, listener: (...args: any[]) => void): this;
+        prependListener(event: "disconnect", listener: (worker: Worker) => void): this;
+        prependListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this;
+        prependListener(event: "fork", listener: (worker: Worker) => void): this;
+        prependListener(event: "listening", listener: (worker: Worker, address: Address) => void): this;
+        prependListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this;  // the handle is a net.Socket or net.Server object, or undefined.
+        prependListener(event: "online", listener: (worker: Worker) => void): this;
+        prependListener(event: "setup", listener: (settings: ClusterSettings) => void): this;
+
+        prependOnceListener(event: string, listener: (...args: any[]) => void): this;
+        prependOnceListener(event: "disconnect", listener: (worker: Worker) => void): this;
+        prependOnceListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): this;
+        prependOnceListener(event: "fork", listener: (worker: Worker) => void): this;
+        prependOnceListener(event: "listening", listener: (worker: Worker, address: Address) => void): this;
+        // the handle is a net.Socket or net.Server object, or undefined.
+        prependOnceListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): this;
+        prependOnceListener(event: "online", listener: (worker: Worker) => void): this;
+        prependOnceListener(event: "setup", listener: (settings: ClusterSettings) => void): this;
+    }
+
+    function disconnect(callback?: () => void): void;
+    function fork(env?: any): Worker;
+    const isMaster: boolean;
+    const isWorker: boolean;
+    // TODO: cluster.schedulingPolicy
+    const settings: ClusterSettings;
+    function setupMaster(settings?: ClusterSettings): void;
+    const worker: Worker;
+    const workers: {
+        [index: string]: Worker | undefined
+    };
+
+    /**
+     * events.EventEmitter
+     *   1. disconnect
+     *   2. exit
+     *   3. fork
+     *   4. listening
+     *   5. message
+     *   6. online
+     *   7. setup
+     */
+    function addListener(event: string, listener: (...args: any[]) => void): Cluster;
+    function addListener(event: "disconnect", listener: (worker: Worker) => void): Cluster;
+    function addListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster;
+    function addListener(event: "fork", listener: (worker: Worker) => void): Cluster;
+    function addListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster;
+     // the handle is a net.Socket or net.Server object, or undefined.
+    function addListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster;
+    function addListener(event: "online", listener: (worker: Worker) => void): Cluster;
+    function addListener(event: "setup", listener: (settings: ClusterSettings) => void): Cluster;
+
+    function emit(event: string | symbol, ...args: any[]): boolean;
+    function emit(event: "disconnect", worker: Worker): boolean;
+    function emit(event: "exit", worker: Worker, code: number, signal: string): boolean;
+    function emit(event: "fork", worker: Worker): boolean;
+    function emit(event: "listening", worker: Worker, address: Address): boolean;
+    function emit(event: "message", worker: Worker, message: any, handle: net.Socket | net.Server): boolean;
+    function emit(event: "online", worker: Worker): boolean;
+    function emit(event: "setup", settings: ClusterSettings): boolean;
+
+    function on(event: string, listener: (...args: any[]) => void): Cluster;
+    function on(event: "disconnect", listener: (worker: Worker) => void): Cluster;
+    function on(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster;
+    function on(event: "fork", listener: (worker: Worker) => void): Cluster;
+    function on(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster;
+    function on(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster;  // the handle is a net.Socket or net.Server object, or undefined.
+    function on(event: "online", listener: (worker: Worker) => void): Cluster;
+    function on(event: "setup", listener: (settings: ClusterSettings) => void): Cluster;
+
+    function once(event: string, listener: (...args: any[]) => void): Cluster;
+    function once(event: "disconnect", listener: (worker: Worker) => void): Cluster;
+    function once(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster;
+    function once(event: "fork", listener: (worker: Worker) => void): Cluster;
+    function once(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster;
+    function once(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster;  // the handle is a net.Socket or net.Server object, or undefined.
+    function once(event: "online", listener: (worker: Worker) => void): Cluster;
+    function once(event: "setup", listener: (settings: ClusterSettings) => void): Cluster;
+
+    function removeListener(event: string, listener: (...args: any[]) => void): Cluster;
+    function removeAllListeners(event?: string): Cluster;
+    function setMaxListeners(n: number): Cluster;
+    function getMaxListeners(): number;
+    function listeners(event: string): Function[];
+    function listenerCount(type: string): number;
+
+    function prependListener(event: string, listener: (...args: any[]) => void): Cluster;
+    function prependListener(event: "disconnect", listener: (worker: Worker) => void): Cluster;
+    function prependListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster;
+    function prependListener(event: "fork", listener: (worker: Worker) => void): Cluster;
+    function prependListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster;
+     // the handle is a net.Socket or net.Server object, or undefined.
+    function prependListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster;
+    function prependListener(event: "online", listener: (worker: Worker) => void): Cluster;
+    function prependListener(event: "setup", listener: (settings: ClusterSettings) => void): Cluster;
+
+    function prependOnceListener(event: string, listener: (...args: any[]) => void): Cluster;
+    function prependOnceListener(event: "disconnect", listener: (worker: Worker) => void): Cluster;
+    function prependOnceListener(event: "exit", listener: (worker: Worker, code: number, signal: string) => void): Cluster;
+    function prependOnceListener(event: "fork", listener: (worker: Worker) => void): Cluster;
+    function prependOnceListener(event: "listening", listener: (worker: Worker, address: Address) => void): Cluster;
+     // the handle is a net.Socket or net.Server object, or undefined.
+    function prependOnceListener(event: "message", listener: (worker: Worker, message: any, handle: net.Socket | net.Server) => void): Cluster;
+    function prependOnceListener(event: "online", listener: (worker: Worker) => void): Cluster;
+    function prependOnceListener(event: "setup", listener: (settings: ClusterSettings) => void): Cluster;
+
+    function eventNames(): string[];
+}
diff --git a/setup-maven/node_modules/@types/node/console.d.ts b/setup-maven/node_modules/@types/node/console.d.ts
new file mode 100644
index 0000000..d30d13f
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/console.d.ts
@@ -0,0 +1,3 @@
+declare module "console" {
+    export = console;
+}
diff --git a/setup-maven/node_modules/@types/node/constants.d.ts b/setup-maven/node_modules/@types/node/constants.d.ts
new file mode 100644
index 0000000..ebd463b
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/constants.d.ts
@@ -0,0 +1,448 @@
+/** @deprecated since v6.3.0 - use constants property exposed by the relevant module instead. */
+declare module "constants" {
+    /** @deprecated since v6.3.0 - use `os.constants.errno.E2BIG` instead. */
+    const E2BIG: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.EACCES` instead. */
+    const EACCES: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.EADDRINUSE` instead. */
+    const EADDRINUSE: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.EADDRNOTAVAIL` instead. */
+    const EADDRNOTAVAIL: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.EAFNOSUPPORT` instead. */
+    const EAFNOSUPPORT: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.EAGAIN` instead. */
+    const EAGAIN: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.EALREADY` instead. */
+    const EALREADY: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.EBADF` instead. */
+    const EBADF: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.EBADMSG` instead. */
+    const EBADMSG: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.EBUSY` instead. */
+    const EBUSY: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.ECANCELED` instead. */
+    const ECANCELED: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.ECHILD` instead. */
+    const ECHILD: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.ECONNABORTED` instead. */
+    const ECONNABORTED: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.ECONNREFUSED` instead. */
+    const ECONNREFUSED: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.ECONNRESET` instead. */
+    const ECONNRESET: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.EDEADLK` instead. */
+    const EDEADLK: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.EDESTADDRREQ` instead. */
+    const EDESTADDRREQ: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.EDOM` instead. */
+    const EDOM: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.EEXIST` instead. */
+    const EEXIST: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.EFAULT` instead. */
+    const EFAULT: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.EFBIG` instead. */
+    const EFBIG: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.EHOSTUNREACH` instead. */
+    const EHOSTUNREACH: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.EIDRM` instead. */
+    const EIDRM: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.EILSEQ` instead. */
+    const EILSEQ: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.EINPROGRESS` instead. */
+    const EINPROGRESS: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.EINTR` instead. */
+    const EINTR: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.EINVAL` instead. */
+    const EINVAL: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.EIO` instead. */
+    const EIO: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.EISCONN` instead. */
+    const EISCONN: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.EISDIR` instead. */
+    const EISDIR: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.ELOOP` instead. */
+    const ELOOP: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.EMFILE` instead. */
+    const EMFILE: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.EMLINK` instead. */
+    const EMLINK: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.EMSGSIZE` instead. */
+    const EMSGSIZE: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.ENAMETOOLONG` instead. */
+    const ENAMETOOLONG: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.ENETDOWN` instead. */
+    const ENETDOWN: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.ENETRESET` instead. */
+    const ENETRESET: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.ENETUNREACH` instead. */
+    const ENETUNREACH: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.ENFILE` instead. */
+    const ENFILE: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.ENOBUFS` instead. */
+    const ENOBUFS: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.ENODATA` instead. */
+    const ENODATA: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.ENODEV` instead. */
+    const ENODEV: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.ENOENT` instead. */
+    const ENOENT: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.ENOEXEC` instead. */
+    const ENOEXEC: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.ENOLCK` instead. */
+    const ENOLCK: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.ENOLINK` instead. */
+    const ENOLINK: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.ENOMEM` instead. */
+    const ENOMEM: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.ENOMSG` instead. */
+    const ENOMSG: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.ENOPROTOOPT` instead. */
+    const ENOPROTOOPT: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.ENOSPC` instead. */
+    const ENOSPC: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.ENOSR` instead. */
+    const ENOSR: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.ENOSTR` instead. */
+    const ENOSTR: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.ENOSYS` instead. */
+    const ENOSYS: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.ENOTCONN` instead. */
+    const ENOTCONN: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.ENOTDIR` instead. */
+    const ENOTDIR: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.ENOTEMPTY` instead. */
+    const ENOTEMPTY: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.ENOTSOCK` instead. */
+    const ENOTSOCK: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.ENOTSUP` instead. */
+    const ENOTSUP: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.ENOTTY` instead. */
+    const ENOTTY: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.ENXIO` instead. */
+    const ENXIO: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.EOPNOTSUPP` instead. */
+    const EOPNOTSUPP: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.EOVERFLOW` instead. */
+    const EOVERFLOW: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.EPERM` instead. */
+    const EPERM: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.EPIPE` instead. */
+    const EPIPE: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.EPROTO` instead. */
+    const EPROTO: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.EPROTONOSUPPORT` instead. */
+    const EPROTONOSUPPORT: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.EPROTOTYPE` instead. */
+    const EPROTOTYPE: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.ERANGE` instead. */
+    const ERANGE: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.EROFS` instead. */
+    const EROFS: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.ESPIPE` instead. */
+    const ESPIPE: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.ESRCH` instead. */
+    const ESRCH: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.ETIME` instead. */
+    const ETIME: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.ETIMEDOUT` instead. */
+    const ETIMEDOUT: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.ETXTBSY` instead. */
+    const ETXTBSY: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.EWOULDBLOCK` instead. */
+    const EWOULDBLOCK: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.EXDEV` instead. */
+    const EXDEV: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAEINTR` instead. */
+    const WSAEINTR: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAEBADF` instead. */
+    const WSAEBADF: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAEACCES` instead. */
+    const WSAEACCES: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAEFAULT` instead. */
+    const WSAEFAULT: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAEINVAL` instead. */
+    const WSAEINVAL: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAEMFILE` instead. */
+    const WSAEMFILE: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAEWOULDBLOCK` instead. */
+    const WSAEWOULDBLOCK: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAEINPROGRESS` instead. */
+    const WSAEINPROGRESS: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAEALREADY` instead. */
+    const WSAEALREADY: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAENOTSOCK` instead. */
+    const WSAENOTSOCK: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAEDESTADDRREQ` instead. */
+    const WSAEDESTADDRREQ: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAEMSGSIZE` instead. */
+    const WSAEMSGSIZE: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAEPROTOTYPE` instead. */
+    const WSAEPROTOTYPE: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAENOPROTOOPT` instead. */
+    const WSAENOPROTOOPT: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAEPROTONOSUPPORT` instead. */
+    const WSAEPROTONOSUPPORT: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAESOCKTNOSUPPORT` instead. */
+    const WSAESOCKTNOSUPPORT: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAEOPNOTSUPP` instead. */
+    const WSAEOPNOTSUPP: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAEPFNOSUPPORT` instead. */
+    const WSAEPFNOSUPPORT: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAEAFNOSUPPORT` instead. */
+    const WSAEAFNOSUPPORT: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAEADDRINUSE` instead. */
+    const WSAEADDRINUSE: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAEADDRNOTAVAIL` instead. */
+    const WSAEADDRNOTAVAIL: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAENETDOWN` instead. */
+    const WSAENETDOWN: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAENETUNREACH` instead. */
+    const WSAENETUNREACH: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAENETRESET` instead. */
+    const WSAENETRESET: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAECONNABORTED` instead. */
+    const WSAECONNABORTED: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAECONNRESET` instead. */
+    const WSAECONNRESET: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAENOBUFS` instead. */
+    const WSAENOBUFS: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAEISCONN` instead. */
+    const WSAEISCONN: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAENOTCONN` instead. */
+    const WSAENOTCONN: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAESHUTDOWN` instead. */
+    const WSAESHUTDOWN: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAETOOMANYREFS` instead. */
+    const WSAETOOMANYREFS: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAETIMEDOUT` instead. */
+    const WSAETIMEDOUT: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAECONNREFUSED` instead. */
+    const WSAECONNREFUSED: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAELOOP` instead. */
+    const WSAELOOP: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAENAMETOOLONG` instead. */
+    const WSAENAMETOOLONG: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAEHOSTDOWN` instead. */
+    const WSAEHOSTDOWN: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAEHOSTUNREACH` instead. */
+    const WSAEHOSTUNREACH: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAENOTEMPTY` instead. */
+    const WSAENOTEMPTY: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAEPROCLIM` instead. */
+    const WSAEPROCLIM: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAEUSERS` instead. */
+    const WSAEUSERS: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAEDQUOT` instead. */
+    const WSAEDQUOT: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAESTALE` instead. */
+    const WSAESTALE: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAEREMOTE` instead. */
+    const WSAEREMOTE: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSASYSNOTREADY` instead. */
+    const WSASYSNOTREADY: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAVERNOTSUPPORTED` instead. */
+    const WSAVERNOTSUPPORTED: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSANOTINITIALISED` instead. */
+    const WSANOTINITIALISED: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAEDISCON` instead. */
+    const WSAEDISCON: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAENOMORE` instead. */
+    const WSAENOMORE: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAECANCELLED` instead. */
+    const WSAECANCELLED: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAEINVALIDPROCTABLE` instead. */
+    const WSAEINVALIDPROCTABLE: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAEINVALIDPROVIDER` instead. */
+    const WSAEINVALIDPROVIDER: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAEPROVIDERFAILEDINIT` instead. */
+    const WSAEPROVIDERFAILEDINIT: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSASYSCALLFAILURE` instead. */
+    const WSASYSCALLFAILURE: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSASERVICE_NOT_FOUND` instead. */
+    const WSASERVICE_NOT_FOUND: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSATYPE_NOT_FOUND` instead. */
+    const WSATYPE_NOT_FOUND: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSA_E_NO_MORE` instead. */
+    const WSA_E_NO_MORE: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSA_E_CANCELLED` instead. */
+    const WSA_E_CANCELLED: number;
+    /** @deprecated since v6.3.0 - use `os.constants.errno.WSAEREFUSED` instead. */
+    const WSAEREFUSED: number;
+    /** @deprecated since v6.3.0 - use `os.constants.signals.SIGHUP` instead. */
+    const SIGHUP: number;
+    /** @deprecated since v6.3.0 - use `os.constants.signals.SIGINT` instead. */
+    const SIGINT: number;
+    /** @deprecated since v6.3.0 - use `os.constants.signals.SIGILL` instead. */
+    const SIGILL: number;
+    /** @deprecated since v6.3.0 - use `os.constants.signals.SIGABRT` instead. */
+    const SIGABRT: number;
+    /** @deprecated since v6.3.0 - use `os.constants.signals.SIGFPE` instead. */
+    const SIGFPE: number;
+    /** @deprecated since v6.3.0 - use `os.constants.signals.SIGKILL` instead. */
+    const SIGKILL: number;
+    /** @deprecated since v6.3.0 - use `os.constants.signals.SIGSEGV` instead. */
+    const SIGSEGV: number;
+    /** @deprecated since v6.3.0 - use `os.constants.signals.SIGTERM` instead. */
+    const SIGTERM: number;
+    /** @deprecated since v6.3.0 - use `os.constants.signals.SIGBREAK` instead. */
+    const SIGBREAK: number;
+    /** @deprecated since v6.3.0 - use `os.constants.signals.SIGWINCH` instead. */
+    const SIGWINCH: number;
+    const SSL_OP_ALL: number;
+    const SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION: number;
+    const SSL_OP_CIPHER_SERVER_PREFERENCE: number;
+    const SSL_OP_CISCO_ANYCONNECT: number;
+    const SSL_OP_COOKIE_EXCHANGE: number;
+    const SSL_OP_CRYPTOPRO_TLSEXT_BUG: number;
+    const SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS: number;
+    const SSL_OP_EPHEMERAL_RSA: number;
+    const SSL_OP_LEGACY_SERVER_CONNECT: number;
+    const SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER: number;
+    const SSL_OP_MICROSOFT_SESS_ID_BUG: number;
+    const SSL_OP_MSIE_SSLV2_RSA_PADDING: number;
+    const SSL_OP_NETSCAPE_CA_DN_BUG: number;
+    const SSL_OP_NETSCAPE_CHALLENGE_BUG: number;
+    const SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG: number;
+    const SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG: number;
+    const SSL_OP_NO_COMPRESSION: number;
+    const SSL_OP_NO_QUERY_MTU: number;
+    const SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION: number;
+    const SSL_OP_NO_SSLv2: number;
+    const SSL_OP_NO_SSLv3: number;
+    const SSL_OP_NO_TICKET: number;
+    const SSL_OP_NO_TLSv1: number;
+    const SSL_OP_NO_TLSv1_1: number;
+    const SSL_OP_NO_TLSv1_2: number;
+    const SSL_OP_PKCS1_CHECK_1: number;
+    const SSL_OP_PKCS1_CHECK_2: number;
+    const SSL_OP_SINGLE_DH_USE: number;
+    const SSL_OP_SINGLE_ECDH_USE: number;
+    const SSL_OP_SSLEAY_080_CLIENT_DH_BUG: number;
+    const SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG: number;
+    const SSL_OP_TLS_BLOCK_PADDING_BUG: number;
+    const SSL_OP_TLS_D5_BUG: number;
+    const SSL_OP_TLS_ROLLBACK_BUG: number;
+    const ENGINE_METHOD_DSA: number;
+    const ENGINE_METHOD_DH: number;
+    const ENGINE_METHOD_RAND: number;
+    const ENGINE_METHOD_ECDH: number;
+    const ENGINE_METHOD_ECDSA: number;
+    const ENGINE_METHOD_CIPHERS: number;
+    const ENGINE_METHOD_DIGESTS: number;
+    const ENGINE_METHOD_STORE: number;
+    const ENGINE_METHOD_PKEY_METHS: number;
+    const ENGINE_METHOD_PKEY_ASN1_METHS: number;
+    const ENGINE_METHOD_ALL: number;
+    const ENGINE_METHOD_NONE: number;
+    const DH_CHECK_P_NOT_SAFE_PRIME: number;
+    const DH_CHECK_P_NOT_PRIME: number;
+    const DH_UNABLE_TO_CHECK_GENERATOR: number;
+    const DH_NOT_SUITABLE_GENERATOR: number;
+    const RSA_PKCS1_PADDING: number;
+    const RSA_SSLV23_PADDING: number;
+    const RSA_NO_PADDING: number;
+    const RSA_PKCS1_OAEP_PADDING: number;
+    const RSA_X931_PADDING: number;
+    const RSA_PKCS1_PSS_PADDING: number;
+    const POINT_CONVERSION_COMPRESSED: number;
+    const POINT_CONVERSION_UNCOMPRESSED: number;
+    const POINT_CONVERSION_HYBRID: number;
+    const O_RDONLY: number;
+    const O_WRONLY: number;
+    const O_RDWR: number;
+    const S_IFMT: number;
+    const S_IFREG: number;
+    const S_IFDIR: number;
+    const S_IFCHR: number;
+    const S_IFBLK: number;
+    const S_IFIFO: number;
+    const S_IFSOCK: number;
+    const S_IRWXU: number;
+    const S_IRUSR: number;
+    const S_IWUSR: number;
+    const S_IXUSR: number;
+    const S_IRWXG: number;
+    const S_IRGRP: number;
+    const S_IWGRP: number;
+    const S_IXGRP: number;
+    const S_IRWXO: number;
+    const S_IROTH: number;
+    const S_IWOTH: number;
+    const S_IXOTH: number;
+    const S_IFLNK: number;
+    const O_CREAT: number;
+    const O_EXCL: number;
+    const O_NOCTTY: number;
+    const O_DIRECTORY: number;
+    const O_NOATIME: number;
+    const O_NOFOLLOW: number;
+    const O_SYNC: number;
+    const O_DSYNC: number;
+    const O_SYMLINK: number;
+    const O_DIRECT: number;
+    const O_NONBLOCK: number;
+    const O_TRUNC: number;
+    const O_APPEND: number;
+    const F_OK: number;
+    const R_OK: number;
+    const W_OK: number;
+    const X_OK: number;
+    const COPYFILE_EXCL: number;
+    const COPYFILE_FICLONE: number;
+    const COPYFILE_FICLONE_FORCE: number;
+    const UV_UDP_REUSEADDR: number;
+    /** @deprecated since v6.3.0 - use `os.constants.signals.SIGQUIT` instead. */
+    const SIGQUIT: number;
+    /** @deprecated since v6.3.0 - use `os.constants.signals.SIGTRAP` instead. */
+    const SIGTRAP: number;
+    /** @deprecated since v6.3.0 - use `os.constants.signals.SIGIOT` instead. */
+    const SIGIOT: number;
+    /** @deprecated since v6.3.0 - use `os.constants.signals.SIGBUS` instead. */
+    const SIGBUS: number;
+    /** @deprecated since v6.3.0 - use `os.constants.signals.SIGUSR1` instead. */
+    const SIGUSR1: number;
+    /** @deprecated since v6.3.0 - use `os.constants.signals.SIGUSR2` instead. */
+    const SIGUSR2: number;
+    /** @deprecated since v6.3.0 - use `os.constants.signals.SIGPIPE` instead. */
+    const SIGPIPE: number;
+    /** @deprecated since v6.3.0 - use `os.constants.signals.SIGALRM` instead. */
+    const SIGALRM: number;
+    /** @deprecated since v6.3.0 - use `os.constants.signals.SIGCHLD` instead. */
+    const SIGCHLD: number;
+    /** @deprecated since v6.3.0 - use `os.constants.signals.SIGSTKFLT` instead. */
+    const SIGSTKFLT: number;
+    /** @deprecated since v6.3.0 - use `os.constants.signals.SIGCONT` instead. */
+    const SIGCONT: number;
+    /** @deprecated since v6.3.0 - use `os.constants.signals.SIGSTOP` instead. */
+    const SIGSTOP: number;
+    /** @deprecated since v6.3.0 - use `os.constants.signals.SIGTSTP` instead. */
+    const SIGTSTP: number;
+    /** @deprecated since v6.3.0 - use `os.constants.signals.SIGTTIN` instead. */
+    const SIGTTIN: number;
+    /** @deprecated since v6.3.0 - use `os.constants.signals.SIGTTOU` instead. */
+    const SIGTTOU: number;
+    /** @deprecated since v6.3.0 - use `os.constants.signals.SIGURG` instead. */
+    const SIGURG: number;
+    /** @deprecated since v6.3.0 - use `os.constants.signals.SIGXCPU` instead. */
+    const SIGXCPU: number;
+    /** @deprecated since v6.3.0 - use `os.constants.signals.SIGXFSZ` instead. */
+    const SIGXFSZ: number;
+    /** @deprecated since v6.3.0 - use `os.constants.signals.SIGVTALRM` instead. */
+    const SIGVTALRM: number;
+    /** @deprecated since v6.3.0 - use `os.constants.signals.SIGPROF` instead. */
+    const SIGPROF: number;
+    /** @deprecated since v6.3.0 - use `os.constants.signals.SIGIO` instead. */
+    const SIGIO: number;
+    /** @deprecated since v6.3.0 - use `os.constants.signals.SIGPOLL` instead. */
+    const SIGPOLL: number;
+    /** @deprecated since v6.3.0 - use `os.constants.signals.SIGPWR` instead. */
+    const SIGPWR: number;
+    /** @deprecated since v6.3.0 - use `os.constants.signals.SIGSYS` instead. */
+    const SIGSYS: number;
+    /** @deprecated since v6.3.0 - use `os.constants.signals.SIGUNUSED` instead. */
+    const SIGUNUSED: number;
+    const defaultCoreCipherList: string;
+    const defaultCipherList: string;
+    const ENGINE_METHOD_RSA: number;
+    const ALPN_ENABLED: number;
+}
diff --git a/setup-maven/node_modules/@types/node/crypto.d.ts b/setup-maven/node_modules/@types/node/crypto.d.ts
new file mode 100644
index 0000000..b7ecb7f
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/crypto.d.ts
@@ -0,0 +1,614 @@
+declare module "crypto" {
+    import * as stream from "stream";
+
+    interface Certificate {
+        exportChallenge(spkac: BinaryLike): Buffer;
+        exportPublicKey(spkac: BinaryLike): Buffer;
+        verifySpkac(spkac: NodeJS.ArrayBufferView): boolean;
+    }
+    const Certificate: {
+        new(): Certificate;
+        (): Certificate;
+    };
+
+    namespace constants { // https://nodejs.org/dist/latest-v10.x/docs/api/crypto.html#crypto_crypto_constants
+        const OPENSSL_VERSION_NUMBER: number;
+
+        /** Applies multiple bug workarounds within OpenSSL. See https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_set_options.html for detail. */
+        const SSL_OP_ALL: number;
+        /** Allows legacy insecure renegotiation between OpenSSL and unpatched clients or servers. See https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_set_options.html. */
+        const SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION: number;
+        /** Attempts to use the server's preferences instead of the client's when selecting a cipher. See https://www.openssl.org/docs/man1.0.2/ssl/SSL_CTX_set_options.html. */
+        const SSL_OP_CIPHER_SERVER_PREFERENCE: number;
+        /** Instructs OpenSSL to use Cisco's "speshul" version of DTLS_BAD_VER. */
+        const SSL_OP_CISCO_ANYCONNECT: number;
+        /** Instructs OpenSSL to turn on cookie exchange. */
+        const SSL_OP_COOKIE_EXCHANGE: number;
+        /** Instructs OpenSSL to add server-hello extension from an early version of the cryptopro draft. */
+        const SSL_OP_CRYPTOPRO_TLSEXT_BUG: number;
+        /** Instructs OpenSSL to disable a SSL 3.0/TLS 1.0 vulnerability workaround added in OpenSSL 0.9.6d. */
+        const SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS: number;
+        /** Instructs OpenSSL to always use the tmp_rsa key when performing RSA operations. */
+        const SSL_OP_EPHEMERAL_RSA: number;
+        /** Allows initial connection to servers that do not support RI. */
+        const SSL_OP_LEGACY_SERVER_CONNECT: number;
+        const SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER: number;
+        const SSL_OP_MICROSOFT_SESS_ID_BUG: number;
+        /** Instructs OpenSSL to disable the workaround for a man-in-the-middle protocol-version vulnerability in the SSL 2.0 server implementation. */
+        const SSL_OP_MSIE_SSLV2_RSA_PADDING: number;
+        const SSL_OP_NETSCAPE_CA_DN_BUG: number;
+        const SSL_OP_NETSCAPE_CHALLENGE_BUG: number;
+        const SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG: number;
+        const SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG: number;
+        /** Instructs OpenSSL to disable support for SSL/TLS compression. */
+        const SSL_OP_NO_COMPRESSION: number;
+        const SSL_OP_NO_QUERY_MTU: number;
+        /** Instructs OpenSSL to always start a new session when performing renegotiation. */
+        const SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION: number;
+        const SSL_OP_NO_SSLv2: number;
+        const SSL_OP_NO_SSLv3: number;
+        const SSL_OP_NO_TICKET: number;
+        const SSL_OP_NO_TLSv1: number;
+        const SSL_OP_NO_TLSv1_1: number;
+        const SSL_OP_NO_TLSv1_2: number;
+        const SSL_OP_PKCS1_CHECK_1: number;
+        const SSL_OP_PKCS1_CHECK_2: number;
+        /** Instructs OpenSSL to always create a new key when using temporary/ephemeral DH parameters. */
+        const SSL_OP_SINGLE_DH_USE: number;
+        /** Instructs OpenSSL to always create a new key when using temporary/ephemeral ECDH parameters. */
+        const SSL_OP_SINGLE_ECDH_USE: number;
+        const SSL_OP_SSLEAY_080_CLIENT_DH_BUG: number;
+        const SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG: number;
+        const SSL_OP_TLS_BLOCK_PADDING_BUG: number;
+        const SSL_OP_TLS_D5_BUG: number;
+        /** Instructs OpenSSL to disable version rollback attack detection. */
+        const SSL_OP_TLS_ROLLBACK_BUG: number;
+
+        const ENGINE_METHOD_RSA: number;
+        const ENGINE_METHOD_DSA: number;
+        const ENGINE_METHOD_DH: number;
+        const ENGINE_METHOD_RAND: number;
+        const ENGINE_METHOD_EC: number;
+        const ENGINE_METHOD_CIPHERS: number;
+        const ENGINE_METHOD_DIGESTS: number;
+        const ENGINE_METHOD_PKEY_METHS: number;
+        const ENGINE_METHOD_PKEY_ASN1_METHS: number;
+        const ENGINE_METHOD_ALL: number;
+        const ENGINE_METHOD_NONE: number;
+
+        const DH_CHECK_P_NOT_SAFE_PRIME: number;
+        const DH_CHECK_P_NOT_PRIME: number;
+        const DH_UNABLE_TO_CHECK_GENERATOR: number;
+        const DH_NOT_SUITABLE_GENERATOR: number;
+
+        const ALPN_ENABLED: number;
+
+        const RSA_PKCS1_PADDING: number;
+        const RSA_SSLV23_PADDING: number;
+        const RSA_NO_PADDING: number;
+        const RSA_PKCS1_OAEP_PADDING: number;
+        const RSA_X931_PADDING: number;
+        const RSA_PKCS1_PSS_PADDING: number;
+        /** Sets the salt length for RSA_PKCS1_PSS_PADDING to the digest size when signing or verifying. */
+        const RSA_PSS_SALTLEN_DIGEST: number;
+        /** Sets the salt length for RSA_PKCS1_PSS_PADDING to the maximum permissible value when signing data. */
+        const RSA_PSS_SALTLEN_MAX_SIGN: number;
+        /** Causes the salt length for RSA_PKCS1_PSS_PADDING to be determined automatically when verifying a signature. */
+        const RSA_PSS_SALTLEN_AUTO: number;
+
+        const POINT_CONVERSION_COMPRESSED: number;
+        const POINT_CONVERSION_UNCOMPRESSED: number;
+        const POINT_CONVERSION_HYBRID: number;
+
+        /** Specifies the built-in default cipher list used by Node.js (colon-separated values). */
+        const defaultCoreCipherList: string;
+        /** Specifies the active default cipher list used by the current Node.js process  (colon-separated values). */
+        const defaultCipherList: string;
+    }
+
+    interface HashOptions extends stream.TransformOptions {
+        /**
+         * For XOF hash functions such as `shake256`, the
+         * outputLength option can be used to specify the desired output length in bytes.
+         */
+        outputLength?: number;
+    }
+
+    /** @deprecated since v10.0.0 */
+    const fips: boolean;
+
+    function createHash(algorithm: string, options?: HashOptions): Hash;
+    function createHmac(algorithm: string, key: BinaryLike, options?: stream.TransformOptions): Hmac;
+
+    type Utf8AsciiLatin1Encoding = "utf8" | "ascii" | "latin1";
+    type HexBase64Latin1Encoding = "latin1" | "hex" | "base64";
+    type Utf8AsciiBinaryEncoding = "utf8" | "ascii" | "binary";
+    type HexBase64BinaryEncoding = "binary" | "base64" | "hex";
+    type ECDHKeyFormat = "compressed" | "uncompressed" | "hybrid";
+
+    class Hash extends stream.Transform {
+        private constructor();
+        update(data: BinaryLike): Hash;
+        update(data: string, input_encoding: Utf8AsciiLatin1Encoding): Hash;
+        digest(): Buffer;
+        digest(encoding: HexBase64Latin1Encoding): string;
+    }
+    class Hmac extends stream.Transform {
+        private constructor();
+        update(data: BinaryLike): Hmac;
+        update(data: string, input_encoding: Utf8AsciiLatin1Encoding): Hmac;
+        digest(): Buffer;
+        digest(encoding: HexBase64Latin1Encoding): string;
+    }
+
+    type KeyObjectType = 'secret' | 'public' | 'private';
+
+    interface KeyExportOptions<T extends KeyFormat> {
+        type: 'pkcs1' | 'spki' | 'pkcs8' | 'sec1';
+        format: T;
+        cipher?: string;
+        passphrase?: string | Buffer;
+    }
+
+    class KeyObject {
+        private constructor();
+        asymmetricKeyType?: KeyType;
+        /**
+         * For asymmetric keys, this property represents the size of the embedded key in
+         * bytes. This property is `undefined` for symmetric keys.
+         */
+        asymmetricKeySize?: number;
+        export(options: KeyExportOptions<'pem'>): string | Buffer;
+        export(options?: KeyExportOptions<'der'>): Buffer;
+        symmetricSize?: number;
+        type: KeyObjectType;
+    }
+
+    type CipherCCMTypes = 'aes-128-ccm' | 'aes-192-ccm' | 'aes-256-ccm';
+    type CipherGCMTypes = 'aes-128-gcm' | 'aes-192-gcm' | 'aes-256-gcm';
+
+    type BinaryLike = string | NodeJS.ArrayBufferView;
+
+    type CipherKey = BinaryLike | KeyObject;
+
+    interface CipherCCMOptions extends stream.TransformOptions {
+        authTagLength: number;
+    }
+    interface CipherGCMOptions extends stream.TransformOptions {
+        authTagLength?: number;
+    }
+    /** @deprecated since v10.0.0 use createCipheriv() */
+    function createCipher(algorithm: CipherCCMTypes, password: BinaryLike, options: CipherCCMOptions): CipherCCM;
+    /** @deprecated since v10.0.0 use createCipheriv() */
+    function createCipher(algorithm: CipherGCMTypes, password: BinaryLike, options?: CipherGCMOptions): CipherGCM;
+    /** @deprecated since v10.0.0 use createCipheriv() */
+    function createCipher(algorithm: string, password: BinaryLike, options?: stream.TransformOptions): Cipher;
+
+    function createCipheriv(
+        algorithm: CipherCCMTypes,
+        key: CipherKey,
+        iv: BinaryLike | null,
+        options: CipherCCMOptions
+    ): CipherCCM;
+    function createCipheriv(
+        algorithm: CipherGCMTypes,
+        key: CipherKey,
+        iv: BinaryLike | null,
+        options?: CipherGCMOptions
+    ): CipherGCM;
+    function createCipheriv(
+        algorithm: string, key: CipherKey, iv: BinaryLike | null, options?: stream.TransformOptions
+    ): Cipher;
+
+    class Cipher extends stream.Transform {
+        private constructor();
+        update(data: BinaryLike): Buffer;
+        update(data: string, input_encoding: Utf8AsciiBinaryEncoding): Buffer;
+        update(data: NodeJS.ArrayBufferView, input_encoding: undefined, output_encoding: HexBase64BinaryEncoding): string;
+        update(data: string, input_encoding: Utf8AsciiBinaryEncoding | undefined, output_encoding: HexBase64BinaryEncoding): string;
+        final(): Buffer;
+        final(output_encoding: string): string;
+        setAutoPadding(auto_padding?: boolean): this;
+        // getAuthTag(): Buffer;
+        // setAAD(buffer: Buffer): this; // docs only say buffer
+    }
+    interface CipherCCM extends Cipher {
+        setAAD(buffer: Buffer, options: { plaintextLength: number }): this;
+        getAuthTag(): Buffer;
+    }
+    interface CipherGCM extends Cipher {
+        setAAD(buffer: Buffer, options?: { plaintextLength: number }): this;
+        getAuthTag(): Buffer;
+    }
+    /** @deprecated since v10.0.0 use createDecipheriv() */
+    function createDecipher(algorithm: CipherCCMTypes, password: BinaryLike, options: CipherCCMOptions): DecipherCCM;
+    /** @deprecated since v10.0.0 use createDecipheriv() */
+    function createDecipher(algorithm: CipherGCMTypes, password: BinaryLike, options?: CipherGCMOptions): DecipherGCM;
+    /** @deprecated since v10.0.0 use createDecipheriv() */
+    function createDecipher(algorithm: string, password: BinaryLike, options?: stream.TransformOptions): Decipher;
+
+    function createDecipheriv(
+        algorithm: CipherCCMTypes,
+        key: BinaryLike,
+        iv: BinaryLike | null,
+        options: CipherCCMOptions,
+    ): DecipherCCM;
+    function createDecipheriv(
+        algorithm: CipherGCMTypes,
+        key: BinaryLike,
+        iv: BinaryLike | null,
+        options?: CipherGCMOptions,
+    ): DecipherGCM;
+    function createDecipheriv(algorithm: string, key: BinaryLike, iv: BinaryLike | null, options?: stream.TransformOptions): Decipher;
+
+    class Decipher extends stream.Transform {
+        private constructor();
+        update(data: NodeJS.ArrayBufferView): Buffer;
+        update(data: string, input_encoding: HexBase64BinaryEncoding): Buffer;
+        update(data: NodeJS.ArrayBufferView, input_encoding: HexBase64BinaryEncoding | undefined, output_encoding: Utf8AsciiBinaryEncoding): string;
+        update(data: string, input_encoding: HexBase64BinaryEncoding | undefined, output_encoding: Utf8AsciiBinaryEncoding): string;
+        final(): Buffer;
+        final(output_encoding: string): string;
+        setAutoPadding(auto_padding?: boolean): this;
+        // setAuthTag(tag: NodeJS.ArrayBufferView): this;
+        // setAAD(buffer: NodeJS.ArrayBufferView): this;
+    }
+    interface DecipherCCM extends Decipher {
+        setAuthTag(buffer: NodeJS.ArrayBufferView): this;
+        setAAD(buffer: NodeJS.ArrayBufferView, options: { plaintextLength: number }): this;
+    }
+    interface DecipherGCM extends Decipher {
+        setAuthTag(buffer: NodeJS.ArrayBufferView): this;
+        setAAD(buffer: NodeJS.ArrayBufferView, options?: { plaintextLength: number }): this;
+    }
+
+    interface PrivateKeyInput {
+        key: string | Buffer;
+        format?: KeyFormat;
+        type?: 'pkcs1' | 'pkcs8' | 'sec1';
+        passphrase?: string | Buffer;
+    }
+
+    interface PublicKeyInput {
+        key: string | Buffer;
+        format?: KeyFormat;
+        type?: 'pkcs1' | 'spki';
+    }
+
+    function createPrivateKey(key: PrivateKeyInput | string | Buffer): KeyObject;
+    function createPublicKey(key: PublicKeyInput | string | Buffer | KeyObject): KeyObject;
+    function createSecretKey(key: Buffer): KeyObject;
+
+    function createSign(algorithm: string, options?: stream.WritableOptions): Signer;
+
+    interface SigningOptions {
+        /**
+         * @See crypto.constants.RSA_PKCS1_PADDING
+         */
+        padding?: number;
+        saltLength?: number;
+    }
+
+    interface SignPrivateKeyInput extends PrivateKeyInput, SigningOptions {
+    }
+
+    type KeyLike = string | Buffer | KeyObject;
+
+    class Signer extends stream.Writable {
+        private constructor();
+
+        update(data: BinaryLike): Signer;
+        update(data: string, input_encoding: Utf8AsciiLatin1Encoding): Signer;
+        sign(private_key: SignPrivateKeyInput | KeyLike): Buffer;
+        sign(private_key: SignPrivateKeyInput | KeyLike, output_format: HexBase64Latin1Encoding): string;
+    }
+
+    function createVerify(algorithm: string, options?: stream.WritableOptions): Verify;
+    class Verify extends stream.Writable {
+        private constructor();
+
+        update(data: BinaryLike): Verify;
+        update(data: string, input_encoding: Utf8AsciiLatin1Encoding): Verify;
+        verify(object: Object | KeyLike, signature: NodeJS.ArrayBufferView): boolean;
+        verify(object: Object | KeyLike, signature: string, signature_format?: HexBase64Latin1Encoding): boolean;
+        // https://nodejs.org/api/crypto.html#crypto_verifier_verify_object_signature_signature_format
+        // The signature field accepts a TypedArray type, but it is only available starting ES2017
+    }
+    function createDiffieHellman(prime_length: number, generator?: number | NodeJS.ArrayBufferView): DiffieHellman;
+    function createDiffieHellman(prime: NodeJS.ArrayBufferView): DiffieHellman;
+    function createDiffieHellman(prime: string, prime_encoding: HexBase64Latin1Encoding): DiffieHellman;
+    function createDiffieHellman(prime: string, prime_encoding: HexBase64Latin1Encoding, generator: number | NodeJS.ArrayBufferView): DiffieHellman;
+    function createDiffieHellman(prime: string, prime_encoding: HexBase64Latin1Encoding, generator: string, generator_encoding: HexBase64Latin1Encoding): DiffieHellman;
+    class DiffieHellman {
+        private constructor();
+        generateKeys(): Buffer;
+        generateKeys(encoding: HexBase64Latin1Encoding): string;
+        computeSecret(other_public_key: NodeJS.ArrayBufferView): Buffer;
+        computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding): Buffer;
+        computeSecret(other_public_key: NodeJS.ArrayBufferView, output_encoding: HexBase64Latin1Encoding): string;
+        computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding, output_encoding: HexBase64Latin1Encoding): string;
+        getPrime(): Buffer;
+        getPrime(encoding: HexBase64Latin1Encoding): string;
+        getGenerator(): Buffer;
+        getGenerator(encoding: HexBase64Latin1Encoding): string;
+        getPublicKey(): Buffer;
+        getPublicKey(encoding: HexBase64Latin1Encoding): string;
+        getPrivateKey(): Buffer;
+        getPrivateKey(encoding: HexBase64Latin1Encoding): string;
+        setPublicKey(public_key: NodeJS.ArrayBufferView): void;
+        setPublicKey(public_key: string, encoding: string): void;
+        setPrivateKey(private_key: NodeJS.ArrayBufferView): void;
+        setPrivateKey(private_key: string, encoding: string): void;
+        verifyError: number;
+    }
+    function getDiffieHellman(group_name: string): DiffieHellman;
+    function pbkdf2(
+        password: BinaryLike,
+        salt: BinaryLike,
+        iterations: number,
+        keylen: number,
+        digest: string,
+        callback: (err: Error | null, derivedKey: Buffer) => any,
+    ): void;
+    function pbkdf2Sync(password: BinaryLike, salt: BinaryLike, iterations: number, keylen: number, digest: string): Buffer;
+
+    function randomBytes(size: number): Buffer;
+    function randomBytes(size: number, callback: (err: Error | null, buf: Buffer) => void): void;
+    function pseudoRandomBytes(size: number): Buffer;
+    function pseudoRandomBytes(size: number, callback: (err: Error | null, buf: Buffer) => void): void;
+
+    function randomFillSync<T extends NodeJS.ArrayBufferView>(buffer: T, offset?: number, size?: number): T;
+    function randomFill<T extends NodeJS.ArrayBufferView>(buffer: T, callback: (err: Error | null, buf: T) => void): void;
+    function randomFill<T extends NodeJS.ArrayBufferView>(buffer: T, offset: number, callback: (err: Error | null, buf: T) => void): void;
+    function randomFill<T extends NodeJS.ArrayBufferView>(buffer: T, offset: number, size: number, callback: (err: Error | null, buf: T) => void): void;
+
+    interface ScryptOptions {
+        N?: number;
+        r?: number;
+        p?: number;
+        maxmem?: number;
+    }
+    function scrypt(
+        password: BinaryLike,
+        salt: BinaryLike,
+        keylen: number, callback: (err: Error | null, derivedKey: Buffer) => void,
+    ): void;
+    function scrypt(
+        password: BinaryLike,
+        salt: BinaryLike,
+        keylen: number,
+        options: ScryptOptions,
+        callback: (err: Error | null, derivedKey: Buffer) => void,
+    ): void;
+    function scryptSync(password: BinaryLike, salt: BinaryLike, keylen: number, options?: ScryptOptions): Buffer;
+
+    interface RsaPublicKey {
+        key: KeyLike;
+        padding?: number;
+    }
+    interface RsaPrivateKey {
+        key: KeyLike;
+        passphrase?: string;
+        /**
+         * @default 'sha1'
+         */
+        oaepHash?: string;
+        oaepLabel?: NodeJS.TypedArray;
+        padding?: number;
+    }
+    function publicEncrypt(key: RsaPublicKey | RsaPrivateKey | KeyLike, buffer: NodeJS.ArrayBufferView): Buffer;
+    function publicDecrypt(key: RsaPublicKey | RsaPrivateKey | KeyLike, buffer: NodeJS.ArrayBufferView): Buffer;
+    function privateDecrypt(private_key: RsaPrivateKey | KeyLike, buffer: NodeJS.ArrayBufferView): Buffer;
+    function privateEncrypt(private_key: RsaPrivateKey | KeyLike, buffer: NodeJS.ArrayBufferView): Buffer;
+    function getCiphers(): string[];
+    function getCurves(): string[];
+    function getHashes(): string[];
+    class ECDH {
+        private constructor();
+        static convertKey(
+            key: BinaryLike,
+            curve: string,
+            inputEncoding?: HexBase64Latin1Encoding,
+            outputEncoding?: "latin1" | "hex" | "base64",
+            format?: "uncompressed" | "compressed" | "hybrid",
+        ): Buffer | string;
+        generateKeys(): Buffer;
+        generateKeys(encoding: HexBase64Latin1Encoding, format?: ECDHKeyFormat): string;
+        computeSecret(other_public_key: NodeJS.ArrayBufferView): Buffer;
+        computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding): Buffer;
+        computeSecret(other_public_key: NodeJS.ArrayBufferView, output_encoding: HexBase64Latin1Encoding): string;
+        computeSecret(other_public_key: string, input_encoding: HexBase64Latin1Encoding, output_encoding: HexBase64Latin1Encoding): string;
+        getPrivateKey(): Buffer;
+        getPrivateKey(encoding: HexBase64Latin1Encoding): string;
+        getPublicKey(): Buffer;
+        getPublicKey(encoding: HexBase64Latin1Encoding, format?: ECDHKeyFormat): string;
+        setPrivateKey(private_key: NodeJS.ArrayBufferView): void;
+        setPrivateKey(private_key: string, encoding: HexBase64Latin1Encoding): void;
+    }
+    function createECDH(curve_name: string): ECDH;
+    function timingSafeEqual(a: NodeJS.ArrayBufferView, b: NodeJS.ArrayBufferView): boolean;
+    /** @deprecated since v10.0.0 */
+    const DEFAULT_ENCODING: string;
+
+    type KeyType = 'rsa' | 'dsa' | 'ec';
+    type KeyFormat = 'pem' | 'der';
+
+    interface BasePrivateKeyEncodingOptions<T extends KeyFormat> {
+        format: T;
+        cipher?: string;
+        passphrase?: string;
+    }
+
+    interface KeyPairKeyObjectResult {
+        publicKey: KeyObject;
+        privateKey: KeyObject;
+    }
+
+    interface ECKeyPairKeyObjectOptions {
+        /**
+         * Name of the curve to use.
+         */
+        namedCurve: string;
+    }
+
+    interface RSAKeyPairKeyObjectOptions {
+        /**
+         * Key size in bits
+         */
+        modulusLength: number;
+
+        /**
+         * @default 0x10001
+         */
+        publicExponent?: number;
+    }
+
+    interface DSAKeyPairKeyObjectOptions {
+        /**
+         * Key size in bits
+         */
+        modulusLength: number;
+
+        /**
+         * Size of q in bits
+         */
+        divisorLength: number;
+    }
+
+    interface RSAKeyPairOptions<PubF extends KeyFormat, PrivF extends KeyFormat> {
+        /**
+         * Key size in bits
+         */
+        modulusLength: number;
+        /**
+         * @default 0x10001
+         */
+        publicExponent?: number;
+
+        publicKeyEncoding: {
+            type: 'pkcs1' | 'spki';
+            format: PubF;
+        };
+        privateKeyEncoding: BasePrivateKeyEncodingOptions<PrivF> & {
+            type: 'pkcs1' | 'pkcs8';
+        };
+    }
+
+    interface DSAKeyPairOptions<PubF extends KeyFormat, PrivF extends KeyFormat> {
+        /**
+         * Key size in bits
+         */
+        modulusLength: number;
+        /**
+         * Size of q in bits
+         */
+        divisorLength: number;
+
+        publicKeyEncoding: {
+            type: 'spki';
+            format: PubF;
+        };
+        privateKeyEncoding: BasePrivateKeyEncodingOptions<PrivF> & {
+            type: 'pkcs8';
+        };
+    }
+
+    interface ECKeyPairOptions<PubF extends KeyFormat, PrivF extends KeyFormat> {
+        /**
+         * Name of the curve to use.
+         */
+        namedCurve: string;
+
+        publicKeyEncoding: {
+            type: 'pkcs1' | 'spki';
+            format: PubF;
+        };
+        privateKeyEncoding: BasePrivateKeyEncodingOptions<PrivF> & {
+            type: 'sec1' | 'pkcs8';
+        };
+    }
+
+    interface KeyPairSyncResult<T1 extends string | Buffer, T2 extends string | Buffer> {
+        publicKey: T1;
+        privateKey: T2;
+    }
+
+    function generateKeyPairSync(type: 'rsa', options: RSAKeyPairOptions<'pem', 'pem'>): KeyPairSyncResult<string, string>;
+    function generateKeyPairSync(type: 'rsa', options: RSAKeyPairOptions<'pem', 'der'>): KeyPairSyncResult<string, Buffer>;
+    function generateKeyPairSync(type: 'rsa', options: RSAKeyPairOptions<'der', 'pem'>): KeyPairSyncResult<Buffer, string>;
+    function generateKeyPairSync(type: 'rsa', options: RSAKeyPairOptions<'der', 'der'>): KeyPairSyncResult<Buffer, Buffer>;
+    function generateKeyPairSync(type: 'rsa', options: RSAKeyPairKeyObjectOptions): KeyPairKeyObjectResult;
+
+    function generateKeyPairSync(type: 'dsa', options: DSAKeyPairOptions<'pem', 'pem'>): KeyPairSyncResult<string, string>;
+    function generateKeyPairSync(type: 'dsa', options: DSAKeyPairOptions<'pem', 'der'>): KeyPairSyncResult<string, Buffer>;
+    function generateKeyPairSync(type: 'dsa', options: DSAKeyPairOptions<'der', 'pem'>): KeyPairSyncResult<Buffer, string>;
+    function generateKeyPairSync(type: 'dsa', options: DSAKeyPairOptions<'der', 'der'>): KeyPairSyncResult<Buffer, Buffer>;
+    function generateKeyPairSync(type: 'dsa', options: DSAKeyPairKeyObjectOptions): KeyPairKeyObjectResult;
+
+    function generateKeyPairSync(type: 'ec', options: ECKeyPairOptions<'pem', 'pem'>): KeyPairSyncResult<string, string>;
+    function generateKeyPairSync(type: 'ec', options: ECKeyPairOptions<'pem', 'der'>): KeyPairSyncResult<string, Buffer>;
+    function generateKeyPairSync(type: 'ec', options: ECKeyPairOptions<'der', 'pem'>): KeyPairSyncResult<Buffer, string>;
+    function generateKeyPairSync(type: 'ec', options: ECKeyPairOptions<'der', 'der'>): KeyPairSyncResult<Buffer, Buffer>;
+    function generateKeyPairSync(type: 'ec', options: ECKeyPairKeyObjectOptions): KeyPairKeyObjectResult;
+
+    function generateKeyPair(type: 'rsa', options: RSAKeyPairOptions<'pem', 'pem'>, callback: (err: Error | null, publicKey: string, privateKey: string) => void): void;
+    function generateKeyPair(type: 'rsa', options: RSAKeyPairOptions<'pem', 'der'>, callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void): void;
+    function generateKeyPair(type: 'rsa', options: RSAKeyPairOptions<'der', 'pem'>, callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void): void;
+    function generateKeyPair(type: 'rsa', options: RSAKeyPairOptions<'der', 'der'>, callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void): void;
+    function generateKeyPair(type: 'rsa', options: RSAKeyPairKeyObjectOptions, callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void): void;
+
+    function generateKeyPair(type: 'dsa', options: DSAKeyPairOptions<'pem', 'pem'>, callback: (err: Error | null, publicKey: string, privateKey: string) => void): void;
+    function generateKeyPair(type: 'dsa', options: DSAKeyPairOptions<'pem', 'der'>, callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void): void;
+    function generateKeyPair(type: 'dsa', options: DSAKeyPairOptions<'der', 'pem'>, callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void): void;
+    function generateKeyPair(type: 'dsa', options: DSAKeyPairOptions<'der', 'der'>, callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void): void;
+    function generateKeyPair(type: 'dsa', options: DSAKeyPairKeyObjectOptions, callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void): void;
+
+    function generateKeyPair(type: 'ec', options: ECKeyPairOptions<'pem', 'pem'>, callback: (err: Error | null, publicKey: string, privateKey: string) => void): void;
+    function generateKeyPair(type: 'ec', options: ECKeyPairOptions<'pem', 'der'>, callback: (err: Error | null, publicKey: string, privateKey: Buffer) => void): void;
+    function generateKeyPair(type: 'ec', options: ECKeyPairOptions<'der', 'pem'>, callback: (err: Error | null, publicKey: Buffer, privateKey: string) => void): void;
+    function generateKeyPair(type: 'ec', options: ECKeyPairOptions<'der', 'der'>, callback: (err: Error | null, publicKey: Buffer, privateKey: Buffer) => void): void;
+    function generateKeyPair(type: 'ec', options: ECKeyPairKeyObjectOptions, callback: (err: Error | null, publicKey: KeyObject, privateKey: KeyObject) => void): void;
+
+    namespace generateKeyPair {
+        function __promisify__(type: "rsa", options: RSAKeyPairOptions<'pem', 'pem'>): Promise<{ publicKey: string, privateKey: string }>;
+        function __promisify__(type: "rsa", options: RSAKeyPairOptions<'pem', 'der'>): Promise<{ publicKey: string, privateKey: Buffer }>;
+        function __promisify__(type: "rsa", options: RSAKeyPairOptions<'der', 'pem'>): Promise<{ publicKey: Buffer, privateKey: string }>;
+        function __promisify__(type: "rsa", options: RSAKeyPairOptions<'der', 'der'>): Promise<{ publicKey: Buffer, privateKey: Buffer }>;
+        function __promisify__(type: "rsa", options: RSAKeyPairKeyObjectOptions): Promise<KeyPairKeyObjectResult>;
+
+        function __promisify__(type: "dsa", options: DSAKeyPairOptions<'pem', 'pem'>): Promise<{ publicKey: string, privateKey: string }>;
+        function __promisify__(type: "dsa", options: DSAKeyPairOptions<'pem', 'der'>): Promise<{ publicKey: string, privateKey: Buffer }>;
+        function __promisify__(type: "dsa", options: DSAKeyPairOptions<'der', 'pem'>): Promise<{ publicKey: Buffer, privateKey: string }>;
+        function __promisify__(type: "dsa", options: DSAKeyPairOptions<'der', 'der'>): Promise<{ publicKey: Buffer, privateKey: Buffer }>;
+        function __promisify__(type: "dsa", options: DSAKeyPairKeyObjectOptions): Promise<KeyPairKeyObjectResult>;
+
+        function __promisify__(type: "ec", options: ECKeyPairOptions<'pem', 'pem'>): Promise<{ publicKey: string, privateKey: string }>;
+        function __promisify__(type: "ec", options: ECKeyPairOptions<'pem', 'der'>): Promise<{ publicKey: string, privateKey: Buffer }>;
+        function __promisify__(type: "ec", options: ECKeyPairOptions<'der', 'pem'>): Promise<{ publicKey: Buffer, privateKey: string }>;
+        function __promisify__(type: "ec", options: ECKeyPairOptions<'der', 'der'>): Promise<{ publicKey: Buffer, privateKey: Buffer }>;
+        function __promisify__(type: "ec", options: ECKeyPairKeyObjectOptions): Promise<KeyPairKeyObjectResult>;
+    }
+
+    /**
+     * Calculates and returns the signature for `data` using the given private key and
+     * algorithm. If `algorithm` is `null` or `undefined`, then the algorithm is
+     * dependent upon the key type (especially Ed25519 and Ed448).
+     *
+     * If `key` is not a [`KeyObject`][], this function behaves as if `key` had been
+     * passed to [`crypto.createPrivateKey()`][].
+     */
+    function sign(algorithm: string | null | undefined, data: NodeJS.ArrayBufferView, key: KeyLike | SignPrivateKeyInput): Buffer;
+
+    interface VerifyKeyWithOptions extends KeyObject, SigningOptions {
+    }
+
+    /**
+     * Calculates and returns the signature for `data` using the given private key and
+     * algorithm. If `algorithm` is `null` or `undefined`, then the algorithm is
+     * dependent upon the key type (especially Ed25519 and Ed448).
+     *
+     * If `key` is not a [`KeyObject`][], this function behaves as if `key` had been
+     * passed to [`crypto.createPublicKey()`][].
+     */
+    function verify(algorithm: string | null | undefined, data: NodeJS.ArrayBufferView, key: KeyLike | VerifyKeyWithOptions, signature: NodeJS.ArrayBufferView): Buffer;
+}
diff --git a/setup-maven/node_modules/@types/node/dgram.d.ts b/setup-maven/node_modules/@types/node/dgram.d.ts
new file mode 100644
index 0000000..f04e9a2
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/dgram.d.ts
@@ -0,0 +1,118 @@
+declare module "dgram" {
+    import { AddressInfo } from "net";
+    import * as dns from "dns";
+    import * as events from "events";
+
+    interface RemoteInfo {
+        address: string;
+        family: 'IPv4' | 'IPv6';
+        port: number;
+        size: number;
+    }
+
+    interface BindOptions {
+        port?: number;
+        address?: string;
+        exclusive?: boolean;
+        fd?: number;
+    }
+
+    type SocketType = "udp4" | "udp6";
+
+    interface SocketOptions {
+        type: SocketType;
+        reuseAddr?: boolean;
+        /**
+         * @default false
+         */
+        ipv6Only?: boolean;
+        recvBufferSize?: number;
+        sendBufferSize?: number;
+        lookup?: (hostname: string, options: dns.LookupOneOptions, callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void) => void;
+    }
+
+    function createSocket(type: SocketType, callback?: (msg: Buffer, rinfo: RemoteInfo) => void): Socket;
+    function createSocket(options: SocketOptions, callback?: (msg: Buffer, rinfo: RemoteInfo) => void): Socket;
+
+    class Socket extends events.EventEmitter {
+        addMembership(multicastAddress: string, multicastInterface?: string): void;
+        address(): AddressInfo;
+        bind(port?: number, address?: string, callback?: () => void): void;
+        bind(port?: number, callback?: () => void): void;
+        bind(callback?: () => void): void;
+        bind(options: BindOptions, callback?: () => void): void;
+        close(callback?: () => void): void;
+        connect(port: number, address?: string, callback?: () => void): void;
+        connect(port: number, callback: () => void): void;
+        disconnect(): void;
+        dropMembership(multicastAddress: string, multicastInterface?: string): void;
+        getRecvBufferSize(): number;
+        getSendBufferSize(): number;
+        ref(): this;
+        remoteAddress(): AddressInfo;
+        send(msg: string | Uint8Array | any[], port?: number, address?: string, callback?: (error: Error | null, bytes: number) => void): void;
+        send(msg: string | Uint8Array | any[], port?: number, callback?: (error: Error | null, bytes: number) => void): void;
+        send(msg: string | Uint8Array | any[], callback?: (error: Error | null, bytes: number) => void): void;
+        send(msg: string | Uint8Array, offset: number, length: number, port?: number, address?: string, callback?: (error: Error | null, bytes: number) => void): void;
+        send(msg: string | Uint8Array, offset: number, length: number, port?: number, callback?: (error: Error | null, bytes: number) => void): void;
+        send(msg: string | Uint8Array, offset: number, length: number, callback?: (error: Error | null, bytes: number) => void): void;
+        setBroadcast(flag: boolean): void;
+        setMulticastInterface(multicastInterface: string): void;
+        setMulticastLoopback(flag: boolean): void;
+        setMulticastTTL(ttl: number): void;
+        setRecvBufferSize(size: number): void;
+        setSendBufferSize(size: number): void;
+        setTTL(ttl: number): void;
+        unref(): this;
+
+        /**
+         * events.EventEmitter
+         * 1. close
+         * 2. connect
+         * 3. error
+         * 4. listening
+         * 5. message
+         */
+        addListener(event: string, listener: (...args: any[]) => void): this;
+        addListener(event: "close", listener: () => void): this;
+        addListener(event: "connect", listener: () => void): this;
+        addListener(event: "error", listener: (err: Error) => void): this;
+        addListener(event: "listening", listener: () => void): this;
+        addListener(event: "message", listener: (msg: Buffer, rinfo: RemoteInfo) => void): this;
+
+        emit(event: string | symbol, ...args: any[]): boolean;
+        emit(event: "close"): boolean;
+        emit(event: "connect"): boolean;
+        emit(event: "error", err: Error): boolean;
+        emit(event: "listening"): boolean;
+        emit(event: "message", msg: Buffer, rinfo: RemoteInfo): boolean;
+
+        on(event: string, listener: (...args: any[]) => void): this;
+        on(event: "close", listener: () => void): this;
+        on(event: "connect", listener: () => void): this;
+        on(event: "error", listener: (err: Error) => void): this;
+        on(event: "listening", listener: () => void): this;
+        on(event: "message", listener: (msg: Buffer, rinfo: RemoteInfo) => void): this;
+
+        once(event: string, listener: (...args: any[]) => void): this;
+        once(event: "close", listener: () => void): this;
+        once(event: "connect", listener: () => void): this;
+        once(event: "error", listener: (err: Error) => void): this;
+        once(event: "listening", listener: () => void): this;
+        once(event: "message", listener: (msg: Buffer, rinfo: RemoteInfo) => void): this;
+
+        prependListener(event: string, listener: (...args: any[]) => void): this;
+        prependListener(event: "close", listener: () => void): this;
+        prependListener(event: "connect", listener: () => void): this;
+        prependListener(event: "error", listener: (err: Error) => void): this;
+        prependListener(event: "listening", listener: () => void): this;
+        prependListener(event: "message", listener: (msg: Buffer, rinfo: RemoteInfo) => void): this;
+
+        prependOnceListener(event: string, listener: (...args: any[]) => void): this;
+        prependOnceListener(event: "close", listener: () => void): this;
+        prependOnceListener(event: "connect", listener: () => void): this;
+        prependOnceListener(event: "error", listener: (err: Error) => void): this;
+        prependOnceListener(event: "listening", listener: () => void): this;
+        prependOnceListener(event: "message", listener: (msg: Buffer, rinfo: RemoteInfo) => void): this;
+    }
+}
diff --git a/setup-maven/node_modules/@types/node/dns.d.ts b/setup-maven/node_modules/@types/node/dns.d.ts
new file mode 100644
index 0000000..d2b0505
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/dns.d.ts
@@ -0,0 +1,366 @@
+declare module "dns" {
+    // Supported getaddrinfo flags.
+    const ADDRCONFIG: number;
+    const V4MAPPED: number;
+
+    interface LookupOptions {
+        family?: number;
+        hints?: number;
+        all?: boolean;
+        verbatim?: boolean;
+    }
+
+    interface LookupOneOptions extends LookupOptions {
+        all?: false;
+    }
+
+    interface LookupAllOptions extends LookupOptions {
+        all: true;
+    }
+
+    interface LookupAddress {
+        address: string;
+        family: number;
+    }
+
+    function lookup(hostname: string, family: number, callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void): void;
+    function lookup(hostname: string, options: LookupOneOptions, callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void): void;
+    function lookup(hostname: string, options: LookupAllOptions, callback: (err: NodeJS.ErrnoException | null, addresses: LookupAddress[]) => void): void;
+    function lookup(hostname: string, options: LookupOptions, callback: (err: NodeJS.ErrnoException | null, address: string | LookupAddress[], family: number) => void): void;
+    function lookup(hostname: string, callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void): void;
+
+    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+    namespace lookup {
+        function __promisify__(hostname: string, options: LookupAllOptions): Promise<LookupAddress[]>;
+        function __promisify__(hostname: string, options?: LookupOneOptions | number): Promise<LookupAddress>;
+        function __promisify__(hostname: string, options: LookupOptions): Promise<LookupAddress | LookupAddress[]>;
+    }
+
+    function lookupService(address: string, port: number, callback: (err: NodeJS.ErrnoException | null, hostname: string, service: string) => void): void;
+
+    namespace lookupService {
+        function __promisify__(address: string, port: number): Promise<{ hostname: string, service: string }>;
+    }
+
+    interface ResolveOptions {
+        ttl: boolean;
+    }
+
+    interface ResolveWithTtlOptions extends ResolveOptions {
+        ttl: true;
+    }
+
+    interface RecordWithTtl {
+        address: string;
+        ttl: number;
+    }
+
+    /** @deprecated Use AnyARecord or AnyAaaaRecord instead. */
+    type AnyRecordWithTtl = AnyARecord | AnyAaaaRecord;
+
+    interface AnyARecord extends RecordWithTtl {
+        type: "A";
+    }
+
+    interface AnyAaaaRecord extends RecordWithTtl {
+        type: "AAAA";
+    }
+
+    interface MxRecord {
+        priority: number;
+        exchange: string;
+    }
+
+    interface AnyMxRecord extends MxRecord {
+        type: "MX";
+    }
+
+    interface NaptrRecord {
+        flags: string;
+        service: string;
+        regexp: string;
+        replacement: string;
+        order: number;
+        preference: number;
+    }
+
+    interface AnyNaptrRecord extends NaptrRecord {
+        type: "NAPTR";
+    }
+
+    interface SoaRecord {
+        nsname: string;
+        hostmaster: string;
+        serial: number;
+        refresh: number;
+        retry: number;
+        expire: number;
+        minttl: number;
+    }
+
+    interface AnySoaRecord extends SoaRecord {
+        type: "SOA";
+    }
+
+    interface SrvRecord {
+        priority: number;
+        weight: number;
+        port: number;
+        name: string;
+    }
+
+    interface AnySrvRecord extends SrvRecord {
+        type: "SRV";
+    }
+
+    interface AnyTxtRecord {
+        type: "TXT";
+        entries: string[];
+    }
+
+    interface AnyNsRecord {
+        type: "NS";
+        value: string;
+    }
+
+    interface AnyPtrRecord {
+        type: "PTR";
+        value: string;
+    }
+
+    interface AnyCnameRecord {
+        type: "CNAME";
+        value: string;
+    }
+
+    type AnyRecord = AnyARecord |
+        AnyAaaaRecord |
+        AnyCnameRecord |
+        AnyMxRecord |
+        AnyNaptrRecord |
+        AnyNsRecord |
+        AnyPtrRecord |
+        AnySoaRecord |
+        AnySrvRecord |
+        AnyTxtRecord;
+
+    function resolve(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
+    function resolve(hostname: string, rrtype: "A", callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
+    function resolve(hostname: string, rrtype: "AAAA", callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
+    function resolve(hostname: string, rrtype: "ANY", callback: (err: NodeJS.ErrnoException | null, addresses: AnyRecord[]) => void): void;
+    function resolve(hostname: string, rrtype: "CNAME", callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
+    function resolve(hostname: string, rrtype: "MX", callback: (err: NodeJS.ErrnoException | null, addresses: MxRecord[]) => void): void;
+    function resolve(hostname: string, rrtype: "NAPTR", callback: (err: NodeJS.ErrnoException | null, addresses: NaptrRecord[]) => void): void;
+    function resolve(hostname: string, rrtype: "NS", callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
+    function resolve(hostname: string, rrtype: "PTR", callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
+    function resolve(hostname: string, rrtype: "SOA", callback: (err: NodeJS.ErrnoException | null, addresses: SoaRecord) => void): void;
+    function resolve(hostname: string, rrtype: "SRV", callback: (err: NodeJS.ErrnoException | null, addresses: SrvRecord[]) => void): void;
+    function resolve(hostname: string, rrtype: "TXT", callback: (err: NodeJS.ErrnoException | null, addresses: string[][]) => void): void;
+    function resolve(
+        hostname: string,
+        rrtype: string,
+        callback: (err: NodeJS.ErrnoException | null, addresses: string[] | MxRecord[] | NaptrRecord[] | SoaRecord | SrvRecord[] | string[][] | AnyRecord[]) => void,
+    ): void;
+
+    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+    namespace resolve {
+        function __promisify__(hostname: string, rrtype?: "A" | "AAAA" | "CNAME" | "NS" | "PTR"): Promise<string[]>;
+        function __promisify__(hostname: string, rrtype: "ANY"): Promise<AnyRecord[]>;
+        function __promisify__(hostname: string, rrtype: "MX"): Promise<MxRecord[]>;
+        function __promisify__(hostname: string, rrtype: "NAPTR"): Promise<NaptrRecord[]>;
+        function __promisify__(hostname: string, rrtype: "SOA"): Promise<SoaRecord>;
+        function __promisify__(hostname: string, rrtype: "SRV"): Promise<SrvRecord[]>;
+        function __promisify__(hostname: string, rrtype: "TXT"): Promise<string[][]>;
+        function __promisify__(hostname: string, rrtype: string): Promise<string[] | MxRecord[] | NaptrRecord[] | SoaRecord | SrvRecord[] | string[][] | AnyRecord[]>;
+    }
+
+    function resolve4(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
+    function resolve4(hostname: string, options: ResolveWithTtlOptions, callback: (err: NodeJS.ErrnoException | null, addresses: RecordWithTtl[]) => void): void;
+    function resolve4(hostname: string, options: ResolveOptions, callback: (err: NodeJS.ErrnoException | null, addresses: string[] | RecordWithTtl[]) => void): void;
+
+    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+    namespace resolve4 {
+        function __promisify__(hostname: string): Promise<string[]>;
+        function __promisify__(hostname: string, options: ResolveWithTtlOptions): Promise<RecordWithTtl[]>;
+        function __promisify__(hostname: string, options?: ResolveOptions): Promise<string[] | RecordWithTtl[]>;
+    }
+
+    function resolve6(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
+    function resolve6(hostname: string, options: ResolveWithTtlOptions, callback: (err: NodeJS.ErrnoException | null, addresses: RecordWithTtl[]) => void): void;
+    function resolve6(hostname: string, options: ResolveOptions, callback: (err: NodeJS.ErrnoException | null, addresses: string[] | RecordWithTtl[]) => void): void;
+
+    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+    namespace resolve6 {
+        function __promisify__(hostname: string): Promise<string[]>;
+        function __promisify__(hostname: string, options: ResolveWithTtlOptions): Promise<RecordWithTtl[]>;
+        function __promisify__(hostname: string, options?: ResolveOptions): Promise<string[] | RecordWithTtl[]>;
+    }
+
+    function resolveCname(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
+    namespace resolveCname {
+        function __promisify__(hostname: string): Promise<string[]>;
+    }
+
+    function resolveMx(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: MxRecord[]) => void): void;
+    namespace resolveMx {
+        function __promisify__(hostname: string): Promise<MxRecord[]>;
+    }
+
+    function resolveNaptr(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: NaptrRecord[]) => void): void;
+    namespace resolveNaptr {
+        function __promisify__(hostname: string): Promise<NaptrRecord[]>;
+    }
+
+    function resolveNs(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
+    namespace resolveNs {
+        function __promisify__(hostname: string): Promise<string[]>;
+    }
+
+    function resolvePtr(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
+    namespace resolvePtr {
+        function __promisify__(hostname: string): Promise<string[]>;
+    }
+
+    function resolveSoa(hostname: string, callback: (err: NodeJS.ErrnoException | null, address: SoaRecord) => void): void;
+    namespace resolveSoa {
+        function __promisify__(hostname: string): Promise<SoaRecord>;
+    }
+
+    function resolveSrv(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: SrvRecord[]) => void): void;
+    namespace resolveSrv {
+        function __promisify__(hostname: string): Promise<SrvRecord[]>;
+    }
+
+    function resolveTxt(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: string[][]) => void): void;
+    namespace resolveTxt {
+        function __promisify__(hostname: string): Promise<string[][]>;
+    }
+
+    function resolveAny(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: AnyRecord[]) => void): void;
+    namespace resolveAny {
+        function __promisify__(hostname: string): Promise<AnyRecord[]>;
+    }
+
+    function reverse(ip: string, callback: (err: NodeJS.ErrnoException | null, hostnames: string[]) => void): void;
+    function setServers(servers: ReadonlyArray<string>): void;
+    function getServers(): string[];
+
+    // Error codes
+    const NODATA: string;
+    const FORMERR: string;
+    const SERVFAIL: string;
+    const NOTFOUND: string;
+    const NOTIMP: string;
+    const REFUSED: string;
+    const BADQUERY: string;
+    const BADNAME: string;
+    const BADFAMILY: string;
+    const BADRESP: string;
+    const CONNREFUSED: string;
+    const TIMEOUT: string;
+    const EOF: string;
+    const FILE: string;
+    const NOMEM: string;
+    const DESTRUCTION: string;
+    const BADSTR: string;
+    const BADFLAGS: string;
+    const NONAME: string;
+    const BADHINTS: string;
+    const NOTINITIALIZED: string;
+    const LOADIPHLPAPI: string;
+    const ADDRGETNETWORKPARAMS: string;
+    const CANCELLED: string;
+
+    class Resolver {
+        getServers: typeof getServers;
+        setServers: typeof setServers;
+        resolve: typeof resolve;
+        resolve4: typeof resolve4;
+        resolve6: typeof resolve6;
+        resolveAny: typeof resolveAny;
+        resolveCname: typeof resolveCname;
+        resolveMx: typeof resolveMx;
+        resolveNaptr: typeof resolveNaptr;
+        resolveNs: typeof resolveNs;
+        resolvePtr: typeof resolvePtr;
+        resolveSoa: typeof resolveSoa;
+        resolveSrv: typeof resolveSrv;
+        resolveTxt: typeof resolveTxt;
+        reverse: typeof reverse;
+        cancel(): void;
+    }
+
+    namespace promises {
+        function getServers(): string[];
+
+        function lookup(hostname: string, family: number): Promise<LookupAddress>;
+        function lookup(hostname: string, options: LookupOneOptions): Promise<LookupAddress>;
+        function lookup(hostname: string, options: LookupAllOptions): Promise<LookupAddress[]>;
+        function lookup(hostname: string, options: LookupOptions): Promise<LookupAddress | LookupAddress[]>;
+        function lookup(hostname: string): Promise<LookupAddress>;
+
+        function lookupService(address: string, port: number): Promise<{ hostname: string, service: string }>;
+
+        function resolve(hostname: string): Promise<string[]>;
+        function resolve(hostname: string, rrtype: "A"): Promise<string[]>;
+        function resolve(hostname: string, rrtype: "AAAA"): Promise<string[]>;
+        function resolve(hostname: string, rrtype: "ANY"): Promise<AnyRecord[]>;
+        function resolve(hostname: string, rrtype: "CNAME"): Promise<string[]>;
+        function resolve(hostname: string, rrtype: "MX"): Promise<MxRecord[]>;
+        function resolve(hostname: string, rrtype: "NAPTR"): Promise<NaptrRecord[]>;
+        function resolve(hostname: string, rrtype: "NS"): Promise<string[]>;
+        function resolve(hostname: string, rrtype: "PTR"): Promise<string[]>;
+        function resolve(hostname: string, rrtype: "SOA"): Promise<SoaRecord>;
+        function resolve(hostname: string, rrtype: "SRV"): Promise<SrvRecord[]>;
+        function resolve(hostname: string, rrtype: "TXT"): Promise<string[][]>;
+        function resolve(hostname: string, rrtype: string): Promise<string[] | MxRecord[] | NaptrRecord[] | SoaRecord | SrvRecord[] | string[][] | AnyRecord[]>;
+
+        function resolve4(hostname: string): Promise<string[]>;
+        function resolve4(hostname: string, options: ResolveWithTtlOptions): Promise<RecordWithTtl[]>;
+        function resolve4(hostname: string, options: ResolveOptions): Promise<string[] | RecordWithTtl[]>;
+
+        function resolve6(hostname: string): Promise<string[]>;
+        function resolve6(hostname: string, options: ResolveWithTtlOptions): Promise<RecordWithTtl[]>;
+        function resolve6(hostname: string, options: ResolveOptions): Promise<string[] | RecordWithTtl[]>;
+
+        function resolveAny(hostname: string): Promise<AnyRecord[]>;
+
+        function resolveCname(hostname: string): Promise<string[]>;
+
+        function resolveMx(hostname: string): Promise<MxRecord[]>;
+
+        function resolveNaptr(hostname: string): Promise<NaptrRecord[]>;
+
+        function resolveNs(hostname: string): Promise<string[]>;
+
+        function resolvePtr(hostname: string): Promise<string[]>;
+
+        function resolveSoa(hostname: string): Promise<SoaRecord>;
+
+        function resolveSrv(hostname: string): Promise<SrvRecord[]>;
+
+        function resolveTxt(hostname: string): Promise<string[][]>;
+
+        function reverse(ip: string): Promise<string[]>;
+
+        function setServers(servers: ReadonlyArray<string>): void;
+
+        class Resolver {
+            getServers: typeof getServers;
+            resolve: typeof resolve;
+            resolve4: typeof resolve4;
+            resolve6: typeof resolve6;
+            resolveAny: typeof resolveAny;
+            resolveCname: typeof resolveCname;
+            resolveMx: typeof resolveMx;
+            resolveNaptr: typeof resolveNaptr;
+            resolveNs: typeof resolveNs;
+            resolvePtr: typeof resolvePtr;
+            resolveSoa: typeof resolveSoa;
+            resolveSrv: typeof resolveSrv;
+            resolveTxt: typeof resolveTxt;
+            reverse: typeof reverse;
+            setServers: typeof setServers;
+        }
+    }
+}
diff --git a/setup-maven/node_modules/@types/node/domain.d.ts b/setup-maven/node_modules/@types/node/domain.d.ts
new file mode 100644
index 0000000..45e388c
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/domain.d.ts
@@ -0,0 +1,16 @@
+declare module "domain" {
+    import * as events from "events";
+
+    class Domain extends events.EventEmitter implements NodeJS.Domain {
+        run<T>(fn: (...args: any[]) => T, ...args: any[]): T;
+        add(emitter: events.EventEmitter | NodeJS.Timer): void;
+        remove(emitter: events.EventEmitter | NodeJS.Timer): void;
+        bind<T extends Function>(cb: T): T;
+        intercept<T extends Function>(cb: T): T;
+        members: Array<events.EventEmitter | NodeJS.Timer>;
+        enter(): void;
+        exit(): void;
+    }
+
+    function create(): Domain;
+}
diff --git a/setup-maven/node_modules/@types/node/events.d.ts b/setup-maven/node_modules/@types/node/events.d.ts
new file mode 100644
index 0000000..03f5b90
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/events.d.ts
@@ -0,0 +1,39 @@
+declare module "events" {
+    class internal extends NodeJS.EventEmitter { }
+
+    interface NodeEventTarget {
+        once(event: string | symbol, listener: (...args: any[]) => void): this;
+    }
+
+    interface DOMEventTarget {
+        addEventListener(event: string, listener: (...args: any[]) => void, opts?: { once: boolean }): any;
+    }
+
+    namespace internal {
+        function once(emitter: NodeEventTarget, event: string | symbol): Promise<any[]>;
+        function once(emitter: DOMEventTarget, event: string): Promise<any[]>;
+         class EventEmitter extends internal {
+            /** @deprecated since v4.0.0 */
+            static listenerCount(emitter: EventEmitter, event: string | symbol): number;
+            static defaultMaxListeners: number;
+
+            addListener(event: string | symbol, listener: (...args: any[]) => void): this;
+            on(event: string | symbol, listener: (...args: any[]) => void): this;
+            once(event: string | symbol, listener: (...args: any[]) => void): this;
+            prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
+            prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
+            removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
+            off(event: string | symbol, listener: (...args: any[]) => void): this;
+            removeAllListeners(event?: string | symbol): this;
+            setMaxListeners(n: number): this;
+            getMaxListeners(): number;
+            listeners(event: string | symbol): Function[];
+            rawListeners(event: string | symbol): Function[];
+            emit(event: string | symbol, ...args: any[]): boolean;
+            eventNames(): Array<string | symbol>;
+            listenerCount(type: string | symbol): number;
+        }
+    }
+
+    export = internal;
+}
diff --git a/setup-maven/node_modules/@types/node/fs.d.ts b/setup-maven/node_modules/@types/node/fs.d.ts
new file mode 100644
index 0000000..8c57f0c
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/fs.d.ts
@@ -0,0 +1,2446 @@
+declare module "fs" {
+    import * as stream from "stream";
+    import * as events from "events";
+    import { URL } from "url";
+
+    /**
+     * Valid types for path values in "fs".
+     */
+    type PathLike = string | Buffer | URL;
+
+    type NoParamCallback = (err: NodeJS.ErrnoException | null) => void;
+
+    interface StatsBase<T> {
+        isFile(): boolean;
+        isDirectory(): boolean;
+        isBlockDevice(): boolean;
+        isCharacterDevice(): boolean;
+        isSymbolicLink(): boolean;
+        isFIFO(): boolean;
+        isSocket(): boolean;
+
+        dev: number;
+        ino: number;
+        mode: number;
+        nlink: number;
+        uid: number;
+        gid: number;
+        rdev: number;
+        size: number;
+        blksize: number;
+        blocks: number;
+        atimeMs: number;
+        mtimeMs: number;
+        ctimeMs: number;
+        birthtimeMs: number;
+        atime: Date;
+        mtime: Date;
+        ctime: Date;
+        birthtime: Date;
+    }
+
+    interface Stats extends StatsBase<number> {
+    }
+
+    class Stats {
+    }
+
+    class Dirent {
+        isFile(): boolean;
+        isDirectory(): boolean;
+        isBlockDevice(): boolean;
+        isCharacterDevice(): boolean;
+        isSymbolicLink(): boolean;
+        isFIFO(): boolean;
+        isSocket(): boolean;
+        name: string;
+    }
+
+    /**
+     * A class representing a directory stream.
+     */
+    class Dir {
+        readonly path: string;
+
+        /**
+         * Asynchronously iterates over the directory via `readdir(3)` until all entries have been read.
+         */
+        [Symbol.asyncIterator](): AsyncIterableIterator<Dirent>;
+
+        /**
+         * Asynchronously close the directory's underlying resource handle.
+         * Subsequent reads will result in errors.
+         */
+        close(): Promise<void>;
+        close(cb: NoParamCallback): void;
+
+        /**
+         * Synchronously close the directory's underlying resource handle.
+         * Subsequent reads will result in errors.
+         */
+        closeSync(): void;
+
+        /**
+         * Asynchronously read the next directory entry via `readdir(3)` as an `Dirent`.
+         * After the read is completed, a value is returned that will be resolved with an `Dirent`, or `null` if there are no more directory entries to read.
+         * Directory entries returned by this function are in no particular order as provided by the operating system's underlying directory mechanisms.
+         */
+        read(): Promise<Dirent | null>;
+        read(cb: (err: NodeJS.ErrnoException | null, dirEnt: Dirent | null) => void): void;
+
+        /**
+         * Synchronously read the next directory entry via `readdir(3)` as a `Dirent`.
+         * If there are no more directory entries to read, null will be returned.
+         * Directory entries returned by this function are in no particular order as provided by the operating system's underlying directory mechanisms.
+         */
+        readSync(): Dirent;
+    }
+
+    interface FSWatcher extends events.EventEmitter {
+        close(): void;
+
+        /**
+         * events.EventEmitter
+         *   1. change
+         *   2. error
+         */
+        addListener(event: string, listener: (...args: any[]) => void): this;
+        addListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;
+        addListener(event: "error", listener: (error: Error) => void): this;
+
+        on(event: string, listener: (...args: any[]) => void): this;
+        on(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;
+        on(event: "error", listener: (error: Error) => void): this;
+
+        once(event: string, listener: (...args: any[]) => void): this;
+        once(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;
+        once(event: "error", listener: (error: Error) => void): this;
+
+        prependListener(event: string, listener: (...args: any[]) => void): this;
+        prependListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;
+        prependListener(event: "error", listener: (error: Error) => void): this;
+
+        prependOnceListener(event: string, listener: (...args: any[]) => void): this;
+        prependOnceListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;
+        prependOnceListener(event: "error", listener: (error: Error) => void): this;
+    }
+
+    class ReadStream extends stream.Readable {
+        close(): void;
+        bytesRead: number;
+        path: string | Buffer;
+
+        /**
+         * events.EventEmitter
+         *   1. open
+         *   2. close
+         */
+        addListener(event: string, listener: (...args: any[]) => void): this;
+        addListener(event: "open", listener: (fd: number) => void): this;
+        addListener(event: "close", listener: () => void): this;
+
+        on(event: string, listener: (...args: any[]) => void): this;
+        on(event: "open", listener: (fd: number) => void): this;
+        on(event: "close", listener: () => void): this;
+
+        once(event: string, listener: (...args: any[]) => void): this;
+        once(event: "open", listener: (fd: number) => void): this;
+        once(event: "close", listener: () => void): this;
+
+        prependListener(event: string, listener: (...args: any[]) => void): this;
+        prependListener(event: "open", listener: (fd: number) => void): this;
+        prependListener(event: "close", listener: () => void): this;
+
+        prependOnceListener(event: string, listener: (...args: any[]) => void): this;
+        prependOnceListener(event: "open", listener: (fd: number) => void): this;
+        prependOnceListener(event: "close", listener: () => void): this;
+    }
+
+    class WriteStream extends stream.Writable {
+        close(): void;
+        bytesWritten: number;
+        path: string | Buffer;
+
+        /**
+         * events.EventEmitter
+         *   1. open
+         *   2. close
+         */
+        addListener(event: string, listener: (...args: any[]) => void): this;
+        addListener(event: "open", listener: (fd: number) => void): this;
+        addListener(event: "close", listener: () => void): this;
+
+        on(event: string, listener: (...args: any[]) => void): this;
+        on(event: "open", listener: (fd: number) => void): this;
+        on(event: "close", listener: () => void): this;
+
+        once(event: string, listener: (...args: any[]) => void): this;
+        once(event: "open", listener: (fd: number) => void): this;
+        once(event: "close", listener: () => void): this;
+
+        prependListener(event: string, listener: (...args: any[]) => void): this;
+        prependListener(event: "open", listener: (fd: number) => void): this;
+        prependListener(event: "close", listener: () => void): this;
+
+        prependOnceListener(event: string, listener: (...args: any[]) => void): this;
+        prependOnceListener(event: "open", listener: (fd: number) => void): this;
+        prependOnceListener(event: "close", listener: () => void): this;
+    }
+
+    /**
+     * Asynchronous rename(2) - Change the name or location of a file or directory.
+     * @param oldPath A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * URL support is _experimental_.
+     * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * URL support is _experimental_.
+     */
+    function rename(oldPath: PathLike, newPath: PathLike, callback: NoParamCallback): void;
+
+    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+    namespace rename {
+        /**
+         * Asynchronous rename(2) - Change the name or location of a file or directory.
+         * @param oldPath A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * URL support is _experimental_.
+         * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * URL support is _experimental_.
+         */
+        function __promisify__(oldPath: PathLike, newPath: PathLike): Promise<void>;
+    }
+
+    /**
+     * Synchronous rename(2) - Change the name or location of a file or directory.
+     * @param oldPath A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * URL support is _experimental_.
+     * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * URL support is _experimental_.
+     */
+    function renameSync(oldPath: PathLike, newPath: PathLike): void;
+
+    /**
+     * Asynchronous truncate(2) - Truncate a file to a specified length.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * @param len If not specified, defaults to `0`.
+     */
+    function truncate(path: PathLike, len: number | undefined | null, callback: NoParamCallback): void;
+
+    /**
+     * Asynchronous truncate(2) - Truncate a file to a specified length.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * URL support is _experimental_.
+     */
+    function truncate(path: PathLike, callback: NoParamCallback): void;
+
+    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+    namespace truncate {
+        /**
+         * Asynchronous truncate(2) - Truncate a file to a specified length.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * @param len If not specified, defaults to `0`.
+         */
+        function __promisify__(path: PathLike, len?: number | null): Promise<void>;
+    }
+
+    /**
+     * Synchronous truncate(2) - Truncate a file to a specified length.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * @param len If not specified, defaults to `0`.
+     */
+    function truncateSync(path: PathLike, len?: number | null): void;
+
+    /**
+     * Asynchronous ftruncate(2) - Truncate a file to a specified length.
+     * @param fd A file descriptor.
+     * @param len If not specified, defaults to `0`.
+     */
+    function ftruncate(fd: number, len: number | undefined | null, callback: NoParamCallback): void;
+
+    /**
+     * Asynchronous ftruncate(2) - Truncate a file to a specified length.
+     * @param fd A file descriptor.
+     */
+    function ftruncate(fd: number, callback: NoParamCallback): void;
+
+    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+    namespace ftruncate {
+        /**
+         * Asynchronous ftruncate(2) - Truncate a file to a specified length.
+         * @param fd A file descriptor.
+         * @param len If not specified, defaults to `0`.
+         */
+        function __promisify__(fd: number, len?: number | null): Promise<void>;
+    }
+
+    /**
+     * Synchronous ftruncate(2) - Truncate a file to a specified length.
+     * @param fd A file descriptor.
+     * @param len If not specified, defaults to `0`.
+     */
+    function ftruncateSync(fd: number, len?: number | null): void;
+
+    /**
+     * Asynchronous chown(2) - Change ownership of a file.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     */
+    function chown(path: PathLike, uid: number, gid: number, callback: NoParamCallback): void;
+
+    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+    namespace chown {
+        /**
+         * Asynchronous chown(2) - Change ownership of a file.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         */
+        function __promisify__(path: PathLike, uid: number, gid: number): Promise<void>;
+    }
+
+    /**
+     * Synchronous chown(2) - Change ownership of a file.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     */
+    function chownSync(path: PathLike, uid: number, gid: number): void;
+
+    /**
+     * Asynchronous fchown(2) - Change ownership of a file.
+     * @param fd A file descriptor.
+     */
+    function fchown(fd: number, uid: number, gid: number, callback: NoParamCallback): void;
+
+    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+    namespace fchown {
+        /**
+         * Asynchronous fchown(2) - Change ownership of a file.
+         * @param fd A file descriptor.
+         */
+        function __promisify__(fd: number, uid: number, gid: number): Promise<void>;
+    }
+
+    /**
+     * Synchronous fchown(2) - Change ownership of a file.
+     * @param fd A file descriptor.
+     */
+    function fchownSync(fd: number, uid: number, gid: number): void;
+
+    /**
+     * Asynchronous lchown(2) - Change ownership of a file. Does not dereference symbolic links.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     */
+    function lchown(path: PathLike, uid: number, gid: number, callback: NoParamCallback): void;
+
+    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+    namespace lchown {
+        /**
+         * Asynchronous lchown(2) - Change ownership of a file. Does not dereference symbolic links.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         */
+        function __promisify__(path: PathLike, uid: number, gid: number): Promise<void>;
+    }
+
+    /**
+     * Synchronous lchown(2) - Change ownership of a file. Does not dereference symbolic links.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     */
+    function lchownSync(path: PathLike, uid: number, gid: number): void;
+
+    /**
+     * Asynchronous chmod(2) - Change permissions of a file.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
+     */
+    function chmod(path: PathLike, mode: string | number, callback: NoParamCallback): void;
+
+    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+    namespace chmod {
+        /**
+         * Asynchronous chmod(2) - Change permissions of a file.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
+         */
+        function __promisify__(path: PathLike, mode: string | number): Promise<void>;
+    }
+
+    /**
+     * Synchronous chmod(2) - Change permissions of a file.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
+     */
+    function chmodSync(path: PathLike, mode: string | number): void;
+
+    /**
+     * Asynchronous fchmod(2) - Change permissions of a file.
+     * @param fd A file descriptor.
+     * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
+     */
+    function fchmod(fd: number, mode: string | number, callback: NoParamCallback): void;
+
+    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+    namespace fchmod {
+        /**
+         * Asynchronous fchmod(2) - Change permissions of a file.
+         * @param fd A file descriptor.
+         * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
+         */
+        function __promisify__(fd: number, mode: string | number): Promise<void>;
+    }
+
+    /**
+     * Synchronous fchmod(2) - Change permissions of a file.
+     * @param fd A file descriptor.
+     * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
+     */
+    function fchmodSync(fd: number, mode: string | number): void;
+
+    /**
+     * Asynchronous lchmod(2) - Change permissions of a file. Does not dereference symbolic links.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
+     */
+    function lchmod(path: PathLike, mode: string | number, callback: NoParamCallback): void;
+
+    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+    namespace lchmod {
+        /**
+         * Asynchronous lchmod(2) - Change permissions of a file. Does not dereference symbolic links.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
+         */
+        function __promisify__(path: PathLike, mode: string | number): Promise<void>;
+    }
+
+    /**
+     * Synchronous lchmod(2) - Change permissions of a file. Does not dereference symbolic links.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
+     */
+    function lchmodSync(path: PathLike, mode: string | number): void;
+
+    /**
+     * Asynchronous stat(2) - Get file status.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     */
+    function stat(path: PathLike, callback: (err: NodeJS.ErrnoException | null, stats: Stats) => void): void;
+
+    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+    namespace stat {
+        /**
+         * Asynchronous stat(2) - Get file status.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         */
+        function __promisify__(path: PathLike): Promise<Stats>;
+    }
+
+    /**
+     * Synchronous stat(2) - Get file status.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     */
+    function statSync(path: PathLike): Stats;
+
+    /**
+     * Asynchronous fstat(2) - Get file status.
+     * @param fd A file descriptor.
+     */
+    function fstat(fd: number, callback: (err: NodeJS.ErrnoException | null, stats: Stats) => void): void;
+
+    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+    namespace fstat {
+        /**
+         * Asynchronous fstat(2) - Get file status.
+         * @param fd A file descriptor.
+         */
+        function __promisify__(fd: number): Promise<Stats>;
+    }
+
+    /**
+     * Synchronous fstat(2) - Get file status.
+     * @param fd A file descriptor.
+     */
+    function fstatSync(fd: number): Stats;
+
+    /**
+     * Asynchronous lstat(2) - Get file status. Does not dereference symbolic links.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     */
+    function lstat(path: PathLike, callback: (err: NodeJS.ErrnoException | null, stats: Stats) => void): void;
+
+    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+    namespace lstat {
+        /**
+         * Asynchronous lstat(2) - Get file status. Does not dereference symbolic links.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         */
+        function __promisify__(path: PathLike): Promise<Stats>;
+    }
+
+    /**
+     * Synchronous lstat(2) - Get file status. Does not dereference symbolic links.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     */
+    function lstatSync(path: PathLike): Stats;
+
+    /**
+     * Asynchronous link(2) - Create a new link (also known as a hard link) to an existing file.
+     * @param existingPath A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.
+     */
+    function link(existingPath: PathLike, newPath: PathLike, callback: NoParamCallback): void;
+
+    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+    namespace link {
+        /**
+         * Asynchronous link(2) - Create a new link (also known as a hard link) to an existing file.
+         * @param existingPath A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.
+         */
+        function __promisify__(existingPath: PathLike, newPath: PathLike): Promise<void>;
+    }
+
+    /**
+     * Synchronous link(2) - Create a new link (also known as a hard link) to an existing file.
+     * @param existingPath A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.
+     */
+    function linkSync(existingPath: PathLike, newPath: PathLike): void;
+
+    /**
+     * Asynchronous symlink(2) - Create a new symbolic link to an existing file.
+     * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol.
+     * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol.
+     * @param type May be set to `'dir'`, `'file'`, or `'junction'` (default is `'file'`) and is only available on Windows (ignored on other platforms).
+     * When using `'junction'`, the `target` argument will automatically be normalized to an absolute path.
+     */
+    function symlink(target: PathLike, path: PathLike, type: symlink.Type | undefined | null, callback: NoParamCallback): void;
+
+    /**
+     * Asynchronous symlink(2) - Create a new symbolic link to an existing file.
+     * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol.
+     * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol.
+     */
+    function symlink(target: PathLike, path: PathLike, callback: NoParamCallback): void;
+
+    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+    namespace symlink {
+        /**
+         * Asynchronous symlink(2) - Create a new symbolic link to an existing file.
+         * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol.
+         * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol.
+         * @param type May be set to `'dir'`, `'file'`, or `'junction'` (default is `'file'`) and is only available on Windows (ignored on other platforms).
+         * When using `'junction'`, the `target` argument will automatically be normalized to an absolute path.
+         */
+        function __promisify__(target: PathLike, path: PathLike, type?: string | null): Promise<void>;
+
+        type Type = "dir" | "file" | "junction";
+    }
+
+    /**
+     * Synchronous symlink(2) - Create a new symbolic link to an existing file.
+     * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol.
+     * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol.
+     * @param type May be set to `'dir'`, `'file'`, or `'junction'` (default is `'file'`) and is only available on Windows (ignored on other platforms).
+     * When using `'junction'`, the `target` argument will automatically be normalized to an absolute path.
+     */
+    function symlinkSync(target: PathLike, path: PathLike, type?: symlink.Type | null): void;
+
+    /**
+     * Asynchronous readlink(2) - read value of a symbolic link.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+     */
+    function readlink(
+        path: PathLike,
+        options: { encoding?: BufferEncoding | null } | BufferEncoding | undefined | null,
+        callback: (err: NodeJS.ErrnoException | null, linkString: string) => void
+    ): void;
+
+    /**
+     * Asynchronous readlink(2) - read value of a symbolic link.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+     */
+    function readlink(path: PathLike, options: { encoding: "buffer" } | "buffer", callback: (err: NodeJS.ErrnoException | null, linkString: Buffer) => void): void;
+
+    /**
+     * Asynchronous readlink(2) - read value of a symbolic link.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+     */
+    function readlink(path: PathLike, options: { encoding?: string | null } | string | undefined | null, callback: (err: NodeJS.ErrnoException | null, linkString: string | Buffer) => void): void;
+
+    /**
+     * Asynchronous readlink(2) - read value of a symbolic link.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     */
+    function readlink(path: PathLike, callback: (err: NodeJS.ErrnoException | null, linkString: string) => void): void;
+
+    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+    namespace readlink {
+        /**
+         * Asynchronous readlink(2) - read value of a symbolic link.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+         */
+        function __promisify__(path: PathLike, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): Promise<string>;
+
+        /**
+         * Asynchronous readlink(2) - read value of a symbolic link.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+         */
+        function __promisify__(path: PathLike, options: { encoding: "buffer" } | "buffer"): Promise<Buffer>;
+
+        /**
+         * Asynchronous readlink(2) - read value of a symbolic link.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+         */
+        function __promisify__(path: PathLike, options?: { encoding?: string | null } | string | null): Promise<string | Buffer>;
+    }
+
+    /**
+     * Synchronous readlink(2) - read value of a symbolic link.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+     */
+    function readlinkSync(path: PathLike, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): string;
+
+    /**
+     * Synchronous readlink(2) - read value of a symbolic link.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+     */
+    function readlinkSync(path: PathLike, options: { encoding: "buffer" } | "buffer"): Buffer;
+
+    /**
+     * Synchronous readlink(2) - read value of a symbolic link.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+     */
+    function readlinkSync(path: PathLike, options?: { encoding?: string | null } | string | null): string | Buffer;
+
+    /**
+     * Asynchronous realpath(3) - return the canonicalized absolute pathname.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+     */
+    function realpath(
+        path: PathLike,
+        options: { encoding?: BufferEncoding | null } | BufferEncoding | undefined | null,
+        callback: (err: NodeJS.ErrnoException | null, resolvedPath: string) => void
+    ): void;
+
+    /**
+     * Asynchronous realpath(3) - return the canonicalized absolute pathname.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+     */
+    function realpath(path: PathLike, options: { encoding: "buffer" } | "buffer", callback: (err: NodeJS.ErrnoException | null, resolvedPath: Buffer) => void): void;
+
+    /**
+     * Asynchronous realpath(3) - return the canonicalized absolute pathname.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+     */
+    function realpath(path: PathLike, options: { encoding?: string | null } | string | undefined | null, callback: (err: NodeJS.ErrnoException | null, resolvedPath: string | Buffer) => void): void;
+
+    /**
+     * Asynchronous realpath(3) - return the canonicalized absolute pathname.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     */
+    function realpath(path: PathLike, callback: (err: NodeJS.ErrnoException | null, resolvedPath: string) => void): void;
+
+    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+    namespace realpath {
+        /**
+         * Asynchronous realpath(3) - return the canonicalized absolute pathname.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+         */
+        function __promisify__(path: PathLike, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): Promise<string>;
+
+        /**
+         * Asynchronous realpath(3) - return the canonicalized absolute pathname.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+         */
+        function __promisify__(path: PathLike, options: { encoding: "buffer" } | "buffer"): Promise<Buffer>;
+
+        /**
+         * Asynchronous realpath(3) - return the canonicalized absolute pathname.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+         */
+        function __promisify__(path: PathLike, options?: { encoding?: string | null } | string | null): Promise<string | Buffer>;
+
+        function native(
+            path: PathLike,
+            options: { encoding?: BufferEncoding | null } | BufferEncoding | undefined | null,
+            callback: (err: NodeJS.ErrnoException | null, resolvedPath: string) => void
+        ): void;
+        function native(path: PathLike, options: { encoding: "buffer" } | "buffer", callback: (err: NodeJS.ErrnoException | null, resolvedPath: Buffer) => void): void;
+        function native(path: PathLike, options: { encoding?: string | null } | string | undefined | null, callback: (err: NodeJS.ErrnoException | null, resolvedPath: string | Buffer) => void): void;
+        function native(path: PathLike, callback: (err: NodeJS.ErrnoException | null, resolvedPath: string) => void): void;
+    }
+
+    /**
+     * Synchronous realpath(3) - return the canonicalized absolute pathname.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+     */
+    function realpathSync(path: PathLike, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): string;
+
+    /**
+     * Synchronous realpath(3) - return the canonicalized absolute pathname.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+     */
+    function realpathSync(path: PathLike, options: { encoding: "buffer" } | "buffer"): Buffer;
+
+    /**
+     * Synchronous realpath(3) - return the canonicalized absolute pathname.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+     */
+    function realpathSync(path: PathLike, options?: { encoding?: string | null } | string | null): string | Buffer;
+
+    namespace realpathSync {
+        function native(path: PathLike, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): string;
+        function native(path: PathLike, options: { encoding: "buffer" } | "buffer"): Buffer;
+        function native(path: PathLike, options?: { encoding?: string | null } | string | null): string | Buffer;
+    }
+
+    /**
+     * Asynchronous unlink(2) - delete a name and possibly the file it refers to.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     */
+    function unlink(path: PathLike, callback: NoParamCallback): void;
+
+    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+    namespace unlink {
+        /**
+         * Asynchronous unlink(2) - delete a name and possibly the file it refers to.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         */
+        function __promisify__(path: PathLike): Promise<void>;
+    }
+
+    /**
+     * Synchronous unlink(2) - delete a name and possibly the file it refers to.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     */
+    function unlinkSync(path: PathLike): void;
+
+    interface RmDirOptions {
+        /**
+         * If `true`, perform a recursive directory removal. In
+         * recursive mode, errors are not reported if `path` does not exist, and
+         * operations are retried on failure.
+         * @experimental
+         * @default false
+         */
+        recursive?: boolean;
+    }
+
+    interface RmDirAsyncOptions extends RmDirOptions {
+        /**
+         * If an `EMFILE` error is encountered, Node.js will
+         * retry the operation with a linear backoff of 1ms longer on each try until the
+         * timeout duration passes this limit. This option is ignored if the `recursive`
+         * option is not `true`.
+         * @default 1000
+         */
+        emfileWait?: number;
+        /**
+         * If an `EBUSY`, `ENOTEMPTY`, or `EPERM` error is
+         * encountered, Node.js will retry the operation with a linear backoff wait of
+         * 100ms longer on each try. This option represents the number of retries. This
+         * option is ignored if the `recursive` option is not `true`.
+         * @default 3
+         */
+        maxBusyTries?: number;
+    }
+
+    /**
+     * Asynchronous rmdir(2) - delete a directory.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     */
+    function rmdir(path: PathLike, callback: NoParamCallback): void;
+    function rmdir(path: PathLike, options: RmDirAsyncOptions, callback: NoParamCallback): void;
+
+    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+    namespace rmdir {
+        /**
+         * Asynchronous rmdir(2) - delete a directory.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         */
+        function __promisify__(path: PathLike, options?: RmDirAsyncOptions): Promise<void>;
+    }
+
+    /**
+     * Synchronous rmdir(2) - delete a directory.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     */
+    function rmdirSync(path: PathLike, options?: RmDirOptions): void;
+
+    interface MakeDirectoryOptions {
+        /**
+         * Indicates whether parent folders should be created.
+         * @default false
+         */
+        recursive?: boolean;
+        /**
+         * A file mode. If a string is passed, it is parsed as an octal integer. If not specified
+         * @default 0o777.
+         */
+        mode?: number;
+    }
+
+    /**
+     * Asynchronous mkdir(2) - create a directory.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders
+     * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`.
+     */
+    function mkdir(path: PathLike, options: number | string | MakeDirectoryOptions | undefined | null, callback: NoParamCallback): void;
+
+    /**
+     * Asynchronous mkdir(2) - create a directory with a mode of `0o777`.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     */
+    function mkdir(path: PathLike, callback: NoParamCallback): void;
+
+    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+    namespace mkdir {
+        /**
+         * Asynchronous mkdir(2) - create a directory.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders
+         * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`.
+         */
+        function __promisify__(path: PathLike, options?: number | string | MakeDirectoryOptions | null): Promise<void>;
+    }
+
+    /**
+     * Synchronous mkdir(2) - create a directory.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders
+     * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`.
+     */
+    function mkdirSync(path: PathLike, options?: number | string | MakeDirectoryOptions | null): void;
+
+    /**
+     * Asynchronously creates a unique temporary directory.
+     * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
+     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+     */
+    function mkdtemp(prefix: string, options: { encoding?: BufferEncoding | null } | BufferEncoding | undefined | null, callback: (err: NodeJS.ErrnoException | null, folder: string) => void): void;
+
+    /**
+     * Asynchronously creates a unique temporary directory.
+     * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
+     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+     */
+    function mkdtemp(prefix: string, options: "buffer" | { encoding: "buffer" }, callback: (err: NodeJS.ErrnoException | null, folder: Buffer) => void): void;
+
+    /**
+     * Asynchronously creates a unique temporary directory.
+     * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
+     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+     */
+    function mkdtemp(prefix: string, options: { encoding?: string | null } | string | undefined | null, callback: (err: NodeJS.ErrnoException | null, folder: string | Buffer) => void): void;
+
+    /**
+     * Asynchronously creates a unique temporary directory.
+     * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
+     */
+    function mkdtemp(prefix: string, callback: (err: NodeJS.ErrnoException | null, folder: string) => void): void;
+
+    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+    namespace mkdtemp {
+        /**
+         * Asynchronously creates a unique temporary directory.
+         * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
+         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+         */
+        function __promisify__(prefix: string, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): Promise<string>;
+
+        /**
+         * Asynchronously creates a unique temporary directory.
+         * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
+         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+         */
+        function __promisify__(prefix: string, options: { encoding: "buffer" } | "buffer"): Promise<Buffer>;
+
+        /**
+         * Asynchronously creates a unique temporary directory.
+         * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
+         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+         */
+        function __promisify__(prefix: string, options?: { encoding?: string | null } | string | null): Promise<string | Buffer>;
+    }
+
+    /**
+     * Synchronously creates a unique temporary directory.
+     * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
+     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+     */
+    function mkdtempSync(prefix: string, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): string;
+
+    /**
+     * Synchronously creates a unique temporary directory.
+     * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
+     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+     */
+    function mkdtempSync(prefix: string, options: { encoding: "buffer" } | "buffer"): Buffer;
+
+    /**
+     * Synchronously creates a unique temporary directory.
+     * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
+     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+     */
+    function mkdtempSync(prefix: string, options?: { encoding?: string | null } | string | null): string | Buffer;
+
+    /**
+     * Asynchronous readdir(3) - read a directory.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+     */
+    function readdir(
+        path: PathLike,
+        options: { encoding: BufferEncoding | null; withFileTypes?: false } | BufferEncoding | undefined | null,
+        callback: (err: NodeJS.ErrnoException | null, files: string[]) => void,
+    ): void;
+
+    /**
+     * Asynchronous readdir(3) - read a directory.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+     */
+    function readdir(path: PathLike, options: { encoding: "buffer"; withFileTypes?: false } | "buffer", callback: (err: NodeJS.ErrnoException | null, files: Buffer[]) => void): void;
+
+    /**
+     * Asynchronous readdir(3) - read a directory.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+     */
+    function readdir(
+        path: PathLike,
+        options: { encoding?: string | null; withFileTypes?: false } | string | undefined | null,
+        callback: (err: NodeJS.ErrnoException | null, files: string[] | Buffer[]) => void,
+    ): void;
+
+    /**
+     * Asynchronous readdir(3) - read a directory.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     */
+    function readdir(path: PathLike, callback: (err: NodeJS.ErrnoException | null, files: string[]) => void): void;
+
+    /**
+     * Asynchronous readdir(3) - read a directory.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * @param options If called with `withFileTypes: true` the result data will be an array of Dirent.
+     */
+    function readdir(path: PathLike, options: { encoding?: string | null; withFileTypes: true }, callback: (err: NodeJS.ErrnoException | null, files: Dirent[]) => void): void;
+
+    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+    namespace readdir {
+        /**
+         * Asynchronous readdir(3) - read a directory.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+         */
+        function __promisify__(path: PathLike, options?: { encoding: BufferEncoding | null; withFileTypes?: false } | BufferEncoding | null): Promise<string[]>;
+
+        /**
+         * Asynchronous readdir(3) - read a directory.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+         */
+        function __promisify__(path: PathLike, options: "buffer" | { encoding: "buffer"; withFileTypes?: false }): Promise<Buffer[]>;
+
+        /**
+         * Asynchronous readdir(3) - read a directory.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+         */
+        function __promisify__(path: PathLike, options?: { encoding?: string | null; withFileTypes?: false } | string | null): Promise<string[] | Buffer[]>;
+
+        /**
+         * Asynchronous readdir(3) - read a directory.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * @param options If called with `withFileTypes: true` the result data will be an array of Dirent
+         */
+        function __promisify__(path: PathLike, options: { encoding?: string | null; withFileTypes: true }): Promise<Dirent[]>;
+    }
+
+    /**
+     * Synchronous readdir(3) - read a directory.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+     */
+    function readdirSync(path: PathLike, options?: { encoding: BufferEncoding | null; withFileTypes?: false } | BufferEncoding | null): string[];
+
+    /**
+     * Synchronous readdir(3) - read a directory.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+     */
+    function readdirSync(path: PathLike, options: { encoding: "buffer"; withFileTypes?: false } | "buffer"): Buffer[];
+
+    /**
+     * Synchronous readdir(3) - read a directory.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+     */
+    function readdirSync(path: PathLike, options?: { encoding?: string | null; withFileTypes?: false } | string | null): string[] | Buffer[];
+
+    /**
+     * Synchronous readdir(3) - read a directory.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * @param options If called with `withFileTypes: true` the result data will be an array of Dirent.
+     */
+    function readdirSync(path: PathLike, options: { encoding?: string | null; withFileTypes: true }): Dirent[];
+
+    /**
+     * Asynchronous close(2) - close a file descriptor.
+     * @param fd A file descriptor.
+     */
+    function close(fd: number, callback: NoParamCallback): void;
+
+    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+    namespace close {
+        /**
+         * Asynchronous close(2) - close a file descriptor.
+         * @param fd A file descriptor.
+         */
+        function __promisify__(fd: number): Promise<void>;
+    }
+
+    /**
+     * Synchronous close(2) - close a file descriptor.
+     * @param fd A file descriptor.
+     */
+    function closeSync(fd: number): void;
+
+    /**
+     * Asynchronous open(2) - open and possibly create a file.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not supplied, defaults to `0o666`.
+     */
+    function open(path: PathLike, flags: string | number, mode: string | number | undefined | null, callback: (err: NodeJS.ErrnoException | null, fd: number) => void): void;
+
+    /**
+     * Asynchronous open(2) - open and possibly create a file. If the file is created, its mode will be `0o666`.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     */
+    function open(path: PathLike, flags: string | number, callback: (err: NodeJS.ErrnoException | null, fd: number) => void): void;
+
+    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+    namespace open {
+        /**
+         * Asynchronous open(2) - open and possibly create a file.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not supplied, defaults to `0o666`.
+         */
+        function __promisify__(path: PathLike, flags: string | number, mode?: string | number | null): Promise<number>;
+    }
+
+    /**
+     * Synchronous open(2) - open and possibly create a file, returning a file descriptor..
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not supplied, defaults to `0o666`.
+     */
+    function openSync(path: PathLike, flags: string | number, mode?: string | number | null): number;
+
+    /**
+     * Asynchronously change file timestamps of the file referenced by the supplied path.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * @param atime The last access time. If a string is provided, it will be coerced to number.
+     * @param mtime The last modified time. If a string is provided, it will be coerced to number.
+     */
+    function utimes(path: PathLike, atime: string | number | Date, mtime: string | number | Date, callback: NoParamCallback): void;
+
+    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+    namespace utimes {
+        /**
+         * Asynchronously change file timestamps of the file referenced by the supplied path.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * @param atime The last access time. If a string is provided, it will be coerced to number.
+         * @param mtime The last modified time. If a string is provided, it will be coerced to number.
+         */
+        function __promisify__(path: PathLike, atime: string | number | Date, mtime: string | number | Date): Promise<void>;
+    }
+
+    /**
+     * Synchronously change file timestamps of the file referenced by the supplied path.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * @param atime The last access time. If a string is provided, it will be coerced to number.
+     * @param mtime The last modified time. If a string is provided, it will be coerced to number.
+     */
+    function utimesSync(path: PathLike, atime: string | number | Date, mtime: string | number | Date): void;
+
+    /**
+     * Asynchronously change file timestamps of the file referenced by the supplied file descriptor.
+     * @param fd A file descriptor.
+     * @param atime The last access time. If a string is provided, it will be coerced to number.
+     * @param mtime The last modified time. If a string is provided, it will be coerced to number.
+     */
+    function futimes(fd: number, atime: string | number | Date, mtime: string | number | Date, callback: NoParamCallback): void;
+
+    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+    namespace futimes {
+        /**
+         * Asynchronously change file timestamps of the file referenced by the supplied file descriptor.
+         * @param fd A file descriptor.
+         * @param atime The last access time. If a string is provided, it will be coerced to number.
+         * @param mtime The last modified time. If a string is provided, it will be coerced to number.
+         */
+        function __promisify__(fd: number, atime: string | number | Date, mtime: string | number | Date): Promise<void>;
+    }
+
+    /**
+     * Synchronously change file timestamps of the file referenced by the supplied file descriptor.
+     * @param fd A file descriptor.
+     * @param atime The last access time. If a string is provided, it will be coerced to number.
+     * @param mtime The last modified time. If a string is provided, it will be coerced to number.
+     */
+    function futimesSync(fd: number, atime: string | number | Date, mtime: string | number | Date): void;
+
+    /**
+     * Asynchronous fsync(2) - synchronize a file's in-core state with the underlying storage device.
+     * @param fd A file descriptor.
+     */
+    function fsync(fd: number, callback: NoParamCallback): void;
+
+    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+    namespace fsync {
+        /**
+         * Asynchronous fsync(2) - synchronize a file's in-core state with the underlying storage device.
+         * @param fd A file descriptor.
+         */
+        function __promisify__(fd: number): Promise<void>;
+    }
+
+    /**
+     * Synchronous fsync(2) - synchronize a file's in-core state with the underlying storage device.
+     * @param fd A file descriptor.
+     */
+    function fsyncSync(fd: number): void;
+
+    /**
+     * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor.
+     * @param fd A file descriptor.
+     * @param offset The part of the buffer to be written. If not supplied, defaults to `0`.
+     * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`.
+     * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.
+     */
+    function write<TBuffer extends NodeJS.ArrayBufferView>(
+        fd: number,
+        buffer: TBuffer,
+        offset: number | undefined | null,
+        length: number | undefined | null,
+        position: number | undefined | null,
+        callback: (err: NodeJS.ErrnoException | null, written: number, buffer: TBuffer) => void,
+    ): void;
+
+    /**
+     * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor.
+     * @param fd A file descriptor.
+     * @param offset The part of the buffer to be written. If not supplied, defaults to `0`.
+     * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`.
+     */
+    function write<TBuffer extends NodeJS.ArrayBufferView>(
+        fd: number,
+        buffer: TBuffer,
+        offset: number | undefined | null,
+        length: number | undefined | null,
+        callback: (err: NodeJS.ErrnoException | null, written: number, buffer: TBuffer) => void,
+    ): void;
+
+    /**
+     * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor.
+     * @param fd A file descriptor.
+     * @param offset The part of the buffer to be written. If not supplied, defaults to `0`.
+     */
+    function write<TBuffer extends NodeJS.ArrayBufferView>(
+        fd: number,
+        buffer: TBuffer,
+        offset: number | undefined | null,
+        callback: (err: NodeJS.ErrnoException | null, written: number, buffer: TBuffer) => void
+    ): void;
+
+    /**
+     * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor.
+     * @param fd A file descriptor.
+     */
+    function write<TBuffer extends NodeJS.ArrayBufferView>(fd: number, buffer: TBuffer, callback: (err: NodeJS.ErrnoException | null, written: number, buffer: TBuffer) => void): void;
+
+    /**
+     * Asynchronously writes `string` to the file referenced by the supplied file descriptor.
+     * @param fd A file descriptor.
+     * @param string A string to write. If something other than a string is supplied it will be coerced to a string.
+     * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.
+     * @param encoding The expected string encoding.
+     */
+    function write(
+        fd: number,
+        string: any,
+        position: number | undefined | null,
+        encoding: string | undefined | null,
+        callback: (err: NodeJS.ErrnoException | null, written: number, str: string) => void,
+    ): void;
+
+    /**
+     * Asynchronously writes `string` to the file referenced by the supplied file descriptor.
+     * @param fd A file descriptor.
+     * @param string A string to write. If something other than a string is supplied it will be coerced to a string.
+     * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.
+     */
+    function write(fd: number, string: any, position: number | undefined | null, callback: (err: NodeJS.ErrnoException | null, written: number, str: string) => void): void;
+
+    /**
+     * Asynchronously writes `string` to the file referenced by the supplied file descriptor.
+     * @param fd A file descriptor.
+     * @param string A string to write. If something other than a string is supplied it will be coerced to a string.
+     */
+    function write(fd: number, string: any, callback: (err: NodeJS.ErrnoException | null, written: number, str: string) => void): void;
+
+    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+    namespace write {
+        /**
+         * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor.
+         * @param fd A file descriptor.
+         * @param offset The part of the buffer to be written. If not supplied, defaults to `0`.
+         * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`.
+         * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.
+         */
+        function __promisify__<TBuffer extends NodeJS.ArrayBufferView>(
+            fd: number,
+            buffer?: TBuffer,
+            offset?: number,
+            length?: number,
+            position?: number | null,
+        ): Promise<{ bytesWritten: number, buffer: TBuffer }>;
+
+        /**
+         * Asynchronously writes `string` to the file referenced by the supplied file descriptor.
+         * @param fd A file descriptor.
+         * @param string A string to write. If something other than a string is supplied it will be coerced to a string.
+         * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.
+         * @param encoding The expected string encoding.
+         */
+        function __promisify__(fd: number, string: any, position?: number | null, encoding?: string | null): Promise<{ bytesWritten: number, buffer: string }>;
+    }
+
+    /**
+     * Synchronously writes `buffer` to the file referenced by the supplied file descriptor, returning the number of bytes written.
+     * @param fd A file descriptor.
+     * @param offset The part of the buffer to be written. If not supplied, defaults to `0`.
+     * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`.
+     * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.
+     */
+    function writeSync(fd: number, buffer: NodeJS.ArrayBufferView, offset?: number | null, length?: number | null, position?: number | null): number;
+
+    /**
+     * Synchronously writes `string` to the file referenced by the supplied file descriptor, returning the number of bytes written.
+     * @param fd A file descriptor.
+     * @param string A string to write. If something other than a string is supplied it will be coerced to a string.
+     * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.
+     * @param encoding The expected string encoding.
+     */
+    function writeSync(fd: number, string: any, position?: number | null, encoding?: string | null): number;
+
+    /**
+     * Asynchronously reads data from the file referenced by the supplied file descriptor.
+     * @param fd A file descriptor.
+     * @param buffer The buffer that the data will be written to.
+     * @param offset The offset in the buffer at which to start writing.
+     * @param length The number of bytes to read.
+     * @param position The offset from the beginning of the file from which data should be read. If `null`, data will be read from the current position.
+     */
+    function read<TBuffer extends NodeJS.ArrayBufferView>(
+        fd: number,
+        buffer: TBuffer,
+        offset: number,
+        length: number,
+        position: number | null,
+        callback: (err: NodeJS.ErrnoException | null, bytesRead: number, buffer: TBuffer) => void,
+    ): void;
+
+    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+    namespace read {
+        /**
+         * @param fd A file descriptor.
+         * @param buffer The buffer that the data will be written to.
+         * @param offset The offset in the buffer at which to start writing.
+         * @param length The number of bytes to read.
+         * @param position The offset from the beginning of the file from which data should be read. If `null`, data will be read from the current position.
+         */
+        function __promisify__<TBuffer extends NodeJS.ArrayBufferView>(
+            fd: number,
+            buffer: TBuffer,
+            offset: number,
+            length: number,
+            position: number | null
+        ): Promise<{ bytesRead: number, buffer: TBuffer }>;
+    }
+
+    /**
+     * Synchronously reads data from the file referenced by the supplied file descriptor, returning the number of bytes read.
+     * @param fd A file descriptor.
+     * @param buffer The buffer that the data will be written to.
+     * @param offset The offset in the buffer at which to start writing.
+     * @param length The number of bytes to read.
+     * @param position The offset from the beginning of the file from which data should be read. If `null`, data will be read from the current position.
+     */
+    function readSync(fd: number, buffer: NodeJS.ArrayBufferView, offset: number, length: number, position: number | null): number;
+
+    /**
+     * Asynchronously reads the entire contents of a file.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
+     * @param options An object that may contain an optional flag.
+     * If a flag is not provided, it defaults to `'r'`.
+     */
+    function readFile(path: PathLike | number, options: { encoding?: null; flag?: string; } | undefined | null, callback: (err: NodeJS.ErrnoException | null, data: Buffer) => void): void;
+
+    /**
+     * Asynchronously reads the entire contents of a file.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * URL support is _experimental_.
+     * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
+     * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag.
+     * If a flag is not provided, it defaults to `'r'`.
+     */
+    function readFile(path: PathLike | number, options: { encoding: string; flag?: string; } | string, callback: (err: NodeJS.ErrnoException | null, data: string) => void): void;
+
+    /**
+     * Asynchronously reads the entire contents of a file.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * URL support is _experimental_.
+     * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
+     * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag.
+     * If a flag is not provided, it defaults to `'r'`.
+     */
+    function readFile(
+        path: PathLike | number,
+        options: { encoding?: string | null; flag?: string; } | string | undefined | null,
+        callback: (err: NodeJS.ErrnoException | null, data: string | Buffer) => void,
+    ): void;
+
+    /**
+     * Asynchronously reads the entire contents of a file.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
+     */
+    function readFile(path: PathLike | number, callback: (err: NodeJS.ErrnoException | null, data: Buffer) => void): void;
+
+    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+    namespace readFile {
+        /**
+         * Asynchronously reads the entire contents of a file.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
+         * @param options An object that may contain an optional flag.
+         * If a flag is not provided, it defaults to `'r'`.
+         */
+        function __promisify__(path: PathLike | number, options?: { encoding?: null; flag?: string; } | null): Promise<Buffer>;
+
+        /**
+         * Asynchronously reads the entire contents of a file.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * URL support is _experimental_.
+         * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
+         * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag.
+         * If a flag is not provided, it defaults to `'r'`.
+         */
+        function __promisify__(path: PathLike | number, options: { encoding: string; flag?: string; } | string): Promise<string>;
+
+        /**
+         * Asynchronously reads the entire contents of a file.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * URL support is _experimental_.
+         * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
+         * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag.
+         * If a flag is not provided, it defaults to `'r'`.
+         */
+        function __promisify__(path: PathLike | number, options?: { encoding?: string | null; flag?: string; } | string | null): Promise<string | Buffer>;
+    }
+
+    /**
+     * Synchronously reads the entire contents of a file.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * URL support is _experimental_.
+     * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
+     * @param options An object that may contain an optional flag. If a flag is not provided, it defaults to `'r'`.
+     */
+    function readFileSync(path: PathLike | number, options?: { encoding?: null; flag?: string; } | null): Buffer;
+
+    /**
+     * Synchronously reads the entire contents of a file.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * URL support is _experimental_.
+     * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
+     * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag.
+     * If a flag is not provided, it defaults to `'r'`.
+     */
+    function readFileSync(path: PathLike | number, options: { encoding: string; flag?: string; } | string): string;
+
+    /**
+     * Synchronously reads the entire contents of a file.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * URL support is _experimental_.
+     * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
+     * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag.
+     * If a flag is not provided, it defaults to `'r'`.
+     */
+    function readFileSync(path: PathLike | number, options?: { encoding?: string | null; flag?: string; } | string | null): string | Buffer;
+
+    type WriteFileOptions = { encoding?: string | null; mode?: number | string; flag?: string; } | string | null;
+
+    /**
+     * Asynchronously writes data to a file, replacing the file if it already exists.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * URL support is _experimental_.
+     * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
+     * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.
+     * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag.
+     * If `encoding` is not supplied, the default of `'utf8'` is used.
+     * If `mode` is not supplied, the default of `0o666` is used.
+     * If `mode` is a string, it is parsed as an octal integer.
+     * If `flag` is not supplied, the default of `'w'` is used.
+     */
+    function writeFile(path: PathLike | number, data: any, options: WriteFileOptions, callback: NoParamCallback): void;
+
+    /**
+     * Asynchronously writes data to a file, replacing the file if it already exists.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * URL support is _experimental_.
+     * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
+     * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.
+     */
+    function writeFile(path: PathLike | number, data: any, callback: NoParamCallback): void;
+
+    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+    namespace writeFile {
+        /**
+         * Asynchronously writes data to a file, replacing the file if it already exists.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * URL support is _experimental_.
+         * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
+         * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.
+         * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag.
+         * If `encoding` is not supplied, the default of `'utf8'` is used.
+         * If `mode` is not supplied, the default of `0o666` is used.
+         * If `mode` is a string, it is parsed as an octal integer.
+         * If `flag` is not supplied, the default of `'w'` is used.
+         */
+        function __promisify__(path: PathLike | number, data: any, options?: WriteFileOptions): Promise<void>;
+    }
+
+    /**
+     * Synchronously writes data to a file, replacing the file if it already exists.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * URL support is _experimental_.
+     * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
+     * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.
+     * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag.
+     * If `encoding` is not supplied, the default of `'utf8'` is used.
+     * If `mode` is not supplied, the default of `0o666` is used.
+     * If `mode` is a string, it is parsed as an octal integer.
+     * If `flag` is not supplied, the default of `'w'` is used.
+     */
+    function writeFileSync(path: PathLike | number, data: any, options?: WriteFileOptions): void;
+
+    /**
+     * Asynchronously append data to a file, creating the file if it does not exist.
+     * @param file A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * URL support is _experimental_.
+     * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
+     * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.
+     * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag.
+     * If `encoding` is not supplied, the default of `'utf8'` is used.
+     * If `mode` is not supplied, the default of `0o666` is used.
+     * If `mode` is a string, it is parsed as an octal integer.
+     * If `flag` is not supplied, the default of `'a'` is used.
+     */
+    function appendFile(file: PathLike | number, data: any, options: WriteFileOptions, callback: NoParamCallback): void;
+
+    /**
+     * Asynchronously append data to a file, creating the file if it does not exist.
+     * @param file A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * URL support is _experimental_.
+     * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
+     * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.
+     */
+    function appendFile(file: PathLike | number, data: any, callback: NoParamCallback): void;
+
+    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+    namespace appendFile {
+        /**
+         * Asynchronously append data to a file, creating the file if it does not exist.
+         * @param file A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * URL support is _experimental_.
+         * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
+         * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.
+         * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag.
+         * If `encoding` is not supplied, the default of `'utf8'` is used.
+         * If `mode` is not supplied, the default of `0o666` is used.
+         * If `mode` is a string, it is parsed as an octal integer.
+         * If `flag` is not supplied, the default of `'a'` is used.
+         */
+        function __promisify__(file: PathLike | number, data: any, options?: WriteFileOptions): Promise<void>;
+    }
+
+    /**
+     * Synchronously append data to a file, creating the file if it does not exist.
+     * @param file A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * URL support is _experimental_.
+     * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
+     * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.
+     * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag.
+     * If `encoding` is not supplied, the default of `'utf8'` is used.
+     * If `mode` is not supplied, the default of `0o666` is used.
+     * If `mode` is a string, it is parsed as an octal integer.
+     * If `flag` is not supplied, the default of `'a'` is used.
+     */
+    function appendFileSync(file: PathLike | number, data: any, options?: WriteFileOptions): void;
+
+    /**
+     * Watch for changes on `filename`. The callback `listener` will be called each time the file is accessed.
+     */
+    function watchFile(filename: PathLike, options: { persistent?: boolean; interval?: number; } | undefined, listener: (curr: Stats, prev: Stats) => void): void;
+
+    /**
+     * Watch for changes on `filename`. The callback `listener` will be called each time the file is accessed.
+     * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
+     * URL support is _experimental_.
+     */
+    function watchFile(filename: PathLike, listener: (curr: Stats, prev: Stats) => void): void;
+
+    /**
+     * Stop watching for changes on `filename`.
+     * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
+     * URL support is _experimental_.
+     */
+    function unwatchFile(filename: PathLike, listener?: (curr: Stats, prev: Stats) => void): void;
+
+    /**
+     * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`.
+     * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
+     * URL support is _experimental_.
+     * @param options Either the encoding for the filename provided to the listener, or an object optionally specifying encoding, persistent, and recursive options.
+     * If `encoding` is not supplied, the default of `'utf8'` is used.
+     * If `persistent` is not supplied, the default of `true` is used.
+     * If `recursive` is not supplied, the default of `false` is used.
+     */
+    function watch(
+        filename: PathLike,
+        options: { encoding?: BufferEncoding | null, persistent?: boolean, recursive?: boolean } | BufferEncoding | undefined | null,
+        listener?: (event: string, filename: string) => void,
+    ): FSWatcher;
+
+    /**
+     * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`.
+     * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
+     * URL support is _experimental_.
+     * @param options Either the encoding for the filename provided to the listener, or an object optionally specifying encoding, persistent, and recursive options.
+     * If `encoding` is not supplied, the default of `'utf8'` is used.
+     * If `persistent` is not supplied, the default of `true` is used.
+     * If `recursive` is not supplied, the default of `false` is used.
+     */
+    function watch(filename: PathLike, options: { encoding: "buffer", persistent?: boolean, recursive?: boolean } | "buffer", listener?: (event: string, filename: Buffer) => void): FSWatcher;
+
+    /**
+     * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`.
+     * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
+     * URL support is _experimental_.
+     * @param options Either the encoding for the filename provided to the listener, or an object optionally specifying encoding, persistent, and recursive options.
+     * If `encoding` is not supplied, the default of `'utf8'` is used.
+     * If `persistent` is not supplied, the default of `true` is used.
+     * If `recursive` is not supplied, the default of `false` is used.
+     */
+    function watch(
+        filename: PathLike,
+        options: { encoding?: string | null, persistent?: boolean, recursive?: boolean } | string | null,
+        listener?: (event: string, filename: string | Buffer) => void,
+    ): FSWatcher;
+
+    /**
+     * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`.
+     * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
+     * URL support is _experimental_.
+     */
+    function watch(filename: PathLike, listener?: (event: string, filename: string) => any): FSWatcher;
+
+    /**
+     * Asynchronously tests whether or not the given path exists by checking with the file system.
+     * @deprecated
+     * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
+     * URL support is _experimental_.
+     */
+    function exists(path: PathLike, callback: (exists: boolean) => void): void;
+
+    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+    namespace exists {
+        /**
+         * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
+         * URL support is _experimental_.
+         */
+        function __promisify__(path: PathLike): Promise<boolean>;
+    }
+
+    /**
+     * Synchronously tests whether or not the given path exists by checking with the file system.
+     * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
+     * URL support is _experimental_.
+     */
+    function existsSync(path: PathLike): boolean;
+
+    namespace constants {
+        // File Access Constants
+
+        /** Constant for fs.access(). File is visible to the calling process. */
+        const F_OK: number;
+
+        /** Constant for fs.access(). File can be read by the calling process. */
+        const R_OK: number;
+
+        /** Constant for fs.access(). File can be written by the calling process. */
+        const W_OK: number;
+
+        /** Constant for fs.access(). File can be executed by the calling process. */
+        const X_OK: number;
+
+        // File Copy Constants
+
+        /** Constant for fs.copyFile. Flag indicating the destination file should not be overwritten if it already exists. */
+        const COPYFILE_EXCL: number;
+
+        /**
+         * Constant for fs.copyFile. copy operation will attempt to create a copy-on-write reflink.
+         * If the underlying platform does not support copy-on-write, then a fallback copy mechanism is used.
+         */
+        const COPYFILE_FICLONE: number;
+
+        /**
+         * Constant for fs.copyFile. Copy operation will attempt to create a copy-on-write reflink.
+         * If the underlying platform does not support copy-on-write, then the operation will fail with an error.
+         */
+        const COPYFILE_FICLONE_FORCE: number;
+
+        // File Open Constants
+
+        /** Constant for fs.open(). Flag indicating to open a file for read-only access. */
+        const O_RDONLY: number;
+
+        /** Constant for fs.open(). Flag indicating to open a file for write-only access. */
+        const O_WRONLY: number;
+
+        /** Constant for fs.open(). Flag indicating to open a file for read-write access. */
+        const O_RDWR: number;
+
+        /** Constant for fs.open(). Flag indicating to create the file if it does not already exist. */
+        const O_CREAT: number;
+
+        /** Constant for fs.open(). Flag indicating that opening a file should fail if the O_CREAT flag is set and the file already exists. */
+        const O_EXCL: number;
+
+        /**
+         * Constant for fs.open(). Flag indicating that if path identifies a terminal device,
+         * opening the path shall not cause that terminal to become the controlling terminal for the process
+         * (if the process does not already have one).
+         */
+        const O_NOCTTY: number;
+
+        /** Constant for fs.open(). Flag indicating that if the file exists and is a regular file, and the file is opened successfully for write access, its length shall be truncated to zero. */
+        const O_TRUNC: number;
+
+        /** Constant for fs.open(). Flag indicating that data will be appended to the end of the file. */
+        const O_APPEND: number;
+
+        /** Constant for fs.open(). Flag indicating that the open should fail if the path is not a directory. */
+        const O_DIRECTORY: number;
+
+        /**
+         * constant for fs.open().
+         * Flag indicating reading accesses to the file system will no longer result in
+         * an update to the atime information associated with the file.
+         * This flag is available on Linux operating systems only.
+         */
+        const O_NOATIME: number;
+
+        /** Constant for fs.open(). Flag indicating that the open should fail if the path is a symbolic link. */
+        const O_NOFOLLOW: number;
+
+        /** Constant for fs.open(). Flag indicating that the file is opened for synchronous I/O. */
+        const O_SYNC: number;
+
+        /** Constant for fs.open(). Flag indicating that the file is opened for synchronous I/O with write operations waiting for data integrity. */
+        const O_DSYNC: number;
+
+        /** Constant for fs.open(). Flag indicating to open the symbolic link itself rather than the resource it is pointing to. */
+        const O_SYMLINK: number;
+
+        /** Constant for fs.open(). When set, an attempt will be made to minimize caching effects of file I/O. */
+        const O_DIRECT: number;
+
+        /** Constant for fs.open(). Flag indicating to open the file in nonblocking mode when possible. */
+        const O_NONBLOCK: number;
+
+        // File Type Constants
+
+        /** Constant for fs.Stats mode property for determining a file's type. Bit mask used to extract the file type code. */
+        const S_IFMT: number;
+
+        /** Constant for fs.Stats mode property for determining a file's type. File type constant for a regular file. */
+        const S_IFREG: number;
+
+        /** Constant for fs.Stats mode property for determining a file's type. File type constant for a directory. */
+        const S_IFDIR: number;
+
+        /** Constant for fs.Stats mode property for determining a file's type. File type constant for a character-oriented device file. */
+        const S_IFCHR: number;
+
+        /** Constant for fs.Stats mode property for determining a file's type. File type constant for a block-oriented device file. */
+        const S_IFBLK: number;
+
+        /** Constant for fs.Stats mode property for determining a file's type. File type constant for a FIFO/pipe. */
+        const S_IFIFO: number;
+
+        /** Constant for fs.Stats mode property for determining a file's type. File type constant for a symbolic link. */
+        const S_IFLNK: number;
+
+        /** Constant for fs.Stats mode property for determining a file's type. File type constant for a socket. */
+        const S_IFSOCK: number;
+
+        // File Mode Constants
+
+        /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by owner. */
+        const S_IRWXU: number;
+
+        /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by owner. */
+        const S_IRUSR: number;
+
+        /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by owner. */
+        const S_IWUSR: number;
+
+        /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by owner. */
+        const S_IXUSR: number;
+
+        /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by group. */
+        const S_IRWXG: number;
+
+        /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by group. */
+        const S_IRGRP: number;
+
+        /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by group. */
+        const S_IWGRP: number;
+
+        /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by group. */
+        const S_IXGRP: number;
+
+        /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by others. */
+        const S_IRWXO: number;
+
+        /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by others. */
+        const S_IROTH: number;
+
+        /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by others. */
+        const S_IWOTH: number;
+
+        /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by others. */
+        const S_IXOTH: number;
+
+        /**
+         * When set, a memory file mapping is used to access the file. This flag
+         * is available on Windows operating systems only. On other operating systems,
+         * this flag is ignored.
+         */
+        const UV_FS_O_FILEMAP: number;
+    }
+
+    /**
+     * Asynchronously tests a user's permissions for the file specified by path.
+     * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
+     * URL support is _experimental_.
+     */
+    function access(path: PathLike, mode: number | undefined, callback: NoParamCallback): void;
+
+    /**
+     * Asynchronously tests a user's permissions for the file specified by path.
+     * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
+     * URL support is _experimental_.
+     */
+    function access(path: PathLike, callback: NoParamCallback): void;
+
+    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+    namespace access {
+        /**
+         * Asynchronously tests a user's permissions for the file specified by path.
+         * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
+         * URL support is _experimental_.
+         */
+        function __promisify__(path: PathLike, mode?: number): Promise<void>;
+    }
+
+    /**
+     * Synchronously tests a user's permissions for the file specified by path.
+     * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
+     * URL support is _experimental_.
+     */
+    function accessSync(path: PathLike, mode?: number): void;
+
+    /**
+     * Returns a new `ReadStream` object.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * URL support is _experimental_.
+     */
+    function createReadStream(path: PathLike, options?: string | {
+        flags?: string;
+        encoding?: string;
+        fd?: number;
+        mode?: number;
+        autoClose?: boolean;
+        /**
+         * @default false
+         */
+        emitClose?: boolean;
+        start?: number;
+        end?: number;
+        highWaterMark?: number;
+    }): ReadStream;
+
+    /**
+     * Returns a new `WriteStream` object.
+     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+     * URL support is _experimental_.
+     */
+    function createWriteStream(path: PathLike, options?: string | {
+        flags?: string;
+        encoding?: string;
+        fd?: number;
+        mode?: number;
+        autoClose?: boolean;
+        start?: number;
+        highWaterMark?: number;
+    }): WriteStream;
+
+    /**
+     * Asynchronous fdatasync(2) - synchronize a file's in-core state with storage device.
+     * @param fd A file descriptor.
+     */
+    function fdatasync(fd: number, callback: NoParamCallback): void;
+
+    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+    namespace fdatasync {
+        /**
+         * Asynchronous fdatasync(2) - synchronize a file's in-core state with storage device.
+         * @param fd A file descriptor.
+         */
+        function __promisify__(fd: number): Promise<void>;
+    }
+
+    /**
+     * Synchronous fdatasync(2) - synchronize a file's in-core state with storage device.
+     * @param fd A file descriptor.
+     */
+    function fdatasyncSync(fd: number): void;
+
+    /**
+     * Asynchronously copies src to dest. By default, dest is overwritten if it already exists.
+     * No arguments other than a possible exception are given to the callback function.
+     * Node.js makes no guarantees about the atomicity of the copy operation.
+     * If an error occurs after the destination file has been opened for writing, Node.js will attempt
+     * to remove the destination.
+     * @param src A path to the source file.
+     * @param dest A path to the destination file.
+     */
+    function copyFile(src: PathLike, dest: PathLike, callback: NoParamCallback): void;
+    /**
+     * Asynchronously copies src to dest. By default, dest is overwritten if it already exists.
+     * No arguments other than a possible exception are given to the callback function.
+     * Node.js makes no guarantees about the atomicity of the copy operation.
+     * If an error occurs after the destination file has been opened for writing, Node.js will attempt
+     * to remove the destination.
+     * @param src A path to the source file.
+     * @param dest A path to the destination file.
+     * @param flags An integer that specifies the behavior of the copy operation. The only supported flag is fs.constants.COPYFILE_EXCL, which causes the copy operation to fail if dest already exists.
+     */
+    function copyFile(src: PathLike, dest: PathLike, flags: number, callback: NoParamCallback): void;
+
+    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
+    namespace copyFile {
+        /**
+         * Asynchronously copies src to dest. By default, dest is overwritten if it already exists.
+         * No arguments other than a possible exception are given to the callback function.
+         * Node.js makes no guarantees about the atomicity of the copy operation.
+         * If an error occurs after the destination file has been opened for writing, Node.js will attempt
+         * to remove the destination.
+         * @param src A path to the source file.
+         * @param dest A path to the destination file.
+         * @param flags An optional integer that specifies the behavior of the copy operation.
+         * The only supported flag is fs.constants.COPYFILE_EXCL,
+         * which causes the copy operation to fail if dest already exists.
+         */
+        function __promisify__(src: PathLike, dst: PathLike, flags?: number): Promise<void>;
+    }
+
+    /**
+     * Synchronously copies src to dest. By default, dest is overwritten if it already exists.
+     * Node.js makes no guarantees about the atomicity of the copy operation.
+     * If an error occurs after the destination file has been opened for writing, Node.js will attempt
+     * to remove the destination.
+     * @param src A path to the source file.
+     * @param dest A path to the destination file.
+     * @param flags An optional integer that specifies the behavior of the copy operation.
+     * The only supported flag is fs.constants.COPYFILE_EXCL, which causes the copy operation to fail if dest already exists.
+     */
+    function copyFileSync(src: PathLike, dest: PathLike, flags?: number): void;
+
+    /**
+     * Write an array of ArrayBufferViews to the file specified by fd using writev().
+     * position is the offset from the beginning of the file where this data should be written.
+     * It is unsafe to use fs.writev() multiple times on the same file without waiting for the callback. For this scenario, use fs.createWriteStream().
+     * On Linux, positional writes don't work when the file is opened in append mode.
+     * The kernel ignores the position argument and always appends the data to the end of the file.
+     */
+    function writev(
+        fd: number,
+        buffers: NodeJS.ArrayBufferView[],
+        cb: (err: NodeJS.ErrnoException | null, bytesWritten: number, buffers: NodeJS.ArrayBufferView[]) => void
+    ): void;
+    function writev(
+        fd: number,
+        buffers: NodeJS.ArrayBufferView[],
+        position: number,
+        cb: (err: NodeJS.ErrnoException | null, bytesWritten: number, buffers: NodeJS.ArrayBufferView[]) => void
+    ): void;
+
+    interface WriteVResult {
+        bytesWritten: number;
+        buffers: NodeJS.ArrayBufferView[];
+    }
+
+    namespace writev {
+        function __promisify__(fd: number, buffers: NodeJS.ArrayBufferView[], position?: number): Promise<WriteVResult>;
+    }
+
+    /**
+     * See `writev`.
+     */
+    function writevSync(fd: number, buffers: NodeJS.ArrayBufferView[], position?: number): number;
+
+    interface OpenDirOptions {
+        encoding?: BufferEncoding;
+    }
+
+    function opendirSync(path: string, options?: OpenDirOptions): Dir;
+
+    function opendir(path: string, cb: (err: NodeJS.ErrnoException | null, dir: Dir) => void): void;
+    function opendir(path: string, options: OpenDirOptions, cb: (err: NodeJS.ErrnoException | null, dir: Dir) => void): void;
+
+    namespace opendir {
+        function __promisify__(path: string, options?: OpenDirOptions): Promise<Dir>;
+    }
+
+    namespace promises {
+        interface FileHandle {
+            /**
+             * Gets the file descriptor for this file handle.
+             */
+            readonly fd: number;
+
+            /**
+             * Asynchronously append data to a file, creating the file if it does not exist. The underlying file will _not_ be closed automatically.
+             * The `FileHandle` must have been opened for appending.
+             * @param data The data to write. If something other than a `Buffer` or `Uint8Array` is provided, the value is coerced to a string.
+             * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag.
+             * If `encoding` is not supplied, the default of `'utf8'` is used.
+             * If `mode` is not supplied, the default of `0o666` is used.
+             * If `mode` is a string, it is parsed as an octal integer.
+             * If `flag` is not supplied, the default of `'a'` is used.
+             */
+            appendFile(data: any, options?: { encoding?: string | null, mode?: string | number, flag?: string | number } | string | null): Promise<void>;
+
+            /**
+             * Asynchronous fchown(2) - Change ownership of a file.
+             */
+            chown(uid: number, gid: number): Promise<void>;
+
+            /**
+             * Asynchronous fchmod(2) - Change permissions of a file.
+             * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
+             */
+            chmod(mode: string | number): Promise<void>;
+
+            /**
+             * Asynchronous fdatasync(2) - synchronize a file's in-core state with storage device.
+             */
+            datasync(): Promise<void>;
+
+            /**
+             * Asynchronous fsync(2) - synchronize a file's in-core state with the underlying storage device.
+             */
+            sync(): Promise<void>;
+
+            /**
+             * Asynchronously reads data from the file.
+             * The `FileHandle` must have been opened for reading.
+             * @param buffer The buffer that the data will be written to.
+             * @param offset The offset in the buffer at which to start writing.
+             * @param length The number of bytes to read.
+             * @param position The offset from the beginning of the file from which data should be read. If `null`, data will be read from the current position.
+             */
+            read<TBuffer extends Uint8Array>(buffer: TBuffer, offset?: number | null, length?: number | null, position?: number | null): Promise<{ bytesRead: number, buffer: TBuffer }>;
+
+            /**
+             * Asynchronously reads the entire contents of a file. The underlying file will _not_ be closed automatically.
+             * The `FileHandle` must have been opened for reading.
+             * @param options An object that may contain an optional flag.
+             * If a flag is not provided, it defaults to `'r'`.
+             */
+            readFile(options?: { encoding?: null, flag?: string | number } | null): Promise<Buffer>;
+
+            /**
+             * Asynchronously reads the entire contents of a file. The underlying file will _not_ be closed automatically.
+             * The `FileHandle` must have been opened for reading.
+             * @param options An object that may contain an optional flag.
+             * If a flag is not provided, it defaults to `'r'`.
+             */
+            readFile(options: { encoding: BufferEncoding, flag?: string | number } | BufferEncoding): Promise<string>;
+
+            /**
+             * Asynchronously reads the entire contents of a file. The underlying file will _not_ be closed automatically.
+             * The `FileHandle` must have been opened for reading.
+             * @param options An object that may contain an optional flag.
+             * If a flag is not provided, it defaults to `'r'`.
+             */
+            readFile(options?: { encoding?: string | null, flag?: string | number } | string | null): Promise<string | Buffer>;
+
+            /**
+             * Asynchronous fstat(2) - Get file status.
+             */
+            stat(): Promise<Stats>;
+
+            /**
+             * Asynchronous ftruncate(2) - Truncate a file to a specified length.
+             * @param len If not specified, defaults to `0`.
+             */
+            truncate(len?: number): Promise<void>;
+
+            /**
+             * Asynchronously change file timestamps of the file.
+             * @param atime The last access time. If a string is provided, it will be coerced to number.
+             * @param mtime The last modified time. If a string is provided, it will be coerced to number.
+             */
+            utimes(atime: string | number | Date, mtime: string | number | Date): Promise<void>;
+
+            /**
+             * Asynchronously writes `buffer` to the file.
+             * The `FileHandle` must have been opened for writing.
+             * @param buffer The buffer that the data will be written to.
+             * @param offset The part of the buffer to be written. If not supplied, defaults to `0`.
+             * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`.
+             * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.
+             */
+            write<TBuffer extends Uint8Array>(buffer: TBuffer, offset?: number | null, length?: number | null, position?: number | null): Promise<{ bytesWritten: number, buffer: TBuffer }>;
+
+            /**
+             * Asynchronously writes `string` to the file.
+             * The `FileHandle` must have been opened for writing.
+             * It is unsafe to call `write()` multiple times on the same file without waiting for the `Promise`
+             * to be resolved (or rejected). For this scenario, `fs.createWriteStream` is strongly recommended.
+             * @param string A string to write. If something other than a string is supplied it will be coerced to a string.
+             * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.
+             * @param encoding The expected string encoding.
+             */
+            write(data: any, position?: number | null, encoding?: string | null): Promise<{ bytesWritten: number, buffer: string }>;
+
+            /**
+             * Asynchronously writes data to a file, replacing the file if it already exists. The underlying file will _not_ be closed automatically.
+             * The `FileHandle` must have been opened for writing.
+             * It is unsafe to call `writeFile()` multiple times on the same file without waiting for the `Promise` to be resolved (or rejected).
+             * @param data The data to write. If something other than a `Buffer` or `Uint8Array` is provided, the value is coerced to a string.
+             * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag.
+             * If `encoding` is not supplied, the default of `'utf8'` is used.
+             * If `mode` is not supplied, the default of `0o666` is used.
+             * If `mode` is a string, it is parsed as an octal integer.
+             * If `flag` is not supplied, the default of `'w'` is used.
+             */
+            writeFile(data: any, options?: { encoding?: string | null, mode?: string | number, flag?: string | number } | string | null): Promise<void>;
+
+            /**
+             * See `fs.writev` promisified version.
+             */
+            writev(buffers: NodeJS.ArrayBufferView[], position?: number): Promise<WriteVResult>;
+
+            /**
+             * Asynchronous close(2) - close a `FileHandle`.
+             */
+            close(): Promise<void>;
+        }
+
+        /**
+         * Asynchronously tests a user's permissions for the file specified by path.
+         * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
+         * URL support is _experimental_.
+         */
+        function access(path: PathLike, mode?: number): Promise<void>;
+
+        /**
+         * Asynchronously copies `src` to `dest`. By default, `dest` is overwritten if it already exists.
+         * Node.js makes no guarantees about the atomicity of the copy operation.
+         * If an error occurs after the destination file has been opened for writing, Node.js will attempt
+         * to remove the destination.
+         * @param src A path to the source file.
+         * @param dest A path to the destination file.
+         * @param flags An optional integer that specifies the behavior of the copy operation. The only
+         * supported flag is `fs.constants.COPYFILE_EXCL`, which causes the copy operation to fail if
+         * `dest` already exists.
+         */
+        function copyFile(src: PathLike, dest: PathLike, flags?: number): Promise<void>;
+
+        /**
+         * Asynchronous open(2) - open and possibly create a file.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not
+         * supplied, defaults to `0o666`.
+         */
+        function open(path: PathLike, flags: string | number, mode?: string | number): Promise<FileHandle>;
+
+        /**
+         * Asynchronously reads data from the file referenced by the supplied `FileHandle`.
+         * @param handle A `FileHandle`.
+         * @param buffer The buffer that the data will be written to.
+         * @param offset The offset in the buffer at which to start writing.
+         * @param length The number of bytes to read.
+         * @param position The offset from the beginning of the file from which data should be read. If
+         * `null`, data will be read from the current position.
+         */
+        function read<TBuffer extends Uint8Array>(
+            handle: FileHandle,
+            buffer: TBuffer,
+            offset?: number | null,
+            length?: number | null,
+            position?: number | null,
+        ): Promise<{ bytesRead: number, buffer: TBuffer }>;
+
+        /**
+         * Asynchronously writes `buffer` to the file referenced by the supplied `FileHandle`.
+         * It is unsafe to call `fsPromises.write()` multiple times on the same file without waiting for the `Promise`
+         * to be resolved (or rejected). For this scenario, `fs.createWriteStream` is strongly recommended.
+         * @param handle A `FileHandle`.
+         * @param buffer The buffer that the data will be written to.
+         * @param offset The part of the buffer to be written. If not supplied, defaults to `0`.
+         * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`.
+         * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.
+         */
+        function write<TBuffer extends Uint8Array>(
+            handle: FileHandle,
+            buffer: TBuffer,
+            offset?: number | null,
+            length?: number | null, position?: number | null): Promise<{ bytesWritten: number, buffer: TBuffer }>;
+
+        /**
+         * Asynchronously writes `string` to the file referenced by the supplied `FileHandle`.
+         * It is unsafe to call `fsPromises.write()` multiple times on the same file without waiting for the `Promise`
+         * to be resolved (or rejected). For this scenario, `fs.createWriteStream` is strongly recommended.
+         * @param handle A `FileHandle`.
+         * @param string A string to write. If something other than a string is supplied it will be coerced to a string.
+         * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.
+         * @param encoding The expected string encoding.
+         */
+        function write(handle: FileHandle, string: any, position?: number | null, encoding?: string | null): Promise<{ bytesWritten: number, buffer: string }>;
+
+        /**
+         * Asynchronous rename(2) - Change the name or location of a file or directory.
+         * @param oldPath A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * URL support is _experimental_.
+         * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * URL support is _experimental_.
+         */
+        function rename(oldPath: PathLike, newPath: PathLike): Promise<void>;
+
+        /**
+         * Asynchronous truncate(2) - Truncate a file to a specified length.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * @param len If not specified, defaults to `0`.
+         */
+        function truncate(path: PathLike, len?: number): Promise<void>;
+
+        /**
+         * Asynchronous ftruncate(2) - Truncate a file to a specified length.
+         * @param handle A `FileHandle`.
+         * @param len If not specified, defaults to `0`.
+         */
+        function ftruncate(handle: FileHandle, len?: number): Promise<void>;
+
+        /**
+         * Asynchronous rmdir(2) - delete a directory.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         */
+        function rmdir(path: PathLike, options?: RmDirAsyncOptions): Promise<void>;
+
+        /**
+         * Asynchronous fdatasync(2) - synchronize a file's in-core state with storage device.
+         * @param handle A `FileHandle`.
+         */
+        function fdatasync(handle: FileHandle): Promise<void>;
+
+        /**
+         * Asynchronous fsync(2) - synchronize a file's in-core state with the underlying storage device.
+         * @param handle A `FileHandle`.
+         */
+        function fsync(handle: FileHandle): Promise<void>;
+
+        /**
+         * Asynchronous mkdir(2) - create a directory.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders
+         * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`.
+         */
+        function mkdir(path: PathLike, options?: number | string | MakeDirectoryOptions | null): Promise<void>;
+
+        /**
+         * Asynchronous readdir(3) - read a directory.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+         */
+        function readdir(path: PathLike, options?: { encoding?: BufferEncoding | null; withFileTypes?: false } | BufferEncoding | null): Promise<string[]>;
+
+        /**
+         * Asynchronous readdir(3) - read a directory.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+         */
+        function readdir(path: PathLike, options: { encoding: "buffer"; withFileTypes?: false } | "buffer"): Promise<Buffer[]>;
+
+        /**
+         * Asynchronous readdir(3) - read a directory.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+         */
+        function readdir(path: PathLike, options?: { encoding?: string | null; withFileTypes?: false } | string | null): Promise<string[] | Buffer[]>;
+
+        /**
+         * Asynchronous readdir(3) - read a directory.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * @param options If called with `withFileTypes: true` the result data will be an array of Dirent.
+         */
+        function readdir(path: PathLike, options: { encoding?: string | null; withFileTypes: true }): Promise<Dirent[]>;
+
+        /**
+         * Asynchronous readlink(2) - read value of a symbolic link.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+         */
+        function readlink(path: PathLike, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): Promise<string>;
+
+        /**
+         * Asynchronous readlink(2) - read value of a symbolic link.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+         */
+        function readlink(path: PathLike, options: { encoding: "buffer" } | "buffer"): Promise<Buffer>;
+
+        /**
+         * Asynchronous readlink(2) - read value of a symbolic link.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+         */
+        function readlink(path: PathLike, options?: { encoding?: string | null } | string | null): Promise<string | Buffer>;
+
+        /**
+         * Asynchronous symlink(2) - Create a new symbolic link to an existing file.
+         * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol.
+         * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol.
+         * @param type May be set to `'dir'`, `'file'`, or `'junction'` (default is `'file'`) and is only available on Windows (ignored on other platforms).
+         * When using `'junction'`, the `target` argument will automatically be normalized to an absolute path.
+         */
+        function symlink(target: PathLike, path: PathLike, type?: string | null): Promise<void>;
+
+        /**
+         * Asynchronous fstat(2) - Get file status.
+         * @param handle A `FileHandle`.
+         */
+        function fstat(handle: FileHandle): Promise<Stats>;
+
+        /**
+         * Asynchronous lstat(2) - Get file status. Does not dereference symbolic links.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         */
+        function lstat(path: PathLike): Promise<Stats>;
+
+        /**
+         * Asynchronous stat(2) - Get file status.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         */
+        function stat(path: PathLike): Promise<Stats>;
+
+        /**
+         * Asynchronous link(2) - Create a new link (also known as a hard link) to an existing file.
+         * @param existingPath A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.
+         */
+        function link(existingPath: PathLike, newPath: PathLike): Promise<void>;
+
+        /**
+         * Asynchronous unlink(2) - delete a name and possibly the file it refers to.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         */
+        function unlink(path: PathLike): Promise<void>;
+
+        /**
+         * Asynchronous fchmod(2) - Change permissions of a file.
+         * @param handle A `FileHandle`.
+         * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
+         */
+        function fchmod(handle: FileHandle, mode: string | number): Promise<void>;
+
+        /**
+         * Asynchronous chmod(2) - Change permissions of a file.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
+         */
+        function chmod(path: PathLike, mode: string | number): Promise<void>;
+
+        /**
+         * Asynchronous lchmod(2) - Change permissions of a file. Does not dereference symbolic links.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
+         */
+        function lchmod(path: PathLike, mode: string | number): Promise<void>;
+
+        /**
+         * Asynchronous lchown(2) - Change ownership of a file. Does not dereference symbolic links.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         */
+        function lchown(path: PathLike, uid: number, gid: number): Promise<void>;
+
+        /**
+         * Asynchronous fchown(2) - Change ownership of a file.
+         * @param handle A `FileHandle`.
+         */
+        function fchown(handle: FileHandle, uid: number, gid: number): Promise<void>;
+
+        /**
+         * Asynchronous chown(2) - Change ownership of a file.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         */
+        function chown(path: PathLike, uid: number, gid: number): Promise<void>;
+
+        /**
+         * Asynchronously change file timestamps of the file referenced by the supplied path.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * @param atime The last access time. If a string is provided, it will be coerced to number.
+         * @param mtime The last modified time. If a string is provided, it will be coerced to number.
+         */
+        function utimes(path: PathLike, atime: string | number | Date, mtime: string | number | Date): Promise<void>;
+
+        /**
+         * Asynchronously change file timestamps of the file referenced by the supplied `FileHandle`.
+         * @param handle A `FileHandle`.
+         * @param atime The last access time. If a string is provided, it will be coerced to number.
+         * @param mtime The last modified time. If a string is provided, it will be coerced to number.
+         */
+        function futimes(handle: FileHandle, atime: string | number | Date, mtime: string | number | Date): Promise<void>;
+
+        /**
+         * Asynchronous realpath(3) - return the canonicalized absolute pathname.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+         */
+        function realpath(path: PathLike, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): Promise<string>;
+
+        /**
+         * Asynchronous realpath(3) - return the canonicalized absolute pathname.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+         */
+        function realpath(path: PathLike, options: { encoding: "buffer" } | "buffer"): Promise<Buffer>;
+
+        /**
+         * Asynchronous realpath(3) - return the canonicalized absolute pathname.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+         */
+        function realpath(path: PathLike, options?: { encoding?: string | null } | string | null): Promise<string | Buffer>;
+
+        /**
+         * Asynchronously creates a unique temporary directory.
+         * Generates six random characters to be appended behind a required `prefix` to create a unique temporary directory.
+         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+         */
+        function mkdtemp(prefix: string, options?: { encoding?: BufferEncoding | null } | BufferEncoding | null): Promise<string>;
+
+        /**
+         * Asynchronously creates a unique temporary directory.
+         * Generates six random characters to be appended behind a required `prefix` to create a unique temporary directory.
+         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+         */
+        function mkdtemp(prefix: string, options: { encoding: "buffer" } | "buffer"): Promise<Buffer>;
+
+        /**
+         * Asynchronously creates a unique temporary directory.
+         * Generates six random characters to be appended behind a required `prefix` to create a unique temporary directory.
+         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
+         */
+        function mkdtemp(prefix: string, options?: { encoding?: string | null } | string | null): Promise<string | Buffer>;
+
+        /**
+         * Asynchronously writes data to a file, replacing the file if it already exists.
+         * It is unsafe to call `fsPromises.writeFile()` multiple times on the same file without waiting for the `Promise` to be resolved (or rejected).
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * URL support is _experimental_.
+         * If a `FileHandle` is provided, the underlying file will _not_ be closed automatically.
+         * @param data The data to write. If something other than a `Buffer` or `Uint8Array` is provided, the value is coerced to a string.
+         * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag.
+         * If `encoding` is not supplied, the default of `'utf8'` is used.
+         * If `mode` is not supplied, the default of `0o666` is used.
+         * If `mode` is a string, it is parsed as an octal integer.
+         * If `flag` is not supplied, the default of `'w'` is used.
+         */
+        function writeFile(path: PathLike | FileHandle, data: any, options?: { encoding?: string | null, mode?: string | number, flag?: string | number } | string | null): Promise<void>;
+
+        /**
+         * Asynchronously append data to a file, creating the file if it does not exist.
+         * @param file A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * URL support is _experimental_.
+         * If a `FileHandle` is provided, the underlying file will _not_ be closed automatically.
+         * @param data The data to write. If something other than a `Buffer` or `Uint8Array` is provided, the value is coerced to a string.
+         * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag.
+         * If `encoding` is not supplied, the default of `'utf8'` is used.
+         * If `mode` is not supplied, the default of `0o666` is used.
+         * If `mode` is a string, it is parsed as an octal integer.
+         * If `flag` is not supplied, the default of `'a'` is used.
+         */
+        function appendFile(path: PathLike | FileHandle, data: any, options?: { encoding?: string | null, mode?: string | number, flag?: string | number } | string | null): Promise<void>;
+
+        /**
+         * Asynchronously reads the entire contents of a file.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * If a `FileHandle` is provided, the underlying file will _not_ be closed automatically.
+         * @param options An object that may contain an optional flag.
+         * If a flag is not provided, it defaults to `'r'`.
+         */
+        function readFile(path: PathLike | FileHandle, options?: { encoding?: null, flag?: string | number } | null): Promise<Buffer>;
+
+        /**
+         * Asynchronously reads the entire contents of a file.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * If a `FileHandle` is provided, the underlying file will _not_ be closed automatically.
+         * @param options An object that may contain an optional flag.
+         * If a flag is not provided, it defaults to `'r'`.
+         */
+        function readFile(path: PathLike | FileHandle, options: { encoding: BufferEncoding, flag?: string | number } | BufferEncoding): Promise<string>;
+
+        /**
+         * Asynchronously reads the entire contents of a file.
+         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
+         * If a `FileHandle` is provided, the underlying file will _not_ be closed automatically.
+         * @param options An object that may contain an optional flag.
+         * If a flag is not provided, it defaults to `'r'`.
+         */
+        function readFile(path: PathLike | FileHandle, options?: { encoding?: string | null, flag?: string | number } | string | null): Promise<string | Buffer>;
+
+        function opendir(path: string, options?: OpenDirOptions): Promise<Dir>;
+    }
+}
diff --git a/setup-maven/node_modules/@types/node/globals.d.ts b/setup-maven/node_modules/@types/node/globals.d.ts
new file mode 100644
index 0000000..d9505f1
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/globals.d.ts
@@ -0,0 +1,1165 @@
+// This needs to be global to avoid TS2403 in case lib.dom.d.ts is present in the same build
+interface Console {
+    Console: NodeJS.ConsoleConstructor;
+    /**
+     * A simple assertion test that verifies whether `value` is truthy.
+     * If it is not, an `AssertionError` is thrown.
+     * If provided, the error `message` is formatted using `util.format()` and used as the error message.
+     */
+    assert(value: any, message?: string, ...optionalParams: any[]): void;
+    /**
+     * When `stdout` is a TTY, calling `console.clear()` will attempt to clear the TTY.
+     * When `stdout` is not a TTY, this method does nothing.
+     */
+    clear(): void;
+    /**
+     * Maintains an internal counter specific to `label` and outputs to `stdout` the number of times `console.count()` has been called with the given `label`.
+     */
+    count(label?: string): void;
+    /**
+     * Resets the internal counter specific to `label`.
+     */
+    countReset(label?: string): void;
+    /**
+     * The `console.debug()` function is an alias for {@link console.log()}.
+     */
+    debug(message?: any, ...optionalParams: any[]): void;
+    /**
+     * Uses {@link util.inspect()} on `obj` and prints the resulting string to `stdout`.
+     * This function bypasses any custom `inspect()` function defined on `obj`.
+     */
+    dir(obj: any, options?: NodeJS.InspectOptions): void;
+    /**
+     * This method calls {@link console.log()} passing it the arguments received. Please note that this method does not produce any XML formatting
+     */
+    dirxml(...data: any[]): void;
+    /**
+     * Prints to `stderr` with newline.
+     */
+    error(message?: any, ...optionalParams: any[]): void;
+    /**
+     * Increases indentation of subsequent lines by two spaces.
+     * If one or more `label`s are provided, those are printed first without the additional indentation.
+     */
+    group(...label: any[]): void;
+    /**
+     * The `console.groupCollapsed()` function is an alias for {@link console.group()}.
+     */
+    groupCollapsed(...label: any[]): void;
+    /**
+     * Decreases indentation of subsequent lines by two spaces.
+     */
+    groupEnd(): void;
+    /**
+     * The {@link console.info()} function is an alias for {@link console.log()}.
+     */
+    info(message?: any, ...optionalParams: any[]): void;
+    /**
+     * Prints to `stdout` with newline.
+     */
+    log(message?: any, ...optionalParams: any[]): void;
+    /**
+     * This method does not display anything unless used in the inspector.
+     *  Prints to `stdout` the array `array` formatted as a table.
+     */
+    table(tabularData: any, properties?: string[]): void;
+    /**
+     * Starts a timer that can be used to compute the duration of an operation. Timers are identified by a unique `label`.
+     */
+    time(label?: string): void;
+    /**
+     * Stops a timer that was previously started by calling {@link console.time()} and prints the result to `stdout`.
+     */
+    timeEnd(label?: string): void;
+    /**
+     * For a timer that was previously started by calling {@link console.time()}, prints the elapsed time and other `data` arguments to `stdout`.
+     */
+    timeLog(label?: string, ...data: any[]): void;
+    /**
+     * Prints to `stderr` the string 'Trace :', followed by the {@link util.format()} formatted message and stack trace to the current position in the code.
+     */
+    trace(message?: any, ...optionalParams: any[]): void;
+    /**
+     * The {@link console.warn()} function is an alias for {@link console.error()}.
+     */
+    warn(message?: any, ...optionalParams: any[]): void;
+
+    // --- Inspector mode only ---
+    /**
+     * This method does not display anything unless used in the inspector.
+     *  The console.markTimeline() method is the deprecated form of console.timeStamp().
+     *
+     * @deprecated Use console.timeStamp() instead.
+     */
+    markTimeline(label?: string): void;
+    /**
+     * This method does not display anything unless used in the inspector.
+     *  Starts a JavaScript CPU profile with an optional label.
+     */
+    profile(label?: string): void;
+    /**
+     * This method does not display anything unless used in the inspector.
+     *  Stops the current JavaScript CPU profiling session if one has been started and prints the report to the Profiles panel of the inspector.
+     */
+    profileEnd(label?: string): void;
+    /**
+     * This method does not display anything unless used in the inspector.
+     *  Adds an event with the label `label` to the Timeline panel of the inspector.
+     */
+    timeStamp(label?: string): void;
+    /**
+     * This method does not display anything unless used in the inspector.
+     *  The console.timeline() method is the deprecated form of console.time().
+     *
+     * @deprecated Use console.time() instead.
+     */
+    timeline(label?: string): void;
+    /**
+     * This method does not display anything unless used in the inspector.
+     *  The console.timelineEnd() method is the deprecated form of console.timeEnd().
+     *
+     * @deprecated Use console.timeEnd() instead.
+     */
+    timelineEnd(label?: string): void;
+}
+
+interface Error {
+    stack?: string;
+}
+
+// Declare "static" methods in Error
+interface ErrorConstructor {
+    /** Create .stack property on a target object */
+    captureStackTrace(targetObject: Object, constructorOpt?: Function): void;
+
+    /**
+     * Optional override for formatting stack traces
+     *
+     * @see https://github.com/v8/v8/wiki/Stack%20Trace%20API#customizing-stack-traces
+     */
+    prepareStackTrace?: (err: Error, stackTraces: NodeJS.CallSite[]) => any;
+
+    stackTraceLimit: number;
+}
+
+interface SymbolConstructor {
+    readonly observable: symbol;
+}
+
+// Node.js ESNEXT support
+interface String {
+    /** Removes whitespace from the left end of a string. */
+    trimLeft(): string;
+    /** Removes whitespace from the right end of a string. */
+    trimRight(): string;
+}
+
+interface ImportMeta {
+    url: string;
+}
+
+/*-----------------------------------------------*
+ *                                               *
+ *                   GLOBAL                      *
+ *                                               *
+ ------------------------------------------------*/
+declare var process: NodeJS.Process;
+declare var global: NodeJS.Global;
+declare var console: Console;
+
+declare var __filename: string;
+declare var __dirname: string;
+
+declare function setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timeout;
+declare namespace setTimeout {
+    function __promisify__(ms: number): Promise<void>;
+    function __promisify__<T>(ms: number, value: T): Promise<T>;
+}
+declare function clearTimeout(timeoutId: NodeJS.Timeout): void;
+declare function setInterval(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timeout;
+declare function clearInterval(intervalId: NodeJS.Timeout): void;
+declare function setImmediate(callback: (...args: any[]) => void, ...args: any[]): NodeJS.Immediate;
+declare namespace setImmediate {
+    function __promisify__(): Promise<void>;
+    function __promisify__<T>(value: T): Promise<T>;
+}
+declare function clearImmediate(immediateId: NodeJS.Immediate): void;
+
+declare function queueMicrotask(callback: () => void): void;
+
+// TODO: change to `type NodeRequireFunction = (id: string) => any;` in next mayor version.
+interface NodeRequireFunction {
+    /* tslint:disable-next-line:callable-types */
+    (id: string): any;
+}
+
+interface NodeRequireCache {
+    [path: string]: NodeModule;
+}
+
+interface NodeRequire extends NodeRequireFunction {
+    resolve: RequireResolve;
+    cache: NodeRequireCache;
+    /**
+     * @deprecated
+     */
+    extensions: NodeExtensions;
+    main: NodeModule | undefined;
+}
+
+interface RequireResolve {
+    (id: string, options?: { paths?: string[]; }): string;
+    paths(request: string): string[] | null;
+}
+
+interface NodeExtensions {
+    '.js': (m: NodeModule, filename: string) => any;
+    '.json': (m: NodeModule, filename: string) => any;
+    '.node': (m: NodeModule, filename: string) => any;
+    [ext: string]: (m: NodeModule, filename: string) => any;
+}
+
+declare var require: NodeRequire;
+
+interface NodeModule {
+    exports: any;
+    require: NodeRequireFunction;
+    id: string;
+    filename: string;
+    loaded: boolean;
+    parent: NodeModule | null;
+    children: NodeModule[];
+    paths: string[];
+}
+
+declare var module: NodeModule;
+
+// Same as module.exports
+declare var exports: any;
+
+// Buffer class
+type BufferEncoding = "ascii" | "utf8" | "utf-8" | "utf16le" | "ucs2" | "ucs-2" | "base64" | "latin1" | "binary" | "hex";
+
+interface Buffer {
+    constructor: typeof Buffer;
+}
+
+/**
+ * Raw data is stored in instances of the Buffer class.
+ * A Buffer is similar to an array of integers but corresponds to a raw memory allocation outside the V8 heap.  A Buffer cannot be resized.
+ * Valid string encodings: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'
+ */
+declare class Buffer extends Uint8Array {
+    /**
+     * Allocates a new buffer containing the given {str}.
+     *
+     * @param str String to store in buffer.
+     * @param encoding encoding to use, optional.  Default is 'utf8'
+     * @deprecated since v10.0.0 - Use `Buffer.from(string[, encoding])` instead.
+     */
+    constructor(str: string, encoding?: BufferEncoding);
+    /**
+     * Allocates a new buffer of {size} octets.
+     *
+     * @param size count of octets to allocate.
+     * @deprecated since v10.0.0 - Use `Buffer.alloc()` instead (also see `Buffer.allocUnsafe()`).
+     */
+    constructor(size: number);
+    /**
+     * Allocates a new buffer containing the given {array} of octets.
+     *
+     * @param array The octets to store.
+     * @deprecated since v10.0.0 - Use `Buffer.from(array)` instead.
+     */
+    constructor(array: Uint8Array);
+    /**
+     * Produces a Buffer backed by the same allocated memory as
+     * the given {ArrayBuffer}/{SharedArrayBuffer}.
+     *
+     *
+     * @param arrayBuffer The ArrayBuffer with which to share memory.
+     * @deprecated since v10.0.0 - Use `Buffer.from(arrayBuffer[, byteOffset[, length]])` instead.
+     */
+    constructor(arrayBuffer: ArrayBuffer | SharedArrayBuffer);
+    /**
+     * Allocates a new buffer containing the given {array} of octets.
+     *
+     * @param array The octets to store.
+     * @deprecated since v10.0.0 - Use `Buffer.from(array)` instead.
+     */
+    constructor(array: any[]);
+    /**
+     * Copies the passed {buffer} data onto a new {Buffer} instance.
+     *
+     * @param buffer The buffer to copy.
+     * @deprecated since v10.0.0 - Use `Buffer.from(buffer)` instead.
+     */
+    constructor(buffer: Buffer);
+    /**
+     * When passed a reference to the .buffer property of a TypedArray instance,
+     * the newly created Buffer will share the same allocated memory as the TypedArray.
+     * The optional {byteOffset} and {length} arguments specify a memory range
+     * within the {arrayBuffer} that will be shared by the Buffer.
+     *
+     * @param arrayBuffer The .buffer property of any TypedArray or a new ArrayBuffer()
+     */
+    static from(arrayBuffer: ArrayBuffer | SharedArrayBuffer, byteOffset?: number, length?: number): Buffer;
+    /**
+     * Creates a new Buffer using the passed {data}
+     * @param data data to create a new Buffer
+     */
+    static from(data: number[]): Buffer;
+    static from(data: Uint8Array): Buffer;
+    /**
+     * Creates a new Buffer containing the given JavaScript string {str}.
+     * If provided, the {encoding} parameter identifies the character encoding.
+     * If not provided, {encoding} defaults to 'utf8'.
+     */
+    static from(str: string, encoding?: BufferEncoding): Buffer;
+    /**
+     * Creates a new Buffer using the passed {data}
+     * @param values to create a new Buffer
+     */
+    static of(...items: number[]): Buffer;
+    /**
+     * Returns true if {obj} is a Buffer
+     *
+     * @param obj object to test.
+     */
+    static isBuffer(obj: any): obj is Buffer;
+    /**
+     * Returns true if {encoding} is a valid encoding argument.
+     * Valid string encodings in Node 0.12: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'
+     *
+     * @param encoding string to test.
+     */
+    static isEncoding(encoding: string): encoding is BufferEncoding;
+    /**
+     * Gives the actual byte length of a string. encoding defaults to 'utf8'.
+     * This is not the same as String.prototype.length since that returns the number of characters in a string.
+     *
+     * @param string string to test.
+     * @param encoding encoding used to evaluate (defaults to 'utf8')
+     */
+    static byteLength(
+        string: string | NodeJS.ArrayBufferView | ArrayBuffer | SharedArrayBuffer,
+        encoding?: BufferEncoding
+    ): number;
+    /**
+     * Returns a buffer which is the result of concatenating all the buffers in the list together.
+     *
+     * If the list has no items, or if the totalLength is 0, then it returns a zero-length buffer.
+     * If the list has exactly one item, then the first item of the list is returned.
+     * If the list has more than one item, then a new Buffer is created.
+     *
+     * @param list An array of Buffer objects to concatenate
+     * @param totalLength Total length of the buffers when concatenated.
+     *   If totalLength is not provided, it is read from the buffers in the list. However, this adds an additional loop to the function, so it is faster to provide the length explicitly.
+     */
+    static concat(list: Uint8Array[], totalLength?: number): Buffer;
+    /**
+     * The same as buf1.compare(buf2).
+     */
+    static compare(buf1: Uint8Array, buf2: Uint8Array): number;
+    /**
+     * Allocates a new buffer of {size} octets.
+     *
+     * @param size count of octets to allocate.
+     * @param fill if specified, buffer will be initialized by calling buf.fill(fill).
+     *    If parameter is omitted, buffer will be filled with zeros.
+     * @param encoding encoding used for call to buf.fill while initalizing
+     */
+    static alloc(size: number, fill?: string | Buffer | number, encoding?: BufferEncoding): Buffer;
+    /**
+     * Allocates a new buffer of {size} octets, leaving memory not initialized, so the contents
+     * of the newly created Buffer are unknown and may contain sensitive data.
+     *
+     * @param size count of octets to allocate
+     */
+    static allocUnsafe(size: number): Buffer;
+    /**
+     * Allocates a new non-pooled buffer of {size} octets, leaving memory not initialized, so the contents
+     * of the newly created Buffer are unknown and may contain sensitive data.
+     *
+     * @param size count of octets to allocate
+     */
+    static allocUnsafeSlow(size: number): Buffer;
+    /**
+     * This is the number of bytes used to determine the size of pre-allocated, internal Buffer instances used for pooling. This value may be modified.
+     */
+    static poolSize: number;
+
+    write(string: string, encoding?: BufferEncoding): number;
+    write(string: string, offset: number, encoding?: BufferEncoding): number;
+    write(string: string, offset: number, length: number, encoding?: BufferEncoding): number;
+    toString(encoding?: string, start?: number, end?: number): string;
+    toJSON(): { type: 'Buffer'; data: number[] };
+    equals(otherBuffer: Uint8Array): boolean;
+    compare(
+        otherBuffer: Uint8Array,
+        targetStart?: number,
+        targetEnd?: number,
+        sourceStart?: number,
+        sourceEnd?: number
+    ): number;
+    copy(targetBuffer: Uint8Array, targetStart?: number, sourceStart?: number, sourceEnd?: number): number;
+    /**
+     * Returns a new `Buffer` that references **the same memory as the original**, but offset and cropped by the start and end indices.
+     *
+     * This method is incompatible with `Uint8Array#slice()`, which returns a copy of the original memory.
+     *
+     * @param begin Where the new `Buffer` will start. Default: `0`.
+     * @param end Where the new `Buffer` will end (not inclusive). Default: `buf.length`.
+     */
+    slice(begin?: number, end?: number): Buffer;
+    /**
+     * Returns a new `Buffer` that references **the same memory as the original**, but offset and cropped by the start and end indices.
+     *
+     * This method is compatible with `Uint8Array#subarray()`.
+     *
+     * @param begin Where the new `Buffer` will start. Default: `0`.
+     * @param end Where the new `Buffer` will end (not inclusive). Default: `buf.length`.
+     */
+    subarray(begin?: number, end?: number): Buffer;
+    writeUIntLE(value: number, offset: number, byteLength: number): number;
+    writeUIntBE(value: number, offset: number, byteLength: number): number;
+    writeIntLE(value: number, offset: number, byteLength: number): number;
+    writeIntBE(value: number, offset: number, byteLength: number): number;
+    readUIntLE(offset: number, byteLength: number): number;
+    readUIntBE(offset: number, byteLength: number): number;
+    readIntLE(offset: number, byteLength: number): number;
+    readIntBE(offset: number, byteLength: number): number;
+    readUInt8(offset: number): number;
+    readUInt16LE(offset: number): number;
+    readUInt16BE(offset: number): number;
+    readUInt32LE(offset: number): number;
+    readUInt32BE(offset: number): number;
+    readInt8(offset: number): number;
+    readInt16LE(offset: number): number;
+    readInt16BE(offset: number): number;
+    readInt32LE(offset: number): number;
+    readInt32BE(offset: number): number;
+    readFloatLE(offset: number): number;
+    readFloatBE(offset: number): number;
+    readDoubleLE(offset: number): number;
+    readDoubleBE(offset: number): number;
+    reverse(): this;
+    swap16(): Buffer;
+    swap32(): Buffer;
+    swap64(): Buffer;
+    writeUInt8(value: number, offset: number): number;
+    writeUInt16LE(value: number, offset: number): number;
+    writeUInt16BE(value: number, offset: number): number;
+    writeUInt32LE(value: number, offset: number): number;
+    writeUInt32BE(value: number, offset: number): number;
+    writeInt8(value: number, offset: number): number;
+    writeInt16LE(value: number, offset: number): number;
+    writeInt16BE(value: number, offset: number): number;
+    writeInt32LE(value: number, offset: number): number;
+    writeInt32BE(value: number, offset: number): number;
+    writeFloatLE(value: number, offset: number): number;
+    writeFloatBE(value: number, offset: number): number;
+    writeDoubleLE(value: number, offset: number): number;
+    writeDoubleBE(value: number, offset: number): number;
+
+    fill(value: string | Uint8Array | number, offset?: number, end?: number, encoding?: BufferEncoding): this;
+
+    indexOf(value: string | number | Uint8Array, byteOffset?: number, encoding?: BufferEncoding): number;
+    lastIndexOf(value: string | number | Uint8Array, byteOffset?: number, encoding?: BufferEncoding): number;
+    entries(): IterableIterator<[number, number]>;
+    includes(value: string | number | Buffer, byteOffset?: number, encoding?: BufferEncoding): boolean;
+    keys(): IterableIterator<number>;
+    values(): IterableIterator<number>;
+}
+
+/*----------------------------------------------*
+*                                               *
+*               GLOBAL INTERFACES               *
+*                                               *
+*-----------------------------------------------*/
+declare namespace NodeJS {
+    interface InspectOptions {
+        /**
+         * If set to `true`, getters are going to be
+         * inspected as well. If set to `'get'` only getters without setter are going
+         * to be inspected. If set to `'set'` only getters having a corresponding
+         * setter are going to be inspected. This might cause side effects depending on
+         * the getter function.
+         * @default `false`
+         */
+        getters?: 'get' | 'set' | boolean;
+        showHidden?: boolean;
+        /**
+         * @default 2
+         */
+        depth?: number | null;
+        colors?: boolean;
+        customInspect?: boolean;
+        showProxy?: boolean;
+        maxArrayLength?: number | null;
+        breakLength?: number;
+        /**
+         * Setting this to `false` causes each object key
+         * to be displayed on a new line. It will also add new lines to text that is
+         * longer than `breakLength`. If set to a number, the most `n` inner elements
+         * are united on a single line as long as all properties fit into
+         * `breakLength`. Short array elements are also grouped together. Note that no
+         * text will be reduced below 16 characters, no matter the `breakLength` size.
+         * For more information, see the example below.
+         * @default `true`
+         */
+        compact?: boolean | number;
+        sorted?: boolean | ((a: string, b: string) => number);
+    }
+
+    interface ConsoleConstructorOptions {
+        stdout: WritableStream;
+        stderr?: WritableStream;
+        ignoreErrors?: boolean;
+        colorMode?: boolean | 'auto';
+        inspectOptions?: InspectOptions;
+    }
+
+    interface ConsoleConstructor {
+        prototype: Console;
+        new(stdout: WritableStream, stderr?: WritableStream, ignoreErrors?: boolean): Console;
+        new(options: ConsoleConstructorOptions): Console;
+    }
+
+    interface CallSite {
+        /**
+         * Value of "this"
+         */
+        getThis(): any;
+
+        /**
+         * Type of "this" as a string.
+         * This is the name of the function stored in the constructor field of
+         * "this", if available.  Otherwise the object's [[Class]] internal
+         * property.
+         */
+        getTypeName(): string | null;
+
+        /**
+         * Current function
+         */
+        getFunction(): Function | undefined;
+
+        /**
+         * Name of the current function, typically its name property.
+         * If a name property is not available an attempt will be made to try
+         * to infer a name from the function's context.
+         */
+        getFunctionName(): string | null;
+
+        /**
+         * Name of the property [of "this" or one of its prototypes] that holds
+         * the current function
+         */
+        getMethodName(): string | null;
+
+        /**
+         * Name of the script [if this function was defined in a script]
+         */
+        getFileName(): string | null;
+
+        /**
+         * Current line number [if this function was defined in a script]
+         */
+        getLineNumber(): number | null;
+
+        /**
+         * Current column number [if this function was defined in a script]
+         */
+        getColumnNumber(): number | null;
+
+        /**
+         * A call site object representing the location where eval was called
+         * [if this function was created using a call to eval]
+         */
+        getEvalOrigin(): string | undefined;
+
+        /**
+         * Is this a toplevel invocation, that is, is "this" the global object?
+         */
+        isToplevel(): boolean;
+
+        /**
+         * Does this call take place in code defined by a call to eval?
+         */
+        isEval(): boolean;
+
+        /**
+         * Is this call in native V8 code?
+         */
+        isNative(): boolean;
+
+        /**
+         * Is this a constructor call?
+         */
+        isConstructor(): boolean;
+    }
+
+    interface ErrnoException extends Error {
+        errno?: number;
+        code?: string;
+        path?: string;
+        syscall?: string;
+        stack?: string;
+    }
+
+    class EventEmitter {
+        addListener(event: string | symbol, listener: (...args: any[]) => void): this;
+        on(event: string | symbol, listener: (...args: any[]) => void): this;
+        once(event: string | symbol, listener: (...args: any[]) => void): this;
+        removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
+        off(event: string | symbol, listener: (...args: any[]) => void): this;
+        removeAllListeners(event?: string | symbol): this;
+        setMaxListeners(n: number): this;
+        getMaxListeners(): number;
+        listeners(event: string | symbol): Function[];
+        rawListeners(event: string | symbol): Function[];
+        emit(event: string | symbol, ...args: any[]): boolean;
+        listenerCount(type: string | symbol): number;
+        // Added in Node 6...
+        prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
+        prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
+        eventNames(): Array<string | symbol>;
+    }
+
+    interface ReadableStream extends EventEmitter {
+        readable: boolean;
+        read(size?: number): string | Buffer;
+        setEncoding(encoding: string): this;
+        pause(): this;
+        resume(): this;
+        isPaused(): boolean;
+        pipe<T extends WritableStream>(destination: T, options?: { end?: boolean; }): T;
+        unpipe(destination?: WritableStream): this;
+        unshift(chunk: string | Uint8Array, encoding?: BufferEncoding): void;
+        wrap(oldStream: ReadableStream): this;
+        [Symbol.asyncIterator](): AsyncIterableIterator<string | Buffer>;
+    }
+
+    interface WritableStream extends EventEmitter {
+        writable: boolean;
+        write(buffer: Uint8Array | string, cb?: (err?: Error | null) => void): boolean;
+        write(str: string, encoding?: string, cb?: (err?: Error | null) => void): boolean;
+        end(cb?: () => void): void;
+        end(data: string | Uint8Array, cb?: () => void): void;
+        end(str: string, encoding?: string, cb?: () => void): void;
+    }
+
+    interface ReadWriteStream extends ReadableStream, WritableStream { }
+
+    interface Domain extends EventEmitter {
+        run<T>(fn: (...args: any[]) => T, ...args: any[]): T;
+        add(emitter: EventEmitter | Timer): void;
+        remove(emitter: EventEmitter | Timer): void;
+        bind<T extends Function>(cb: T): T;
+        intercept<T extends Function>(cb: T): T;
+
+        addListener(event: string, listener: (...args: any[]) => void): this;
+        on(event: string, listener: (...args: any[]) => void): this;
+        once(event: string, listener: (...args: any[]) => void): this;
+        removeListener(event: string, listener: (...args: any[]) => void): this;
+        removeAllListeners(event?: string): this;
+    }
+
+    interface MemoryUsage {
+        rss: number;
+        heapTotal: number;
+        heapUsed: number;
+        external: number;
+    }
+
+    interface CpuUsage {
+        user: number;
+        system: number;
+    }
+
+    interface ProcessRelease {
+        name: string;
+        sourceUrl?: string;
+        headersUrl?: string;
+        libUrl?: string;
+        lts?: string;
+    }
+
+    interface ProcessVersions {
+        http_parser: string;
+        node: string;
+        v8: string;
+        ares: string;
+        uv: string;
+        zlib: string;
+        modules: string;
+        openssl: string;
+    }
+
+    type Platform = 'aix'
+        | 'android'
+        | 'darwin'
+        | 'freebsd'
+        | 'linux'
+        | 'openbsd'
+        | 'sunos'
+        | 'win32'
+        | 'cygwin'
+        | 'netbsd';
+
+    type Signals =
+        "SIGABRT" | "SIGALRM" | "SIGBUS" | "SIGCHLD" | "SIGCONT" | "SIGFPE" | "SIGHUP" | "SIGILL" | "SIGINT" | "SIGIO" |
+        "SIGIOT" | "SIGKILL" | "SIGPIPE" | "SIGPOLL" | "SIGPROF" | "SIGPWR" | "SIGQUIT" | "SIGSEGV" | "SIGSTKFLT" |
+        "SIGSTOP" | "SIGSYS" | "SIGTERM" | "SIGTRAP" | "SIGTSTP" | "SIGTTIN" | "SIGTTOU" | "SIGUNUSED" | "SIGURG" |
+        "SIGUSR1" | "SIGUSR2" | "SIGVTALRM" | "SIGWINCH" | "SIGXCPU" | "SIGXFSZ" | "SIGBREAK" | "SIGLOST" | "SIGINFO";
+
+    type MultipleResolveType = 'resolve' | 'reject';
+
+    type BeforeExitListener = (code: number) => void;
+    type DisconnectListener = () => void;
+    type ExitListener = (code: number) => void;
+    type RejectionHandledListener = (promise: Promise<any>) => void;
+    type UncaughtExceptionListener = (error: Error) => void;
+    type UnhandledRejectionListener = (reason: {} | null | undefined, promise: Promise<any>) => void;
+    type WarningListener = (warning: Error) => void;
+    type MessageListener = (message: any, sendHandle: any) => void;
+    type SignalsListener = (signal: Signals) => void;
+    type NewListenerListener = (type: string | symbol, listener: (...args: any[]) => void) => void;
+    type RemoveListenerListener = (type: string | symbol, listener: (...args: any[]) => void) => void;
+    type MultipleResolveListener = (type: MultipleResolveType, promise: Promise<any>, value: any) => void;
+
+    interface Socket extends ReadWriteStream {
+        isTTY?: true;
+    }
+
+    interface ProcessEnv {
+        [key: string]: string | undefined;
+    }
+
+    interface HRTime {
+        (time?: [number, number]): [number, number];
+    }
+
+    interface ProcessReport {
+        /**
+         * Directory where the report is written.
+         * working directory of the Node.js process.
+         * @default '' indicating that reports are written to the current
+         */
+        directory: string;
+
+        /**
+         * Filename where the report is written.
+         * The default value is the empty string.
+         * @default '' the output filename will be comprised of a timestamp,
+         * PID, and sequence number.
+         */
+        filename: string;
+
+        /**
+         * Returns a JSON-formatted diagnostic report for the running process.
+         * The report's JavaScript stack trace is taken from err, if present.
+         */
+        getReport(err?: Error): string;
+
+        /**
+         * If true, a diagnostic report is generated on fatal errors,
+         * such as out of memory errors or failed C++ assertions.
+         * @default false
+         */
+        reportOnFatalError: boolean;
+
+        /**
+         * If true, a diagnostic report is generated when the process
+         * receives the signal specified by process.report.signal.
+         * @defaul false
+         */
+        reportOnSignal: boolean;
+
+        /**
+         * If true, a diagnostic report is generated on uncaught exception.
+         * @default false
+         */
+        reportOnUncaughtException: boolean;
+
+        /**
+         * The signal used to trigger the creation of a diagnostic report.
+         * @default 'SIGUSR2'
+         */
+        signal: Signals;
+
+        /**
+         * Writes a diagnostic report to a file. If filename is not provided, the default filename
+         * includes the date, time, PID, and a sequence number.
+         * The report's JavaScript stack trace is taken from err, if present.
+         *
+         * @param fileName Name of the file where the report is written.
+         * This should be a relative path, that will be appended to the directory specified in
+         * `process.report.directory`, or the current working directory of the Node.js process,
+         * if unspecified.
+         * @param error A custom error used for reporting the JavaScript stack.
+         * @return Filename of the generated report.
+         */
+        writeReport(fileName?: string): string;
+        writeReport(error?: Error): string;
+        writeReport(fileName?: string, err?: Error): string;
+    }
+
+    interface ResourceUsage {
+        fsRead: number;
+        fsWrite: number;
+        involuntaryContextSwitches: number;
+        ipcReceived: number;
+        ipcSent: number;
+        majorPageFault: number;
+        maxRSS: number;
+        minorPageFault: number;
+        sharedMemorySize: number;
+        signalsCount: number;
+        swappedOut: number;
+        systemCPUTime: number;
+        unsharedDataSize: number;
+        unsharedStackSize: number;
+        userCPUTime: number;
+        voluntaryContextSwitches: number;
+    }
+
+    interface Process extends EventEmitter {
+        /**
+         * Can also be a tty.WriteStream, not typed due to limitation.s
+         */
+        stdout: WriteStream;
+        /**
+         * Can also be a tty.WriteStream, not typed due to limitation.s
+         */
+        stderr: WriteStream;
+        stdin: ReadStream;
+        openStdin(): Socket;
+        argv: string[];
+        argv0: string;
+        execArgv: string[];
+        execPath: string;
+        abort(): void;
+        chdir(directory: string): void;
+        cwd(): string;
+        debugPort: number;
+        emitWarning(warning: string | Error, name?: string, ctor?: Function): void;
+        env: ProcessEnv;
+        exit(code?: number): never;
+        exitCode?: number;
+        getgid(): number;
+        setgid(id: number | string): void;
+        getuid(): number;
+        setuid(id: number | string): void;
+        geteuid(): number;
+        seteuid(id: number | string): void;
+        getegid(): number;
+        setegid(id: number | string): void;
+        getgroups(): number[];
+        setgroups(groups: Array<string | number>): void;
+        setUncaughtExceptionCaptureCallback(cb: ((err: Error) => void) | null): void;
+        hasUncaughtExceptionCaptureCallback(): boolean;
+        version: string;
+        versions: ProcessVersions;
+        config: {
+            target_defaults: {
+                cflags: any[];
+                default_configuration: string;
+                defines: string[];
+                include_dirs: string[];
+                libraries: string[];
+            };
+            variables: {
+                clang: number;
+                host_arch: string;
+                node_install_npm: boolean;
+                node_install_waf: boolean;
+                node_prefix: string;
+                node_shared_openssl: boolean;
+                node_shared_v8: boolean;
+                node_shared_zlib: boolean;
+                node_use_dtrace: boolean;
+                node_use_etw: boolean;
+                node_use_openssl: boolean;
+                target_arch: string;
+                v8_no_strict_aliasing: number;
+                v8_use_snapshot: boolean;
+                visibility: string;
+            };
+        };
+        kill(pid: number, signal?: string | number): void;
+        pid: number;
+        ppid: number;
+        title: string;
+        arch: string;
+        platform: Platform;
+        mainModule?: NodeModule;
+        memoryUsage(): MemoryUsage;
+        cpuUsage(previousValue?: CpuUsage): CpuUsage;
+        nextTick(callback: Function, ...args: any[]): void;
+        release: ProcessRelease;
+        features: {
+            inspector: boolean;
+            debug: boolean;
+            uv: boolean;
+            ipv6: boolean;
+            tls_alpn: boolean;
+            tls_sni: boolean;
+            tls_ocsp: boolean;
+            tls: boolean;
+        };
+        /**
+         * Can only be set if not in worker thread.
+         */
+        umask(mask?: number): number;
+        uptime(): number;
+        hrtime: HRTime;
+        domain: Domain;
+
+        // Worker
+        send?(message: any, sendHandle?: any, options?: { swallowErrors?: boolean}, callback?: (error: Error | null) => void): boolean;
+        disconnect(): void;
+        connected: boolean;
+
+        /**
+         * The `process.allowedNodeEnvironmentFlags` property is a special,
+         * read-only `Set` of flags allowable within the [`NODE_OPTIONS`][]
+         * environment variable.
+         */
+        allowedNodeEnvironmentFlags: ReadonlySet<string>;
+
+        /**
+         * Only available with `--experimental-report`
+         */
+        report?: ProcessReport;
+
+        resourceUsage(): ResourceUsage;
+
+        /**
+         * EventEmitter
+         *   1. beforeExit
+         *   2. disconnect
+         *   3. exit
+         *   4. message
+         *   5. rejectionHandled
+         *   6. uncaughtException
+         *   7. unhandledRejection
+         *   8. warning
+         *   9. message
+         *  10. <All OS Signals>
+         *  11. newListener/removeListener inherited from EventEmitter
+         */
+        addListener(event: "beforeExit", listener: BeforeExitListener): this;
+        addListener(event: "disconnect", listener: DisconnectListener): this;
+        addListener(event: "exit", listener: ExitListener): this;
+        addListener(event: "rejectionHandled", listener: RejectionHandledListener): this;
+        addListener(event: "uncaughtException", listener: UncaughtExceptionListener): this;
+        addListener(event: "unhandledRejection", listener: UnhandledRejectionListener): this;
+        addListener(event: "warning", listener: WarningListener): this;
+        addListener(event: "message", listener: MessageListener): this;
+        addListener(event: Signals, listener: SignalsListener): this;
+        addListener(event: "newListener", listener: NewListenerListener): this;
+        addListener(event: "removeListener", listener: RemoveListenerListener): this;
+        addListener(event: "multipleResolves", listener: MultipleResolveListener): this;
+
+        emit(event: "beforeExit", code: number): boolean;
+        emit(event: "disconnect"): boolean;
+        emit(event: "exit", code: number): boolean;
+        emit(event: "rejectionHandled", promise: Promise<any>): boolean;
+        emit(event: "uncaughtException", error: Error): boolean;
+        emit(event: "unhandledRejection", reason: any, promise: Promise<any>): boolean;
+        emit(event: "warning", warning: Error): boolean;
+        emit(event: "message", message: any, sendHandle: any): this;
+        emit(event: Signals, signal: Signals): boolean;
+        emit(event: "newListener", eventName: string | symbol, listener: (...args: any[]) => void): this;
+        emit(event: "removeListener", eventName: string, listener: (...args: any[]) => void): this;
+        emit(event: "multipleResolves", listener: MultipleResolveListener): this;
+
+        on(event: "beforeExit", listener: BeforeExitListener): this;
+        on(event: "disconnect", listener: DisconnectListener): this;
+        on(event: "exit", listener: ExitListener): this;
+        on(event: "rejectionHandled", listener: RejectionHandledListener): this;
+        on(event: "uncaughtException", listener: UncaughtExceptionListener): this;
+        on(event: "unhandledRejection", listener: UnhandledRejectionListener): this;
+        on(event: "warning", listener: WarningListener): this;
+        on(event: "message", listener: MessageListener): this;
+        on(event: Signals, listener: SignalsListener): this;
+        on(event: "newListener", listener: NewListenerListener): this;
+        on(event: "removeListener", listener: RemoveListenerListener): this;
+        on(event: "multipleResolves", listener: MultipleResolveListener): this;
+
+        once(event: "beforeExit", listener: BeforeExitListener): this;
+        once(event: "disconnect", listener: DisconnectListener): this;
+        once(event: "exit", listener: ExitListener): this;
+        once(event: "rejectionHandled", listener: RejectionHandledListener): this;
+        once(event: "uncaughtException", listener: UncaughtExceptionListener): this;
+        once(event: "unhandledRejection", listener: UnhandledRejectionListener): this;
+        once(event: "warning", listener: WarningListener): this;
+        once(event: "message", listener: MessageListener): this;
+        once(event: Signals, listener: SignalsListener): this;
+        once(event: "newListener", listener: NewListenerListener): this;
+        once(event: "removeListener", listener: RemoveListenerListener): this;
+        once(event: "multipleResolves", listener: MultipleResolveListener): this;
+
+        prependListener(event: "beforeExit", listener: BeforeExitListener): this;
+        prependListener(event: "disconnect", listener: DisconnectListener): this;
+        prependListener(event: "exit", listener: ExitListener): this;
+        prependListener(event: "rejectionHandled", listener: RejectionHandledListener): this;
+        prependListener(event: "uncaughtException", listener: UncaughtExceptionListener): this;
+        prependListener(event: "unhandledRejection", listener: UnhandledRejectionListener): this;
+        prependListener(event: "warning", listener: WarningListener): this;
+        prependListener(event: "message", listener: MessageListener): this;
+        prependListener(event: Signals, listener: SignalsListener): this;
+        prependListener(event: "newListener", listener: NewListenerListener): this;
+        prependListener(event: "removeListener", listener: RemoveListenerListener): this;
+        prependListener(event: "multipleResolves", listener: MultipleResolveListener): this;
+
+        prependOnceListener(event: "beforeExit", listener: BeforeExitListener): this;
+        prependOnceListener(event: "disconnect", listener: DisconnectListener): this;
+        prependOnceListener(event: "exit", listener: ExitListener): this;
+        prependOnceListener(event: "rejectionHandled", listener: RejectionHandledListener): this;
+        prependOnceListener(event: "uncaughtException", listener: UncaughtExceptionListener): this;
+        prependOnceListener(event: "unhandledRejection", listener: UnhandledRejectionListener): this;
+        prependOnceListener(event: "warning", listener: WarningListener): this;
+        prependOnceListener(event: "message", listener: MessageListener): this;
+        prependOnceListener(event: Signals, listener: SignalsListener): this;
+        prependOnceListener(event: "newListener", listener: NewListenerListener): this;
+        prependOnceListener(event: "removeListener", listener: RemoveListenerListener): this;
+        prependOnceListener(event: "multipleResolves", listener: MultipleResolveListener): this;
+
+        listeners(event: "beforeExit"): BeforeExitListener[];
+        listeners(event: "disconnect"): DisconnectListener[];
+        listeners(event: "exit"): ExitListener[];
+        listeners(event: "rejectionHandled"): RejectionHandledListener[];
+        listeners(event: "uncaughtException"): UncaughtExceptionListener[];
+        listeners(event: "unhandledRejection"): UnhandledRejectionListener[];
+        listeners(event: "warning"): WarningListener[];
+        listeners(event: "message"): MessageListener[];
+        listeners(event: Signals): SignalsListener[];
+        listeners(event: "newListener"): NewListenerListener[];
+        listeners(event: "removeListener"): RemoveListenerListener[];
+        listeners(event: "multipleResolves"): MultipleResolveListener[];
+    }
+
+    interface Global {
+        Array: typeof Array;
+        ArrayBuffer: typeof ArrayBuffer;
+        Boolean: typeof Boolean;
+        Buffer: typeof Buffer;
+        DataView: typeof DataView;
+        Date: typeof Date;
+        Error: typeof Error;
+        EvalError: typeof EvalError;
+        Float32Array: typeof Float32Array;
+        Float64Array: typeof Float64Array;
+        Function: typeof Function;
+        GLOBAL: Global;
+        Infinity: typeof Infinity;
+        Int16Array: typeof Int16Array;
+        Int32Array: typeof Int32Array;
+        Int8Array: typeof Int8Array;
+        Intl: typeof Intl;
+        JSON: typeof JSON;
+        Map: MapConstructor;
+        Math: typeof Math;
+        NaN: typeof NaN;
+        Number: typeof Number;
+        Object: typeof Object;
+        Promise: Function;
+        RangeError: typeof RangeError;
+        ReferenceError: typeof ReferenceError;
+        RegExp: typeof RegExp;
+        Set: SetConstructor;
+        String: typeof String;
+        Symbol: Function;
+        SyntaxError: typeof SyntaxError;
+        TypeError: typeof TypeError;
+        URIError: typeof URIError;
+        Uint16Array: typeof Uint16Array;
+        Uint32Array: typeof Uint32Array;
+        Uint8Array: typeof Uint8Array;
+        Uint8ClampedArray: Function;
+        WeakMap: WeakMapConstructor;
+        WeakSet: WeakSetConstructor;
+        clearImmediate: (immediateId: Immediate) => void;
+        clearInterval: (intervalId: Timeout) => void;
+        clearTimeout: (timeoutId: Timeout) => void;
+        console: typeof console;
+        decodeURI: typeof decodeURI;
+        decodeURIComponent: typeof decodeURIComponent;
+        encodeURI: typeof encodeURI;
+        encodeURIComponent: typeof encodeURIComponent;
+        escape: (str: string) => string;
+        eval: typeof eval;
+        global: Global;
+        isFinite: typeof isFinite;
+        isNaN: typeof isNaN;
+        parseFloat: typeof parseFloat;
+        parseInt: typeof parseInt;
+        process: Process;
+        root: Global;
+        setImmediate: (callback: (...args: any[]) => void, ...args: any[]) => Immediate;
+        setInterval: (callback: (...args: any[]) => void, ms: number, ...args: any[]) => Timeout;
+        setTimeout: (callback: (...args: any[]) => void, ms: number, ...args: any[]) => Timeout;
+        queueMicrotask: typeof queueMicrotask;
+        undefined: typeof undefined;
+        unescape: (str: string) => string;
+        gc: () => void;
+        v8debug?: any;
+    }
+
+    // compatibility with older typings
+    interface Timer {
+        hasRef(): boolean;
+        ref(): this;
+        refresh(): this;
+        unref(): this;
+    }
+
+    class Immediate {
+        hasRef(): boolean;
+        ref(): this;
+        unref(): this;
+        _onImmediate: Function; // to distinguish it from the Timeout class
+    }
+
+    class Timeout implements Timer {
+        hasRef(): boolean;
+        ref(): this;
+        refresh(): this;
+        unref(): this;
+    }
+
+    class Module {
+        static runMain(): void;
+        static wrap(code: string): string;
+
+        /**
+         * @deprecated Deprecated since: v12.2.0. Please use createRequire() instead.
+         */
+        static createRequireFromPath(path: string): NodeRequire;
+        static createRequire(path: string): NodeRequire;
+        static builtinModules: string[];
+
+        static Module: typeof Module;
+
+        exports: any;
+        require: NodeRequireFunction;
+        id: string;
+        filename: string;
+        loaded: boolean;
+        parent: Module | null;
+        children: Module[];
+        paths: string[];
+
+        constructor(id: string, parent?: Module);
+    }
+
+    type TypedArray = Uint8Array | Uint8ClampedArray | Uint16Array | Uint32Array | Int8Array | Int16Array | Int32Array | Float32Array | Float64Array;
+    type ArrayBufferView = TypedArray | DataView;
+
+    // The value type here is a "poor man's `unknown`". When these types support TypeScript
+    // 3.0+, we can replace this with `unknown`.
+    type PoorMansUnknown = {} | null | undefined;
+}
diff --git a/setup-maven/node_modules/@types/node/http.d.ts b/setup-maven/node_modules/@types/node/http.d.ts
new file mode 100644
index 0000000..139a9fb
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/http.d.ts
@@ -0,0 +1,371 @@
+declare module "http" {
+    import * as events from "events";
+    import * as stream from "stream";
+    import { URL } from "url";
+    import { Socket, Server as NetServer } from "net";
+
+    // incoming headers will never contain number
+    interface IncomingHttpHeaders {
+        'accept'?: string;
+        'accept-language'?: string;
+        'accept-patch'?: string;
+        'accept-ranges'?: string;
+        'access-control-allow-credentials'?: string;
+        'access-control-allow-headers'?: string;
+        'access-control-allow-methods'?: string;
+        'access-control-allow-origin'?: string;
+        'access-control-expose-headers'?: string;
+        'access-control-max-age'?: string;
+        'age'?: string;
+        'allow'?: string;
+        'alt-svc'?: string;
+        'authorization'?: string;
+        'cache-control'?: string;
+        'connection'?: string;
+        'content-disposition'?: string;
+        'content-encoding'?: string;
+        'content-language'?: string;
+        'content-length'?: string;
+        'content-location'?: string;
+        'content-range'?: string;
+        'content-type'?: string;
+        'cookie'?: string;
+        'date'?: string;
+        'expect'?: string;
+        'expires'?: string;
+        'forwarded'?: string;
+        'from'?: string;
+        'host'?: string;
+        'if-match'?: string;
+        'if-modified-since'?: string;
+        'if-none-match'?: string;
+        'if-unmodified-since'?: string;
+        'last-modified'?: string;
+        'location'?: string;
+        'pragma'?: string;
+        'proxy-authenticate'?: string;
+        'proxy-authorization'?: string;
+        'public-key-pins'?: string;
+        'range'?: string;
+        'referer'?: string;
+        'retry-after'?: string;
+        'set-cookie'?: string[];
+        'strict-transport-security'?: string;
+        'tk'?: string;
+        'trailer'?: string;
+        'transfer-encoding'?: string;
+        'upgrade'?: string;
+        'user-agent'?: string;
+        'vary'?: string;
+        'via'?: string;
+        'warning'?: string;
+        'www-authenticate'?: string;
+        [header: string]: string | string[] | undefined;
+    }
+
+    // outgoing headers allows numbers (as they are converted internally to strings)
+    interface OutgoingHttpHeaders {
+        [header: string]: number | string | string[] | undefined;
+    }
+
+    interface ClientRequestArgs {
+        protocol?: string | null;
+        host?: string | null;
+        hostname?: string | null;
+        family?: number;
+        port?: number | string | null;
+        defaultPort?: number | string;
+        localAddress?: string;
+        socketPath?: string;
+        method?: string;
+        path?: string | null;
+        headers?: OutgoingHttpHeaders;
+        auth?: string | null;
+        agent?: Agent | boolean;
+        _defaultAgent?: Agent;
+        timeout?: number;
+        setHost?: boolean;
+        // https://github.com/nodejs/node/blob/master/lib/_http_client.js#L278
+        createConnection?: (options: ClientRequestArgs, oncreate: (err: Error, socket: Socket) => void) => Socket;
+    }
+
+    interface ServerOptions {
+        IncomingMessage?: typeof IncomingMessage;
+        ServerResponse?: typeof ServerResponse;
+    }
+
+    type RequestListener = (req: IncomingMessage, res: ServerResponse) => void;
+
+    class Server extends NetServer {
+        constructor(requestListener?: RequestListener);
+        constructor(options: ServerOptions, requestListener?: RequestListener);
+
+        setTimeout(msecs?: number, callback?: () => void): this;
+        setTimeout(callback: () => void): this;
+        /**
+         * Limits maximum incoming headers count. If set to 0, no limit will be applied.
+         * @default 2000
+         * {@link https://nodejs.org/api/http.html#http_server_maxheaderscount}
+         */
+        maxHeadersCount: number | null;
+        timeout: number;
+        /**
+         * Limit the amount of time the parser will wait to receive the complete HTTP headers.
+         * @default 40000
+         * {@link https://nodejs.org/api/http.html#http_server_headerstimeout}
+         */
+        headersTimeout: number;
+        keepAliveTimeout: number;
+    }
+
+    // https://github.com/nodejs/node/blob/master/lib/_http_outgoing.js
+    class OutgoingMessage extends stream.Writable {
+        upgrading: boolean;
+        chunkedEncoding: boolean;
+        shouldKeepAlive: boolean;
+        useChunkedEncodingByDefault: boolean;
+        sendDate: boolean;
+        finished: boolean;
+        headersSent: boolean;
+        connection: Socket;
+
+        constructor();
+
+        setTimeout(msecs: number, callback?: () => void): this;
+        setHeader(name: string, value: number | string | string[]): void;
+        getHeader(name: string): number | string | string[] | undefined;
+        getHeaders(): OutgoingHttpHeaders;
+        getHeaderNames(): string[];
+        hasHeader(name: string): boolean;
+        removeHeader(name: string): void;
+        addTrailers(headers: OutgoingHttpHeaders | Array<[string, string]>): void;
+        flushHeaders(): void;
+    }
+
+    // https://github.com/nodejs/node/blob/master/lib/_http_server.js#L108-L256
+    class ServerResponse extends OutgoingMessage {
+        statusCode: number;
+        statusMessage: string;
+        writableFinished: boolean;
+
+        constructor(req: IncomingMessage);
+
+        assignSocket(socket: Socket): void;
+        detachSocket(socket: Socket): void;
+        // https://github.com/nodejs/node/blob/master/test/parallel/test-http-write-callbacks.js#L53
+        // no args in writeContinue callback
+        writeContinue(callback?: () => void): void;
+        writeHead(statusCode: number, reasonPhrase?: string, headers?: OutgoingHttpHeaders): this;
+        writeHead(statusCode: number, headers?: OutgoingHttpHeaders): this;
+        writeProcessing(): void;
+    }
+
+    interface InformationEvent {
+        statusCode: number;
+        statusMessage: string;
+        httpVersion: string;
+        httpVersionMajor: number;
+        httpVersionMinor: number;
+        headers: IncomingHttpHeaders;
+        rawHeaders: string[];
+    }
+
+    // https://github.com/nodejs/node/blob/master/lib/_http_client.js#L77
+    class ClientRequest extends OutgoingMessage {
+        connection: Socket;
+        socket: Socket;
+        aborted: number;
+
+        constructor(url: string | URL | ClientRequestArgs, cb?: (res: IncomingMessage) => void);
+
+        readonly path: string;
+        abort(): void;
+        onSocket(socket: Socket): void;
+        setTimeout(timeout: number, callback?: () => void): this;
+        setNoDelay(noDelay?: boolean): void;
+        setSocketKeepAlive(enable?: boolean, initialDelay?: number): void;
+
+        addListener(event: 'abort', listener: () => void): this;
+        addListener(event: 'connect', listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this;
+        addListener(event: 'continue', listener: () => void): this;
+        addListener(event: 'information', listener: (info: InformationEvent) => void): this;
+        addListener(event: 'response', listener: (response: IncomingMessage) => void): this;
+        addListener(event: 'socket', listener: (socket: Socket) => void): this;
+        addListener(event: 'timeout', listener: () => void): this;
+        addListener(event: 'upgrade', listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this;
+        addListener(event: 'close', listener: () => void): this;
+        addListener(event: 'drain', listener: () => void): this;
+        addListener(event: 'error', listener: (err: Error) => void): this;
+        addListener(event: 'finish', listener: () => void): this;
+        addListener(event: 'pipe', listener: (src: stream.Readable) => void): this;
+        addListener(event: 'unpipe', listener: (src: stream.Readable) => void): this;
+        addListener(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        on(event: 'abort', listener: () => void): this;
+        on(event: 'connect', listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this;
+        on(event: 'continue', listener: () => void): this;
+        on(event: 'information', listener: (info: InformationEvent) => void): this;
+        on(event: 'response', listener: (response: IncomingMessage) => void): this;
+        on(event: 'socket', listener: (socket: Socket) => void): this;
+        on(event: 'timeout', listener: () => void): this;
+        on(event: 'upgrade', listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this;
+        on(event: 'close', listener: () => void): this;
+        on(event: 'drain', listener: () => void): this;
+        on(event: 'error', listener: (err: Error) => void): this;
+        on(event: 'finish', listener: () => void): this;
+        on(event: 'pipe', listener: (src: stream.Readable) => void): this;
+        on(event: 'unpipe', listener: (src: stream.Readable) => void): this;
+        on(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        once(event: 'abort', listener: () => void): this;
+        once(event: 'connect', listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this;
+        once(event: 'continue', listener: () => void): this;
+        once(event: 'information', listener: (info: InformationEvent) => void): this;
+        once(event: 'response', listener: (response: IncomingMessage) => void): this;
+        once(event: 'socket', listener: (socket: Socket) => void): this;
+        once(event: 'timeout', listener: () => void): this;
+        once(event: 'upgrade', listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this;
+        once(event: 'close', listener: () => void): this;
+        once(event: 'drain', listener: () => void): this;
+        once(event: 'error', listener: (err: Error) => void): this;
+        once(event: 'finish', listener: () => void): this;
+        once(event: 'pipe', listener: (src: stream.Readable) => void): this;
+        once(event: 'unpipe', listener: (src: stream.Readable) => void): this;
+        once(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        prependListener(event: 'abort', listener: () => void): this;
+        prependListener(event: 'connect', listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this;
+        prependListener(event: 'continue', listener: () => void): this;
+        prependListener(event: 'information', listener: (info: InformationEvent) => void): this;
+        prependListener(event: 'response', listener: (response: IncomingMessage) => void): this;
+        prependListener(event: 'socket', listener: (socket: Socket) => void): this;
+        prependListener(event: 'timeout', listener: () => void): this;
+        prependListener(event: 'upgrade', listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this;
+        prependListener(event: 'close', listener: () => void): this;
+        prependListener(event: 'drain', listener: () => void): this;
+        prependListener(event: 'error', listener: (err: Error) => void): this;
+        prependListener(event: 'finish', listener: () => void): this;
+        prependListener(event: 'pipe', listener: (src: stream.Readable) => void): this;
+        prependListener(event: 'unpipe', listener: (src: stream.Readable) => void): this;
+        prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        prependOnceListener(event: 'abort', listener: () => void): this;
+        prependOnceListener(event: 'connect', listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this;
+        prependOnceListener(event: 'continue', listener: () => void): this;
+        prependOnceListener(event: 'information', listener: (info: InformationEvent) => void): this;
+        prependOnceListener(event: 'response', listener: (response: IncomingMessage) => void): this;
+        prependOnceListener(event: 'socket', listener: (socket: Socket) => void): this;
+        prependOnceListener(event: 'timeout', listener: () => void): this;
+        prependOnceListener(event: 'upgrade', listener: (response: IncomingMessage, socket: Socket, head: Buffer) => void): this;
+        prependOnceListener(event: 'close', listener: () => void): this;
+        prependOnceListener(event: 'drain', listener: () => void): this;
+        prependOnceListener(event: 'error', listener: (err: Error) => void): this;
+        prependOnceListener(event: 'finish', listener: () => void): this;
+        prependOnceListener(event: 'pipe', listener: (src: stream.Readable) => void): this;
+        prependOnceListener(event: 'unpipe', listener: (src: stream.Readable) => void): this;
+        prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
+    }
+
+    class IncomingMessage extends stream.Readable {
+        constructor(socket: Socket);
+
+        httpVersion: string;
+        httpVersionMajor: number;
+        httpVersionMinor: number;
+        complete: boolean;
+        connection: Socket;
+        headers: IncomingHttpHeaders;
+        rawHeaders: string[];
+        trailers: { [key: string]: string | undefined };
+        rawTrailers: string[];
+        setTimeout(msecs: number, callback?: () => void): this;
+        /**
+         * Only valid for request obtained from http.Server.
+         */
+        method?: string;
+        /**
+         * Only valid for request obtained from http.Server.
+         */
+        url?: string;
+        /**
+         * Only valid for response obtained from http.ClientRequest.
+         */
+        statusCode?: number;
+        /**
+         * Only valid for response obtained from http.ClientRequest.
+         */
+        statusMessage?: string;
+        socket: Socket;
+        destroy(error?: Error): void;
+    }
+
+    interface AgentOptions {
+        /**
+         * Keep sockets around in a pool to be used by other requests in the future. Default = false
+         */
+        keepAlive?: boolean;
+        /**
+         * When using HTTP KeepAlive, how often to send TCP KeepAlive packets over sockets being kept alive. Default = 1000.
+         * Only relevant if keepAlive is set to true.
+         */
+        keepAliveMsecs?: number;
+        /**
+         * Maximum number of sockets to allow per host. Default for Node 0.10 is 5, default for Node 0.12 is Infinity
+         */
+        maxSockets?: number;
+        /**
+         * Maximum number of sockets to leave open in a free state. Only relevant if keepAlive is set to true. Default = 256.
+         */
+        maxFreeSockets?: number;
+        /**
+         * Socket timeout in milliseconds. This will set the timeout after the socket is connected.
+         */
+        timeout?: number;
+    }
+
+    class Agent {
+        maxFreeSockets: number;
+        maxSockets: number;
+        readonly sockets: {
+            readonly [key: string]: Socket[];
+        };
+        readonly requests: {
+            readonly [key: string]: IncomingMessage[];
+        };
+
+        constructor(opts?: AgentOptions);
+
+        /**
+         * Destroy any sockets that are currently in use by the agent.
+         * It is usually not necessary to do this. However, if you are using an agent with KeepAlive enabled,
+         * then it is best to explicitly shut down the agent when you know that it will no longer be used. Otherwise,
+         * sockets may hang open for quite a long time before the server terminates them.
+         */
+        destroy(): void;
+    }
+
+    const METHODS: string[];
+
+    const STATUS_CODES: {
+        [errorCode: number]: string | undefined;
+        [errorCode: string]: string | undefined;
+    };
+
+    function createServer(requestListener?: RequestListener): Server;
+    function createServer(options: ServerOptions, requestListener?: RequestListener): Server;
+
+    // although RequestOptions are passed as ClientRequestArgs to ClientRequest directly,
+    // create interface RequestOptions would make the naming more clear to developers
+    interface RequestOptions extends ClientRequestArgs { }
+    function request(options: RequestOptions | string | URL, callback?: (res: IncomingMessage) => void): ClientRequest;
+    function request(url: string | URL, options: RequestOptions, callback?: (res: IncomingMessage) => void): ClientRequest;
+    function get(options: RequestOptions | string | URL, callback?: (res: IncomingMessage) => void): ClientRequest;
+    function get(url: string | URL, options: RequestOptions, callback?: (res: IncomingMessage) => void): ClientRequest;
+    let globalAgent: Agent;
+
+    /**
+     * Read-only property specifying the maximum allowed size of HTTP headers in bytes.
+     * Defaults to 8KB. Configurable using the [`--max-http-header-size`][] CLI option.
+     */
+    const maxHeaderSize: number;
+}
diff --git a/setup-maven/node_modules/@types/node/http2.d.ts b/setup-maven/node_modules/@types/node/http2.d.ts
new file mode 100644
index 0000000..8c16e10
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/http2.d.ts
@@ -0,0 +1,947 @@
+declare module "http2" {
+    import * as events from "events";
+    import * as fs from "fs";
+    import * as net from "net";
+    import * as stream from "stream";
+    import * as tls from "tls";
+    import * as url from "url";
+
+    import { IncomingHttpHeaders as Http1IncomingHttpHeaders, OutgoingHttpHeaders, IncomingMessage, ServerResponse } from "http";
+    export { OutgoingHttpHeaders } from "http";
+
+    export interface IncomingHttpStatusHeader {
+        ":status"?: number;
+    }
+
+    export interface IncomingHttpHeaders extends Http1IncomingHttpHeaders {
+        ":path"?: string;
+        ":method"?: string;
+        ":authority"?: string;
+        ":scheme"?: string;
+    }
+
+    // Http2Stream
+
+    export interface StreamPriorityOptions {
+        exclusive?: boolean;
+        parent?: number;
+        weight?: number;
+        silent?: boolean;
+    }
+
+    export interface StreamState {
+        localWindowSize?: number;
+        state?: number;
+        localClose?: number;
+        remoteClose?: number;
+        sumDependencyWeight?: number;
+        weight?: number;
+    }
+
+    export interface ServerStreamResponseOptions {
+        endStream?: boolean;
+        waitForTrailers?: boolean;
+    }
+
+    export interface StatOptions {
+        offset: number;
+        length: number;
+    }
+
+    export interface ServerStreamFileResponseOptions {
+        statCheck?(stats: fs.Stats, headers: OutgoingHttpHeaders, statOptions: StatOptions): void | boolean;
+        waitForTrailers?: boolean;
+        offset?: number;
+        length?: number;
+    }
+
+    export interface ServerStreamFileResponseOptionsWithError extends ServerStreamFileResponseOptions {
+        onError?(err: NodeJS.ErrnoException): void;
+    }
+
+    export interface Http2Stream extends stream.Duplex {
+        readonly aborted: boolean;
+        readonly bufferSize: number;
+        readonly closed: boolean;
+        readonly destroyed: boolean;
+        /**
+         * Set the true if the END_STREAM flag was set in the request or response HEADERS frame received,
+         * indicating that no additional data should be received and the readable side of the Http2Stream will be closed.
+         */
+        readonly endAfterHeaders: boolean;
+        readonly id?: number;
+        readonly pending: boolean;
+        readonly rstCode: number;
+        readonly sentHeaders: OutgoingHttpHeaders;
+        readonly sentInfoHeaders?: OutgoingHttpHeaders[];
+        readonly sentTrailers?: OutgoingHttpHeaders;
+        readonly session: Http2Session;
+        readonly state: StreamState;
+
+        close(code?: number, callback?: () => void): void;
+        priority(options: StreamPriorityOptions): void;
+        setTimeout(msecs: number, callback?: () => void): void;
+        sendTrailers(headers: OutgoingHttpHeaders): void;
+
+        addListener(event: "aborted", listener: () => void): this;
+        addListener(event: "close", listener: () => void): this;
+        addListener(event: "data", listener: (chunk: Buffer | string) => void): this;
+        addListener(event: "drain", listener: () => void): this;
+        addListener(event: "end", listener: () => void): this;
+        addListener(event: "error", listener: (err: Error) => void): this;
+        addListener(event: "finish", listener: () => void): this;
+        addListener(event: "frameError", listener: (frameType: number, errorCode: number) => void): this;
+        addListener(event: "pipe", listener: (src: stream.Readable) => void): this;
+        addListener(event: "unpipe", listener: (src: stream.Readable) => void): this;
+        addListener(event: "streamClosed", listener: (code: number) => void): this;
+        addListener(event: "timeout", listener: () => void): this;
+        addListener(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this;
+        addListener(event: "wantTrailers", listener: () => void): this;
+        addListener(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        emit(event: "aborted"): boolean;
+        emit(event: "close"): boolean;
+        emit(event: "data", chunk: Buffer | string): boolean;
+        emit(event: "drain"): boolean;
+        emit(event: "end"): boolean;
+        emit(event: "error", err: Error): boolean;
+        emit(event: "finish"): boolean;
+        emit(event: "frameError", frameType: number, errorCode: number): boolean;
+        emit(event: "pipe", src: stream.Readable): boolean;
+        emit(event: "unpipe", src: stream.Readable): boolean;
+        emit(event: "streamClosed", code: number): boolean;
+        emit(event: "timeout"): boolean;
+        emit(event: "trailers", trailers: IncomingHttpHeaders, flags: number): boolean;
+        emit(event: "wantTrailers"): boolean;
+        emit(event: string | symbol, ...args: any[]): boolean;
+
+        on(event: "aborted", listener: () => void): this;
+        on(event: "close", listener: () => void): this;
+        on(event: "data", listener: (chunk: Buffer | string) => void): this;
+        on(event: "drain", listener: () => void): this;
+        on(event: "end", listener: () => void): this;
+        on(event: "error", listener: (err: Error) => void): this;
+        on(event: "finish", listener: () => void): this;
+        on(event: "frameError", listener: (frameType: number, errorCode: number) => void): this;
+        on(event: "pipe", listener: (src: stream.Readable) => void): this;
+        on(event: "unpipe", listener: (src: stream.Readable) => void): this;
+        on(event: "streamClosed", listener: (code: number) => void): this;
+        on(event: "timeout", listener: () => void): this;
+        on(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this;
+        on(event: "wantTrailers", listener: () => void): this;
+        on(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        once(event: "aborted", listener: () => void): this;
+        once(event: "close", listener: () => void): this;
+        once(event: "data", listener: (chunk: Buffer | string) => void): this;
+        once(event: "drain", listener: () => void): this;
+        once(event: "end", listener: () => void): this;
+        once(event: "error", listener: (err: Error) => void): this;
+        once(event: "finish", listener: () => void): this;
+        once(event: "frameError", listener: (frameType: number, errorCode: number) => void): this;
+        once(event: "pipe", listener: (src: stream.Readable) => void): this;
+        once(event: "unpipe", listener: (src: stream.Readable) => void): this;
+        once(event: "streamClosed", listener: (code: number) => void): this;
+        once(event: "timeout", listener: () => void): this;
+        once(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this;
+        once(event: "wantTrailers", listener: () => void): this;
+        once(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        prependListener(event: "aborted", listener: () => void): this;
+        prependListener(event: "close", listener: () => void): this;
+        prependListener(event: "data", listener: (chunk: Buffer | string) => void): this;
+        prependListener(event: "drain", listener: () => void): this;
+        prependListener(event: "end", listener: () => void): this;
+        prependListener(event: "error", listener: (err: Error) => void): this;
+        prependListener(event: "finish", listener: () => void): this;
+        prependListener(event: "frameError", listener: (frameType: number, errorCode: number) => void): this;
+        prependListener(event: "pipe", listener: (src: stream.Readable) => void): this;
+        prependListener(event: "unpipe", listener: (src: stream.Readable) => void): this;
+        prependListener(event: "streamClosed", listener: (code: number) => void): this;
+        prependListener(event: "timeout", listener: () => void): this;
+        prependListener(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this;
+        prependListener(event: "wantTrailers", listener: () => void): this;
+        prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        prependOnceListener(event: "aborted", listener: () => void): this;
+        prependOnceListener(event: "close", listener: () => void): this;
+        prependOnceListener(event: "data", listener: (chunk: Buffer | string) => void): this;
+        prependOnceListener(event: "drain", listener: () => void): this;
+        prependOnceListener(event: "end", listener: () => void): this;
+        prependOnceListener(event: "error", listener: (err: Error) => void): this;
+        prependOnceListener(event: "finish", listener: () => void): this;
+        prependOnceListener(event: "frameError", listener: (frameType: number, errorCode: number) => void): this;
+        prependOnceListener(event: "pipe", listener: (src: stream.Readable) => void): this;
+        prependOnceListener(event: "unpipe", listener: (src: stream.Readable) => void): this;
+        prependOnceListener(event: "streamClosed", listener: (code: number) => void): this;
+        prependOnceListener(event: "timeout", listener: () => void): this;
+        prependOnceListener(event: "trailers", listener: (trailers: IncomingHttpHeaders, flags: number) => void): this;
+        prependOnceListener(event: "wantTrailers", listener: () => void): this;
+        prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
+    }
+
+    export interface ClientHttp2Stream extends Http2Stream {
+        addListener(event: "continue", listener: () => {}): this;
+        addListener(event: "headers", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
+        addListener(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;
+        addListener(event: "response", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
+        addListener(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        emit(event: "continue"): boolean;
+        emit(event: "headers", headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number): boolean;
+        emit(event: "push", headers: IncomingHttpHeaders, flags: number): boolean;
+        emit(event: "response", headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number): boolean;
+        emit(event: string | symbol, ...args: any[]): boolean;
+
+        on(event: "continue", listener: () => {}): this;
+        on(event: "headers", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
+        on(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;
+        on(event: "response", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
+        on(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        once(event: "continue", listener: () => {}): this;
+        once(event: "headers", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
+        once(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;
+        once(event: "response", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
+        once(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        prependListener(event: "continue", listener: () => {}): this;
+        prependListener(event: "headers", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
+        prependListener(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;
+        prependListener(event: "response", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
+        prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        prependOnceListener(event: "continue", listener: () => {}): this;
+        prependOnceListener(event: "headers", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
+        prependOnceListener(event: "push", listener: (headers: IncomingHttpHeaders, flags: number) => void): this;
+        prependOnceListener(event: "response", listener: (headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
+        prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
+    }
+
+    export interface ServerHttp2Stream extends Http2Stream {
+        readonly headersSent: boolean;
+        readonly pushAllowed: boolean;
+        additionalHeaders(headers: OutgoingHttpHeaders): void;
+        pushStream(headers: OutgoingHttpHeaders, callback?: (err: Error | null, pushStream: ServerHttp2Stream, headers: OutgoingHttpHeaders) => void): void;
+        pushStream(headers: OutgoingHttpHeaders, options?: StreamPriorityOptions, callback?: (err: Error | null, pushStream: ServerHttp2Stream, headers: OutgoingHttpHeaders) => void): void;
+        respond(headers?: OutgoingHttpHeaders, options?: ServerStreamResponseOptions): void;
+        respondWithFD(fd: number | fs.promises.FileHandle, headers?: OutgoingHttpHeaders, options?: ServerStreamFileResponseOptions): void;
+        respondWithFile(path: string, headers?: OutgoingHttpHeaders, options?: ServerStreamFileResponseOptionsWithError): void;
+    }
+
+    // Http2Session
+
+    export interface Settings {
+        headerTableSize?: number;
+        enablePush?: boolean;
+        initialWindowSize?: number;
+        maxFrameSize?: number;
+        maxConcurrentStreams?: number;
+        maxHeaderListSize?: number;
+        enableConnectProtocol?: boolean;
+    }
+
+    export interface ClientSessionRequestOptions {
+        endStream?: boolean;
+        exclusive?: boolean;
+        parent?: number;
+        weight?: number;
+        waitForTrailers?: boolean;
+    }
+
+    export interface SessionState {
+        effectiveLocalWindowSize?: number;
+        effectiveRecvDataLength?: number;
+        nextStreamID?: number;
+        localWindowSize?: number;
+        lastProcStreamID?: number;
+        remoteWindowSize?: number;
+        outboundQueueSize?: number;
+        deflateDynamicTableSize?: number;
+        inflateDynamicTableSize?: number;
+    }
+
+    export interface Http2Session extends events.EventEmitter {
+        readonly alpnProtocol?: string;
+        readonly closed: boolean;
+        readonly connecting: boolean;
+        readonly destroyed: boolean;
+        readonly encrypted?: boolean;
+        readonly localSettings: Settings;
+        readonly originSet?: string[];
+        readonly pendingSettingsAck: boolean;
+        readonly remoteSettings: Settings;
+        readonly socket: net.Socket | tls.TLSSocket;
+        readonly state: SessionState;
+        readonly type: number;
+
+        close(callback?: () => void): void;
+        destroy(error?: Error, code?: number): void;
+        goaway(code?: number, lastStreamID?: number, opaqueData?: NodeJS.ArrayBufferView): void;
+        ping(callback: (err: Error | null, duration: number, payload: Buffer) => void): boolean;
+        ping(payload: NodeJS.ArrayBufferView, callback: (err: Error | null, duration: number, payload: Buffer) => void): boolean;
+        ref(): void;
+        setTimeout(msecs: number, callback?: () => void): void;
+        settings(settings: Settings): void;
+        unref(): void;
+
+        addListener(event: "close", listener: () => void): this;
+        addListener(event: "error", listener: (err: Error) => void): this;
+        addListener(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this;
+        addListener(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this;
+        addListener(event: "localSettings", listener: (settings: Settings) => void): this;
+        addListener(event: "ping", listener: () => void): this;
+        addListener(event: "remoteSettings", listener: (settings: Settings) => void): this;
+        addListener(event: "timeout", listener: () => void): this;
+        addListener(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        emit(event: "close"): boolean;
+        emit(event: "error", err: Error): boolean;
+        emit(event: "frameError", frameType: number, errorCode: number, streamID: number): boolean;
+        emit(event: "goaway", errorCode: number, lastStreamID: number, opaqueData: Buffer): boolean;
+        emit(event: "localSettings", settings: Settings): boolean;
+        emit(event: "ping"): boolean;
+        emit(event: "remoteSettings", settings: Settings): boolean;
+        emit(event: "timeout"): boolean;
+        emit(event: string | symbol, ...args: any[]): boolean;
+
+        on(event: "close", listener: () => void): this;
+        on(event: "error", listener: (err: Error) => void): this;
+        on(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this;
+        on(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this;
+        on(event: "localSettings", listener: (settings: Settings) => void): this;
+        on(event: "ping", listener: () => void): this;
+        on(event: "remoteSettings", listener: (settings: Settings) => void): this;
+        on(event: "timeout", listener: () => void): this;
+        on(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        once(event: "close", listener: () => void): this;
+        once(event: "error", listener: (err: Error) => void): this;
+        once(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this;
+        once(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this;
+        once(event: "localSettings", listener: (settings: Settings) => void): this;
+        once(event: "ping", listener: () => void): this;
+        once(event: "remoteSettings", listener: (settings: Settings) => void): this;
+        once(event: "timeout", listener: () => void): this;
+        once(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        prependListener(event: "close", listener: () => void): this;
+        prependListener(event: "error", listener: (err: Error) => void): this;
+        prependListener(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this;
+        prependListener(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this;
+        prependListener(event: "localSettings", listener: (settings: Settings) => void): this;
+        prependListener(event: "ping", listener: () => void): this;
+        prependListener(event: "remoteSettings", listener: (settings: Settings) => void): this;
+        prependListener(event: "timeout", listener: () => void): this;
+        prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        prependOnceListener(event: "close", listener: () => void): this;
+        prependOnceListener(event: "error", listener: (err: Error) => void): this;
+        prependOnceListener(event: "frameError", listener: (frameType: number, errorCode: number, streamID: number) => void): this;
+        prependOnceListener(event: "goaway", listener: (errorCode: number, lastStreamID: number, opaqueData: Buffer) => void): this;
+        prependOnceListener(event: "localSettings", listener: (settings: Settings) => void): this;
+        prependOnceListener(event: "ping", listener: () => void): this;
+        prependOnceListener(event: "remoteSettings", listener: (settings: Settings) => void): this;
+        prependOnceListener(event: "timeout", listener: () => void): this;
+        prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
+    }
+
+    export interface ClientHttp2Session extends Http2Session {
+        request(headers?: OutgoingHttpHeaders, options?: ClientSessionRequestOptions): ClientHttp2Stream;
+
+        addListener(event: "altsvc", listener: (alt: string, origin: string, stream: number) => void): this;
+        addListener(event: "origin", listener: (origins: string[]) => void): this;
+        addListener(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;
+        addListener(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
+        addListener(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        emit(event: "altsvc", alt: string, origin: string, stream: number): boolean;
+        emit(event: "origin", origins: string[]): boolean;
+        emit(event: "connect", session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket): boolean;
+        emit(event: "stream", stream: ClientHttp2Stream, headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number): boolean;
+        emit(event: string | symbol, ...args: any[]): boolean;
+
+        on(event: "altsvc", listener: (alt: string, origin: string, stream: number) => void): this;
+        on(event: "origin", listener: (origins: string[]) => void): this;
+        on(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;
+        on(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
+        on(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        once(event: "altsvc", listener: (alt: string, origin: string, stream: number) => void): this;
+        once(event: "origin", listener: (origins: string[]) => void): this;
+        once(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;
+        once(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
+        once(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        prependListener(event: "altsvc", listener: (alt: string, origin: string, stream: number) => void): this;
+        prependListener(event: "origin", listener: (origins: string[]) => void): this;
+        prependListener(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;
+        prependListener(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
+        prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        prependOnceListener(event: "altsvc", listener: (alt: string, origin: string, stream: number) => void): this;
+        prependOnceListener(event: "origin", listener: (origins: string[]) => void): this;
+        prependOnceListener(event: "connect", listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;
+        prependOnceListener(event: "stream", listener: (stream: ClientHttp2Stream, headers: IncomingHttpHeaders & IncomingHttpStatusHeader, flags: number) => void): this;
+        prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
+    }
+
+    export interface AlternativeServiceOptions {
+        origin: number | string | url.URL;
+    }
+
+    export interface ServerHttp2Session extends Http2Session {
+        readonly server: Http2Server | Http2SecureServer;
+
+        altsvc(alt: string, originOrStream: number | string | url.URL | AlternativeServiceOptions): void;
+        origin(...args: Array<string | url.URL | { origin: string }>): void;
+
+        addListener(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;
+        addListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
+        addListener(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        emit(event: "connect", session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket): boolean;
+        emit(event: "stream", stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number): boolean;
+        emit(event: string | symbol, ...args: any[]): boolean;
+
+        on(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;
+        on(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
+        on(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        once(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;
+        once(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
+        once(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        prependListener(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;
+        prependListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
+        prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        prependOnceListener(event: "connect", listener: (session: ServerHttp2Session, socket: net.Socket | tls.TLSSocket) => void): this;
+        prependOnceListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
+        prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
+    }
+
+    // Http2Server
+
+    export interface SessionOptions {
+        maxDeflateDynamicTableSize?: number;
+        maxSessionMemory?: number;
+        maxHeaderListPairs?: number;
+        maxOutstandingPings?: number;
+        maxSendHeaderBlockLength?: number;
+        paddingStrategy?: number;
+        peerMaxConcurrentStreams?: number;
+        settings?: Settings;
+
+        selectPadding?(frameLen: number, maxFrameLen: number): number;
+        createConnection?(authority: url.URL, option: SessionOptions): stream.Duplex;
+    }
+
+    export interface ClientSessionOptions extends SessionOptions {
+        maxReservedRemoteStreams?: number;
+        createConnection?: (authority: url.URL, option: SessionOptions) => stream.Duplex;
+    }
+
+    export interface ServerSessionOptions extends SessionOptions {
+        Http1IncomingMessage?: typeof IncomingMessage;
+        Http1ServerResponse?: typeof ServerResponse;
+        Http2ServerRequest?: typeof Http2ServerRequest;
+        Http2ServerResponse?: typeof Http2ServerResponse;
+    }
+
+    export interface SecureClientSessionOptions extends ClientSessionOptions, tls.ConnectionOptions { }
+    export interface SecureServerSessionOptions extends ServerSessionOptions, tls.TlsOptions { }
+
+    export interface ServerOptions extends ServerSessionOptions { }
+
+    export interface SecureServerOptions extends SecureServerSessionOptions {
+        allowHTTP1?: boolean;
+        origins?: string[];
+    }
+
+    export interface Http2Server extends net.Server {
+        addListener(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
+        addListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
+        addListener(event: "session", listener: (session: ServerHttp2Session) => void): this;
+        addListener(event: "sessionError", listener: (err: Error) => void): this;
+        addListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
+        addListener(event: "timeout", listener: () => void): this;
+        addListener(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        emit(event: "checkContinue", request: Http2ServerRequest, response: Http2ServerResponse): boolean;
+        emit(event: "request", request: Http2ServerRequest, response: Http2ServerResponse): boolean;
+        emit(event: "session", session: ServerHttp2Session): boolean;
+        emit(event: "sessionError", err: Error): boolean;
+        emit(event: "stream", stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number): boolean;
+        emit(event: "timeout"): boolean;
+        emit(event: string | symbol, ...args: any[]): boolean;
+
+        on(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
+        on(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
+        on(event: "session", listener: (session: ServerHttp2Session) => void): this;
+        on(event: "sessionError", listener: (err: Error) => void): this;
+        on(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
+        on(event: "timeout", listener: () => void): this;
+        on(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        once(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
+        once(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
+        once(event: "session", listener: (session: ServerHttp2Session) => void): this;
+        once(event: "sessionError", listener: (err: Error) => void): this;
+        once(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
+        once(event: "timeout", listener: () => void): this;
+        once(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        prependListener(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
+        prependListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
+        prependListener(event: "session", listener: (session: ServerHttp2Session) => void): this;
+        prependListener(event: "sessionError", listener: (err: Error) => void): this;
+        prependListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
+        prependListener(event: "timeout", listener: () => void): this;
+        prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        prependOnceListener(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
+        prependOnceListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
+        prependOnceListener(event: "session", listener: (session: ServerHttp2Session) => void): this;
+        prependOnceListener(event: "sessionError", listener: (err: Error) => void): this;
+        prependOnceListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
+        prependOnceListener(event: "timeout", listener: () => void): this;
+        prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        setTimeout(msec?: number, callback?: () => void): this;
+    }
+
+    export interface Http2SecureServer extends tls.Server {
+        addListener(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
+        addListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
+        addListener(event: "session", listener: (session: ServerHttp2Session) => void): this;
+        addListener(event: "sessionError", listener: (err: Error) => void): this;
+        addListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
+        addListener(event: "timeout", listener: () => void): this;
+        addListener(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this;
+        addListener(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        emit(event: "checkContinue", request: Http2ServerRequest, response: Http2ServerResponse): boolean;
+        emit(event: "request", request: Http2ServerRequest, response: Http2ServerResponse): boolean;
+        emit(event: "session", session: ServerHttp2Session): boolean;
+        emit(event: "sessionError", err: Error): boolean;
+        emit(event: "stream", stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number): boolean;
+        emit(event: "timeout"): boolean;
+        emit(event: "unknownProtocol", socket: tls.TLSSocket): boolean;
+        emit(event: string | symbol, ...args: any[]): boolean;
+
+        on(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
+        on(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
+        on(event: "session", listener: (session: ServerHttp2Session) => void): this;
+        on(event: "sessionError", listener: (err: Error) => void): this;
+        on(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
+        on(event: "timeout", listener: () => void): this;
+        on(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this;
+        on(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        once(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
+        once(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
+        once(event: "session", listener: (session: ServerHttp2Session) => void): this;
+        once(event: "sessionError", listener: (err: Error) => void): this;
+        once(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
+        once(event: "timeout", listener: () => void): this;
+        once(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this;
+        once(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        prependListener(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
+        prependListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
+        prependListener(event: "session", listener: (session: ServerHttp2Session) => void): this;
+        prependListener(event: "sessionError", listener: (err: Error) => void): this;
+        prependListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
+        prependListener(event: "timeout", listener: () => void): this;
+        prependListener(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this;
+        prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        prependOnceListener(event: "checkContinue", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
+        prependOnceListener(event: "request", listener: (request: Http2ServerRequest, response: Http2ServerResponse) => void): this;
+        prependOnceListener(event: "session", listener: (session: ServerHttp2Session) => void): this;
+        prependOnceListener(event: "sessionError", listener: (err: Error) => void): this;
+        prependOnceListener(event: "stream", listener: (stream: ServerHttp2Stream, headers: IncomingHttpHeaders, flags: number) => void): this;
+        prependOnceListener(event: "timeout", listener: () => void): this;
+        prependOnceListener(event: "unknownProtocol", listener: (socket: tls.TLSSocket) => void): this;
+        prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        setTimeout(msec?: number, callback?: () => void): this;
+    }
+
+    export class Http2ServerRequest extends stream.Readable {
+        constructor(stream: ServerHttp2Stream, headers: IncomingHttpHeaders, options: stream.ReadableOptions, rawHeaders: string[]);
+
+        readonly aborted: boolean;
+        readonly authority: string;
+        readonly headers: IncomingHttpHeaders;
+        readonly httpVersion: string;
+        readonly method: string;
+        readonly rawHeaders: string[];
+        readonly rawTrailers: string[];
+        readonly scheme: string;
+        readonly socket: net.Socket | tls.TLSSocket;
+        readonly stream: ServerHttp2Stream;
+        readonly trailers: IncomingHttpHeaders;
+        readonly url: string;
+
+        setTimeout(msecs: number, callback?: () => void): void;
+        read(size?: number): Buffer | string | null;
+
+        addListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this;
+        addListener(event: "close", listener: () => void): this;
+        addListener(event: "data", listener: (chunk: Buffer | string) => void): this;
+        addListener(event: "end", listener: () => void): this;
+        addListener(event: "readable", listener: () => void): this;
+        addListener(event: "error", listener: (err: Error) => void): this;
+        addListener(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        emit(event: "aborted", hadError: boolean, code: number): boolean;
+        emit(event: "close"): boolean;
+        emit(event: "data", chunk: Buffer | string): boolean;
+        emit(event: "end"): boolean;
+        emit(event: "readable"): boolean;
+        emit(event: "error", err: Error): boolean;
+        emit(event: string | symbol, ...args: any[]): boolean;
+
+        on(event: "aborted", listener: (hadError: boolean, code: number) => void): this;
+        on(event: "close", listener: () => void): this;
+        on(event: "data", listener: (chunk: Buffer | string) => void): this;
+        on(event: "end", listener: () => void): this;
+        on(event: "readable", listener: () => void): this;
+        on(event: "error", listener: (err: Error) => void): this;
+        on(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        once(event: "aborted", listener: (hadError: boolean, code: number) => void): this;
+        once(event: "close", listener: () => void): this;
+        once(event: "data", listener: (chunk: Buffer | string) => void): this;
+        once(event: "end", listener: () => void): this;
+        once(event: "readable", listener: () => void): this;
+        once(event: "error", listener: (err: Error) => void): this;
+        once(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        prependListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this;
+        prependListener(event: "close", listener: () => void): this;
+        prependListener(event: "data", listener: (chunk: Buffer | string) => void): this;
+        prependListener(event: "end", listener: () => void): this;
+        prependListener(event: "readable", listener: () => void): this;
+        prependListener(event: "error", listener: (err: Error) => void): this;
+        prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        prependOnceListener(event: "aborted", listener: (hadError: boolean, code: number) => void): this;
+        prependOnceListener(event: "close", listener: () => void): this;
+        prependOnceListener(event: "data", listener: (chunk: Buffer | string) => void): this;
+        prependOnceListener(event: "end", listener: () => void): this;
+        prependOnceListener(event: "readable", listener: () => void): this;
+        prependOnceListener(event: "error", listener: (err: Error) => void): this;
+        prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
+    }
+
+    export class Http2ServerResponse extends stream.Stream {
+        constructor(stream: ServerHttp2Stream);
+
+        readonly connection: net.Socket | tls.TLSSocket;
+        readonly finished: boolean;
+        readonly headersSent: boolean;
+        readonly socket: net.Socket | tls.TLSSocket;
+        readonly stream: ServerHttp2Stream;
+        sendDate: boolean;
+        statusCode: number;
+        statusMessage: '';
+        addTrailers(trailers: OutgoingHttpHeaders): void;
+        end(callback?: () => void): void;
+        end(data: string | Uint8Array, callback?: () => void): void;
+        end(data: string | Uint8Array, encoding: string, callback?: () => void): void;
+        getHeader(name: string): string;
+        getHeaderNames(): string[];
+        getHeaders(): OutgoingHttpHeaders;
+        hasHeader(name: string): boolean;
+        removeHeader(name: string): void;
+        setHeader(name: string, value: number | string | string[]): void;
+        setTimeout(msecs: number, callback?: () => void): void;
+        write(chunk: string | Uint8Array, callback?: (err: Error) => void): boolean;
+        write(chunk: string | Uint8Array, encoding: string, callback?: (err: Error) => void): boolean;
+        writeContinue(): void;
+        writeHead(statusCode: number, headers?: OutgoingHttpHeaders): this;
+        writeHead(statusCode: number, statusMessage: string, headers?: OutgoingHttpHeaders): this;
+        createPushResponse(headers: OutgoingHttpHeaders, callback: (err: Error | null, res: Http2ServerResponse) => void): void;
+
+        addListener(event: "close", listener: () => void): this;
+        addListener(event: "drain", listener: () => void): this;
+        addListener(event: "error", listener: (error: Error) => void): this;
+        addListener(event: "finish", listener: () => void): this;
+        addListener(event: "pipe", listener: (src: stream.Readable) => void): this;
+        addListener(event: "unpipe", listener: (src: stream.Readable) => void): this;
+        addListener(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        emit(event: "close"): boolean;
+        emit(event: "drain"): boolean;
+        emit(event: "error", error: Error): boolean;
+        emit(event: "finish"): boolean;
+        emit(event: "pipe", src: stream.Readable): boolean;
+        emit(event: "unpipe", src: stream.Readable): boolean;
+        emit(event: string | symbol, ...args: any[]): boolean;
+
+        on(event: "close", listener: () => void): this;
+        on(event: "drain", listener: () => void): this;
+        on(event: "error", listener: (error: Error) => void): this;
+        on(event: "finish", listener: () => void): this;
+        on(event: "pipe", listener: (src: stream.Readable) => void): this;
+        on(event: "unpipe", listener: (src: stream.Readable) => void): this;
+        on(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        once(event: "close", listener: () => void): this;
+        once(event: "drain", listener: () => void): this;
+        once(event: "error", listener: (error: Error) => void): this;
+        once(event: "finish", listener: () => void): this;
+        once(event: "pipe", listener: (src: stream.Readable) => void): this;
+        once(event: "unpipe", listener: (src: stream.Readable) => void): this;
+        once(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        prependListener(event: "close", listener: () => void): this;
+        prependListener(event: "drain", listener: () => void): this;
+        prependListener(event: "error", listener: (error: Error) => void): this;
+        prependListener(event: "finish", listener: () => void): this;
+        prependListener(event: "pipe", listener: (src: stream.Readable) => void): this;
+        prependListener(event: "unpipe", listener: (src: stream.Readable) => void): this;
+        prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        prependOnceListener(event: "close", listener: () => void): this;
+        prependOnceListener(event: "drain", listener: () => void): this;
+        prependOnceListener(event: "error", listener: (error: Error) => void): this;
+        prependOnceListener(event: "finish", listener: () => void): this;
+        prependOnceListener(event: "pipe", listener: (src: stream.Readable) => void): this;
+        prependOnceListener(event: "unpipe", listener: (src: stream.Readable) => void): this;
+        prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
+    }
+
+    // Public API
+
+    export namespace constants {
+        const NGHTTP2_SESSION_SERVER: number;
+        const NGHTTP2_SESSION_CLIENT: number;
+        const NGHTTP2_STREAM_STATE_IDLE: number;
+        const NGHTTP2_STREAM_STATE_OPEN: number;
+        const NGHTTP2_STREAM_STATE_RESERVED_LOCAL: number;
+        const NGHTTP2_STREAM_STATE_RESERVED_REMOTE: number;
+        const NGHTTP2_STREAM_STATE_HALF_CLOSED_LOCAL: number;
+        const NGHTTP2_STREAM_STATE_HALF_CLOSED_REMOTE: number;
+        const NGHTTP2_STREAM_STATE_CLOSED: number;
+        const NGHTTP2_NO_ERROR: number;
+        const NGHTTP2_PROTOCOL_ERROR: number;
+        const NGHTTP2_INTERNAL_ERROR: number;
+        const NGHTTP2_FLOW_CONTROL_ERROR: number;
+        const NGHTTP2_SETTINGS_TIMEOUT: number;
+        const NGHTTP2_STREAM_CLOSED: number;
+        const NGHTTP2_FRAME_SIZE_ERROR: number;
+        const NGHTTP2_REFUSED_STREAM: number;
+        const NGHTTP2_CANCEL: number;
+        const NGHTTP2_COMPRESSION_ERROR: number;
+        const NGHTTP2_CONNECT_ERROR: number;
+        const NGHTTP2_ENHANCE_YOUR_CALM: number;
+        const NGHTTP2_INADEQUATE_SECURITY: number;
+        const NGHTTP2_HTTP_1_1_REQUIRED: number;
+        const NGHTTP2_ERR_FRAME_SIZE_ERROR: number;
+        const NGHTTP2_FLAG_NONE: number;
+        const NGHTTP2_FLAG_END_STREAM: number;
+        const NGHTTP2_FLAG_END_HEADERS: number;
+        const NGHTTP2_FLAG_ACK: number;
+        const NGHTTP2_FLAG_PADDED: number;
+        const NGHTTP2_FLAG_PRIORITY: number;
+        const DEFAULT_SETTINGS_HEADER_TABLE_SIZE: number;
+        const DEFAULT_SETTINGS_ENABLE_PUSH: number;
+        const DEFAULT_SETTINGS_INITIAL_WINDOW_SIZE: number;
+        const DEFAULT_SETTINGS_MAX_FRAME_SIZE: number;
+        const MAX_MAX_FRAME_SIZE: number;
+        const MIN_MAX_FRAME_SIZE: number;
+        const MAX_INITIAL_WINDOW_SIZE: number;
+        const NGHTTP2_DEFAULT_WEIGHT: number;
+        const NGHTTP2_SETTINGS_HEADER_TABLE_SIZE: number;
+        const NGHTTP2_SETTINGS_ENABLE_PUSH: number;
+        const NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS: number;
+        const NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE: number;
+        const NGHTTP2_SETTINGS_MAX_FRAME_SIZE: number;
+        const NGHTTP2_SETTINGS_MAX_HEADER_LIST_SIZE: number;
+        const PADDING_STRATEGY_NONE: number;
+        const PADDING_STRATEGY_MAX: number;
+        const PADDING_STRATEGY_CALLBACK: number;
+        const HTTP2_HEADER_STATUS: string;
+        const HTTP2_HEADER_METHOD: string;
+        const HTTP2_HEADER_AUTHORITY: string;
+        const HTTP2_HEADER_SCHEME: string;
+        const HTTP2_HEADER_PATH: string;
+        const HTTP2_HEADER_ACCEPT_CHARSET: string;
+        const HTTP2_HEADER_ACCEPT_ENCODING: string;
+        const HTTP2_HEADER_ACCEPT_LANGUAGE: string;
+        const HTTP2_HEADER_ACCEPT_RANGES: string;
+        const HTTP2_HEADER_ACCEPT: string;
+        const HTTP2_HEADER_ACCESS_CONTROL_ALLOW_ORIGIN: string;
+        const HTTP2_HEADER_AGE: string;
+        const HTTP2_HEADER_ALLOW: string;
+        const HTTP2_HEADER_AUTHORIZATION: string;
+        const HTTP2_HEADER_CACHE_CONTROL: string;
+        const HTTP2_HEADER_CONNECTION: string;
+        const HTTP2_HEADER_CONTENT_DISPOSITION: string;
+        const HTTP2_HEADER_CONTENT_ENCODING: string;
+        const HTTP2_HEADER_CONTENT_LANGUAGE: string;
+        const HTTP2_HEADER_CONTENT_LENGTH: string;
+        const HTTP2_HEADER_CONTENT_LOCATION: string;
+        const HTTP2_HEADER_CONTENT_MD5: string;
+        const HTTP2_HEADER_CONTENT_RANGE: string;
+        const HTTP2_HEADER_CONTENT_TYPE: string;
+        const HTTP2_HEADER_COOKIE: string;
+        const HTTP2_HEADER_DATE: string;
+        const HTTP2_HEADER_ETAG: string;
+        const HTTP2_HEADER_EXPECT: string;
+        const HTTP2_HEADER_EXPIRES: string;
+        const HTTP2_HEADER_FROM: string;
+        const HTTP2_HEADER_HOST: string;
+        const HTTP2_HEADER_IF_MATCH: string;
+        const HTTP2_HEADER_IF_MODIFIED_SINCE: string;
+        const HTTP2_HEADER_IF_NONE_MATCH: string;
+        const HTTP2_HEADER_IF_RANGE: string;
+        const HTTP2_HEADER_IF_UNMODIFIED_SINCE: string;
+        const HTTP2_HEADER_LAST_MODIFIED: string;
+        const HTTP2_HEADER_LINK: string;
+        const HTTP2_HEADER_LOCATION: string;
+        const HTTP2_HEADER_MAX_FORWARDS: string;
+        const HTTP2_HEADER_PREFER: string;
+        const HTTP2_HEADER_PROXY_AUTHENTICATE: string;
+        const HTTP2_HEADER_PROXY_AUTHORIZATION: string;
+        const HTTP2_HEADER_RANGE: string;
+        const HTTP2_HEADER_REFERER: string;
+        const HTTP2_HEADER_REFRESH: string;
+        const HTTP2_HEADER_RETRY_AFTER: string;
+        const HTTP2_HEADER_SERVER: string;
+        const HTTP2_HEADER_SET_COOKIE: string;
+        const HTTP2_HEADER_STRICT_TRANSPORT_SECURITY: string;
+        const HTTP2_HEADER_TRANSFER_ENCODING: string;
+        const HTTP2_HEADER_TE: string;
+        const HTTP2_HEADER_UPGRADE: string;
+        const HTTP2_HEADER_USER_AGENT: string;
+        const HTTP2_HEADER_VARY: string;
+        const HTTP2_HEADER_VIA: string;
+        const HTTP2_HEADER_WWW_AUTHENTICATE: string;
+        const HTTP2_HEADER_HTTP2_SETTINGS: string;
+        const HTTP2_HEADER_KEEP_ALIVE: string;
+        const HTTP2_HEADER_PROXY_CONNECTION: string;
+        const HTTP2_METHOD_ACL: string;
+        const HTTP2_METHOD_BASELINE_CONTROL: string;
+        const HTTP2_METHOD_BIND: string;
+        const HTTP2_METHOD_CHECKIN: string;
+        const HTTP2_METHOD_CHECKOUT: string;
+        const HTTP2_METHOD_CONNECT: string;
+        const HTTP2_METHOD_COPY: string;
+        const HTTP2_METHOD_DELETE: string;
+        const HTTP2_METHOD_GET: string;
+        const HTTP2_METHOD_HEAD: string;
+        const HTTP2_METHOD_LABEL: string;
+        const HTTP2_METHOD_LINK: string;
+        const HTTP2_METHOD_LOCK: string;
+        const HTTP2_METHOD_MERGE: string;
+        const HTTP2_METHOD_MKACTIVITY: string;
+        const HTTP2_METHOD_MKCALENDAR: string;
+        const HTTP2_METHOD_MKCOL: string;
+        const HTTP2_METHOD_MKREDIRECTREF: string;
+        const HTTP2_METHOD_MKWORKSPACE: string;
+        const HTTP2_METHOD_MOVE: string;
+        const HTTP2_METHOD_OPTIONS: string;
+        const HTTP2_METHOD_ORDERPATCH: string;
+        const HTTP2_METHOD_PATCH: string;
+        const HTTP2_METHOD_POST: string;
+        const HTTP2_METHOD_PRI: string;
+        const HTTP2_METHOD_PROPFIND: string;
+        const HTTP2_METHOD_PROPPATCH: string;
+        const HTTP2_METHOD_PUT: string;
+        const HTTP2_METHOD_REBIND: string;
+        const HTTP2_METHOD_REPORT: string;
+        const HTTP2_METHOD_SEARCH: string;
+        const HTTP2_METHOD_TRACE: string;
+        const HTTP2_METHOD_UNBIND: string;
+        const HTTP2_METHOD_UNCHECKOUT: string;
+        const HTTP2_METHOD_UNLINK: string;
+        const HTTP2_METHOD_UNLOCK: string;
+        const HTTP2_METHOD_UPDATE: string;
+        const HTTP2_METHOD_UPDATEREDIRECTREF: string;
+        const HTTP2_METHOD_VERSION_CONTROL: string;
+        const HTTP_STATUS_CONTINUE: number;
+        const HTTP_STATUS_SWITCHING_PROTOCOLS: number;
+        const HTTP_STATUS_PROCESSING: number;
+        const HTTP_STATUS_OK: number;
+        const HTTP_STATUS_CREATED: number;
+        const HTTP_STATUS_ACCEPTED: number;
+        const HTTP_STATUS_NON_AUTHORITATIVE_INFORMATION: number;
+        const HTTP_STATUS_NO_CONTENT: number;
+        const HTTP_STATUS_RESET_CONTENT: number;
+        const HTTP_STATUS_PARTIAL_CONTENT: number;
+        const HTTP_STATUS_MULTI_STATUS: number;
+        const HTTP_STATUS_ALREADY_REPORTED: number;
+        const HTTP_STATUS_IM_USED: number;
+        const HTTP_STATUS_MULTIPLE_CHOICES: number;
+        const HTTP_STATUS_MOVED_PERMANENTLY: number;
+        const HTTP_STATUS_FOUND: number;
+        const HTTP_STATUS_SEE_OTHER: number;
+        const HTTP_STATUS_NOT_MODIFIED: number;
+        const HTTP_STATUS_USE_PROXY: number;
+        const HTTP_STATUS_TEMPORARY_REDIRECT: number;
+        const HTTP_STATUS_PERMANENT_REDIRECT: number;
+        const HTTP_STATUS_BAD_REQUEST: number;
+        const HTTP_STATUS_UNAUTHORIZED: number;
+        const HTTP_STATUS_PAYMENT_REQUIRED: number;
+        const HTTP_STATUS_FORBIDDEN: number;
+        const HTTP_STATUS_NOT_FOUND: number;
+        const HTTP_STATUS_METHOD_NOT_ALLOWED: number;
+        const HTTP_STATUS_NOT_ACCEPTABLE: number;
+        const HTTP_STATUS_PROXY_AUTHENTICATION_REQUIRED: number;
+        const HTTP_STATUS_REQUEST_TIMEOUT: number;
+        const HTTP_STATUS_CONFLICT: number;
+        const HTTP_STATUS_GONE: number;
+        const HTTP_STATUS_LENGTH_REQUIRED: number;
+        const HTTP_STATUS_PRECONDITION_FAILED: number;
+        const HTTP_STATUS_PAYLOAD_TOO_LARGE: number;
+        const HTTP_STATUS_URI_TOO_LONG: number;
+        const HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE: number;
+        const HTTP_STATUS_RANGE_NOT_SATISFIABLE: number;
+        const HTTP_STATUS_EXPECTATION_FAILED: number;
+        const HTTP_STATUS_TEAPOT: number;
+        const HTTP_STATUS_MISDIRECTED_REQUEST: number;
+        const HTTP_STATUS_UNPROCESSABLE_ENTITY: number;
+        const HTTP_STATUS_LOCKED: number;
+        const HTTP_STATUS_FAILED_DEPENDENCY: number;
+        const HTTP_STATUS_UNORDERED_COLLECTION: number;
+        const HTTP_STATUS_UPGRADE_REQUIRED: number;
+        const HTTP_STATUS_PRECONDITION_REQUIRED: number;
+        const HTTP_STATUS_TOO_MANY_REQUESTS: number;
+        const HTTP_STATUS_REQUEST_HEADER_FIELDS_TOO_LARGE: number;
+        const HTTP_STATUS_UNAVAILABLE_FOR_LEGAL_REASONS: number;
+        const HTTP_STATUS_INTERNAL_SERVER_ERROR: number;
+        const HTTP_STATUS_NOT_IMPLEMENTED: number;
+        const HTTP_STATUS_BAD_GATEWAY: number;
+        const HTTP_STATUS_SERVICE_UNAVAILABLE: number;
+        const HTTP_STATUS_GATEWAY_TIMEOUT: number;
+        const HTTP_STATUS_HTTP_VERSION_NOT_SUPPORTED: number;
+        const HTTP_STATUS_VARIANT_ALSO_NEGOTIATES: number;
+        const HTTP_STATUS_INSUFFICIENT_STORAGE: number;
+        const HTTP_STATUS_LOOP_DETECTED: number;
+        const HTTP_STATUS_BANDWIDTH_LIMIT_EXCEEDED: number;
+        const HTTP_STATUS_NOT_EXTENDED: number;
+        const HTTP_STATUS_NETWORK_AUTHENTICATION_REQUIRED: number;
+    }
+
+    export function getDefaultSettings(): Settings;
+    export function getPackedSettings(settings: Settings): Buffer;
+    export function getUnpackedSettings(buf: Uint8Array): Settings;
+
+    export function createServer(onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void): Http2Server;
+    export function createServer(options: ServerOptions, onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void): Http2Server;
+
+    export function createSecureServer(onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void): Http2SecureServer;
+    export function createSecureServer(options: SecureServerOptions, onRequestHandler?: (request: Http2ServerRequest, response: Http2ServerResponse) => void): Http2SecureServer;
+
+    export function connect(authority: string | url.URL, listener: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void): ClientHttp2Session;
+    export function connect(
+        authority: string | url.URL,
+        options?: ClientSessionOptions | SecureClientSessionOptions,
+        listener?: (session: ClientHttp2Session, socket: net.Socket | tls.TLSSocket) => void
+    ): ClientHttp2Session;
+}
diff --git a/setup-maven/node_modules/@types/node/https.d.ts b/setup-maven/node_modules/@types/node/https.d.ts
new file mode 100644
index 0000000..6f33dbd
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/https.d.ts
@@ -0,0 +1,53 @@
+declare module "https" {
+    import * as tls from "tls";
+    import * as events from "events";
+    import * as http from "http";
+    import { URL } from "url";
+
+    type ServerOptions = tls.SecureContextOptions & tls.TlsOptions & http.ServerOptions;
+
+    type RequestOptions = http.RequestOptions & tls.SecureContextOptions & {
+        rejectUnauthorized?: boolean; // Defaults to true
+        servername?: string; // SNI TLS Extension
+    };
+
+    interface AgentOptions extends http.AgentOptions, tls.ConnectionOptions {
+        rejectUnauthorized?: boolean;
+        maxCachedSessions?: number;
+    }
+
+    class Agent extends http.Agent {
+        constructor(options?: AgentOptions);
+        options: AgentOptions;
+    }
+
+    class Server extends tls.Server {
+        constructor(requestListener?: http.RequestListener);
+        constructor(options: ServerOptions, requestListener?: http.RequestListener);
+
+        setTimeout(callback: () => void): this;
+        setTimeout(msecs?: number, callback?: () => void): this;
+        /**
+         * Limits maximum incoming headers count. If set to 0, no limit will be applied.
+         * @default 2000
+         * {@link https://nodejs.org/api/http.html#http_server_maxheaderscount}
+         */
+        maxHeadersCount: number | null;
+        timeout: number;
+        /**
+         * Limit the amount of time the parser will wait to receive the complete HTTP headers.
+         * @default 40000
+         * {@link https://nodejs.org/api/http.html#http_server_headerstimeout}
+         */
+        headersTimeout: number;
+        keepAliveTimeout: number;
+    }
+
+    function createServer(requestListener?: http.RequestListener): Server;
+    function createServer(options: ServerOptions, requestListener?: http.RequestListener): Server;
+    function request(options: RequestOptions | string | URL, callback?: (res: http.IncomingMessage) => void): http.ClientRequest;
+    function request(url: string | URL, options: RequestOptions, callback?: (res: http.IncomingMessage) => void): http.ClientRequest;
+    function get(options: RequestOptions | string | URL, callback?: (res: http.IncomingMessage) => void): http.ClientRequest;
+    function get(url: string | URL, options: RequestOptions, callback?: (res: http.IncomingMessage) => void): http.ClientRequest;
+    let globalAgent: Agent;
+}
diff --git a/setup-maven/node_modules/@types/node/index.d.ts b/setup-maven/node_modules/@types/node/index.d.ts
new file mode 100644
index 0000000..60f72c9
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/index.d.ts
@@ -0,0 +1,104 @@
+// Type definitions for non-npm package Node.js 12.12
+// Project: http://nodejs.org/
+// Definitions by: Microsoft TypeScript <https://github.com/Microsoft>
+//                 DefinitelyTyped <https://github.com/DefinitelyTyped>
+//                 Alberto Schiabel <https://github.com/jkomyno>
+//                 Alexander T. <https://github.com/a-tarasyuk>
+//                 Alvis HT Tang <https://github.com/alvis>
+//                 Andrew Makarov <https://github.com/r3nya>
+//                 Benjamin Toueg <https://github.com/btoueg>
+//                 Bruno Scheufler <https://github.com/brunoscheufler>
+//                 Chigozirim C. <https://github.com/smac89>
+//                 Christian Vaagland Tellnes <https://github.com/tellnes>
+//                 David Junger <https://github.com/touffy>
+//                 Deividas Bakanas <https://github.com/DeividasBakanas>
+//                 Eugene Y. Q. Shen <https://github.com/eyqs>
+//                 Flarna <https://github.com/Flarna>
+//                 Hannes Magnusson <https://github.com/Hannes-Magnusson-CK>
+//                 Hoàng Văn Khải <https://github.com/KSXGitHub>
+//                 Huw <https://github.com/hoo29>
+//                 Kelvin Jin <https://github.com/kjin>
+//                 Klaus Meinhardt <https://github.com/ajafff>
+//                 Lishude <https://github.com/islishude>
+//                 Mariusz Wiktorczyk <https://github.com/mwiktorczyk>
+//                 Mohsen Azimi <https://github.com/mohsen1>
+//                 Nicolas Even <https://github.com/n-e>
+//                 Nicolas Voigt <https://github.com/octo-sniffle>
+//                 Nikita Galkin <https://github.com/galkin>
+//                 Parambir Singh <https://github.com/parambirs>
+//                 Sebastian Silbermann <https://github.com/eps1lon>
+//                 Simon Schick <https://github.com/SimonSchick>
+//                 Thomas den Hollander <https://github.com/ThomasdenH>
+//                 Wilco Bakker <https://github.com/WilcoBakker>
+//                 wwwy3y3 <https://github.com/wwwy3y3>
+//                 Zane Hannan AU <https://github.com/ZaneHannanAU>
+//                 Samuel Ainsworth <https://github.com/samuela>
+//                 Kyle Uehlein <https://github.com/kuehlein>
+//                 Jordi Oliveras Rovira <https://github.com/j-oliveras>
+//                 Thanik Bhongbhibhat <https://github.com/bhongy>
+//                 Marcin Kopacz <https://github.com/chyzwar>
+//                 Trivikram Kamat <https://github.com/trivikr>
+//                 Minh Son Nguyen <https://github.com/nguymin4>
+//                 Junxiao Shi <https://github.com/yoursunny>
+//                 Ilia Baryshnikov <https://github.com/qwelias>
+// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
+
+// NOTE: These definitions support NodeJS and TypeScript 3.2.
+
+// NOTE: TypeScript version-specific augmentations can be found in the following paths:
+//          - ~/base.d.ts         - Shared definitions common to all TypeScript versions
+//          - ~/index.d.ts        - Definitions specific to TypeScript 2.1
+//          - ~/ts3.2/index.d.ts  - Definitions specific to TypeScript 3.2
+
+// NOTE: Augmentations for TypeScript 3.2 and later should use individual files for overrides
+//       within the respective ~/ts3.2 (or later) folder. However, this is disallowed for versions
+//       prior to TypeScript 3.2, so the older definitions will be found here.
+
+// Base definitions for all NodeJS modules that are not specific to any version of TypeScript:
+/// <reference path="base.d.ts" />
+
+// TypeScript 2.1-specific augmentations:
+
+// Forward-declarations for needed types from es2015 and later (in case users are using `--lib es5`)
+// Empty interfaces are used here which merge fine with the real declarations in the lib XXX files
+// just to ensure the names are known and node typings can be sued without importing these libs.
+// if someone really needs these types the libs need to be added via --lib or in tsconfig.json
+interface MapConstructor { }
+interface WeakMapConstructor { }
+interface SetConstructor { }
+interface WeakSetConstructor { }
+interface Set<T> {}
+interface Map<K, V> {}
+interface ReadonlySet<T> {}
+interface Iterable<T> { }
+interface IteratorResult<T> { }
+interface AsyncIterable<T> { }
+interface Iterator<T> {
+    next(value?: any): IteratorResult<T>;
+}
+interface IterableIterator<T> { }
+interface AsyncIterableIterator<T> {}
+interface SymbolConstructor {
+    readonly iterator: symbol;
+    readonly asyncIterator: symbol;
+}
+declare var Symbol: SymbolConstructor;
+// even this is just a forward declaration some properties are added otherwise
+// it would be allowed to pass anything to e.g. Buffer.from()
+interface SharedArrayBuffer {
+    readonly byteLength: number;
+    slice(begin?: number, end?: number): SharedArrayBuffer;
+}
+
+declare module "util" {
+    namespace inspect {
+        const custom: symbol;
+    }
+    namespace promisify {
+        const custom: symbol;
+    }
+    namespace types {
+        function isBigInt64Array(value: any): boolean;
+        function isBigUint64Array(value: any): boolean;
+    }
+}
diff --git a/setup-maven/node_modules/@types/node/inspector.d.ts b/setup-maven/node_modules/@types/node/inspector.d.ts
new file mode 100644
index 0000000..b14aed2
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/inspector.d.ts
@@ -0,0 +1,3034 @@
+// tslint:disable-next-line:dt-header
+// Type definitions for inspector
+
+// These definitions are auto-generated.
+// Please see https://github.com/DefinitelyTyped/DefinitelyTyped/pull/19330
+// for more information.
+
+// tslint:disable:max-line-length
+
+/**
+ * The inspector module provides an API for interacting with the V8 inspector.
+ */
+declare module "inspector" {
+    import { EventEmitter } from 'events';
+
+    interface InspectorNotification<T> {
+        method: string;
+        params: T;
+    }
+
+    namespace Schema {
+        /**
+         * Description of the protocol domain.
+         */
+        interface Domain {
+            /**
+             * Domain name.
+             */
+            name: string;
+            /**
+             * Domain version.
+             */
+            version: string;
+        }
+
+        interface GetDomainsReturnType {
+            /**
+             * List of supported domains.
+             */
+            domains: Domain[];
+        }
+    }
+
+    namespace Runtime {
+        /**
+         * Unique script identifier.
+         */
+        type ScriptId = string;
+
+        /**
+         * Unique object identifier.
+         */
+        type RemoteObjectId = string;
+
+        /**
+         * Primitive value which cannot be JSON-stringified.
+         */
+        type UnserializableValue = string;
+
+        /**
+         * Mirror object referencing original JavaScript object.
+         */
+        interface RemoteObject {
+            /**
+             * Object type.
+             */
+            type: string;
+            /**
+             * Object subtype hint. Specified for <code>object</code> type values only.
+             */
+            subtype?: string;
+            /**
+             * Object class (constructor) name. Specified for <code>object</code> type values only.
+             */
+            className?: string;
+            /**
+             * Remote object value in case of primitive values or JSON values (if it was requested).
+             */
+            value?: any;
+            /**
+             * Primitive value which can not be JSON-stringified does not have <code>value</code>, but gets this property.
+             */
+            unserializableValue?: UnserializableValue;
+            /**
+             * String representation of the object.
+             */
+            description?: string;
+            /**
+             * Unique object identifier (for non-primitive values).
+             */
+            objectId?: RemoteObjectId;
+            /**
+             * Preview containing abbreviated property values. Specified for <code>object</code> type values only.
+             * @experimental
+             */
+            preview?: ObjectPreview;
+            /**
+             * @experimental
+             */
+            customPreview?: CustomPreview;
+        }
+
+        /**
+         * @experimental
+         */
+        interface CustomPreview {
+            header: string;
+            hasBody: boolean;
+            formatterObjectId: RemoteObjectId;
+            bindRemoteObjectFunctionId: RemoteObjectId;
+            configObjectId?: RemoteObjectId;
+        }
+
+        /**
+         * Object containing abbreviated remote object value.
+         * @experimental
+         */
+        interface ObjectPreview {
+            /**
+             * Object type.
+             */
+            type: string;
+            /**
+             * Object subtype hint. Specified for <code>object</code> type values only.
+             */
+            subtype?: string;
+            /**
+             * String representation of the object.
+             */
+            description?: string;
+            /**
+             * True iff some of the properties or entries of the original object did not fit.
+             */
+            overflow: boolean;
+            /**
+             * List of the properties.
+             */
+            properties: PropertyPreview[];
+            /**
+             * List of the entries. Specified for <code>map</code> and <code>set</code> subtype values only.
+             */
+            entries?: EntryPreview[];
+        }
+
+        /**
+         * @experimental
+         */
+        interface PropertyPreview {
+            /**
+             * Property name.
+             */
+            name: string;
+            /**
+             * Object type. Accessor means that the property itself is an accessor property.
+             */
+            type: string;
+            /**
+             * User-friendly property value string.
+             */
+            value?: string;
+            /**
+             * Nested value preview.
+             */
+            valuePreview?: ObjectPreview;
+            /**
+             * Object subtype hint. Specified for <code>object</code> type values only.
+             */
+            subtype?: string;
+        }
+
+        /**
+         * @experimental
+         */
+        interface EntryPreview {
+            /**
+             * Preview of the key. Specified for map-like collection entries.
+             */
+            key?: ObjectPreview;
+            /**
+             * Preview of the value.
+             */
+            value: ObjectPreview;
+        }
+
+        /**
+         * Object property descriptor.
+         */
+        interface PropertyDescriptor {
+            /**
+             * Property name or symbol description.
+             */
+            name: string;
+            /**
+             * The value associated with the property.
+             */
+            value?: RemoteObject;
+            /**
+             * True if the value associated with the property may be changed (data descriptors only).
+             */
+            writable?: boolean;
+            /**
+             * A function which serves as a getter for the property, or <code>undefined</code> if there is no getter (accessor descriptors only).
+             */
+            get?: RemoteObject;
+            /**
+             * A function which serves as a setter for the property, or <code>undefined</code> if there is no setter (accessor descriptors only).
+             */
+            set?: RemoteObject;
+            /**
+             * True if the type of this property descriptor may be changed and if the property may be deleted from the corresponding object.
+             */
+            configurable: boolean;
+            /**
+             * True if this property shows up during enumeration of the properties on the corresponding object.
+             */
+            enumerable: boolean;
+            /**
+             * True if the result was thrown during the evaluation.
+             */
+            wasThrown?: boolean;
+            /**
+             * True if the property is owned for the object.
+             */
+            isOwn?: boolean;
+            /**
+             * Property symbol object, if the property is of the <code>symbol</code> type.
+             */
+            symbol?: RemoteObject;
+        }
+
+        /**
+         * Object internal property descriptor. This property isn't normally visible in JavaScript code.
+         */
+        interface InternalPropertyDescriptor {
+            /**
+             * Conventional property name.
+             */
+            name: string;
+            /**
+             * The value associated with the property.
+             */
+            value?: RemoteObject;
+        }
+
+        /**
+         * Represents function call argument. Either remote object id <code>objectId</code>, primitive <code>value</code>, unserializable primitive value or neither of (for undefined) them should be specified.
+         */
+        interface CallArgument {
+            /**
+             * Primitive value or serializable javascript object.
+             */
+            value?: any;
+            /**
+             * Primitive value which can not be JSON-stringified.
+             */
+            unserializableValue?: UnserializableValue;
+            /**
+             * Remote object handle.
+             */
+            objectId?: RemoteObjectId;
+        }
+
+        /**
+         * Id of an execution context.
+         */
+        type ExecutionContextId = number;
+
+        /**
+         * Description of an isolated world.
+         */
+        interface ExecutionContextDescription {
+            /**
+             * Unique id of the execution context. It can be used to specify in which execution context script evaluation should be performed.
+             */
+            id: ExecutionContextId;
+            /**
+             * Execution context origin.
+             */
+            origin: string;
+            /**
+             * Human readable name describing given context.
+             */
+            name: string;
+            /**
+             * Embedder-specific auxiliary data.
+             */
+            auxData?: {};
+        }
+
+        /**
+         * Detailed information about exception (or error) that was thrown during script compilation or execution.
+         */
+        interface ExceptionDetails {
+            /**
+             * Exception id.
+             */
+            exceptionId: number;
+            /**
+             * Exception text, which should be used together with exception object when available.
+             */
+            text: string;
+            /**
+             * Line number of the exception location (0-based).
+             */
+            lineNumber: number;
+            /**
+             * Column number of the exception location (0-based).
+             */
+            columnNumber: number;
+            /**
+             * Script ID of the exception location.
+             */
+            scriptId?: ScriptId;
+            /**
+             * URL of the exception location, to be used when the script was not reported.
+             */
+            url?: string;
+            /**
+             * JavaScript stack trace if available.
+             */
+            stackTrace?: StackTrace;
+            /**
+             * Exception object if available.
+             */
+            exception?: RemoteObject;
+            /**
+             * Identifier of the context where exception happened.
+             */
+            executionContextId?: ExecutionContextId;
+        }
+
+        /**
+         * Number of milliseconds since epoch.
+         */
+        type Timestamp = number;
+
+        /**
+         * Stack entry for runtime errors and assertions.
+         */
+        interface CallFrame {
+            /**
+             * JavaScript function name.
+             */
+            functionName: string;
+            /**
+             * JavaScript script id.
+             */
+            scriptId: ScriptId;
+            /**
+             * JavaScript script name or url.
+             */
+            url: string;
+            /**
+             * JavaScript script line number (0-based).
+             */
+            lineNumber: number;
+            /**
+             * JavaScript script column number (0-based).
+             */
+            columnNumber: number;
+        }
+
+        /**
+         * Call frames for assertions or error messages.
+         */
+        interface StackTrace {
+            /**
+             * String label of this stack trace. For async traces this may be a name of the function that initiated the async call.
+             */
+            description?: string;
+            /**
+             * JavaScript function name.
+             */
+            callFrames: CallFrame[];
+            /**
+             * Asynchronous JavaScript stack trace that preceded this stack, if available.
+             */
+            parent?: StackTrace;
+            /**
+             * Asynchronous JavaScript stack trace that preceded this stack, if available.
+             * @experimental
+             */
+            parentId?: StackTraceId;
+        }
+
+        /**
+         * Unique identifier of current debugger.
+         * @experimental
+         */
+        type UniqueDebuggerId = string;
+
+        /**
+         * If <code>debuggerId</code> is set stack trace comes from another debugger and can be resolved there. This allows to track cross-debugger calls. See <code>Runtime.StackTrace</code> and <code>Debugger.paused</code> for usages.
+         * @experimental
+         */
+        interface StackTraceId {
+            id: string;
+            debuggerId?: UniqueDebuggerId;
+        }
+
+        interface EvaluateParameterType {
+            /**
+             * Expression to evaluate.
+             */
+            expression: string;
+            /**
+             * Symbolic group name that can be used to release multiple objects.
+             */
+            objectGroup?: string;
+            /**
+             * Determines whether Command Line API should be available during the evaluation.
+             */
+            includeCommandLineAPI?: boolean;
+            /**
+             * In silent mode exceptions thrown during evaluation are not reported and do not pause execution. Overrides <code>setPauseOnException</code> state.
+             */
+            silent?: boolean;
+            /**
+             * Specifies in which execution context to perform evaluation. If the parameter is omitted the evaluation will be performed in the context of the inspected page.
+             */
+            contextId?: ExecutionContextId;
+            /**
+             * Whether the result is expected to be a JSON object that should be sent by value.
+             */
+            returnByValue?: boolean;
+            /**
+             * Whether preview should be generated for the result.
+             * @experimental
+             */
+            generatePreview?: boolean;
+            /**
+             * Whether execution should be treated as initiated by user in the UI.
+             */
+            userGesture?: boolean;
+            /**
+             * Whether execution should <code>await</code> for resulting value and return once awaited promise is resolved.
+             */
+            awaitPromise?: boolean;
+        }
+
+        interface AwaitPromiseParameterType {
+            /**
+             * Identifier of the promise.
+             */
+            promiseObjectId: RemoteObjectId;
+            /**
+             * Whether the result is expected to be a JSON object that should be sent by value.
+             */
+            returnByValue?: boolean;
+            /**
+             * Whether preview should be generated for the result.
+             */
+            generatePreview?: boolean;
+        }
+
+        interface CallFunctionOnParameterType {
+            /**
+             * Declaration of the function to call.
+             */
+            functionDeclaration: string;
+            /**
+             * Identifier of the object to call function on. Either objectId or executionContextId should be specified.
+             */
+            objectId?: RemoteObjectId;
+            /**
+             * Call arguments. All call arguments must belong to the same JavaScript world as the target object.
+             */
+            arguments?: CallArgument[];
+            /**
+             * In silent mode exceptions thrown during evaluation are not reported and do not pause execution. Overrides <code>setPauseOnException</code> state.
+             */
+            silent?: boolean;
+            /**
+             * Whether the result is expected to be a JSON object which should be sent by value.
+             */
+            returnByValue?: boolean;
+            /**
+             * Whether preview should be generated for the result.
+             * @experimental
+             */
+            generatePreview?: boolean;
+            /**
+             * Whether execution should be treated as initiated by user in the UI.
+             */
+            userGesture?: boolean;
+            /**
+             * Whether execution should <code>await</code> for resulting value and return once awaited promise is resolved.
+             */
+            awaitPromise?: boolean;
+            /**
+             * Specifies execution context which global object will be used to call function on. Either executionContextId or objectId should be specified.
+             */
+            executionContextId?: ExecutionContextId;
+            /**
+             * Symbolic group name that can be used to release multiple objects. If objectGroup is not specified and objectId is, objectGroup will be inherited from object.
+             */
+            objectGroup?: string;
+        }
+
+        interface GetPropertiesParameterType {
+            /**
+             * Identifier of the object to return properties for.
+             */
+            objectId: RemoteObjectId;
+            /**
+             * If true, returns properties belonging only to the element itself, not to its prototype chain.
+             */
+            ownProperties?: boolean;
+            /**
+             * If true, returns accessor properties (with getter/setter) only; internal properties are not returned either.
+             * @experimental
+             */
+            accessorPropertiesOnly?: boolean;
+            /**
+             * Whether preview should be generated for the results.
+             * @experimental
+             */
+            generatePreview?: boolean;
+        }
+
+        interface ReleaseObjectParameterType {
+            /**
+             * Identifier of the object to release.
+             */
+            objectId: RemoteObjectId;
+        }
+
+        interface ReleaseObjectGroupParameterType {
+            /**
+             * Symbolic object group name.
+             */
+            objectGroup: string;
+        }
+
+        interface SetCustomObjectFormatterEnabledParameterType {
+            enabled: boolean;
+        }
+
+        interface CompileScriptParameterType {
+            /**
+             * Expression to compile.
+             */
+            expression: string;
+            /**
+             * Source url to be set for the script.
+             */
+            sourceURL: string;
+            /**
+             * Specifies whether the compiled script should be persisted.
+             */
+            persistScript: boolean;
+            /**
+             * Specifies in which execution context to perform script run. If the parameter is omitted the evaluation will be performed in the context of the inspected page.
+             */
+            executionContextId?: ExecutionContextId;
+        }
+
+        interface RunScriptParameterType {
+            /**
+             * Id of the script to run.
+             */
+            scriptId: ScriptId;
+            /**
+             * Specifies in which execution context to perform script run. If the parameter is omitted the evaluation will be performed in the context of the inspected page.
+             */
+            executionContextId?: ExecutionContextId;
+            /**
+             * Symbolic group name that can be used to release multiple objects.
+             */
+            objectGroup?: string;
+            /**
+             * In silent mode exceptions thrown during evaluation are not reported and do not pause execution. Overrides <code>setPauseOnException</code> state.
+             */
+            silent?: boolean;
+            /**
+             * Determines whether Command Line API should be available during the evaluation.
+             */
+            includeCommandLineAPI?: boolean;
+            /**
+             * Whether the result is expected to be a JSON object which should be sent by value.
+             */
+            returnByValue?: boolean;
+            /**
+             * Whether preview should be generated for the result.
+             */
+            generatePreview?: boolean;
+            /**
+             * Whether execution should <code>await</code> for resulting value and return once awaited promise is resolved.
+             */
+            awaitPromise?: boolean;
+        }
+
+        interface QueryObjectsParameterType {
+            /**
+             * Identifier of the prototype to return objects for.
+             */
+            prototypeObjectId: RemoteObjectId;
+        }
+
+        interface GlobalLexicalScopeNamesParameterType {
+            /**
+             * Specifies in which execution context to lookup global scope variables.
+             */
+            executionContextId?: ExecutionContextId;
+        }
+
+        interface EvaluateReturnType {
+            /**
+             * Evaluation result.
+             */
+            result: RemoteObject;
+            /**
+             * Exception details.
+             */
+            exceptionDetails?: ExceptionDetails;
+        }
+
+        interface AwaitPromiseReturnType {
+            /**
+             * Promise result. Will contain rejected value if promise was rejected.
+             */
+            result: RemoteObject;
+            /**
+             * Exception details if stack strace is available.
+             */
+            exceptionDetails?: ExceptionDetails;
+        }
+
+        interface CallFunctionOnReturnType {
+            /**
+             * Call result.
+             */
+            result: RemoteObject;
+            /**
+             * Exception details.
+             */
+            exceptionDetails?: ExceptionDetails;
+        }
+
+        interface GetPropertiesReturnType {
+            /**
+             * Object properties.
+             */
+            result: PropertyDescriptor[];
+            /**
+             * Internal object properties (only of the element itself).
+             */
+            internalProperties?: InternalPropertyDescriptor[];
+            /**
+             * Exception details.
+             */
+            exceptionDetails?: ExceptionDetails;
+        }
+
+        interface CompileScriptReturnType {
+            /**
+             * Id of the script.
+             */
+            scriptId?: ScriptId;
+            /**
+             * Exception details.
+             */
+            exceptionDetails?: ExceptionDetails;
+        }
+
+        interface RunScriptReturnType {
+            /**
+             * Run result.
+             */
+            result: RemoteObject;
+            /**
+             * Exception details.
+             */
+            exceptionDetails?: ExceptionDetails;
+        }
+
+        interface QueryObjectsReturnType {
+            /**
+             * Array with objects.
+             */
+            objects: RemoteObject;
+        }
+
+        interface GlobalLexicalScopeNamesReturnType {
+            names: string[];
+        }
+
+        interface ExecutionContextCreatedEventDataType {
+            /**
+             * A newly created execution context.
+             */
+            context: ExecutionContextDescription;
+        }
+
+        interface ExecutionContextDestroyedEventDataType {
+            /**
+             * Id of the destroyed context
+             */
+            executionContextId: ExecutionContextId;
+        }
+
+        interface ExceptionThrownEventDataType {
+            /**
+             * Timestamp of the exception.
+             */
+            timestamp: Timestamp;
+            exceptionDetails: ExceptionDetails;
+        }
+
+        interface ExceptionRevokedEventDataType {
+            /**
+             * Reason describing why exception was revoked.
+             */
+            reason: string;
+            /**
+             * The id of revoked exception, as reported in <code>exceptionThrown</code>.
+             */
+            exceptionId: number;
+        }
+
+        interface ConsoleAPICalledEventDataType {
+            /**
+             * Type of the call.
+             */
+            type: string;
+            /**
+             * Call arguments.
+             */
+            args: RemoteObject[];
+            /**
+             * Identifier of the context where the call was made.
+             */
+            executionContextId: ExecutionContextId;
+            /**
+             * Call timestamp.
+             */
+            timestamp: Timestamp;
+            /**
+             * Stack trace captured when the call was made.
+             */
+            stackTrace?: StackTrace;
+            /**
+             * Console context descriptor for calls on non-default console context (not console.*): 'anonymous#unique-logger-id' for call on unnamed context, 'name#unique-logger-id' for call on named context.
+             * @experimental
+             */
+            context?: string;
+        }
+
+        interface InspectRequestedEventDataType {
+            object: RemoteObject;
+            hints: {};
+        }
+    }
+
+    namespace Debugger {
+        /**
+         * Breakpoint identifier.
+         */
+        type BreakpointId = string;
+
+        /**
+         * Call frame identifier.
+         */
+        type CallFrameId = string;
+
+        /**
+         * Location in the source code.
+         */
+        interface Location {
+            /**
+             * Script identifier as reported in the <code>Debugger.scriptParsed</code>.
+             */
+            scriptId: Runtime.ScriptId;
+            /**
+             * Line number in the script (0-based).
+             */
+            lineNumber: number;
+            /**
+             * Column number in the script (0-based).
+             */
+            columnNumber?: number;
+        }
+
+        /**
+         * Location in the source code.
+         * @experimental
+         */
+        interface ScriptPosition {
+            lineNumber: number;
+            columnNumber: number;
+        }
+
+        /**
+         * JavaScript call frame. Array of call frames form the call stack.
+         */
+        interface CallFrame {
+            /**
+             * Call frame identifier. This identifier is only valid while the virtual machine is paused.
+             */
+            callFrameId: CallFrameId;
+            /**
+             * Name of the JavaScript function called on this call frame.
+             */
+            functionName: string;
+            /**
+             * Location in the source code.
+             */
+            functionLocation?: Location;
+            /**
+             * Location in the source code.
+             */
+            location: Location;
+            /**
+             * JavaScript script name or url.
+             */
+            url: string;
+            /**
+             * Scope chain for this call frame.
+             */
+            scopeChain: Scope[];
+            /**
+             * <code>this</code> object for this call frame.
+             */
+            this: Runtime.RemoteObject;
+            /**
+             * The value being returned, if the function is at return point.
+             */
+            returnValue?: Runtime.RemoteObject;
+        }
+
+        /**
+         * Scope description.
+         */
+        interface Scope {
+            /**
+             * Scope type.
+             */
+            type: string;
+            /**
+             * Object representing the scope. For <code>global</code> and <code>with</code> scopes it represents the actual object; for the rest of the scopes, it is artificial transient object enumerating scope variables as its properties.
+             */
+            object: Runtime.RemoteObject;
+            name?: string;
+            /**
+             * Location in the source code where scope starts
+             */
+            startLocation?: Location;
+            /**
+             * Location in the source code where scope ends
+             */
+            endLocation?: Location;
+        }
+
+        /**
+         * Search match for resource.
+         */
+        interface SearchMatch {
+            /**
+             * Line number in resource content.
+             */
+            lineNumber: number;
+            /**
+             * Line with match content.
+             */
+            lineContent: string;
+        }
+
+        interface BreakLocation {
+            /**
+             * Script identifier as reported in the <code>Debugger.scriptParsed</code>.
+             */
+            scriptId: Runtime.ScriptId;
+            /**
+             * Line number in the script (0-based).
+             */
+            lineNumber: number;
+            /**
+             * Column number in the script (0-based).
+             */
+            columnNumber?: number;
+            type?: string;
+        }
+
+        interface SetBreakpointsActiveParameterType {
+            /**
+             * New value for breakpoints active state.
+             */
+            active: boolean;
+        }
+
+        interface SetSkipAllPausesParameterType {
+            /**
+             * New value for skip pauses state.
+             */
+            skip: boolean;
+        }
+
+        interface SetBreakpointByUrlParameterType {
+            /**
+             * Line number to set breakpoint at.
+             */
+            lineNumber: number;
+            /**
+             * URL of the resources to set breakpoint on.
+             */
+            url?: string;
+            /**
+             * Regex pattern for the URLs of the resources to set breakpoints on. Either <code>url</code> or <code>urlRegex</code> must be specified.
+             */
+            urlRegex?: string;
+            /**
+             * Script hash of the resources to set breakpoint on.
+             */
+            scriptHash?: string;
+            /**
+             * Offset in the line to set breakpoint at.
+             */
+            columnNumber?: number;
+            /**
+             * Expression to use as a breakpoint condition. When specified, debugger will only stop on the breakpoint if this expression evaluates to true.
+             */
+            condition?: string;
+        }
+
+        interface SetBreakpointParameterType {
+            /**
+             * Location to set breakpoint in.
+             */
+            location: Location;
+            /**
+             * Expression to use as a breakpoint condition. When specified, debugger will only stop on the breakpoint if this expression evaluates to true.
+             */
+            condition?: string;
+        }
+
+        interface RemoveBreakpointParameterType {
+            breakpointId: BreakpointId;
+        }
+
+        interface GetPossibleBreakpointsParameterType {
+            /**
+             * Start of range to search possible breakpoint locations in.
+             */
+            start: Location;
+            /**
+             * End of range to search possible breakpoint locations in (excluding). When not specified, end of scripts is used as end of range.
+             */
+            end?: Location;
+            /**
+             * Only consider locations which are in the same (non-nested) function as start.
+             */
+            restrictToFunction?: boolean;
+        }
+
+        interface ContinueToLocationParameterType {
+            /**
+             * Location to continue to.
+             */
+            location: Location;
+            targetCallFrames?: string;
+        }
+
+        interface PauseOnAsyncCallParameterType {
+            /**
+             * Debugger will pause when async call with given stack trace is started.
+             */
+            parentStackTraceId: Runtime.StackTraceId;
+        }
+
+        interface StepIntoParameterType {
+            /**
+             * Debugger will issue additional Debugger.paused notification if any async task is scheduled before next pause.
+             * @experimental
+             */
+            breakOnAsyncCall?: boolean;
+        }
+
+        interface GetStackTraceParameterType {
+            stackTraceId: Runtime.StackTraceId;
+        }
+
+        interface SearchInContentParameterType {
+            /**
+             * Id of the script to search in.
+             */
+            scriptId: Runtime.ScriptId;
+            /**
+             * String to search for.
+             */
+            query: string;
+            /**
+             * If true, search is case sensitive.
+             */
+            caseSensitive?: boolean;
+            /**
+             * If true, treats string parameter as regex.
+             */
+            isRegex?: boolean;
+        }
+
+        interface SetScriptSourceParameterType {
+            /**
+             * Id of the script to edit.
+             */
+            scriptId: Runtime.ScriptId;
+            /**
+             * New content of the script.
+             */
+            scriptSource: string;
+            /**
+             *  If true the change will not actually be applied. Dry run may be used to get result description without actually modifying the code.
+             */
+            dryRun?: boolean;
+        }
+
+        interface RestartFrameParameterType {
+            /**
+             * Call frame identifier to evaluate on.
+             */
+            callFrameId: CallFrameId;
+        }
+
+        interface GetScriptSourceParameterType {
+            /**
+             * Id of the script to get source for.
+             */
+            scriptId: Runtime.ScriptId;
+        }
+
+        interface SetPauseOnExceptionsParameterType {
+            /**
+             * Pause on exceptions mode.
+             */
+            state: string;
+        }
+
+        interface EvaluateOnCallFrameParameterType {
+            /**
+             * Call frame identifier to evaluate on.
+             */
+            callFrameId: CallFrameId;
+            /**
+             * Expression to evaluate.
+             */
+            expression: string;
+            /**
+             * String object group name to put result into (allows rapid releasing resulting object handles using <code>releaseObjectGroup</code>).
+             */
+            objectGroup?: string;
+            /**
+             * Specifies whether command line API should be available to the evaluated expression, defaults to false.
+             */
+            includeCommandLineAPI?: boolean;
+            /**
+             * In silent mode exceptions thrown during evaluation are not reported and do not pause execution. Overrides <code>setPauseOnException</code> state.
+             */
+            silent?: boolean;
+            /**
+             * Whether the result is expected to be a JSON object that should be sent by value.
+             */
+            returnByValue?: boolean;
+            /**
+             * Whether preview should be generated for the result.
+             * @experimental
+             */
+            generatePreview?: boolean;
+            /**
+             * Whether to throw an exception if side effect cannot be ruled out during evaluation.
+             */
+            throwOnSideEffect?: boolean;
+        }
+
+        interface SetVariableValueParameterType {
+            /**
+             * 0-based number of scope as was listed in scope chain. Only 'local', 'closure' and 'catch' scope types are allowed. Other scopes could be manipulated manually.
+             */
+            scopeNumber: number;
+            /**
+             * Variable name.
+             */
+            variableName: string;
+            /**
+             * New variable value.
+             */
+            newValue: Runtime.CallArgument;
+            /**
+             * Id of callframe that holds variable.
+             */
+            callFrameId: CallFrameId;
+        }
+
+        interface SetReturnValueParameterType {
+            /**
+             * New return value.
+             */
+            newValue: Runtime.CallArgument;
+        }
+
+        interface SetAsyncCallStackDepthParameterType {
+            /**
+             * Maximum depth of async call stacks. Setting to <code>0</code> will effectively disable collecting async call stacks (default).
+             */
+            maxDepth: number;
+        }
+
+        interface SetBlackboxPatternsParameterType {
+            /**
+             * Array of regexps that will be used to check script url for blackbox state.
+             */
+            patterns: string[];
+        }
+
+        interface SetBlackboxedRangesParameterType {
+            /**
+             * Id of the script.
+             */
+            scriptId: Runtime.ScriptId;
+            positions: ScriptPosition[];
+        }
+
+        interface EnableReturnType {
+            /**
+             * Unique identifier of the debugger.
+             * @experimental
+             */
+            debuggerId: Runtime.UniqueDebuggerId;
+        }
+
+        interface SetBreakpointByUrlReturnType {
+            /**
+             * Id of the created breakpoint for further reference.
+             */
+            breakpointId: BreakpointId;
+            /**
+             * List of the locations this breakpoint resolved into upon addition.
+             */
+            locations: Location[];
+        }
+
+        interface SetBreakpointReturnType {
+            /**
+             * Id of the created breakpoint for further reference.
+             */
+            breakpointId: BreakpointId;
+            /**
+             * Location this breakpoint resolved into.
+             */
+            actualLocation: Location;
+        }
+
+        interface GetPossibleBreakpointsReturnType {
+            /**
+             * List of the possible breakpoint locations.
+             */
+            locations: BreakLocation[];
+        }
+
+        interface GetStackTraceReturnType {
+            stackTrace: Runtime.StackTrace;
+        }
+
+        interface SearchInContentReturnType {
+            /**
+             * List of search matches.
+             */
+            result: SearchMatch[];
+        }
+
+        interface SetScriptSourceReturnType {
+            /**
+             * New stack trace in case editing has happened while VM was stopped.
+             */
+            callFrames?: CallFrame[];
+            /**
+             * Whether current call stack  was modified after applying the changes.
+             */
+            stackChanged?: boolean;
+            /**
+             * Async stack trace, if any.
+             */
+            asyncStackTrace?: Runtime.StackTrace;
+            /**
+             * Async stack trace, if any.
+             * @experimental
+             */
+            asyncStackTraceId?: Runtime.StackTraceId;
+            /**
+             * Exception details if any.
+             */
+            exceptionDetails?: Runtime.ExceptionDetails;
+        }
+
+        interface RestartFrameReturnType {
+            /**
+             * New stack trace.
+             */
+            callFrames: CallFrame[];
+            /**
+             * Async stack trace, if any.
+             */
+            asyncStackTrace?: Runtime.StackTrace;
+            /**
+             * Async stack trace, if any.
+             * @experimental
+             */
+            asyncStackTraceId?: Runtime.StackTraceId;
+        }
+
+        interface GetScriptSourceReturnType {
+            /**
+             * Script source.
+             */
+            scriptSource: string;
+        }
+
+        interface EvaluateOnCallFrameReturnType {
+            /**
+             * Object wrapper for the evaluation result.
+             */
+            result: Runtime.RemoteObject;
+            /**
+             * Exception details.
+             */
+            exceptionDetails?: Runtime.ExceptionDetails;
+        }
+
+        interface ScriptParsedEventDataType {
+            /**
+             * Identifier of the script parsed.
+             */
+            scriptId: Runtime.ScriptId;
+            /**
+             * URL or name of the script parsed (if any).
+             */
+            url: string;
+            /**
+             * Line offset of the script within the resource with given URL (for script tags).
+             */
+            startLine: number;
+            /**
+             * Column offset of the script within the resource with given URL.
+             */
+            startColumn: number;
+            /**
+             * Last line of the script.
+             */
+            endLine: number;
+            /**
+             * Length of the last line of the script.
+             */
+            endColumn: number;
+            /**
+             * Specifies script creation context.
+             */
+            executionContextId: Runtime.ExecutionContextId;
+            /**
+             * Content hash of the script.
+             */
+            hash: string;
+            /**
+             * Embedder-specific auxiliary data.
+             */
+            executionContextAuxData?: {};
+            /**
+             * True, if this script is generated as a result of the live edit operation.
+             * @experimental
+             */
+            isLiveEdit?: boolean;
+            /**
+             * URL of source map associated with script (if any).
+             */
+            sourceMapURL?: string;
+            /**
+             * True, if this script has sourceURL.
+             */
+            hasSourceURL?: boolean;
+            /**
+             * True, if this script is ES6 module.
+             */
+            isModule?: boolean;
+            /**
+             * This script length.
+             */
+            length?: number;
+            /**
+             * JavaScript top stack frame of where the script parsed event was triggered if available.
+             * @experimental
+             */
+            stackTrace?: Runtime.StackTrace;
+        }
+
+        interface ScriptFailedToParseEventDataType {
+            /**
+             * Identifier of the script parsed.
+             */
+            scriptId: Runtime.ScriptId;
+            /**
+             * URL or name of the script parsed (if any).
+             */
+            url: string;
+            /**
+             * Line offset of the script within the resource with given URL (for script tags).
+             */
+            startLine: number;
+            /**
+             * Column offset of the script within the resource with given URL.
+             */
+            startColumn: number;
+            /**
+             * Last line of the script.
+             */
+            endLine: number;
+            /**
+             * Length of the last line of the script.
+             */
+            endColumn: number;
+            /**
+             * Specifies script creation context.
+             */
+            executionContextId: Runtime.ExecutionContextId;
+            /**
+             * Content hash of the script.
+             */
+            hash: string;
+            /**
+             * Embedder-specific auxiliary data.
+             */
+            executionContextAuxData?: {};
+            /**
+             * URL of source map associated with script (if any).
+             */
+            sourceMapURL?: string;
+            /**
+             * True, if this script has sourceURL.
+             */
+            hasSourceURL?: boolean;
+            /**
+             * True, if this script is ES6 module.
+             */
+            isModule?: boolean;
+            /**
+             * This script length.
+             */
+            length?: number;
+            /**
+             * JavaScript top stack frame of where the script parsed event was triggered if available.
+             * @experimental
+             */
+            stackTrace?: Runtime.StackTrace;
+        }
+
+        interface BreakpointResolvedEventDataType {
+            /**
+             * Breakpoint unique identifier.
+             */
+            breakpointId: BreakpointId;
+            /**
+             * Actual breakpoint location.
+             */
+            location: Location;
+        }
+
+        interface PausedEventDataType {
+            /**
+             * Call stack the virtual machine stopped on.
+             */
+            callFrames: CallFrame[];
+            /**
+             * Pause reason.
+             */
+            reason: string;
+            /**
+             * Object containing break-specific auxiliary properties.
+             */
+            data?: {};
+            /**
+             * Hit breakpoints IDs
+             */
+            hitBreakpoints?: string[];
+            /**
+             * Async stack trace, if any.
+             */
+            asyncStackTrace?: Runtime.StackTrace;
+            /**
+             * Async stack trace, if any.
+             * @experimental
+             */
+            asyncStackTraceId?: Runtime.StackTraceId;
+            /**
+             * Just scheduled async call will have this stack trace as parent stack during async execution. This field is available only after <code>Debugger.stepInto</code> call with <code>breakOnAsynCall</code> flag.
+             * @experimental
+             */
+            asyncCallStackTraceId?: Runtime.StackTraceId;
+        }
+    }
+
+    namespace Console {
+        /**
+         * Console message.
+         */
+        interface ConsoleMessage {
+            /**
+             * Message source.
+             */
+            source: string;
+            /**
+             * Message severity.
+             */
+            level: string;
+            /**
+             * Message text.
+             */
+            text: string;
+            /**
+             * URL of the message origin.
+             */
+            url?: string;
+            /**
+             * Line number in the resource that generated this message (1-based).
+             */
+            line?: number;
+            /**
+             * Column number in the resource that generated this message (1-based).
+             */
+            column?: number;
+        }
+
+        interface MessageAddedEventDataType {
+            /**
+             * Console message that has been added.
+             */
+            message: ConsoleMessage;
+        }
+    }
+
+    namespace Profiler {
+        /**
+         * Profile node. Holds callsite information, execution statistics and child nodes.
+         */
+        interface ProfileNode {
+            /**
+             * Unique id of the node.
+             */
+            id: number;
+            /**
+             * Function location.
+             */
+            callFrame: Runtime.CallFrame;
+            /**
+             * Number of samples where this node was on top of the call stack.
+             */
+            hitCount?: number;
+            /**
+             * Child node ids.
+             */
+            children?: number[];
+            /**
+             * The reason of being not optimized. The function may be deoptimized or marked as don't optimize.
+             */
+            deoptReason?: string;
+            /**
+             * An array of source position ticks.
+             */
+            positionTicks?: PositionTickInfo[];
+        }
+
+        /**
+         * Profile.
+         */
+        interface Profile {
+            /**
+             * The list of profile nodes. First item is the root node.
+             */
+            nodes: ProfileNode[];
+            /**
+             * Profiling start timestamp in microseconds.
+             */
+            startTime: number;
+            /**
+             * Profiling end timestamp in microseconds.
+             */
+            endTime: number;
+            /**
+             * Ids of samples top nodes.
+             */
+            samples?: number[];
+            /**
+             * Time intervals between adjacent samples in microseconds. The first delta is relative to the profile startTime.
+             */
+            timeDeltas?: number[];
+        }
+
+        /**
+         * Specifies a number of samples attributed to a certain source position.
+         */
+        interface PositionTickInfo {
+            /**
+             * Source line number (1-based).
+             */
+            line: number;
+            /**
+             * Number of samples attributed to the source line.
+             */
+            ticks: number;
+        }
+
+        /**
+         * Coverage data for a source range.
+         */
+        interface CoverageRange {
+            /**
+             * JavaScript script source offset for the range start.
+             */
+            startOffset: number;
+            /**
+             * JavaScript script source offset for the range end.
+             */
+            endOffset: number;
+            /**
+             * Collected execution count of the source range.
+             */
+            count: number;
+        }
+
+        /**
+         * Coverage data for a JavaScript function.
+         */
+        interface FunctionCoverage {
+            /**
+             * JavaScript function name.
+             */
+            functionName: string;
+            /**
+             * Source ranges inside the function with coverage data.
+             */
+            ranges: CoverageRange[];
+            /**
+             * Whether coverage data for this function has block granularity.
+             */
+            isBlockCoverage: boolean;
+        }
+
+        /**
+         * Coverage data for a JavaScript script.
+         */
+        interface ScriptCoverage {
+            /**
+             * JavaScript script id.
+             */
+            scriptId: Runtime.ScriptId;
+            /**
+             * JavaScript script name or url.
+             */
+            url: string;
+            /**
+             * Functions contained in the script that has coverage data.
+             */
+            functions: FunctionCoverage[];
+        }
+
+        /**
+         * Describes a type collected during runtime.
+         * @experimental
+         */
+        interface TypeObject {
+            /**
+             * Name of a type collected with type profiling.
+             */
+            name: string;
+        }
+
+        /**
+         * Source offset and types for a parameter or return value.
+         * @experimental
+         */
+        interface TypeProfileEntry {
+            /**
+             * Source offset of the parameter or end of function for return values.
+             */
+            offset: number;
+            /**
+             * The types for this parameter or return value.
+             */
+            types: TypeObject[];
+        }
+
+        /**
+         * Type profile data collected during runtime for a JavaScript script.
+         * @experimental
+         */
+        interface ScriptTypeProfile {
+            /**
+             * JavaScript script id.
+             */
+            scriptId: Runtime.ScriptId;
+            /**
+             * JavaScript script name or url.
+             */
+            url: string;
+            /**
+             * Type profile entries for parameters and return values of the functions in the script.
+             */
+            entries: TypeProfileEntry[];
+        }
+
+        interface SetSamplingIntervalParameterType {
+            /**
+             * New sampling interval in microseconds.
+             */
+            interval: number;
+        }
+
+        interface StartPreciseCoverageParameterType {
+            /**
+             * Collect accurate call counts beyond simple 'covered' or 'not covered'.
+             */
+            callCount?: boolean;
+            /**
+             * Collect block-based coverage.
+             */
+            detailed?: boolean;
+        }
+
+        interface StopReturnType {
+            /**
+             * Recorded profile.
+             */
+            profile: Profile;
+        }
+
+        interface TakePreciseCoverageReturnType {
+            /**
+             * Coverage data for the current isolate.
+             */
+            result: ScriptCoverage[];
+        }
+
+        interface GetBestEffortCoverageReturnType {
+            /**
+             * Coverage data for the current isolate.
+             */
+            result: ScriptCoverage[];
+        }
+
+        interface TakeTypeProfileReturnType {
+            /**
+             * Type profile for all scripts since startTypeProfile() was turned on.
+             */
+            result: ScriptTypeProfile[];
+        }
+
+        interface ConsoleProfileStartedEventDataType {
+            id: string;
+            /**
+             * Location of console.profile().
+             */
+            location: Debugger.Location;
+            /**
+             * Profile title passed as an argument to console.profile().
+             */
+            title?: string;
+        }
+
+        interface ConsoleProfileFinishedEventDataType {
+            id: string;
+            /**
+             * Location of console.profileEnd().
+             */
+            location: Debugger.Location;
+            profile: Profile;
+            /**
+             * Profile title passed as an argument to console.profile().
+             */
+            title?: string;
+        }
+    }
+
+    namespace HeapProfiler {
+        /**
+         * Heap snapshot object id.
+         */
+        type HeapSnapshotObjectId = string;
+
+        /**
+         * Sampling Heap Profile node. Holds callsite information, allocation statistics and child nodes.
+         */
+        interface SamplingHeapProfileNode {
+            /**
+             * Function location.
+             */
+            callFrame: Runtime.CallFrame;
+            /**
+             * Allocations size in bytes for the node excluding children.
+             */
+            selfSize: number;
+            /**
+             * Child nodes.
+             */
+            children: SamplingHeapProfileNode[];
+        }
+
+        /**
+         * Profile.
+         */
+        interface SamplingHeapProfile {
+            head: SamplingHeapProfileNode;
+        }
+
+        interface StartTrackingHeapObjectsParameterType {
+            trackAllocations?: boolean;
+        }
+
+        interface StopTrackingHeapObjectsParameterType {
+            /**
+             * If true 'reportHeapSnapshotProgress' events will be generated while snapshot is being taken when the tracking is stopped.
+             */
+            reportProgress?: boolean;
+        }
+
+        interface TakeHeapSnapshotParameterType {
+            /**
+             * If true 'reportHeapSnapshotProgress' events will be generated while snapshot is being taken.
+             */
+            reportProgress?: boolean;
+        }
+
+        interface GetObjectByHeapObjectIdParameterType {
+            objectId: HeapSnapshotObjectId;
+            /**
+             * Symbolic group name that can be used to release multiple objects.
+             */
+            objectGroup?: string;
+        }
+
+        interface AddInspectedHeapObjectParameterType {
+            /**
+             * Heap snapshot object id to be accessible by means of $x command line API.
+             */
+            heapObjectId: HeapSnapshotObjectId;
+        }
+
+        interface GetHeapObjectIdParameterType {
+            /**
+             * Identifier of the object to get heap object id for.
+             */
+            objectId: Runtime.RemoteObjectId;
+        }
+
+        interface StartSamplingParameterType {
+            /**
+             * Average sample interval in bytes. Poisson distribution is used for the intervals. The default value is 32768 bytes.
+             */
+            samplingInterval?: number;
+        }
+
+        interface GetObjectByHeapObjectIdReturnType {
+            /**
+             * Evaluation result.
+             */
+            result: Runtime.RemoteObject;
+        }
+
+        interface GetHeapObjectIdReturnType {
+            /**
+             * Id of the heap snapshot object corresponding to the passed remote object id.
+             */
+            heapSnapshotObjectId: HeapSnapshotObjectId;
+        }
+
+        interface StopSamplingReturnType {
+            /**
+             * Recorded sampling heap profile.
+             */
+            profile: SamplingHeapProfile;
+        }
+
+        interface GetSamplingProfileReturnType {
+            /**
+             * Return the sampling profile being collected.
+             */
+            profile: SamplingHeapProfile;
+        }
+
+        interface AddHeapSnapshotChunkEventDataType {
+            chunk: string;
+        }
+
+        interface ReportHeapSnapshotProgressEventDataType {
+            done: number;
+            total: number;
+            finished?: boolean;
+        }
+
+        interface LastSeenObjectIdEventDataType {
+            lastSeenObjectId: number;
+            timestamp: number;
+        }
+
+        interface HeapStatsUpdateEventDataType {
+            /**
+             * An array of triplets. Each triplet describes a fragment. The first integer is the fragment index, the second integer is a total count of objects for the fragment, the third integer is a total size of the objects for the fragment.
+             */
+            statsUpdate: number[];
+        }
+    }
+
+    namespace NodeTracing {
+        interface TraceConfig {
+            /**
+             * Controls how the trace buffer stores data.
+             */
+            recordMode?: string;
+            /**
+             * Included category filters.
+             */
+            includedCategories: string[];
+        }
+
+        interface StartParameterType {
+            traceConfig: TraceConfig;
+        }
+
+        interface GetCategoriesReturnType {
+            /**
+             * A list of supported tracing categories.
+             */
+            categories: string[];
+        }
+
+        interface DataCollectedEventDataType {
+            value: Array<{}>;
+        }
+    }
+
+    namespace NodeWorker {
+        type WorkerID = string;
+
+        /**
+         * Unique identifier of attached debugging session.
+         */
+        type SessionID = string;
+
+        interface WorkerInfo {
+            workerId: WorkerID;
+            type: string;
+            title: string;
+            url: string;
+        }
+
+        interface SendMessageToWorkerParameterType {
+            message: string;
+            /**
+             * Identifier of the session.
+             */
+            sessionId: SessionID;
+        }
+
+        interface EnableParameterType {
+            /**
+             * Whether to new workers should be paused until the frontend sends `Runtime.runIfWaitingForDebugger`
+             * message to run them.
+             */
+            waitForDebuggerOnStart: boolean;
+        }
+
+        interface DetachParameterType {
+            sessionId: SessionID;
+        }
+
+        interface AttachedToWorkerEventDataType {
+            /**
+             * Identifier assigned to the session used to send/receive messages.
+             */
+            sessionId: SessionID;
+            workerInfo: WorkerInfo;
+            waitingForDebugger: boolean;
+        }
+
+        interface DetachedFromWorkerEventDataType {
+            /**
+             * Detached session identifier.
+             */
+            sessionId: SessionID;
+        }
+
+        interface ReceivedMessageFromWorkerEventDataType {
+            /**
+             * Identifier of a session which sends a message.
+             */
+            sessionId: SessionID;
+            message: string;
+        }
+    }
+
+    namespace NodeRuntime {
+        interface NotifyWhenWaitingForDisconnectParameterType {
+            enabled: boolean;
+        }
+    }
+
+    /**
+     * The inspector.Session is used for dispatching messages to the V8 inspector back-end and receiving message responses and notifications.
+     */
+    class Session extends EventEmitter {
+        /**
+         * Create a new instance of the inspector.Session class.
+         * The inspector session needs to be connected through session.connect() before the messages can be dispatched to the inspector backend.
+         */
+        constructor();
+
+        /**
+         * Connects a session to the inspector back-end.
+         * An exception will be thrown if there is already a connected session established either
+         * through the API or by a front-end connected to the Inspector WebSocket port.
+         */
+        connect(): void;
+
+        /**
+         * Immediately close the session. All pending message callbacks will be called with an error.
+         * session.connect() will need to be called to be able to send messages again.
+         * Reconnected session will lose all inspector state, such as enabled agents or configured breakpoints.
+         */
+        disconnect(): void;
+
+        /**
+         * Posts a message to the inspector back-end. callback will be notified when a response is received.
+         * callback is a function that accepts two optional arguments - error and message-specific result.
+         */
+        post(method: string, params?: {}, callback?: (err: Error | null, params?: {}) => void): void;
+        post(method: string, callback?: (err: Error | null, params?: {}) => void): void;
+
+        /**
+         * Returns supported domains.
+         */
+        post(method: "Schema.getDomains", callback?: (err: Error | null, params: Schema.GetDomainsReturnType) => void): void;
+
+        /**
+         * Evaluates expression on global object.
+         */
+        post(method: "Runtime.evaluate", params?: Runtime.EvaluateParameterType, callback?: (err: Error | null, params: Runtime.EvaluateReturnType) => void): void;
+        post(method: "Runtime.evaluate", callback?: (err: Error | null, params: Runtime.EvaluateReturnType) => void): void;
+
+        /**
+         * Add handler to promise with given promise object id.
+         */
+        post(method: "Runtime.awaitPromise", params?: Runtime.AwaitPromiseParameterType, callback?: (err: Error | null, params: Runtime.AwaitPromiseReturnType) => void): void;
+        post(method: "Runtime.awaitPromise", callback?: (err: Error | null, params: Runtime.AwaitPromiseReturnType) => void): void;
+
+        /**
+         * Calls function with given declaration on the given object. Object group of the result is inherited from the target object.
+         */
+        post(method: "Runtime.callFunctionOn", params?: Runtime.CallFunctionOnParameterType, callback?: (err: Error | null, params: Runtime.CallFunctionOnReturnType) => void): void;
+        post(method: "Runtime.callFunctionOn", callback?: (err: Error | null, params: Runtime.CallFunctionOnReturnType) => void): void;
+
+        /**
+         * Returns properties of a given object. Object group of the result is inherited from the target object.
+         */
+        post(method: "Runtime.getProperties", params?: Runtime.GetPropertiesParameterType, callback?: (err: Error | null, params: Runtime.GetPropertiesReturnType) => void): void;
+        post(method: "Runtime.getProperties", callback?: (err: Error | null, params: Runtime.GetPropertiesReturnType) => void): void;
+
+        /**
+         * Releases remote object with given id.
+         */
+        post(method: "Runtime.releaseObject", params?: Runtime.ReleaseObjectParameterType, callback?: (err: Error | null) => void): void;
+        post(method: "Runtime.releaseObject", callback?: (err: Error | null) => void): void;
+
+        /**
+         * Releases all remote objects that belong to a given group.
+         */
+        post(method: "Runtime.releaseObjectGroup", params?: Runtime.ReleaseObjectGroupParameterType, callback?: (err: Error | null) => void): void;
+        post(method: "Runtime.releaseObjectGroup", callback?: (err: Error | null) => void): void;
+
+        /**
+         * Tells inspected instance to run if it was waiting for debugger to attach.
+         */
+        post(method: "Runtime.runIfWaitingForDebugger", callback?: (err: Error | null) => void): void;
+
+        /**
+         * Enables reporting of execution contexts creation by means of <code>executionContextCreated</code> event. When the reporting gets enabled the event will be sent immediately for each existing execution context.
+         */
+        post(method: "Runtime.enable", callback?: (err: Error | null) => void): void;
+
+        /**
+         * Disables reporting of execution contexts creation.
+         */
+        post(method: "Runtime.disable", callback?: (err: Error | null) => void): void;
+
+        /**
+         * Discards collected exceptions and console API calls.
+         */
+        post(method: "Runtime.discardConsoleEntries", callback?: (err: Error | null) => void): void;
+
+        /**
+         * @experimental
+         */
+        post(method: "Runtime.setCustomObjectFormatterEnabled", params?: Runtime.SetCustomObjectFormatterEnabledParameterType, callback?: (err: Error | null) => void): void;
+        post(method: "Runtime.setCustomObjectFormatterEnabled", callback?: (err: Error | null) => void): void;
+
+        /**
+         * Compiles expression.
+         */
+        post(method: "Runtime.compileScript", params?: Runtime.CompileScriptParameterType, callback?: (err: Error | null, params: Runtime.CompileScriptReturnType) => void): void;
+        post(method: "Runtime.compileScript", callback?: (err: Error | null, params: Runtime.CompileScriptReturnType) => void): void;
+
+        /**
+         * Runs script with given id in a given context.
+         */
+        post(method: "Runtime.runScript", params?: Runtime.RunScriptParameterType, callback?: (err: Error | null, params: Runtime.RunScriptReturnType) => void): void;
+        post(method: "Runtime.runScript", callback?: (err: Error | null, params: Runtime.RunScriptReturnType) => void): void;
+
+        post(method: "Runtime.queryObjects", params?: Runtime.QueryObjectsParameterType, callback?: (err: Error | null, params: Runtime.QueryObjectsReturnType) => void): void;
+        post(method: "Runtime.queryObjects", callback?: (err: Error | null, params: Runtime.QueryObjectsReturnType) => void): void;
+
+        /**
+         * Returns all let, const and class variables from global scope.
+         */
+        post(
+            method: "Runtime.globalLexicalScopeNames",
+            params?: Runtime.GlobalLexicalScopeNamesParameterType,
+            callback?: (err: Error | null, params: Runtime.GlobalLexicalScopeNamesReturnType) => void
+        ): void;
+        post(method: "Runtime.globalLexicalScopeNames", callback?: (err: Error | null, params: Runtime.GlobalLexicalScopeNamesReturnType) => void): void;
+
+        /**
+         * Enables debugger for the given page. Clients should not assume that the debugging has been enabled until the result for this command is received.
+         */
+        post(method: "Debugger.enable", callback?: (err: Error | null, params: Debugger.EnableReturnType) => void): void;
+
+        /**
+         * Disables debugger for given page.
+         */
+        post(method: "Debugger.disable", callback?: (err: Error | null) => void): void;
+
+        /**
+         * Activates / deactivates all breakpoints on the page.
+         */
+        post(method: "Debugger.setBreakpointsActive", params?: Debugger.SetBreakpointsActiveParameterType, callback?: (err: Error | null) => void): void;
+        post(method: "Debugger.setBreakpointsActive", callback?: (err: Error | null) => void): void;
+
+        /**
+         * Makes page not interrupt on any pauses (breakpoint, exception, dom exception etc).
+         */
+        post(method: "Debugger.setSkipAllPauses", params?: Debugger.SetSkipAllPausesParameterType, callback?: (err: Error | null) => void): void;
+        post(method: "Debugger.setSkipAllPauses", callback?: (err: Error | null) => void): void;
+
+        /**
+         * Sets JavaScript breakpoint at given location specified either by URL or URL regex. Once this command is issued, all existing parsed scripts will have breakpoints resolved and returned in <code>locations</code> property. Further matching script parsing will result in subsequent <code>breakpointResolved</code> events issued. This logical breakpoint will survive page reloads.
+         */
+        post(method: "Debugger.setBreakpointByUrl", params?: Debugger.SetBreakpointByUrlParameterType, callback?: (err: Error | null, params: Debugger.SetBreakpointByUrlReturnType) => void): void;
+        post(method: "Debugger.setBreakpointByUrl", callback?: (err: Error | null, params: Debugger.SetBreakpointByUrlReturnType) => void): void;
+
+        /**
+         * Sets JavaScript breakpoint at a given location.
+         */
+        post(method: "Debugger.setBreakpoint", params?: Debugger.SetBreakpointParameterType, callback?: (err: Error | null, params: Debugger.SetBreakpointReturnType) => void): void;
+        post(method: "Debugger.setBreakpoint", callback?: (err: Error | null, params: Debugger.SetBreakpointReturnType) => void): void;
+
+        /**
+         * Removes JavaScript breakpoint.
+         */
+        post(method: "Debugger.removeBreakpoint", params?: Debugger.RemoveBreakpointParameterType, callback?: (err: Error | null) => void): void;
+        post(method: "Debugger.removeBreakpoint", callback?: (err: Error | null) => void): void;
+
+        /**
+         * Returns possible locations for breakpoint. scriptId in start and end range locations should be the same.
+         */
+        post(
+            method: "Debugger.getPossibleBreakpoints",
+            params?: Debugger.GetPossibleBreakpointsParameterType,
+            callback?: (err: Error | null, params: Debugger.GetPossibleBreakpointsReturnType) => void
+        ): void;
+        post(method: "Debugger.getPossibleBreakpoints", callback?: (err: Error | null, params: Debugger.GetPossibleBreakpointsReturnType) => void): void;
+
+        /**
+         * Continues execution until specific location is reached.
+         */
+        post(method: "Debugger.continueToLocation", params?: Debugger.ContinueToLocationParameterType, callback?: (err: Error | null) => void): void;
+        post(method: "Debugger.continueToLocation", callback?: (err: Error | null) => void): void;
+
+        /**
+         * @experimental
+         */
+        post(method: "Debugger.pauseOnAsyncCall", params?: Debugger.PauseOnAsyncCallParameterType, callback?: (err: Error | null) => void): void;
+        post(method: "Debugger.pauseOnAsyncCall", callback?: (err: Error | null) => void): void;
+
+        /**
+         * Steps over the statement.
+         */
+        post(method: "Debugger.stepOver", callback?: (err: Error | null) => void): void;
+
+        /**
+         * Steps into the function call.
+         */
+        post(method: "Debugger.stepInto", params?: Debugger.StepIntoParameterType, callback?: (err: Error | null) => void): void;
+        post(method: "Debugger.stepInto", callback?: (err: Error | null) => void): void;
+
+        /**
+         * Steps out of the function call.
+         */
+        post(method: "Debugger.stepOut", callback?: (err: Error | null) => void): void;
+
+        /**
+         * Stops on the next JavaScript statement.
+         */
+        post(method: "Debugger.pause", callback?: (err: Error | null) => void): void;
+
+        /**
+         * This method is deprecated - use Debugger.stepInto with breakOnAsyncCall and Debugger.pauseOnAsyncTask instead. Steps into next scheduled async task if any is scheduled before next pause. Returns success when async task is actually scheduled, returns error if no task were scheduled or another scheduleStepIntoAsync was called.
+         * @experimental
+         */
+        post(method: "Debugger.scheduleStepIntoAsync", callback?: (err: Error | null) => void): void;
+
+        /**
+         * Resumes JavaScript execution.
+         */
+        post(method: "Debugger.resume", callback?: (err: Error | null) => void): void;
+
+        /**
+         * Returns stack trace with given <code>stackTraceId</code>.
+         * @experimental
+         */
+        post(method: "Debugger.getStackTrace", params?: Debugger.GetStackTraceParameterType, callback?: (err: Error | null, params: Debugger.GetStackTraceReturnType) => void): void;
+        post(method: "Debugger.getStackTrace", callback?: (err: Error | null, params: Debugger.GetStackTraceReturnType) => void): void;
+
+        /**
+         * Searches for given string in script content.
+         */
+        post(method: "Debugger.searchInContent", params?: Debugger.SearchInContentParameterType, callback?: (err: Error | null, params: Debugger.SearchInContentReturnType) => void): void;
+        post(method: "Debugger.searchInContent", callback?: (err: Error | null, params: Debugger.SearchInContentReturnType) => void): void;
+
+        /**
+         * Edits JavaScript source live.
+         */
+        post(method: "Debugger.setScriptSource", params?: Debugger.SetScriptSourceParameterType, callback?: (err: Error | null, params: Debugger.SetScriptSourceReturnType) => void): void;
+        post(method: "Debugger.setScriptSource", callback?: (err: Error | null, params: Debugger.SetScriptSourceReturnType) => void): void;
+
+        /**
+         * Restarts particular call frame from the beginning.
+         */
+        post(method: "Debugger.restartFrame", params?: Debugger.RestartFrameParameterType, callback?: (err: Error | null, params: Debugger.RestartFrameReturnType) => void): void;
+        post(method: "Debugger.restartFrame", callback?: (err: Error | null, params: Debugger.RestartFrameReturnType) => void): void;
+
+        /**
+         * Returns source for the script with given id.
+         */
+        post(method: "Debugger.getScriptSource", params?: Debugger.GetScriptSourceParameterType, callback?: (err: Error | null, params: Debugger.GetScriptSourceReturnType) => void): void;
+        post(method: "Debugger.getScriptSource", callback?: (err: Error | null, params: Debugger.GetScriptSourceReturnType) => void): void;
+
+        /**
+         * Defines pause on exceptions state. Can be set to stop on all exceptions, uncaught exceptions or no exceptions. Initial pause on exceptions state is <code>none</code>.
+         */
+        post(method: "Debugger.setPauseOnExceptions", params?: Debugger.SetPauseOnExceptionsParameterType, callback?: (err: Error | null) => void): void;
+        post(method: "Debugger.setPauseOnExceptions", callback?: (err: Error | null) => void): void;
+
+        /**
+         * Evaluates expression on a given call frame.
+         */
+        post(method: "Debugger.evaluateOnCallFrame", params?: Debugger.EvaluateOnCallFrameParameterType, callback?: (err: Error | null, params: Debugger.EvaluateOnCallFrameReturnType) => void): void;
+        post(method: "Debugger.evaluateOnCallFrame", callback?: (err: Error | null, params: Debugger.EvaluateOnCallFrameReturnType) => void): void;
+
+        /**
+         * Changes value of variable in a callframe. Object-based scopes are not supported and must be mutated manually.
+         */
+        post(method: "Debugger.setVariableValue", params?: Debugger.SetVariableValueParameterType, callback?: (err: Error | null) => void): void;
+        post(method: "Debugger.setVariableValue", callback?: (err: Error | null) => void): void;
+
+        /**
+         * Changes return value in top frame. Available only at return break position.
+         * @experimental
+         */
+        post(method: "Debugger.setReturnValue", params?: Debugger.SetReturnValueParameterType, callback?: (err: Error | null) => void): void;
+        post(method: "Debugger.setReturnValue", callback?: (err: Error | null) => void): void;
+
+        /**
+         * Enables or disables async call stacks tracking.
+         */
+        post(method: "Debugger.setAsyncCallStackDepth", params?: Debugger.SetAsyncCallStackDepthParameterType, callback?: (err: Error | null) => void): void;
+        post(method: "Debugger.setAsyncCallStackDepth", callback?: (err: Error | null) => void): void;
+
+        /**
+         * Replace previous blackbox patterns with passed ones. Forces backend to skip stepping/pausing in scripts with url matching one of the patterns. VM will try to leave blackboxed script by performing 'step in' several times, finally resorting to 'step out' if unsuccessful.
+         * @experimental
+         */
+        post(method: "Debugger.setBlackboxPatterns", params?: Debugger.SetBlackboxPatternsParameterType, callback?: (err: Error | null) => void): void;
+        post(method: "Debugger.setBlackboxPatterns", callback?: (err: Error | null) => void): void;
+
+        /**
+         * Makes backend skip steps in the script in blackboxed ranges. VM will try leave blacklisted scripts by performing 'step in' several times, finally resorting to 'step out' if unsuccessful. Positions array contains positions where blackbox state is changed. First interval isn't blackboxed. Array should be sorted.
+         * @experimental
+         */
+        post(method: "Debugger.setBlackboxedRanges", params?: Debugger.SetBlackboxedRangesParameterType, callback?: (err: Error | null) => void): void;
+        post(method: "Debugger.setBlackboxedRanges", callback?: (err: Error | null) => void): void;
+
+        /**
+         * Enables console domain, sends the messages collected so far to the client by means of the <code>messageAdded</code> notification.
+         */
+        post(method: "Console.enable", callback?: (err: Error | null) => void): void;
+
+        /**
+         * Disables console domain, prevents further console messages from being reported to the client.
+         */
+        post(method: "Console.disable", callback?: (err: Error | null) => void): void;
+
+        /**
+         * Does nothing.
+         */
+        post(method: "Console.clearMessages", callback?: (err: Error | null) => void): void;
+
+        post(method: "Profiler.enable", callback?: (err: Error | null) => void): void;
+
+        post(method: "Profiler.disable", callback?: (err: Error | null) => void): void;
+
+        /**
+         * Changes CPU profiler sampling interval. Must be called before CPU profiles recording started.
+         */
+        post(method: "Profiler.setSamplingInterval", params?: Profiler.SetSamplingIntervalParameterType, callback?: (err: Error | null) => void): void;
+        post(method: "Profiler.setSamplingInterval", callback?: (err: Error | null) => void): void;
+
+        post(method: "Profiler.start", callback?: (err: Error | null) => void): void;
+
+        post(method: "Profiler.stop", callback?: (err: Error | null, params: Profiler.StopReturnType) => void): void;
+
+        /**
+         * Enable precise code coverage. Coverage data for JavaScript executed before enabling precise code coverage may be incomplete. Enabling prevents running optimized code and resets execution counters.
+         */
+        post(method: "Profiler.startPreciseCoverage", params?: Profiler.StartPreciseCoverageParameterType, callback?: (err: Error | null) => void): void;
+        post(method: "Profiler.startPreciseCoverage", callback?: (err: Error | null) => void): void;
+
+        /**
+         * Disable precise code coverage. Disabling releases unnecessary execution count records and allows executing optimized code.
+         */
+        post(method: "Profiler.stopPreciseCoverage", callback?: (err: Error | null) => void): void;
+
+        /**
+         * Collect coverage data for the current isolate, and resets execution counters. Precise code coverage needs to have started.
+         */
+        post(method: "Profiler.takePreciseCoverage", callback?: (err: Error | null, params: Profiler.TakePreciseCoverageReturnType) => void): void;
+
+        /**
+         * Collect coverage data for the current isolate. The coverage data may be incomplete due to garbage collection.
+         */
+        post(method: "Profiler.getBestEffortCoverage", callback?: (err: Error | null, params: Profiler.GetBestEffortCoverageReturnType) => void): void;
+
+        /**
+         * Enable type profile.
+         * @experimental
+         */
+        post(method: "Profiler.startTypeProfile", callback?: (err: Error | null) => void): void;
+
+        /**
+         * Disable type profile. Disabling releases type profile data collected so far.
+         * @experimental
+         */
+        post(method: "Profiler.stopTypeProfile", callback?: (err: Error | null) => void): void;
+
+        /**
+         * Collect type profile.
+         * @experimental
+         */
+        post(method: "Profiler.takeTypeProfile", callback?: (err: Error | null, params: Profiler.TakeTypeProfileReturnType) => void): void;
+
+        post(method: "HeapProfiler.enable", callback?: (err: Error | null) => void): void;
+
+        post(method: "HeapProfiler.disable", callback?: (err: Error | null) => void): void;
+
+        post(method: "HeapProfiler.startTrackingHeapObjects", params?: HeapProfiler.StartTrackingHeapObjectsParameterType, callback?: (err: Error | null) => void): void;
+        post(method: "HeapProfiler.startTrackingHeapObjects", callback?: (err: Error | null) => void): void;
+
+        post(method: "HeapProfiler.stopTrackingHeapObjects", params?: HeapProfiler.StopTrackingHeapObjectsParameterType, callback?: (err: Error | null) => void): void;
+        post(method: "HeapProfiler.stopTrackingHeapObjects", callback?: (err: Error | null) => void): void;
+
+        post(method: "HeapProfiler.takeHeapSnapshot", params?: HeapProfiler.TakeHeapSnapshotParameterType, callback?: (err: Error | null) => void): void;
+        post(method: "HeapProfiler.takeHeapSnapshot", callback?: (err: Error | null) => void): void;
+
+        post(method: "HeapProfiler.collectGarbage", callback?: (err: Error | null) => void): void;
+
+        post(
+            method: "HeapProfiler.getObjectByHeapObjectId",
+            params?: HeapProfiler.GetObjectByHeapObjectIdParameterType,
+            callback?: (err: Error | null, params: HeapProfiler.GetObjectByHeapObjectIdReturnType) => void
+        ): void;
+        post(method: "HeapProfiler.getObjectByHeapObjectId", callback?: (err: Error | null, params: HeapProfiler.GetObjectByHeapObjectIdReturnType) => void): void;
+
+        /**
+         * Enables console to refer to the node with given id via $x (see Command Line API for more details $x functions).
+         */
+        post(method: "HeapProfiler.addInspectedHeapObject", params?: HeapProfiler.AddInspectedHeapObjectParameterType, callback?: (err: Error | null) => void): void;
+        post(method: "HeapProfiler.addInspectedHeapObject", callback?: (err: Error | null) => void): void;
+
+        post(method: "HeapProfiler.getHeapObjectId", params?: HeapProfiler.GetHeapObjectIdParameterType, callback?: (err: Error | null, params: HeapProfiler.GetHeapObjectIdReturnType) => void): void;
+        post(method: "HeapProfiler.getHeapObjectId", callback?: (err: Error | null, params: HeapProfiler.GetHeapObjectIdReturnType) => void): void;
+
+        post(method: "HeapProfiler.startSampling", params?: HeapProfiler.StartSamplingParameterType, callback?: (err: Error | null) => void): void;
+        post(method: "HeapProfiler.startSampling", callback?: (err: Error | null) => void): void;
+
+        post(method: "HeapProfiler.stopSampling", callback?: (err: Error | null, params: HeapProfiler.StopSamplingReturnType) => void): void;
+
+        post(method: "HeapProfiler.getSamplingProfile", callback?: (err: Error | null, params: HeapProfiler.GetSamplingProfileReturnType) => void): void;
+
+        /**
+         * Gets supported tracing categories.
+         */
+        post(method: "NodeTracing.getCategories", callback?: (err: Error | null, params: NodeTracing.GetCategoriesReturnType) => void): void;
+
+        /**
+         * Start trace events collection.
+         */
+        post(method: "NodeTracing.start", params?: NodeTracing.StartParameterType, callback?: (err: Error | null) => void): void;
+        post(method: "NodeTracing.start", callback?: (err: Error | null) => void): void;
+
+        /**
+         * Stop trace events collection. Remaining collected events will be sent as a sequence of
+         * dataCollected events followed by tracingComplete event.
+         */
+        post(method: "NodeTracing.stop", callback?: (err: Error | null) => void): void;
+
+        /**
+         * Sends protocol message over session with given id.
+         */
+        post(method: "NodeWorker.sendMessageToWorker", params?: NodeWorker.SendMessageToWorkerParameterType, callback?: (err: Error | null) => void): void;
+        post(method: "NodeWorker.sendMessageToWorker", callback?: (err: Error | null) => void): void;
+
+        /**
+         * Instructs the inspector to attach to running workers. Will also attach to new workers
+         * as they start
+         */
+        post(method: "NodeWorker.enable", params?: NodeWorker.EnableParameterType, callback?: (err: Error | null) => void): void;
+        post(method: "NodeWorker.enable", callback?: (err: Error | null) => void): void;
+
+        /**
+         * Detaches from all running workers and disables attaching to new workers as they are started.
+         */
+        post(method: "NodeWorker.disable", callback?: (err: Error | null) => void): void;
+
+        /**
+         * Detached from the worker with given sessionId.
+         */
+        post(method: "NodeWorker.detach", params?: NodeWorker.DetachParameterType, callback?: (err: Error | null) => void): void;
+        post(method: "NodeWorker.detach", callback?: (err: Error | null) => void): void;
+
+        /**
+         * Enable the `NodeRuntime.waitingForDisconnect`.
+         */
+        post(method: "NodeRuntime.notifyWhenWaitingForDisconnect", params?: NodeRuntime.NotifyWhenWaitingForDisconnectParameterType, callback?: (err: Error | null) => void): void;
+        post(method: "NodeRuntime.notifyWhenWaitingForDisconnect", callback?: (err: Error | null) => void): void;
+
+        // Events
+
+        addListener(event: string, listener: (...args: any[]) => void): this;
+
+        /**
+         * Emitted when any notification from the V8 Inspector is received.
+         */
+        addListener(event: "inspectorNotification", listener: (message: InspectorNotification<{}>) => void): this;
+
+        /**
+         * Issued when new execution context is created.
+         */
+        addListener(event: "Runtime.executionContextCreated", listener: (message: InspectorNotification<Runtime.ExecutionContextCreatedEventDataType>) => void): this;
+
+        /**
+         * Issued when execution context is destroyed.
+         */
+        addListener(event: "Runtime.executionContextDestroyed", listener: (message: InspectorNotification<Runtime.ExecutionContextDestroyedEventDataType>) => void): this;
+
+        /**
+         * Issued when all executionContexts were cleared in browser
+         */
+        addListener(event: "Runtime.executionContextsCleared", listener: () => void): this;
+
+        /**
+         * Issued when exception was thrown and unhandled.
+         */
+        addListener(event: "Runtime.exceptionThrown", listener: (message: InspectorNotification<Runtime.ExceptionThrownEventDataType>) => void): this;
+
+        /**
+         * Issued when unhandled exception was revoked.
+         */
+        addListener(event: "Runtime.exceptionRevoked", listener: (message: InspectorNotification<Runtime.ExceptionRevokedEventDataType>) => void): this;
+
+        /**
+         * Issued when console API was called.
+         */
+        addListener(event: "Runtime.consoleAPICalled", listener: (message: InspectorNotification<Runtime.ConsoleAPICalledEventDataType>) => void): this;
+
+        /**
+         * Issued when object should be inspected (for example, as a result of inspect() command line API call).
+         */
+        addListener(event: "Runtime.inspectRequested", listener: (message: InspectorNotification<Runtime.InspectRequestedEventDataType>) => void): this;
+
+        /**
+         * Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger.
+         */
+        addListener(event: "Debugger.scriptParsed", listener: (message: InspectorNotification<Debugger.ScriptParsedEventDataType>) => void): this;
+
+        /**
+         * Fired when virtual machine fails to parse the script.
+         */
+        addListener(event: "Debugger.scriptFailedToParse", listener: (message: InspectorNotification<Debugger.ScriptFailedToParseEventDataType>) => void): this;
+
+        /**
+         * Fired when breakpoint is resolved to an actual script and location.
+         */
+        addListener(event: "Debugger.breakpointResolved", listener: (message: InspectorNotification<Debugger.BreakpointResolvedEventDataType>) => void): this;
+
+        /**
+         * Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria.
+         */
+        addListener(event: "Debugger.paused", listener: (message: InspectorNotification<Debugger.PausedEventDataType>) => void): this;
+
+        /**
+         * Fired when the virtual machine resumed execution.
+         */
+        addListener(event: "Debugger.resumed", listener: () => void): this;
+
+        /**
+         * Issued when new console message is added.
+         */
+        addListener(event: "Console.messageAdded", listener: (message: InspectorNotification<Console.MessageAddedEventDataType>) => void): this;
+
+        /**
+         * Sent when new profile recording is started using console.profile() call.
+         */
+        addListener(event: "Profiler.consoleProfileStarted", listener: (message: InspectorNotification<Profiler.ConsoleProfileStartedEventDataType>) => void): this;
+
+        addListener(event: "Profiler.consoleProfileFinished", listener: (message: InspectorNotification<Profiler.ConsoleProfileFinishedEventDataType>) => void): this;
+        addListener(event: "HeapProfiler.addHeapSnapshotChunk", listener: (message: InspectorNotification<HeapProfiler.AddHeapSnapshotChunkEventDataType>) => void): this;
+        addListener(event: "HeapProfiler.resetProfiles", listener: () => void): this;
+        addListener(event: "HeapProfiler.reportHeapSnapshotProgress", listener: (message: InspectorNotification<HeapProfiler.ReportHeapSnapshotProgressEventDataType>) => void): this;
+
+        /**
+         * If heap objects tracking has been started then backend regularly sends a current value for last seen object id and corresponding timestamp. If the were changes in the heap since last event then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event.
+         */
+        addListener(event: "HeapProfiler.lastSeenObjectId", listener: (message: InspectorNotification<HeapProfiler.LastSeenObjectIdEventDataType>) => void): this;
+
+        /**
+         * If heap objects tracking has been started then backend may send update for one or more fragments
+         */
+        addListener(event: "HeapProfiler.heapStatsUpdate", listener: (message: InspectorNotification<HeapProfiler.HeapStatsUpdateEventDataType>) => void): this;
+
+        /**
+         * Contains an bucket of collected trace events.
+         */
+        addListener(event: "NodeTracing.dataCollected", listener: (message: InspectorNotification<NodeTracing.DataCollectedEventDataType>) => void): this;
+
+        /**
+         * Signals that tracing is stopped and there is no trace buffers pending flush, all data were
+         * delivered via dataCollected events.
+         */
+        addListener(event: "NodeTracing.tracingComplete", listener: () => void): this;
+
+        /**
+         * Issued when attached to a worker.
+         */
+        addListener(event: "NodeWorker.attachedToWorker", listener: (message: InspectorNotification<NodeWorker.AttachedToWorkerEventDataType>) => void): this;
+
+        /**
+         * Issued when detached from the worker.
+         */
+        addListener(event: "NodeWorker.detachedFromWorker", listener: (message: InspectorNotification<NodeWorker.DetachedFromWorkerEventDataType>) => void): this;
+
+        /**
+         * Notifies about a new protocol message received from the session
+         * (session ID is provided in attachedToWorker notification).
+         */
+        addListener(event: "NodeWorker.receivedMessageFromWorker", listener: (message: InspectorNotification<NodeWorker.ReceivedMessageFromWorkerEventDataType>) => void): this;
+
+        /**
+         * This event is fired instead of `Runtime.executionContextDestroyed` when
+         * enabled.
+         * It is fired when the Node process finished all code execution and is
+         * waiting for all frontends to disconnect.
+         */
+        addListener(event: "NodeRuntime.waitingForDisconnect", listener: () => void): this;
+
+        emit(event: string | symbol, ...args: any[]): boolean;
+        emit(event: "inspectorNotification", message: InspectorNotification<{}>): boolean;
+        emit(event: "Runtime.executionContextCreated", message: InspectorNotification<Runtime.ExecutionContextCreatedEventDataType>): boolean;
+        emit(event: "Runtime.executionContextDestroyed", message: InspectorNotification<Runtime.ExecutionContextDestroyedEventDataType>): boolean;
+        emit(event: "Runtime.executionContextsCleared"): boolean;
+        emit(event: "Runtime.exceptionThrown", message: InspectorNotification<Runtime.ExceptionThrownEventDataType>): boolean;
+        emit(event: "Runtime.exceptionRevoked", message: InspectorNotification<Runtime.ExceptionRevokedEventDataType>): boolean;
+        emit(event: "Runtime.consoleAPICalled", message: InspectorNotification<Runtime.ConsoleAPICalledEventDataType>): boolean;
+        emit(event: "Runtime.inspectRequested", message: InspectorNotification<Runtime.InspectRequestedEventDataType>): boolean;
+        emit(event: "Debugger.scriptParsed", message: InspectorNotification<Debugger.ScriptParsedEventDataType>): boolean;
+        emit(event: "Debugger.scriptFailedToParse", message: InspectorNotification<Debugger.ScriptFailedToParseEventDataType>): boolean;
+        emit(event: "Debugger.breakpointResolved", message: InspectorNotification<Debugger.BreakpointResolvedEventDataType>): boolean;
+        emit(event: "Debugger.paused", message: InspectorNotification<Debugger.PausedEventDataType>): boolean;
+        emit(event: "Debugger.resumed"): boolean;
+        emit(event: "Console.messageAdded", message: InspectorNotification<Console.MessageAddedEventDataType>): boolean;
+        emit(event: "Profiler.consoleProfileStarted", message: InspectorNotification<Profiler.ConsoleProfileStartedEventDataType>): boolean;
+        emit(event: "Profiler.consoleProfileFinished", message: InspectorNotification<Profiler.ConsoleProfileFinishedEventDataType>): boolean;
+        emit(event: "HeapProfiler.addHeapSnapshotChunk", message: InspectorNotification<HeapProfiler.AddHeapSnapshotChunkEventDataType>): boolean;
+        emit(event: "HeapProfiler.resetProfiles"): boolean;
+        emit(event: "HeapProfiler.reportHeapSnapshotProgress", message: InspectorNotification<HeapProfiler.ReportHeapSnapshotProgressEventDataType>): boolean;
+        emit(event: "HeapProfiler.lastSeenObjectId", message: InspectorNotification<HeapProfiler.LastSeenObjectIdEventDataType>): boolean;
+        emit(event: "HeapProfiler.heapStatsUpdate", message: InspectorNotification<HeapProfiler.HeapStatsUpdateEventDataType>): boolean;
+        emit(event: "NodeTracing.dataCollected", message: InspectorNotification<NodeTracing.DataCollectedEventDataType>): boolean;
+        emit(event: "NodeTracing.tracingComplete"): boolean;
+        emit(event: "NodeWorker.attachedToWorker", message: InspectorNotification<NodeWorker.AttachedToWorkerEventDataType>): boolean;
+        emit(event: "NodeWorker.detachedFromWorker", message: InspectorNotification<NodeWorker.DetachedFromWorkerEventDataType>): boolean;
+        emit(event: "NodeWorker.receivedMessageFromWorker", message: InspectorNotification<NodeWorker.ReceivedMessageFromWorkerEventDataType>): boolean;
+        emit(event: "NodeRuntime.waitingForDisconnect"): boolean;
+
+        on(event: string, listener: (...args: any[]) => void): this;
+
+        /**
+         * Emitted when any notification from the V8 Inspector is received.
+         */
+        on(event: "inspectorNotification", listener: (message: InspectorNotification<{}>) => void): this;
+
+        /**
+         * Issued when new execution context is created.
+         */
+        on(event: "Runtime.executionContextCreated", listener: (message: InspectorNotification<Runtime.ExecutionContextCreatedEventDataType>) => void): this;
+
+        /**
+         * Issued when execution context is destroyed.
+         */
+        on(event: "Runtime.executionContextDestroyed", listener: (message: InspectorNotification<Runtime.ExecutionContextDestroyedEventDataType>) => void): this;
+
+        /**
+         * Issued when all executionContexts were cleared in browser
+         */
+        on(event: "Runtime.executionContextsCleared", listener: () => void): this;
+
+        /**
+         * Issued when exception was thrown and unhandled.
+         */
+        on(event: "Runtime.exceptionThrown", listener: (message: InspectorNotification<Runtime.ExceptionThrownEventDataType>) => void): this;
+
+        /**
+         * Issued when unhandled exception was revoked.
+         */
+        on(event: "Runtime.exceptionRevoked", listener: (message: InspectorNotification<Runtime.ExceptionRevokedEventDataType>) => void): this;
+
+        /**
+         * Issued when console API was called.
+         */
+        on(event: "Runtime.consoleAPICalled", listener: (message: InspectorNotification<Runtime.ConsoleAPICalledEventDataType>) => void): this;
+
+        /**
+         * Issued when object should be inspected (for example, as a result of inspect() command line API call).
+         */
+        on(event: "Runtime.inspectRequested", listener: (message: InspectorNotification<Runtime.InspectRequestedEventDataType>) => void): this;
+
+        /**
+         * Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger.
+         */
+        on(event: "Debugger.scriptParsed", listener: (message: InspectorNotification<Debugger.ScriptParsedEventDataType>) => void): this;
+
+        /**
+         * Fired when virtual machine fails to parse the script.
+         */
+        on(event: "Debugger.scriptFailedToParse", listener: (message: InspectorNotification<Debugger.ScriptFailedToParseEventDataType>) => void): this;
+
+        /**
+         * Fired when breakpoint is resolved to an actual script and location.
+         */
+        on(event: "Debugger.breakpointResolved", listener: (message: InspectorNotification<Debugger.BreakpointResolvedEventDataType>) => void): this;
+
+        /**
+         * Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria.
+         */
+        on(event: "Debugger.paused", listener: (message: InspectorNotification<Debugger.PausedEventDataType>) => void): this;
+
+        /**
+         * Fired when the virtual machine resumed execution.
+         */
+        on(event: "Debugger.resumed", listener: () => void): this;
+
+        /**
+         * Issued when new console message is added.
+         */
+        on(event: "Console.messageAdded", listener: (message: InspectorNotification<Console.MessageAddedEventDataType>) => void): this;
+
+        /**
+         * Sent when new profile recording is started using console.profile() call.
+         */
+        on(event: "Profiler.consoleProfileStarted", listener: (message: InspectorNotification<Profiler.ConsoleProfileStartedEventDataType>) => void): this;
+
+        on(event: "Profiler.consoleProfileFinished", listener: (message: InspectorNotification<Profiler.ConsoleProfileFinishedEventDataType>) => void): this;
+        on(event: "HeapProfiler.addHeapSnapshotChunk", listener: (message: InspectorNotification<HeapProfiler.AddHeapSnapshotChunkEventDataType>) => void): this;
+        on(event: "HeapProfiler.resetProfiles", listener: () => void): this;
+        on(event: "HeapProfiler.reportHeapSnapshotProgress", listener: (message: InspectorNotification<HeapProfiler.ReportHeapSnapshotProgressEventDataType>) => void): this;
+
+        /**
+         * If heap objects tracking has been started then backend regularly sends a current value for last seen object id and corresponding timestamp. If the were changes in the heap since last event then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event.
+         */
+        on(event: "HeapProfiler.lastSeenObjectId", listener: (message: InspectorNotification<HeapProfiler.LastSeenObjectIdEventDataType>) => void): this;
+
+        /**
+         * If heap objects tracking has been started then backend may send update for one or more fragments
+         */
+        on(event: "HeapProfiler.heapStatsUpdate", listener: (message: InspectorNotification<HeapProfiler.HeapStatsUpdateEventDataType>) => void): this;
+
+        /**
+         * Contains an bucket of collected trace events.
+         */
+        on(event: "NodeTracing.dataCollected", listener: (message: InspectorNotification<NodeTracing.DataCollectedEventDataType>) => void): this;
+
+        /**
+         * Signals that tracing is stopped and there is no trace buffers pending flush, all data were
+         * delivered via dataCollected events.
+         */
+        on(event: "NodeTracing.tracingComplete", listener: () => void): this;
+
+        /**
+         * Issued when attached to a worker.
+         */
+        on(event: "NodeWorker.attachedToWorker", listener: (message: InspectorNotification<NodeWorker.AttachedToWorkerEventDataType>) => void): this;
+
+        /**
+         * Issued when detached from the worker.
+         */
+        on(event: "NodeWorker.detachedFromWorker", listener: (message: InspectorNotification<NodeWorker.DetachedFromWorkerEventDataType>) => void): this;
+
+        /**
+         * Notifies about a new protocol message received from the session
+         * (session ID is provided in attachedToWorker notification).
+         */
+        on(event: "NodeWorker.receivedMessageFromWorker", listener: (message: InspectorNotification<NodeWorker.ReceivedMessageFromWorkerEventDataType>) => void): this;
+
+        /**
+         * This event is fired instead of `Runtime.executionContextDestroyed` when
+         * enabled.
+         * It is fired when the Node process finished all code execution and is
+         * waiting for all frontends to disconnect.
+         */
+        on(event: "NodeRuntime.waitingForDisconnect", listener: () => void): this;
+
+        once(event: string, listener: (...args: any[]) => void): this;
+
+        /**
+         * Emitted when any notification from the V8 Inspector is received.
+         */
+        once(event: "inspectorNotification", listener: (message: InspectorNotification<{}>) => void): this;
+
+        /**
+         * Issued when new execution context is created.
+         */
+        once(event: "Runtime.executionContextCreated", listener: (message: InspectorNotification<Runtime.ExecutionContextCreatedEventDataType>) => void): this;
+
+        /**
+         * Issued when execution context is destroyed.
+         */
+        once(event: "Runtime.executionContextDestroyed", listener: (message: InspectorNotification<Runtime.ExecutionContextDestroyedEventDataType>) => void): this;
+
+        /**
+         * Issued when all executionContexts were cleared in browser
+         */
+        once(event: "Runtime.executionContextsCleared", listener: () => void): this;
+
+        /**
+         * Issued when exception was thrown and unhandled.
+         */
+        once(event: "Runtime.exceptionThrown", listener: (message: InspectorNotification<Runtime.ExceptionThrownEventDataType>) => void): this;
+
+        /**
+         * Issued when unhandled exception was revoked.
+         */
+        once(event: "Runtime.exceptionRevoked", listener: (message: InspectorNotification<Runtime.ExceptionRevokedEventDataType>) => void): this;
+
+        /**
+         * Issued when console API was called.
+         */
+        once(event: "Runtime.consoleAPICalled", listener: (message: InspectorNotification<Runtime.ConsoleAPICalledEventDataType>) => void): this;
+
+        /**
+         * Issued when object should be inspected (for example, as a result of inspect() command line API call).
+         */
+        once(event: "Runtime.inspectRequested", listener: (message: InspectorNotification<Runtime.InspectRequestedEventDataType>) => void): this;
+
+        /**
+         * Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger.
+         */
+        once(event: "Debugger.scriptParsed", listener: (message: InspectorNotification<Debugger.ScriptParsedEventDataType>) => void): this;
+
+        /**
+         * Fired when virtual machine fails to parse the script.
+         */
+        once(event: "Debugger.scriptFailedToParse", listener: (message: InspectorNotification<Debugger.ScriptFailedToParseEventDataType>) => void): this;
+
+        /**
+         * Fired when breakpoint is resolved to an actual script and location.
+         */
+        once(event: "Debugger.breakpointResolved", listener: (message: InspectorNotification<Debugger.BreakpointResolvedEventDataType>) => void): this;
+
+        /**
+         * Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria.
+         */
+        once(event: "Debugger.paused", listener: (message: InspectorNotification<Debugger.PausedEventDataType>) => void): this;
+
+        /**
+         * Fired when the virtual machine resumed execution.
+         */
+        once(event: "Debugger.resumed", listener: () => void): this;
+
+        /**
+         * Issued when new console message is added.
+         */
+        once(event: "Console.messageAdded", listener: (message: InspectorNotification<Console.MessageAddedEventDataType>) => void): this;
+
+        /**
+         * Sent when new profile recording is started using console.profile() call.
+         */
+        once(event: "Profiler.consoleProfileStarted", listener: (message: InspectorNotification<Profiler.ConsoleProfileStartedEventDataType>) => void): this;
+
+        once(event: "Profiler.consoleProfileFinished", listener: (message: InspectorNotification<Profiler.ConsoleProfileFinishedEventDataType>) => void): this;
+        once(event: "HeapProfiler.addHeapSnapshotChunk", listener: (message: InspectorNotification<HeapProfiler.AddHeapSnapshotChunkEventDataType>) => void): this;
+        once(event: "HeapProfiler.resetProfiles", listener: () => void): this;
+        once(event: "HeapProfiler.reportHeapSnapshotProgress", listener: (message: InspectorNotification<HeapProfiler.ReportHeapSnapshotProgressEventDataType>) => void): this;
+
+        /**
+         * If heap objects tracking has been started then backend regularly sends a current value for last seen object id and corresponding timestamp. If the were changes in the heap since last event then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event.
+         */
+        once(event: "HeapProfiler.lastSeenObjectId", listener: (message: InspectorNotification<HeapProfiler.LastSeenObjectIdEventDataType>) => void): this;
+
+        /**
+         * If heap objects tracking has been started then backend may send update for one or more fragments
+         */
+        once(event: "HeapProfiler.heapStatsUpdate", listener: (message: InspectorNotification<HeapProfiler.HeapStatsUpdateEventDataType>) => void): this;
+
+        /**
+         * Contains an bucket of collected trace events.
+         */
+        once(event: "NodeTracing.dataCollected", listener: (message: InspectorNotification<NodeTracing.DataCollectedEventDataType>) => void): this;
+
+        /**
+         * Signals that tracing is stopped and there is no trace buffers pending flush, all data were
+         * delivered via dataCollected events.
+         */
+        once(event: "NodeTracing.tracingComplete", listener: () => void): this;
+
+        /**
+         * Issued when attached to a worker.
+         */
+        once(event: "NodeWorker.attachedToWorker", listener: (message: InspectorNotification<NodeWorker.AttachedToWorkerEventDataType>) => void): this;
+
+        /**
+         * Issued when detached from the worker.
+         */
+        once(event: "NodeWorker.detachedFromWorker", listener: (message: InspectorNotification<NodeWorker.DetachedFromWorkerEventDataType>) => void): this;
+
+        /**
+         * Notifies about a new protocol message received from the session
+         * (session ID is provided in attachedToWorker notification).
+         */
+        once(event: "NodeWorker.receivedMessageFromWorker", listener: (message: InspectorNotification<NodeWorker.ReceivedMessageFromWorkerEventDataType>) => void): this;
+
+        /**
+         * This event is fired instead of `Runtime.executionContextDestroyed` when
+         * enabled.
+         * It is fired when the Node process finished all code execution and is
+         * waiting for all frontends to disconnect.
+         */
+        once(event: "NodeRuntime.waitingForDisconnect", listener: () => void): this;
+
+        prependListener(event: string, listener: (...args: any[]) => void): this;
+
+        /**
+         * Emitted when any notification from the V8 Inspector is received.
+         */
+        prependListener(event: "inspectorNotification", listener: (message: InspectorNotification<{}>) => void): this;
+
+        /**
+         * Issued when new execution context is created.
+         */
+        prependListener(event: "Runtime.executionContextCreated", listener: (message: InspectorNotification<Runtime.ExecutionContextCreatedEventDataType>) => void): this;
+
+        /**
+         * Issued when execution context is destroyed.
+         */
+        prependListener(event: "Runtime.executionContextDestroyed", listener: (message: InspectorNotification<Runtime.ExecutionContextDestroyedEventDataType>) => void): this;
+
+        /**
+         * Issued when all executionContexts were cleared in browser
+         */
+        prependListener(event: "Runtime.executionContextsCleared", listener: () => void): this;
+
+        /**
+         * Issued when exception was thrown and unhandled.
+         */
+        prependListener(event: "Runtime.exceptionThrown", listener: (message: InspectorNotification<Runtime.ExceptionThrownEventDataType>) => void): this;
+
+        /**
+         * Issued when unhandled exception was revoked.
+         */
+        prependListener(event: "Runtime.exceptionRevoked", listener: (message: InspectorNotification<Runtime.ExceptionRevokedEventDataType>) => void): this;
+
+        /**
+         * Issued when console API was called.
+         */
+        prependListener(event: "Runtime.consoleAPICalled", listener: (message: InspectorNotification<Runtime.ConsoleAPICalledEventDataType>) => void): this;
+
+        /**
+         * Issued when object should be inspected (for example, as a result of inspect() command line API call).
+         */
+        prependListener(event: "Runtime.inspectRequested", listener: (message: InspectorNotification<Runtime.InspectRequestedEventDataType>) => void): this;
+
+        /**
+         * Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger.
+         */
+        prependListener(event: "Debugger.scriptParsed", listener: (message: InspectorNotification<Debugger.ScriptParsedEventDataType>) => void): this;
+
+        /**
+         * Fired when virtual machine fails to parse the script.
+         */
+        prependListener(event: "Debugger.scriptFailedToParse", listener: (message: InspectorNotification<Debugger.ScriptFailedToParseEventDataType>) => void): this;
+
+        /**
+         * Fired when breakpoint is resolved to an actual script and location.
+         */
+        prependListener(event: "Debugger.breakpointResolved", listener: (message: InspectorNotification<Debugger.BreakpointResolvedEventDataType>) => void): this;
+
+        /**
+         * Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria.
+         */
+        prependListener(event: "Debugger.paused", listener: (message: InspectorNotification<Debugger.PausedEventDataType>) => void): this;
+
+        /**
+         * Fired when the virtual machine resumed execution.
+         */
+        prependListener(event: "Debugger.resumed", listener: () => void): this;
+
+        /**
+         * Issued when new console message is added.
+         */
+        prependListener(event: "Console.messageAdded", listener: (message: InspectorNotification<Console.MessageAddedEventDataType>) => void): this;
+
+        /**
+         * Sent when new profile recording is started using console.profile() call.
+         */
+        prependListener(event: "Profiler.consoleProfileStarted", listener: (message: InspectorNotification<Profiler.ConsoleProfileStartedEventDataType>) => void): this;
+
+        prependListener(event: "Profiler.consoleProfileFinished", listener: (message: InspectorNotification<Profiler.ConsoleProfileFinishedEventDataType>) => void): this;
+        prependListener(event: "HeapProfiler.addHeapSnapshotChunk", listener: (message: InspectorNotification<HeapProfiler.AddHeapSnapshotChunkEventDataType>) => void): this;
+        prependListener(event: "HeapProfiler.resetProfiles", listener: () => void): this;
+        prependListener(event: "HeapProfiler.reportHeapSnapshotProgress", listener: (message: InspectorNotification<HeapProfiler.ReportHeapSnapshotProgressEventDataType>) => void): this;
+
+        /**
+         * If heap objects tracking has been started then backend regularly sends a current value for last seen object id and corresponding timestamp. If the were changes in the heap since last event then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event.
+         */
+        prependListener(event: "HeapProfiler.lastSeenObjectId", listener: (message: InspectorNotification<HeapProfiler.LastSeenObjectIdEventDataType>) => void): this;
+
+        /**
+         * If heap objects tracking has been started then backend may send update for one or more fragments
+         */
+        prependListener(event: "HeapProfiler.heapStatsUpdate", listener: (message: InspectorNotification<HeapProfiler.HeapStatsUpdateEventDataType>) => void): this;
+
+        /**
+         * Contains an bucket of collected trace events.
+         */
+        prependListener(event: "NodeTracing.dataCollected", listener: (message: InspectorNotification<NodeTracing.DataCollectedEventDataType>) => void): this;
+
+        /**
+         * Signals that tracing is stopped and there is no trace buffers pending flush, all data were
+         * delivered via dataCollected events.
+         */
+        prependListener(event: "NodeTracing.tracingComplete", listener: () => void): this;
+
+        /**
+         * Issued when attached to a worker.
+         */
+        prependListener(event: "NodeWorker.attachedToWorker", listener: (message: InspectorNotification<NodeWorker.AttachedToWorkerEventDataType>) => void): this;
+
+        /**
+         * Issued when detached from the worker.
+         */
+        prependListener(event: "NodeWorker.detachedFromWorker", listener: (message: InspectorNotification<NodeWorker.DetachedFromWorkerEventDataType>) => void): this;
+
+        /**
+         * Notifies about a new protocol message received from the session
+         * (session ID is provided in attachedToWorker notification).
+         */
+        prependListener(event: "NodeWorker.receivedMessageFromWorker", listener: (message: InspectorNotification<NodeWorker.ReceivedMessageFromWorkerEventDataType>) => void): this;
+
+        /**
+         * This event is fired instead of `Runtime.executionContextDestroyed` when
+         * enabled.
+         * It is fired when the Node process finished all code execution and is
+         * waiting for all frontends to disconnect.
+         */
+        prependListener(event: "NodeRuntime.waitingForDisconnect", listener: () => void): this;
+
+        prependOnceListener(event: string, listener: (...args: any[]) => void): this;
+
+        /**
+         * Emitted when any notification from the V8 Inspector is received.
+         */
+        prependOnceListener(event: "inspectorNotification", listener: (message: InspectorNotification<{}>) => void): this;
+
+        /**
+         * Issued when new execution context is created.
+         */
+        prependOnceListener(event: "Runtime.executionContextCreated", listener: (message: InspectorNotification<Runtime.ExecutionContextCreatedEventDataType>) => void): this;
+
+        /**
+         * Issued when execution context is destroyed.
+         */
+        prependOnceListener(event: "Runtime.executionContextDestroyed", listener: (message: InspectorNotification<Runtime.ExecutionContextDestroyedEventDataType>) => void): this;
+
+        /**
+         * Issued when all executionContexts were cleared in browser
+         */
+        prependOnceListener(event: "Runtime.executionContextsCleared", listener: () => void): this;
+
+        /**
+         * Issued when exception was thrown and unhandled.
+         */
+        prependOnceListener(event: "Runtime.exceptionThrown", listener: (message: InspectorNotification<Runtime.ExceptionThrownEventDataType>) => void): this;
+
+        /**
+         * Issued when unhandled exception was revoked.
+         */
+        prependOnceListener(event: "Runtime.exceptionRevoked", listener: (message: InspectorNotification<Runtime.ExceptionRevokedEventDataType>) => void): this;
+
+        /**
+         * Issued when console API was called.
+         */
+        prependOnceListener(event: "Runtime.consoleAPICalled", listener: (message: InspectorNotification<Runtime.ConsoleAPICalledEventDataType>) => void): this;
+
+        /**
+         * Issued when object should be inspected (for example, as a result of inspect() command line API call).
+         */
+        prependOnceListener(event: "Runtime.inspectRequested", listener: (message: InspectorNotification<Runtime.InspectRequestedEventDataType>) => void): this;
+
+        /**
+         * Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger.
+         */
+        prependOnceListener(event: "Debugger.scriptParsed", listener: (message: InspectorNotification<Debugger.ScriptParsedEventDataType>) => void): this;
+
+        /**
+         * Fired when virtual machine fails to parse the script.
+         */
+        prependOnceListener(event: "Debugger.scriptFailedToParse", listener: (message: InspectorNotification<Debugger.ScriptFailedToParseEventDataType>) => void): this;
+
+        /**
+         * Fired when breakpoint is resolved to an actual script and location.
+         */
+        prependOnceListener(event: "Debugger.breakpointResolved", listener: (message: InspectorNotification<Debugger.BreakpointResolvedEventDataType>) => void): this;
+
+        /**
+         * Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria.
+         */
+        prependOnceListener(event: "Debugger.paused", listener: (message: InspectorNotification<Debugger.PausedEventDataType>) => void): this;
+
+        /**
+         * Fired when the virtual machine resumed execution.
+         */
+        prependOnceListener(event: "Debugger.resumed", listener: () => void): this;
+
+        /**
+         * Issued when new console message is added.
+         */
+        prependOnceListener(event: "Console.messageAdded", listener: (message: InspectorNotification<Console.MessageAddedEventDataType>) => void): this;
+
+        /**
+         * Sent when new profile recording is started using console.profile() call.
+         */
+        prependOnceListener(event: "Profiler.consoleProfileStarted", listener: (message: InspectorNotification<Profiler.ConsoleProfileStartedEventDataType>) => void): this;
+
+        prependOnceListener(event: "Profiler.consoleProfileFinished", listener: (message: InspectorNotification<Profiler.ConsoleProfileFinishedEventDataType>) => void): this;
+        prependOnceListener(event: "HeapProfiler.addHeapSnapshotChunk", listener: (message: InspectorNotification<HeapProfiler.AddHeapSnapshotChunkEventDataType>) => void): this;
+        prependOnceListener(event: "HeapProfiler.resetProfiles", listener: () => void): this;
+        prependOnceListener(event: "HeapProfiler.reportHeapSnapshotProgress", listener: (message: InspectorNotification<HeapProfiler.ReportHeapSnapshotProgressEventDataType>) => void): this;
+
+        /**
+         * If heap objects tracking has been started then backend regularly sends a current value for last seen object id and corresponding timestamp. If the were changes in the heap since last event then one or more heapStatsUpdate events will be sent before a new lastSeenObjectId event.
+         */
+        prependOnceListener(event: "HeapProfiler.lastSeenObjectId", listener: (message: InspectorNotification<HeapProfiler.LastSeenObjectIdEventDataType>) => void): this;
+
+        /**
+         * If heap objects tracking has been started then backend may send update for one or more fragments
+         */
+        prependOnceListener(event: "HeapProfiler.heapStatsUpdate", listener: (message: InspectorNotification<HeapProfiler.HeapStatsUpdateEventDataType>) => void): this;
+
+        /**
+         * Contains an bucket of collected trace events.
+         */
+        prependOnceListener(event: "NodeTracing.dataCollected", listener: (message: InspectorNotification<NodeTracing.DataCollectedEventDataType>) => void): this;
+
+        /**
+         * Signals that tracing is stopped and there is no trace buffers pending flush, all data were
+         * delivered via dataCollected events.
+         */
+        prependOnceListener(event: "NodeTracing.tracingComplete", listener: () => void): this;
+
+        /**
+         * Issued when attached to a worker.
+         */
+        prependOnceListener(event: "NodeWorker.attachedToWorker", listener: (message: InspectorNotification<NodeWorker.AttachedToWorkerEventDataType>) => void): this;
+
+        /**
+         * Issued when detached from the worker.
+         */
+        prependOnceListener(event: "NodeWorker.detachedFromWorker", listener: (message: InspectorNotification<NodeWorker.DetachedFromWorkerEventDataType>) => void): this;
+
+        /**
+         * Notifies about a new protocol message received from the session
+         * (session ID is provided in attachedToWorker notification).
+         */
+        prependOnceListener(event: "NodeWorker.receivedMessageFromWorker", listener: (message: InspectorNotification<NodeWorker.ReceivedMessageFromWorkerEventDataType>) => void): this;
+
+        /**
+         * This event is fired instead of `Runtime.executionContextDestroyed` when
+         * enabled.
+         * It is fired when the Node process finished all code execution and is
+         * waiting for all frontends to disconnect.
+         */
+        prependOnceListener(event: "NodeRuntime.waitingForDisconnect", listener: () => void): this;
+    }
+
+    // Top Level API
+
+    /**
+     * Activate inspector on host and port. Equivalent to node --inspect=[[host:]port], but can be done programatically after node has started.
+     * If wait is true, will block until a client has connected to the inspect port and flow control has been passed to the debugger client.
+     * @param port Port to listen on for inspector connections. Optional, defaults to what was specified on the CLI.
+     * @param host Host to listen on for inspector connections. Optional, defaults to what was specified on the CLI.
+     * @param wait Block until a client has connected. Optional, defaults to false.
+     */
+    function open(port?: number, host?: string, wait?: boolean): void;
+
+    /**
+     * Deactivate the inspector. Blocks until there are no active connections.
+     */
+    function close(): void;
+
+    /**
+     * Return the URL of the active inspector, or `undefined` if there is none.
+     */
+    function url(): string | undefined;
+}
diff --git a/setup-maven/node_modules/@types/node/module.d.ts b/setup-maven/node_modules/@types/node/module.d.ts
new file mode 100644
index 0000000..f512be7
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/module.d.ts
@@ -0,0 +1,3 @@
+declare module "module" {
+    export = NodeJS.Module;
+}
diff --git a/setup-maven/node_modules/@types/node/net.d.ts b/setup-maven/node_modules/@types/node/net.d.ts
new file mode 100644
index 0000000..1e4f971
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/net.d.ts
@@ -0,0 +1,268 @@
+declare module "net" {
+    import * as stream from "stream";
+    import * as events from "events";
+    import * as dns from "dns";
+
+    type LookupFunction = (hostname: string, options: dns.LookupOneOptions, callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void) => void;
+
+    interface AddressInfo {
+        address: string;
+        family: string;
+        port: number;
+    }
+
+    interface SocketConstructorOpts {
+        fd?: number;
+        allowHalfOpen?: boolean;
+        readable?: boolean;
+        writable?: boolean;
+    }
+
+    interface OnReadOpts {
+        buffer: Uint8Array | (() => Uint8Array);
+        /**
+         * This function is called for every chunk of incoming data.
+         * Two arguments are passed to it: the number of bytes written to buffer and a reference to buffer.
+         * Return false from this function to implicitly pause() the socket.
+         */
+        callback(bytesWritten: number, buf: Uint8Array): boolean;
+    }
+
+    interface ConnectOpts {
+        /**
+         * If specified, incoming data is stored in a single buffer and passed to the supplied callback when data arrives on the socket.
+         * Note: this will cause the streaming functionality to not provide any data, however events like 'error', 'end', and 'close' will
+         * still be emitted as normal and methods like pause() and resume() will also behave as expected.
+         */
+        onread?: OnReadOpts;
+    }
+
+    interface TcpSocketConnectOpts extends ConnectOpts {
+        port: number;
+        host?: string;
+        localAddress?: string;
+        localPort?: number;
+        hints?: number;
+        family?: number;
+        lookup?: LookupFunction;
+    }
+
+    interface IpcSocketConnectOpts extends ConnectOpts {
+        path: string;
+    }
+
+    type SocketConnectOpts = TcpSocketConnectOpts | IpcSocketConnectOpts;
+
+    class Socket extends stream.Duplex {
+        constructor(options?: SocketConstructorOpts);
+
+        // Extended base methods
+        write(buffer: Uint8Array | string, cb?: (err?: Error) => void): boolean;
+        write(str: Uint8Array | string, encoding?: string, cb?: (err?: Error) => void): boolean;
+
+        connect(options: SocketConnectOpts, connectionListener?: () => void): this;
+        connect(port: number, host: string, connectionListener?: () => void): this;
+        connect(port: number, connectionListener?: () => void): this;
+        connect(path: string, connectionListener?: () => void): this;
+
+        setEncoding(encoding?: string): this;
+        pause(): this;
+        resume(): this;
+        setTimeout(timeout: number, callback?: () => void): this;
+        setNoDelay(noDelay?: boolean): this;
+        setKeepAlive(enable?: boolean, initialDelay?: number): this;
+        address(): AddressInfo | string;
+        unref(): void;
+        ref(): void;
+
+        readonly bufferSize: number;
+        readonly bytesRead: number;
+        readonly bytesWritten: number;
+        readonly connecting: boolean;
+        readonly destroyed: boolean;
+        readonly localAddress: string;
+        readonly localPort: number;
+        readonly remoteAddress?: string;
+        readonly remoteFamily?: string;
+        readonly remotePort?: number;
+
+        // Extended base methods
+        end(cb?: () => void): void;
+        end(buffer: Uint8Array | string, cb?: () => void): void;
+        end(str: Uint8Array | string, encoding?: string, cb?: () => void): void;
+
+        /**
+         * events.EventEmitter
+         *   1. close
+         *   2. connect
+         *   3. data
+         *   4. drain
+         *   5. end
+         *   6. error
+         *   7. lookup
+         *   8. timeout
+         */
+        addListener(event: string, listener: (...args: any[]) => void): this;
+        addListener(event: "close", listener: (had_error: boolean) => void): this;
+        addListener(event: "connect", listener: () => void): this;
+        addListener(event: "data", listener: (data: Buffer) => void): this;
+        addListener(event: "drain", listener: () => void): this;
+        addListener(event: "end", listener: () => void): this;
+        addListener(event: "error", listener: (err: Error) => void): this;
+        addListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;
+        addListener(event: "timeout", listener: () => void): this;
+
+        emit(event: string | symbol, ...args: any[]): boolean;
+        emit(event: "close", had_error: boolean): boolean;
+        emit(event: "connect"): boolean;
+        emit(event: "data", data: Buffer): boolean;
+        emit(event: "drain"): boolean;
+        emit(event: "end"): boolean;
+        emit(event: "error", err: Error): boolean;
+        emit(event: "lookup", err: Error, address: string, family: string | number, host: string): boolean;
+        emit(event: "timeout"): boolean;
+
+        on(event: string, listener: (...args: any[]) => void): this;
+        on(event: "close", listener: (had_error: boolean) => void): this;
+        on(event: "connect", listener: () => void): this;
+        on(event: "data", listener: (data: Buffer) => void): this;
+        on(event: "drain", listener: () => void): this;
+        on(event: "end", listener: () => void): this;
+        on(event: "error", listener: (err: Error) => void): this;
+        on(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;
+        on(event: "timeout", listener: () => void): this;
+
+        once(event: string, listener: (...args: any[]) => void): this;
+        once(event: "close", listener: (had_error: boolean) => void): this;
+        once(event: "connect", listener: () => void): this;
+        once(event: "data", listener: (data: Buffer) => void): this;
+        once(event: "drain", listener: () => void): this;
+        once(event: "end", listener: () => void): this;
+        once(event: "error", listener: (err: Error) => void): this;
+        once(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;
+        once(event: "timeout", listener: () => void): this;
+
+        prependListener(event: string, listener: (...args: any[]) => void): this;
+        prependListener(event: "close", listener: (had_error: boolean) => void): this;
+        prependListener(event: "connect", listener: () => void): this;
+        prependListener(event: "data", listener: (data: Buffer) => void): this;
+        prependListener(event: "drain", listener: () => void): this;
+        prependListener(event: "end", listener: () => void): this;
+        prependListener(event: "error", listener: (err: Error) => void): this;
+        prependListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;
+        prependListener(event: "timeout", listener: () => void): this;
+
+        prependOnceListener(event: string, listener: (...args: any[]) => void): this;
+        prependOnceListener(event: "close", listener: (had_error: boolean) => void): this;
+        prependOnceListener(event: "connect", listener: () => void): this;
+        prependOnceListener(event: "data", listener: (data: Buffer) => void): this;
+        prependOnceListener(event: "drain", listener: () => void): this;
+        prependOnceListener(event: "end", listener: () => void): this;
+        prependOnceListener(event: "error", listener: (err: Error) => void): this;
+        prependOnceListener(event: "lookup", listener: (err: Error, address: string, family: string | number, host: string) => void): this;
+        prependOnceListener(event: "timeout", listener: () => void): this;
+    }
+
+    interface ListenOptions {
+        port?: number;
+        host?: string;
+        backlog?: number;
+        path?: string;
+        exclusive?: boolean;
+        readableAll?: boolean;
+        writableAll?: boolean;
+        /**
+         * @default false
+         */
+        ipv6Only?: boolean;
+    }
+
+    // https://github.com/nodejs/node/blob/master/lib/net.js
+    class Server extends events.EventEmitter {
+        constructor(connectionListener?: (socket: Socket) => void);
+        constructor(options?: { allowHalfOpen?: boolean, pauseOnConnect?: boolean }, connectionListener?: (socket: Socket) => void);
+
+        listen(port?: number, hostname?: string, backlog?: number, listeningListener?: () => void): this;
+        listen(port?: number, hostname?: string, listeningListener?: () => void): this;
+        listen(port?: number, backlog?: number, listeningListener?: () => void): this;
+        listen(port?: number, listeningListener?: () => void): this;
+        listen(path: string, backlog?: number, listeningListener?: () => void): this;
+        listen(path: string, listeningListener?: () => void): this;
+        listen(options: ListenOptions, listeningListener?: () => void): this;
+        listen(handle: any, backlog?: number, listeningListener?: () => void): this;
+        listen(handle: any, listeningListener?: () => void): this;
+        close(callback?: (err?: Error) => void): this;
+        address(): AddressInfo | string | null;
+        getConnections(cb: (error: Error | null, count: number) => void): void;
+        ref(): this;
+        unref(): this;
+        maxConnections: number;
+        connections: number;
+        listening: boolean;
+
+        /**
+         * events.EventEmitter
+         *   1. close
+         *   2. connection
+         *   3. error
+         *   4. listening
+         */
+        addListener(event: string, listener: (...args: any[]) => void): this;
+        addListener(event: "close", listener: () => void): this;
+        addListener(event: "connection", listener: (socket: Socket) => void): this;
+        addListener(event: "error", listener: (err: Error) => void): this;
+        addListener(event: "listening", listener: () => void): this;
+
+        emit(event: string | symbol, ...args: any[]): boolean;
+        emit(event: "close"): boolean;
+        emit(event: "connection", socket: Socket): boolean;
+        emit(event: "error", err: Error): boolean;
+        emit(event: "listening"): boolean;
+
+        on(event: string, listener: (...args: any[]) => void): this;
+        on(event: "close", listener: () => void): this;
+        on(event: "connection", listener: (socket: Socket) => void): this;
+        on(event: "error", listener: (err: Error) => void): this;
+        on(event: "listening", listener: () => void): this;
+
+        once(event: string, listener: (...args: any[]) => void): this;
+        once(event: "close", listener: () => void): this;
+        once(event: "connection", listener: (socket: Socket) => void): this;
+        once(event: "error", listener: (err: Error) => void): this;
+        once(event: "listening", listener: () => void): this;
+
+        prependListener(event: string, listener: (...args: any[]) => void): this;
+        prependListener(event: "close", listener: () => void): this;
+        prependListener(event: "connection", listener: (socket: Socket) => void): this;
+        prependListener(event: "error", listener: (err: Error) => void): this;
+        prependListener(event: "listening", listener: () => void): this;
+
+        prependOnceListener(event: string, listener: (...args: any[]) => void): this;
+        prependOnceListener(event: "close", listener: () => void): this;
+        prependOnceListener(event: "connection", listener: (socket: Socket) => void): this;
+        prependOnceListener(event: "error", listener: (err: Error) => void): this;
+        prependOnceListener(event: "listening", listener: () => void): this;
+    }
+
+    interface TcpNetConnectOpts extends TcpSocketConnectOpts, SocketConstructorOpts {
+        timeout?: number;
+    }
+
+    interface IpcNetConnectOpts extends IpcSocketConnectOpts, SocketConstructorOpts {
+        timeout?: number;
+    }
+
+    type NetConnectOpts = TcpNetConnectOpts | IpcNetConnectOpts;
+
+    function createServer(connectionListener?: (socket: Socket) => void): Server;
+    function createServer(options?: { allowHalfOpen?: boolean, pauseOnConnect?: boolean }, connectionListener?: (socket: Socket) => void): Server;
+    function connect(options: NetConnectOpts, connectionListener?: () => void): Socket;
+    function connect(port: number, host?: string, connectionListener?: () => void): Socket;
+    function connect(path: string, connectionListener?: () => void): Socket;
+    function createConnection(options: NetConnectOpts, connectionListener?: () => void): Socket;
+    function createConnection(port: number, host?: string, connectionListener?: () => void): Socket;
+    function createConnection(path: string, connectionListener?: () => void): Socket;
+    function isIP(input: string): number;
+    function isIPv4(input: string): boolean;
+    function isIPv6(input: string): boolean;
+}
diff --git a/setup-maven/node_modules/@types/node/os.d.ts b/setup-maven/node_modules/@types/node/os.d.ts
new file mode 100644
index 0000000..37c45a9
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/os.d.ts
@@ -0,0 +1,263 @@
+declare module "os" {
+    interface CpuInfo {
+        model: string;
+        speed: number;
+        times: {
+            user: number;
+            nice: number;
+            sys: number;
+            idle: number;
+            irq: number;
+        };
+    }
+
+    interface NetworkInterfaceBase {
+        address: string;
+        netmask: string;
+        mac: string;
+        internal: boolean;
+        cidr: string | null;
+    }
+
+    interface NetworkInterfaceInfoIPv4 extends NetworkInterfaceBase {
+        family: "IPv4";
+    }
+
+    interface NetworkInterfaceInfoIPv6 extends NetworkInterfaceBase {
+        family: "IPv6";
+        scopeid: number;
+    }
+
+    interface UserInfo<T> {
+        username: T;
+        uid: number;
+        gid: number;
+        shell: T;
+        homedir: T;
+    }
+
+    type NetworkInterfaceInfo = NetworkInterfaceInfoIPv4 | NetworkInterfaceInfoIPv6;
+
+    function hostname(): string;
+    function loadavg(): number[];
+    function uptime(): number;
+    function freemem(): number;
+    function totalmem(): number;
+    function cpus(): CpuInfo[];
+    function type(): string;
+    function release(): string;
+    function networkInterfaces(): { [index: string]: NetworkInterfaceInfo[] };
+    function homedir(): string;
+    function userInfo(options: { encoding: 'buffer' }): UserInfo<Buffer>;
+    function userInfo(options?: { encoding: string }): UserInfo<string>;
+    const constants: {
+        UV_UDP_REUSEADDR: number;
+        // signals: { [key in NodeJS.Signals]: number; }; @todo: change after migration to typescript 2.1
+        signals: {
+            SIGHUP: number;
+            SIGINT: number;
+            SIGQUIT: number;
+            SIGILL: number;
+            SIGTRAP: number;
+            SIGABRT: number;
+            SIGIOT: number;
+            SIGBUS: number;
+            SIGFPE: number;
+            SIGKILL: number;
+            SIGUSR1: number;
+            SIGSEGV: number;
+            SIGUSR2: number;
+            SIGPIPE: number;
+            SIGALRM: number;
+            SIGTERM: number;
+            SIGCHLD: number;
+            SIGSTKFLT: number;
+            SIGCONT: number;
+            SIGSTOP: number;
+            SIGTSTP: number;
+            SIGBREAK: number;
+            SIGTTIN: number;
+            SIGTTOU: number;
+            SIGURG: number;
+            SIGXCPU: number;
+            SIGXFSZ: number;
+            SIGVTALRM: number;
+            SIGPROF: number;
+            SIGWINCH: number;
+            SIGIO: number;
+            SIGPOLL: number;
+            SIGLOST: number;
+            SIGPWR: number;
+            SIGINFO: number;
+            SIGSYS: number;
+            SIGUNUSED: number;
+        };
+        errno: {
+            E2BIG: number;
+            EACCES: number;
+            EADDRINUSE: number;
+            EADDRNOTAVAIL: number;
+            EAFNOSUPPORT: number;
+            EAGAIN: number;
+            EALREADY: number;
+            EBADF: number;
+            EBADMSG: number;
+            EBUSY: number;
+            ECANCELED: number;
+            ECHILD: number;
+            ECONNABORTED: number;
+            ECONNREFUSED: number;
+            ECONNRESET: number;
+            EDEADLK: number;
+            EDESTADDRREQ: number;
+            EDOM: number;
+            EDQUOT: number;
+            EEXIST: number;
+            EFAULT: number;
+            EFBIG: number;
+            EHOSTUNREACH: number;
+            EIDRM: number;
+            EILSEQ: number;
+            EINPROGRESS: number;
+            EINTR: number;
+            EINVAL: number;
+            EIO: number;
+            EISCONN: number;
+            EISDIR: number;
+            ELOOP: number;
+            EMFILE: number;
+            EMLINK: number;
+            EMSGSIZE: number;
+            EMULTIHOP: number;
+            ENAMETOOLONG: number;
+            ENETDOWN: number;
+            ENETRESET: number;
+            ENETUNREACH: number;
+            ENFILE: number;
+            ENOBUFS: number;
+            ENODATA: number;
+            ENODEV: number;
+            ENOENT: number;
+            ENOEXEC: number;
+            ENOLCK: number;
+            ENOLINK: number;
+            ENOMEM: number;
+            ENOMSG: number;
+            ENOPROTOOPT: number;
+            ENOSPC: number;
+            ENOSR: number;
+            ENOSTR: number;
+            ENOSYS: number;
+            ENOTCONN: number;
+            ENOTDIR: number;
+            ENOTEMPTY: number;
+            ENOTSOCK: number;
+            ENOTSUP: number;
+            ENOTTY: number;
+            ENXIO: number;
+            EOPNOTSUPP: number;
+            EOVERFLOW: number;
+            EPERM: number;
+            EPIPE: number;
+            EPROTO: number;
+            EPROTONOSUPPORT: number;
+            EPROTOTYPE: number;
+            ERANGE: number;
+            EROFS: number;
+            ESPIPE: number;
+            ESRCH: number;
+            ESTALE: number;
+            ETIME: number;
+            ETIMEDOUT: number;
+            ETXTBSY: number;
+            EWOULDBLOCK: number;
+            EXDEV: number;
+            WSAEINTR: number;
+            WSAEBADF: number;
+            WSAEACCES: number;
+            WSAEFAULT: number;
+            WSAEINVAL: number;
+            WSAEMFILE: number;
+            WSAEWOULDBLOCK: number;
+            WSAEINPROGRESS: number;
+            WSAEALREADY: number;
+            WSAENOTSOCK: number;
+            WSAEDESTADDRREQ: number;
+            WSAEMSGSIZE: number;
+            WSAEPROTOTYPE: number;
+            WSAENOPROTOOPT: number;
+            WSAEPROTONOSUPPORT: number;
+            WSAESOCKTNOSUPPORT: number;
+            WSAEOPNOTSUPP: number;
+            WSAEPFNOSUPPORT: number;
+            WSAEAFNOSUPPORT: number;
+            WSAEADDRINUSE: number;
+            WSAEADDRNOTAVAIL: number;
+            WSAENETDOWN: number;
+            WSAENETUNREACH: number;
+            WSAENETRESET: number;
+            WSAECONNABORTED: number;
+            WSAECONNRESET: number;
+            WSAENOBUFS: number;
+            WSAEISCONN: number;
+            WSAENOTCONN: number;
+            WSAESHUTDOWN: number;
+            WSAETOOMANYREFS: number;
+            WSAETIMEDOUT: number;
+            WSAECONNREFUSED: number;
+            WSAELOOP: number;
+            WSAENAMETOOLONG: number;
+            WSAEHOSTDOWN: number;
+            WSAEHOSTUNREACH: number;
+            WSAENOTEMPTY: number;
+            WSAEPROCLIM: number;
+            WSAEUSERS: number;
+            WSAEDQUOT: number;
+            WSAESTALE: number;
+            WSAEREMOTE: number;
+            WSASYSNOTREADY: number;
+            WSAVERNOTSUPPORTED: number;
+            WSANOTINITIALISED: number;
+            WSAEDISCON: number;
+            WSAENOMORE: number;
+            WSAECANCELLED: number;
+            WSAEINVALIDPROCTABLE: number;
+            WSAEINVALIDPROVIDER: number;
+            WSAEPROVIDERFAILEDINIT: number;
+            WSASYSCALLFAILURE: number;
+            WSASERVICE_NOT_FOUND: number;
+            WSATYPE_NOT_FOUND: number;
+            WSA_E_NO_MORE: number;
+            WSA_E_CANCELLED: number;
+            WSAEREFUSED: number;
+        };
+        priority: {
+            PRIORITY_LOW: number;
+            PRIORITY_BELOW_NORMAL: number;
+            PRIORITY_NORMAL: number;
+            PRIORITY_ABOVE_NORMAL: number;
+            PRIORITY_HIGH: number;
+            PRIORITY_HIGHEST: number;
+        }
+    };
+    function arch(): string;
+    function platform(): NodeJS.Platform;
+    function tmpdir(): string;
+    const EOL: string;
+    function endianness(): "BE" | "LE";
+    /**
+     * Gets the priority of a process.
+     * Defaults to current process.
+     */
+    function getPriority(pid?: number): number;
+    /**
+     * Sets the priority of the current process.
+     * @param priority Must be in range of -20 to 19
+     */
+    function setPriority(priority: number): void;
+    /**
+     * Sets the priority of the process specified process.
+     * @param priority Must be in range of -20 to 19
+     */
+    function setPriority(pid: number, priority: number): void;
+}
diff --git a/setup-maven/node_modules/@types/node/package.json b/setup-maven/node_modules/@types/node/package.json
new file mode 100644
index 0000000..f66ed9f
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/package.json
@@ -0,0 +1,221 @@
+{
+  "_from": "@types/node@>= 8",
+  "_id": "@types/node@12.12.14",
+  "_inBundle": false,
+  "_integrity": "sha512-u/SJDyXwuihpwjXy7hOOghagLEV1KdAST6syfnOk6QZAMzZuWZqXy5aYYZbh8Jdpd4escVFP0MvftHNDb9pruA==",
+  "_location": "/@types/node",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "@types/node@>= 8",
+    "name": "@types/node",
+    "escapedName": "@types%2fnode",
+    "scope": "@types",
+    "rawSpec": ">= 8",
+    "saveSpec": null,
+    "fetchSpec": ">= 8"
+  },
+  "_requiredBy": [
+    "#DEV:/",
+    "/@octokit/types"
+  ],
+  "_resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.14.tgz",
+  "_shasum": "1c1d6e3c75dba466e0326948d56e8bd72a1903d2",
+  "_spec": "@types/node@>= 8",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/@octokit/types",
+  "bugs": {
+    "url": "https://github.com/DefinitelyTyped/DefinitelyTyped/issues"
+  },
+  "bundleDependencies": false,
+  "contributors": [
+    {
+      "name": "Microsoft TypeScript",
+      "url": "https://github.com/Microsoft"
+    },
+    {
+      "name": "DefinitelyTyped",
+      "url": "https://github.com/DefinitelyTyped"
+    },
+    {
+      "name": "Alberto Schiabel",
+      "url": "https://github.com/jkomyno"
+    },
+    {
+      "name": "Alexander T.",
+      "url": "https://github.com/a-tarasyuk"
+    },
+    {
+      "name": "Alvis HT Tang",
+      "url": "https://github.com/alvis"
+    },
+    {
+      "name": "Andrew Makarov",
+      "url": "https://github.com/r3nya"
+    },
+    {
+      "name": "Benjamin Toueg",
+      "url": "https://github.com/btoueg"
+    },
+    {
+      "name": "Bruno Scheufler",
+      "url": "https://github.com/brunoscheufler"
+    },
+    {
+      "name": "Chigozirim C.",
+      "url": "https://github.com/smac89"
+    },
+    {
+      "name": "Christian Vaagland Tellnes",
+      "url": "https://github.com/tellnes"
+    },
+    {
+      "name": "David Junger",
+      "url": "https://github.com/touffy"
+    },
+    {
+      "name": "Deividas Bakanas",
+      "url": "https://github.com/DeividasBakanas"
+    },
+    {
+      "name": "Eugene Y. Q. Shen",
+      "url": "https://github.com/eyqs"
+    },
+    {
+      "name": "Flarna",
+      "url": "https://github.com/Flarna"
+    },
+    {
+      "name": "Hannes Magnusson",
+      "url": "https://github.com/Hannes-Magnusson-CK"
+    },
+    {
+      "name": "Hoàng Văn Khải",
+      "url": "https://github.com/KSXGitHub"
+    },
+    {
+      "name": "Huw",
+      "url": "https://github.com/hoo29"
+    },
+    {
+      "name": "Kelvin Jin",
+      "url": "https://github.com/kjin"
+    },
+    {
+      "name": "Klaus Meinhardt",
+      "url": "https://github.com/ajafff"
+    },
+    {
+      "name": "Lishude",
+      "url": "https://github.com/islishude"
+    },
+    {
+      "name": "Mariusz Wiktorczyk",
+      "url": "https://github.com/mwiktorczyk"
+    },
+    {
+      "name": "Mohsen Azimi",
+      "url": "https://github.com/mohsen1"
+    },
+    {
+      "name": "Nicolas Even",
+      "url": "https://github.com/n-e"
+    },
+    {
+      "name": "Nicolas Voigt",
+      "url": "https://github.com/octo-sniffle"
+    },
+    {
+      "name": "Nikita Galkin",
+      "url": "https://github.com/galkin"
+    },
+    {
+      "name": "Parambir Singh",
+      "url": "https://github.com/parambirs"
+    },
+    {
+      "name": "Sebastian Silbermann",
+      "url": "https://github.com/eps1lon"
+    },
+    {
+      "name": "Simon Schick",
+      "url": "https://github.com/SimonSchick"
+    },
+    {
+      "name": "Thomas den Hollander",
+      "url": "https://github.com/ThomasdenH"
+    },
+    {
+      "name": "Wilco Bakker",
+      "url": "https://github.com/WilcoBakker"
+    },
+    {
+      "name": "wwwy3y3",
+      "url": "https://github.com/wwwy3y3"
+    },
+    {
+      "name": "Zane Hannan AU",
+      "url": "https://github.com/ZaneHannanAU"
+    },
+    {
+      "name": "Samuel Ainsworth",
+      "url": "https://github.com/samuela"
+    },
+    {
+      "name": "Kyle Uehlein",
+      "url": "https://github.com/kuehlein"
+    },
+    {
+      "name": "Jordi Oliveras Rovira",
+      "url": "https://github.com/j-oliveras"
+    },
+    {
+      "name": "Thanik Bhongbhibhat",
+      "url": "https://github.com/bhongy"
+    },
+    {
+      "name": "Marcin Kopacz",
+      "url": "https://github.com/chyzwar"
+    },
+    {
+      "name": "Trivikram Kamat",
+      "url": "https://github.com/trivikr"
+    },
+    {
+      "name": "Minh Son Nguyen",
+      "url": "https://github.com/nguymin4"
+    },
+    {
+      "name": "Junxiao Shi",
+      "url": "https://github.com/yoursunny"
+    },
+    {
+      "name": "Ilia Baryshnikov",
+      "url": "https://github.com/qwelias"
+    }
+  ],
+  "dependencies": {},
+  "deprecated": false,
+  "description": "TypeScript definitions for Node.js",
+  "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped#readme",
+  "license": "MIT",
+  "main": "",
+  "name": "@types/node",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/DefinitelyTyped/DefinitelyTyped.git",
+    "directory": "types/node"
+  },
+  "scripts": {},
+  "typeScriptVersion": "2.8",
+  "types": "index.d.ts",
+  "typesPublisherContentHash": "305a8ff81632f0e70287898475e87d6aedbd683a5e37cb775f9ea845625cfa06",
+  "typesVersions": {
+    ">=3.2.0-0": {
+      "*": [
+        "ts3.2/*"
+      ]
+    }
+  },
+  "version": "12.12.14"
+}
diff --git a/setup-maven/node_modules/@types/node/path.d.ts b/setup-maven/node_modules/@types/node/path.d.ts
new file mode 100644
index 0000000..2f4a549
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/path.d.ts
@@ -0,0 +1,159 @@
+declare module "path" {
+    /**
+     * A parsed path object generated by path.parse() or consumed by path.format().
+     */
+    interface ParsedPath {
+        /**
+         * The root of the path such as '/' or 'c:\'
+         */
+        root: string;
+        /**
+         * The full directory path such as '/home/user/dir' or 'c:\path\dir'
+         */
+        dir: string;
+        /**
+         * The file name including extension (if any) such as 'index.html'
+         */
+        base: string;
+        /**
+         * The file extension (if any) such as '.html'
+         */
+        ext: string;
+        /**
+         * The file name without extension (if any) such as 'index'
+         */
+        name: string;
+    }
+    interface FormatInputPathObject {
+        /**
+         * The root of the path such as '/' or 'c:\'
+         */
+        root?: string;
+        /**
+         * The full directory path such as '/home/user/dir' or 'c:\path\dir'
+         */
+        dir?: string;
+        /**
+         * The file name including extension (if any) such as 'index.html'
+         */
+        base?: string;
+        /**
+         * The file extension (if any) such as '.html'
+         */
+        ext?: string;
+        /**
+         * The file name without extension (if any) such as 'index'
+         */
+        name?: string;
+    }
+
+    /**
+     * Normalize a string path, reducing '..' and '.' parts.
+     * When multiple slashes are found, they're replaced by a single one; when the path contains a trailing slash, it is preserved. On Windows backslashes are used.
+     *
+     * @param p string path to normalize.
+     */
+    function normalize(p: string): string;
+    /**
+     * Join all arguments together and normalize the resulting path.
+     * Arguments must be strings. In v0.8, non-string arguments were silently ignored. In v0.10 and up, an exception is thrown.
+     *
+     * @param paths paths to join.
+     */
+    function join(...paths: string[]): string;
+    /**
+     * The right-most parameter is considered {to}.  Other parameters are considered an array of {from}.
+     *
+     * Starting from leftmost {from} parameter, resolves {to} to an absolute path.
+     *
+     * If {to} isn't already absolute, {from} arguments are prepended in right to left order,
+     * until an absolute path is found. If after using all {from} paths still no absolute path is found,
+     * the current working directory is used as well. The resulting path is normalized,
+     * and trailing slashes are removed unless the path gets resolved to the root directory.
+     *
+     * @param pathSegments string paths to join.  Non-string arguments are ignored.
+     */
+    function resolve(...pathSegments: string[]): string;
+    /**
+     * Determines whether {path} is an absolute path. An absolute path will always resolve to the same location, regardless of the working directory.
+     *
+     * @param path path to test.
+     */
+    function isAbsolute(path: string): boolean;
+    /**
+     * Solve the relative path from {from} to {to}.
+     * At times we have two absolute paths, and we need to derive the relative path from one to the other. This is actually the reverse transform of path.resolve.
+     */
+    function relative(from: string, to: string): string;
+    /**
+     * Return the directory name of a path. Similar to the Unix dirname command.
+     *
+     * @param p the path to evaluate.
+     */
+    function dirname(p: string): string;
+    /**
+     * Return the last portion of a path. Similar to the Unix basename command.
+     * Often used to extract the file name from a fully qualified path.
+     *
+     * @param p the path to evaluate.
+     * @param ext optionally, an extension to remove from the result.
+     */
+    function basename(p: string, ext?: string): string;
+    /**
+     * Return the extension of the path, from the last '.' to end of string in the last portion of the path.
+     * If there is no '.' in the last portion of the path or the first character of it is '.', then it returns an empty string
+     *
+     * @param p the path to evaluate.
+     */
+    function extname(p: string): string;
+    /**
+     * The platform-specific file separator. '\\' or '/'.
+     */
+    const sep: '\\' | '/';
+    /**
+     * The platform-specific file delimiter. ';' or ':'.
+     */
+    const delimiter: ';' | ':';
+    /**
+     * Returns an object from a path string - the opposite of format().
+     *
+     * @param pathString path to evaluate.
+     */
+    function parse(pathString: string): ParsedPath;
+    /**
+     * Returns a path string from an object - the opposite of parse().
+     *
+     * @param pathString path to evaluate.
+     */
+    function format(pathObject: FormatInputPathObject): string;
+
+    namespace posix {
+        function normalize(p: string): string;
+        function join(...paths: string[]): string;
+        function resolve(...pathSegments: string[]): string;
+        function isAbsolute(p: string): boolean;
+        function relative(from: string, to: string): string;
+        function dirname(p: string): string;
+        function basename(p: string, ext?: string): string;
+        function extname(p: string): string;
+        const sep: string;
+        const delimiter: string;
+        function parse(p: string): ParsedPath;
+        function format(pP: FormatInputPathObject): string;
+    }
+
+    namespace win32 {
+        function normalize(p: string): string;
+        function join(...paths: string[]): string;
+        function resolve(...pathSegments: string[]): string;
+        function isAbsolute(p: string): boolean;
+        function relative(from: string, to: string): string;
+        function dirname(p: string): string;
+        function basename(p: string, ext?: string): string;
+        function extname(p: string): string;
+        const sep: string;
+        const delimiter: string;
+        function parse(p: string): ParsedPath;
+        function format(pP: FormatInputPathObject): string;
+    }
+}
diff --git a/setup-maven/node_modules/@types/node/perf_hooks.d.ts b/setup-maven/node_modules/@types/node/perf_hooks.d.ts
new file mode 100644
index 0000000..bf44d44
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/perf_hooks.d.ts
@@ -0,0 +1,304 @@
+declare module "perf_hooks" {
+    import { AsyncResource } from "async_hooks";
+
+    interface PerformanceEntry {
+        /**
+         * The total number of milliseconds elapsed for this entry.
+         * This value will not be meaningful for all Performance Entry types.
+         */
+        readonly duration: number;
+
+        /**
+         * The name of the performance entry.
+         */
+        readonly name: string;
+
+        /**
+         * The high resolution millisecond timestamp marking the starting time of the Performance Entry.
+         */
+        readonly startTime: number;
+
+        /**
+         * The type of the performance entry.
+         * Currently it may be one of: 'node', 'mark', 'measure', 'gc', or 'function'.
+         */
+        readonly entryType: string;
+
+        /**
+         * When performanceEntry.entryType is equal to 'gc', the performance.kind property identifies
+         * the type of garbage collection operation that occurred.
+         * The value may be one of perf_hooks.constants.
+         */
+        readonly kind?: number;
+    }
+
+    interface PerformanceNodeTiming extends PerformanceEntry {
+        /**
+         * The high resolution millisecond timestamp at which the Node.js process completed bootstrap.
+         */
+        readonly bootstrapComplete: number;
+
+        /**
+         * The high resolution millisecond timestamp at which cluster processing ended.
+         */
+        readonly clusterSetupEnd: number;
+
+        /**
+         * The high resolution millisecond timestamp at which cluster processing started.
+         */
+        readonly clusterSetupStart: number;
+
+        /**
+         * The high resolution millisecond timestamp at which the Node.js event loop exited.
+         */
+        readonly loopExit: number;
+
+        /**
+         * The high resolution millisecond timestamp at which the Node.js event loop started.
+         */
+        readonly loopStart: number;
+
+        /**
+         * The high resolution millisecond timestamp at which main module load ended.
+         */
+        readonly moduleLoadEnd: number;
+
+        /**
+         * The high resolution millisecond timestamp at which main module load started.
+         */
+        readonly moduleLoadStart: number;
+
+        /**
+         * The high resolution millisecond timestamp at which the Node.js process was initialized.
+         */
+        readonly nodeStart: number;
+
+        /**
+         * The high resolution millisecond timestamp at which preload module load ended.
+         */
+        readonly preloadModuleLoadEnd: number;
+
+        /**
+         * The high resolution millisecond timestamp at which preload module load started.
+         */
+        readonly preloadModuleLoadStart: number;
+
+        /**
+         * The high resolution millisecond timestamp at which third_party_main processing ended.
+         */
+        readonly thirdPartyMainEnd: number;
+
+        /**
+         * The high resolution millisecond timestamp at which third_party_main processing started.
+         */
+        readonly thirdPartyMainStart: number;
+
+        /**
+         * The high resolution millisecond timestamp at which the V8 platform was initialized.
+         */
+        readonly v8Start: number;
+    }
+
+    interface Performance {
+        /**
+         * If name is not provided, removes all PerformanceFunction objects from the Performance Timeline.
+         * If name is provided, removes entries with name.
+         * @param name
+         */
+        clearFunctions(name?: string): void;
+
+        /**
+         * If name is not provided, removes all PerformanceMark objects from the Performance Timeline.
+         * If name is provided, removes only the named mark.
+         * @param name
+         */
+        clearMarks(name?: string): void;
+
+        /**
+         * If name is not provided, removes all PerformanceMeasure objects from the Performance Timeline.
+         * If name is provided, removes only objects whose performanceEntry.name matches name.
+         */
+        clearMeasures(name?: string): void;
+
+        /**
+         * Returns a list of all PerformanceEntry objects in chronological order with respect to performanceEntry.startTime.
+         * @return list of all PerformanceEntry objects
+         */
+        getEntries(): PerformanceEntry[];
+
+        /**
+         * Returns a list of all PerformanceEntry objects in chronological order with respect to performanceEntry.startTime
+         * whose performanceEntry.name is equal to name, and optionally, whose performanceEntry.entryType is equal to type.
+         * @param name
+         * @param type
+         * @return list of all PerformanceEntry objects
+         */
+        getEntriesByName(name: string, type?: string): PerformanceEntry[];
+
+        /**
+         * Returns a list of all PerformanceEntry objects in chronological order with respect to performanceEntry.startTime
+         * whose performanceEntry.entryType is equal to type.
+         * @param type
+         * @return list of all PerformanceEntry objects
+         */
+        getEntriesByType(type: string): PerformanceEntry[];
+
+        /**
+         * Creates a new PerformanceMark entry in the Performance Timeline.
+         * A PerformanceMark is a subclass of PerformanceEntry whose performanceEntry.entryType is always 'mark',
+         * and whose performanceEntry.duration is always 0.
+         * Performance marks are used to mark specific significant moments in the Performance Timeline.
+         * @param name
+         */
+        mark(name?: string): void;
+
+        /**
+         * Creates a new PerformanceMeasure entry in the Performance Timeline.
+         * A PerformanceMeasure is a subclass of PerformanceEntry whose performanceEntry.entryType is always 'measure',
+         * and whose performanceEntry.duration measures the number of milliseconds elapsed since startMark and endMark.
+         *
+         * The startMark argument may identify any existing PerformanceMark in the the Performance Timeline, or may identify
+         * any of the timestamp properties provided by the PerformanceNodeTiming class. If the named startMark does not exist,
+         * then startMark is set to timeOrigin by default.
+         *
+         * The endMark argument must identify any existing PerformanceMark in the the Performance Timeline or any of the timestamp
+         * properties provided by the PerformanceNodeTiming class. If the named endMark does not exist, an error will be thrown.
+         * @param name
+         * @param startMark
+         * @param endMark
+         */
+        measure(name: string, startMark: string, endMark: string): void;
+
+        /**
+         * An instance of the PerformanceNodeTiming class that provides performance metrics for specific Node.js operational milestones.
+         */
+        readonly nodeTiming: PerformanceNodeTiming;
+
+        /**
+         * @return the current high resolution millisecond timestamp
+         */
+        now(): number;
+
+        /**
+         * The timeOrigin specifies the high resolution millisecond timestamp from which all performance metric durations are measured.
+         */
+        readonly timeOrigin: number;
+
+        /**
+         * Wraps a function within a new function that measures the running time of the wrapped function.
+         * A PerformanceObserver must be subscribed to the 'function' event type in order for the timing details to be accessed.
+         * @param fn
+         */
+        timerify<T extends (...optionalParams: any[]) => any>(fn: T): T;
+    }
+
+    interface PerformanceObserverEntryList {
+        /**
+         * @return a list of PerformanceEntry objects in chronological order with respect to performanceEntry.startTime.
+         */
+        getEntries(): PerformanceEntry[];
+
+        /**
+         * @return a list of PerformanceEntry objects in chronological order with respect to performanceEntry.startTime
+         * whose performanceEntry.name is equal to name, and optionally, whose performanceEntry.entryType is equal to type.
+         */
+        getEntriesByName(name: string, type?: string): PerformanceEntry[];
+
+        /**
+         * @return Returns a list of PerformanceEntry objects in chronological order with respect to performanceEntry.startTime
+         * whose performanceEntry.entryType is equal to type.
+         */
+        getEntriesByType(type: string): PerformanceEntry[];
+    }
+
+    type PerformanceObserverCallback = (list: PerformanceObserverEntryList, observer: PerformanceObserver) => void;
+
+    class PerformanceObserver extends AsyncResource {
+        constructor(callback: PerformanceObserverCallback);
+
+        /**
+         * Disconnects the PerformanceObserver instance from all notifications.
+         */
+        disconnect(): void;
+
+        /**
+         * Subscribes the PerformanceObserver instance to notifications of new PerformanceEntry instances identified by options.entryTypes.
+         * When options.buffered is false, the callback will be invoked once for every PerformanceEntry instance.
+         * Property buffered defaults to false.
+         * @param options
+         */
+        observe(options: { entryTypes: string[], buffered?: boolean }): void;
+    }
+
+    namespace constants {
+        const NODE_PERFORMANCE_GC_MAJOR: number;
+        const NODE_PERFORMANCE_GC_MINOR: number;
+        const NODE_PERFORMANCE_GC_INCREMENTAL: number;
+        const NODE_PERFORMANCE_GC_WEAKCB: number;
+    }
+
+    const performance: Performance;
+
+    interface EventLoopMonitorOptions {
+        /**
+         * The sampling rate in milliseconds.
+         * Must be greater than zero.
+         * @default 10
+         */
+        resolution?: number;
+    }
+
+    interface EventLoopDelayMonitor {
+        /**
+         * Enables the event loop delay sample timer. Returns `true` if the timer was started, `false` if it was already started.
+         */
+        enable(): boolean;
+        /**
+         * Disables the event loop delay sample timer. Returns `true` if the timer was stopped, `false` if it was already stopped.
+         */
+        disable(): boolean;
+
+        /**
+         * Resets the collected histogram data.
+         */
+        reset(): void;
+
+        /**
+         * Returns the value at the given percentile.
+         * @param percentile A percentile value between 1 and 100.
+         */
+        percentile(percentile: number): number;
+
+        /**
+         * A `Map` object detailing the accumulated percentile distribution.
+         */
+        readonly percentiles: Map<number, number>;
+
+        /**
+         * The number of times the event loop delay exceeded the maximum 1 hour eventloop delay threshold.
+         */
+        readonly exceeds: number;
+
+        /**
+         * The minimum recorded event loop delay.
+         */
+        readonly min: number;
+
+        /**
+         * The maximum recorded event loop delay.
+         */
+        readonly max: number;
+
+        /**
+         * The mean of the recorded event loop delays.
+         */
+        readonly mean: number;
+
+        /**
+         * The standard deviation of the recorded event loop delays.
+         */
+        readonly stddev: number;
+    }
+
+    function monitorEventLoopDelay(options?: EventLoopMonitorOptions): EventLoopDelayMonitor;
+}
diff --git a/setup-maven/node_modules/@types/node/process.d.ts b/setup-maven/node_modules/@types/node/process.d.ts
new file mode 100644
index 0000000..d007d4e
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/process.d.ts
@@ -0,0 +1,15 @@
+declare module "process" {
+    import * as tty from "tty";
+
+    global {
+        namespace NodeJS {
+            // this namespace merge is here because these are specifically used
+            // as the type for process.stdin, process.stdout, and process.stderr.
+            // they can't live in tty.d.ts because we need to disambiguate the imported name.
+            interface ReadStream extends tty.ReadStream {}
+            interface WriteStream extends tty.WriteStream {}
+        }
+    }
+
+    export = process;
+}
diff --git a/setup-maven/node_modules/@types/node/punycode.d.ts b/setup-maven/node_modules/@types/node/punycode.d.ts
new file mode 100644
index 0000000..75d2811
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/punycode.d.ts
@@ -0,0 +1,12 @@
+declare module "punycode" {
+    function decode(string: string): string;
+    function encode(string: string): string;
+    function toUnicode(domain: string): string;
+    function toASCII(domain: string): string;
+    const ucs2: ucs2;
+    interface ucs2 {
+        decode(string: string): number[];
+        encode(codePoints: number[]): string;
+    }
+    const version: string;
+}
diff --git a/setup-maven/node_modules/@types/node/querystring.d.ts b/setup-maven/node_modules/@types/node/querystring.d.ts
new file mode 100644
index 0000000..a61269d
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/querystring.d.ts
@@ -0,0 +1,29 @@
+declare module "querystring" {
+    interface StringifyOptions {
+        encodeURIComponent?: (str: string) => string;
+    }
+
+    interface ParseOptions {
+        maxKeys?: number;
+        decodeURIComponent?: (str: string) => string;
+    }
+
+    interface ParsedUrlQuery { [key: string]: string | string[]; }
+
+    interface ParsedUrlQueryInput {
+        [key: string]: NodeJS.PoorMansUnknown;
+    }
+
+    function stringify(obj?: ParsedUrlQueryInput, sep?: string, eq?: string, options?: StringifyOptions): string;
+    function parse(str: string, sep?: string, eq?: string, options?: ParseOptions): ParsedUrlQuery;
+    /**
+     * The querystring.encode() function is an alias for querystring.stringify().
+     */
+    const encode: typeof stringify;
+    /**
+     * The querystring.decode() function is an alias for querystring.parse().
+     */
+    const decode: typeof parse;
+    function escape(str: string): string;
+    function unescape(str: string): string;
+}
diff --git a/setup-maven/node_modules/@types/node/readline.d.ts b/setup-maven/node_modules/@types/node/readline.d.ts
new file mode 100644
index 0000000..6cb572e
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/readline.d.ts
@@ -0,0 +1,150 @@
+declare module "readline" {
+    import * as events from "events";
+    import * as stream from "stream";
+
+    interface Key {
+        sequence?: string;
+        name?: string;
+        ctrl?: boolean;
+        meta?: boolean;
+        shift?: boolean;
+    }
+
+    class Interface extends events.EventEmitter {
+        readonly terminal: boolean;
+
+        /**
+         * NOTE: According to the documentation:
+         *
+         * > Instances of the `readline.Interface` class are constructed using the
+         * > `readline.createInterface()` method.
+         *
+         * @see https://nodejs.org/dist/latest-v10.x/docs/api/readline.html#readline_class_interface
+         */
+        protected constructor(input: NodeJS.ReadableStream, output?: NodeJS.WritableStream, completer?: Completer | AsyncCompleter, terminal?: boolean);
+        /**
+         * NOTE: According to the documentation:
+         *
+         * > Instances of the `readline.Interface` class are constructed using the
+         * > `readline.createInterface()` method.
+         *
+         * @see https://nodejs.org/dist/latest-v10.x/docs/api/readline.html#readline_class_interface
+         */
+        protected constructor(options: ReadLineOptions);
+
+        setPrompt(prompt: string): void;
+        prompt(preserveCursor?: boolean): void;
+        question(query: string, callback: (answer: string) => void): void;
+        pause(): this;
+        resume(): this;
+        close(): void;
+        write(data: string | Buffer, key?: Key): void;
+
+        /**
+         * events.EventEmitter
+         * 1. close
+         * 2. line
+         * 3. pause
+         * 4. resume
+         * 5. SIGCONT
+         * 6. SIGINT
+         * 7. SIGTSTP
+         */
+
+        addListener(event: string, listener: (...args: any[]) => void): this;
+        addListener(event: "close", listener: () => void): this;
+        addListener(event: "line", listener: (input: string) => void): this;
+        addListener(event: "pause", listener: () => void): this;
+        addListener(event: "resume", listener: () => void): this;
+        addListener(event: "SIGCONT", listener: () => void): this;
+        addListener(event: "SIGINT", listener: () => void): this;
+        addListener(event: "SIGTSTP", listener: () => void): this;
+
+        emit(event: string | symbol, ...args: any[]): boolean;
+        emit(event: "close"): boolean;
+        emit(event: "line", input: string): boolean;
+        emit(event: "pause"): boolean;
+        emit(event: "resume"): boolean;
+        emit(event: "SIGCONT"): boolean;
+        emit(event: "SIGINT"): boolean;
+        emit(event: "SIGTSTP"): boolean;
+
+        on(event: string, listener: (...args: any[]) => void): this;
+        on(event: "close", listener: () => void): this;
+        on(event: "line", listener: (input: string) => void): this;
+        on(event: "pause", listener: () => void): this;
+        on(event: "resume", listener: () => void): this;
+        on(event: "SIGCONT", listener: () => void): this;
+        on(event: "SIGINT", listener: () => void): this;
+        on(event: "SIGTSTP", listener: () => void): this;
+
+        once(event: string, listener: (...args: any[]) => void): this;
+        once(event: "close", listener: () => void): this;
+        once(event: "line", listener: (input: string) => void): this;
+        once(event: "pause", listener: () => void): this;
+        once(event: "resume", listener: () => void): this;
+        once(event: "SIGCONT", listener: () => void): this;
+        once(event: "SIGINT", listener: () => void): this;
+        once(event: "SIGTSTP", listener: () => void): this;
+
+        prependListener(event: string, listener: (...args: any[]) => void): this;
+        prependListener(event: "close", listener: () => void): this;
+        prependListener(event: "line", listener: (input: string) => void): this;
+        prependListener(event: "pause", listener: () => void): this;
+        prependListener(event: "resume", listener: () => void): this;
+        prependListener(event: "SIGCONT", listener: () => void): this;
+        prependListener(event: "SIGINT", listener: () => void): this;
+        prependListener(event: "SIGTSTP", listener: () => void): this;
+
+        prependOnceListener(event: string, listener: (...args: any[]) => void): this;
+        prependOnceListener(event: "close", listener: () => void): this;
+        prependOnceListener(event: "line", listener: (input: string) => void): this;
+        prependOnceListener(event: "pause", listener: () => void): this;
+        prependOnceListener(event: "resume", listener: () => void): this;
+        prependOnceListener(event: "SIGCONT", listener: () => void): this;
+        prependOnceListener(event: "SIGINT", listener: () => void): this;
+        prependOnceListener(event: "SIGTSTP", listener: () => void): this;
+        [Symbol.asyncIterator](): AsyncIterableIterator<string>;
+    }
+
+    type ReadLine = Interface; // type forwarded for backwards compatiblity
+
+    type Completer = (line: string) => CompleterResult;
+    type AsyncCompleter = (line: string, callback: (err?: null | Error, result?: CompleterResult) => void) => any;
+
+    type CompleterResult = [string[], string];
+
+    interface ReadLineOptions {
+        input: NodeJS.ReadableStream;
+        output?: NodeJS.WritableStream;
+        completer?: Completer | AsyncCompleter;
+        terminal?: boolean;
+        historySize?: number;
+        prompt?: string;
+        crlfDelay?: number;
+        removeHistoryDuplicates?: boolean;
+    }
+
+    function createInterface(input: NodeJS.ReadableStream, output?: NodeJS.WritableStream, completer?: Completer | AsyncCompleter, terminal?: boolean): Interface;
+    function createInterface(options: ReadLineOptions): Interface;
+    function emitKeypressEvents(stream: NodeJS.ReadableStream, readlineInterface?: Interface): void;
+
+    type Direction = -1 | 0 | 1;
+
+    /**
+     * Clears the current line of this WriteStream in a direction identified by `dir`.
+     */
+    function clearLine(stream: NodeJS.WritableStream, dir: Direction, callback?: () => void): boolean;
+    /**
+     * Clears this `WriteStream` from the current cursor down.
+     */
+    function clearScreenDown(stream: NodeJS.WritableStream, callback?: () => void): boolean;
+    /**
+     * Moves this WriteStream's cursor to the specified position.
+     */
+    function cursorTo(stream: NodeJS.WritableStream, x: number, y?: number, callback?: () => void): boolean;
+    /**
+     * Moves this WriteStream's cursor relative to its current position.
+     */
+    function moveCursor(stream: NodeJS.WritableStream, dx: number, dy: number, callback?: () => void): boolean;
+}
diff --git a/setup-maven/node_modules/@types/node/repl.d.ts b/setup-maven/node_modules/@types/node/repl.d.ts
new file mode 100644
index 0000000..9496fcd
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/repl.d.ts
@@ -0,0 +1,382 @@
+declare module "repl" {
+    import { Interface, Completer, AsyncCompleter } from "readline";
+    import { Context } from "vm";
+    import { InspectOptions } from "util";
+
+    interface ReplOptions {
+        /**
+         * The input prompt to display.
+         * Default: `"> "`
+         */
+        prompt?: string;
+        /**
+         * The `Readable` stream from which REPL input will be read.
+         * Default: `process.stdin`
+         */
+        input?: NodeJS.ReadableStream;
+        /**
+         * The `Writable` stream to which REPL output will be written.
+         * Default: `process.stdout`
+         */
+        output?: NodeJS.WritableStream;
+        /**
+         * If `true`, specifies that the output should be treated as a TTY terminal, and have
+         * ANSI/VT100 escape codes written to it.
+         * Default: checking the value of the `isTTY` property on the output stream upon
+         * instantiation.
+         */
+        terminal?: boolean;
+        /**
+         * The function to be used when evaluating each given line of input.
+         * Default: an async wrapper for the JavaScript `eval()` function. An `eval` function can
+         * error with `repl.Recoverable` to indicate the input was incomplete and prompt for
+         * additional lines.
+         *
+         * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_default_evaluation
+         * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_custom_evaluation_functions
+         */
+        eval?: REPLEval;
+        /**
+         * If `true`, specifies that the default `writer` function should include ANSI color
+         * styling to REPL output. If a custom `writer` function is provided then this has no
+         * effect.
+         * Default: the REPL instance's `terminal` value.
+         */
+        useColors?: boolean;
+        /**
+         * If `true`, specifies that the default evaluation function will use the JavaScript
+         * `global` as the context as opposed to creating a new separate context for the REPL
+         * instance. The node CLI REPL sets this value to `true`.
+         * Default: `false`.
+         */
+        useGlobal?: boolean;
+        /**
+         * If `true`, specifies that the default writer will not output the return value of a
+         * command if it evaluates to `undefined`.
+         * Default: `false`.
+         */
+        ignoreUndefined?: boolean;
+        /**
+         * The function to invoke to format the output of each command before writing to `output`.
+         * Default: a wrapper for `util.inspect`.
+         *
+         * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_customizing_repl_output
+         */
+        writer?: REPLWriter;
+        /**
+         * An optional function used for custom Tab auto completion.
+         *
+         * @see https://nodejs.org/dist/latest-v11.x/docs/api/readline.html#readline_use_of_the_completer_function
+         */
+        completer?: Completer | AsyncCompleter;
+        /**
+         * A flag that specifies whether the default evaluator executes all JavaScript commands in
+         * strict mode or default (sloppy) mode.
+         * Accepted values are:
+         * - `repl.REPL_MODE_SLOPPY` - evaluates expressions in sloppy mode.
+         * - `repl.REPL_MODE_STRICT` - evaluates expressions in strict mode. This is equivalent to
+         *   prefacing every repl statement with `'use strict'`.
+         */
+        replMode?: typeof REPL_MODE_SLOPPY | typeof REPL_MODE_STRICT;
+        /**
+         * Stop evaluating the current piece of code when `SIGINT` is received, i.e. `Ctrl+C` is
+         * pressed. This cannot be used together with a custom `eval` function.
+         * Default: `false`.
+         */
+        breakEvalOnSigint?: boolean;
+    }
+
+    type REPLEval = (this: REPLServer, evalCmd: string, context: Context, file: string, cb: (err: Error | null, result: any) => void) => void;
+    type REPLWriter = (this: REPLServer, obj: any) => string;
+
+    /**
+     * This is the default "writer" value, if none is passed in the REPL options,
+     * and it can be overridden by custom print functions.
+     */
+    const writer: REPLWriter & { options: InspectOptions };
+
+    type REPLCommandAction = (this: REPLServer, text: string) => void;
+
+    interface REPLCommand {
+        /**
+         * Help text to be displayed when `.help` is entered.
+         */
+        help?: string;
+        /**
+         * The function to execute, optionally accepting a single string argument.
+         */
+        action: REPLCommandAction;
+    }
+
+    /**
+     * Provides a customizable Read-Eval-Print-Loop (REPL).
+     *
+     * Instances of `repl.REPLServer` will accept individual lines of user input, evaluate those
+     * according to a user-defined evaluation function, then output the result. Input and output
+     * may be from `stdin` and `stdout`, respectively, or may be connected to any Node.js `stream`.
+     *
+     * Instances of `repl.REPLServer` support automatic completion of inputs, simplistic Emacs-style
+     * line editing, multi-line inputs, ANSI-styled output, saving and restoring current REPL session
+     * state, error recovery, and customizable evaluation functions.
+     *
+     * Instances of `repl.REPLServer` are created using the `repl.start()` method and _should not_
+     * be created directly using the JavaScript `new` keyword.
+     *
+     * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_repl
+     */
+    class REPLServer extends Interface {
+        /**
+         * The `vm.Context` provided to the `eval` function to be used for JavaScript
+         * evaluation.
+         */
+        readonly context: Context;
+        /**
+         * The `Readable` stream from which REPL input will be read.
+         */
+        readonly inputStream: NodeJS.ReadableStream;
+        /**
+         * The `Writable` stream to which REPL output will be written.
+         */
+        readonly outputStream: NodeJS.WritableStream;
+        /**
+         * The commands registered via `replServer.defineCommand()`.
+         */
+        readonly commands: { readonly [name: string]: REPLCommand | undefined };
+        /**
+         * A value indicating whether the REPL is currently in "editor mode".
+         *
+         * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_commands_and_special_keys
+         */
+        readonly editorMode: boolean;
+        /**
+         * A value indicating whether the `_` variable has been assigned.
+         *
+         * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_assignment_of_the_underscore_variable
+         */
+        readonly underscoreAssigned: boolean;
+        /**
+         * The last evaluation result from the REPL (assigned to the `_` variable inside of the REPL).
+         *
+         * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_assignment_of_the_underscore_variable
+         */
+        readonly last: any;
+        /**
+         * A value indicating whether the `_error` variable has been assigned.
+         *
+         * @since v9.8.0
+         * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_assignment_of_the_underscore_variable
+         */
+        readonly underscoreErrAssigned: boolean;
+        /**
+         * The last error raised inside the REPL (assigned to the `_error` variable inside of the REPL).
+         *
+         * @since v9.8.0
+         * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_assignment_of_the_underscore_variable
+         */
+        readonly lastError: any;
+        /**
+         * Specified in the REPL options, this is the function to be used when evaluating each
+         * given line of input. If not specified in the REPL options, this is an async wrapper
+         * for the JavaScript `eval()` function.
+         */
+        readonly eval: REPLEval;
+        /**
+         * Specified in the REPL options, this is a value indicating whether the default
+         * `writer` function should include ANSI color styling to REPL output.
+         */
+        readonly useColors: boolean;
+        /**
+         * Specified in the REPL options, this is a value indicating whether the default `eval`
+         * function will use the JavaScript `global` as the context as opposed to creating a new
+         * separate context for the REPL instance.
+         */
+        readonly useGlobal: boolean;
+        /**
+         * Specified in the REPL options, this is a value indicating whether the default `writer`
+         * function should output the result of a command if it evaluates to `undefined`.
+         */
+        readonly ignoreUndefined: boolean;
+        /**
+         * Specified in the REPL options, this is the function to invoke to format the output of
+         * each command before writing to `outputStream`. If not specified in the REPL options,
+         * this will be a wrapper for `util.inspect`.
+         */
+        readonly writer: REPLWriter;
+        /**
+         * Specified in the REPL options, this is the function to use for custom Tab auto-completion.
+         */
+        readonly completer: Completer | AsyncCompleter;
+        /**
+         * Specified in the REPL options, this is a flag that specifies whether the default `eval`
+         * function should execute all JavaScript commands in strict mode or default (sloppy) mode.
+         * Possible values are:
+         * - `repl.REPL_MODE_SLOPPY` - evaluates expressions in sloppy mode.
+         * - `repl.REPL_MODE_STRICT` - evaluates expressions in strict mode. This is equivalent to
+         *    prefacing every repl statement with `'use strict'`.
+         */
+        readonly replMode: typeof REPL_MODE_SLOPPY | typeof REPL_MODE_STRICT;
+
+        /**
+         * NOTE: According to the documentation:
+         *
+         * > Instances of `repl.REPLServer` are created using the `repl.start()` method and
+         * > _should not_ be created directly using the JavaScript `new` keyword.
+         *
+         * `REPLServer` cannot be subclassed due to implementation specifics in NodeJS.
+         *
+         * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_class_replserver
+         */
+        private constructor();
+
+        /**
+         * Used to add new `.`-prefixed commands to the REPL instance. Such commands are invoked
+         * by typing a `.` followed by the `keyword`.
+         *
+         * @param keyword The command keyword (_without_ a leading `.` character).
+         * @param cmd The function to invoke when the command is processed.
+         *
+         * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_replserver_definecommand_keyword_cmd
+         */
+        defineCommand(keyword: string, cmd: REPLCommandAction | REPLCommand): void;
+        /**
+         * Readies the REPL instance for input from the user, printing the configured `prompt` to a
+         * new line in the `output` and resuming the `input` to accept new input.
+         *
+         * When multi-line input is being entered, an ellipsis is printed rather than the 'prompt'.
+         *
+         * This method is primarily intended to be called from within the action function for
+         * commands registered using the `replServer.defineCommand()` method.
+         *
+         * @param preserveCursor When `true`, the cursor placement will not be reset to `0`.
+         */
+        displayPrompt(preserveCursor?: boolean): void;
+        /**
+         * Clears any command that has been buffered but not yet executed.
+         *
+         * This method is primarily intended to be called from within the action function for
+         * commands registered using the `replServer.defineCommand()` method.
+         *
+         * @since v9.0.0
+         */
+        clearBufferedCommand(): void;
+
+        /**
+         * Initializes a history log file for the REPL instance. When executing the
+         * Node.js binary and using the command line REPL, a history file is initialized
+         * by default. However, this is not the case when creating a REPL
+         * programmatically. Use this method to initialize a history log file when working
+         * with REPL instances programmatically.
+         * @param path The path to the history file
+         */
+        setupHistory(path: string, cb: (err: Error | null, repl: this) => void): void;
+
+        /**
+         * events.EventEmitter
+         * 1. close - inherited from `readline.Interface`
+         * 2. line - inherited from `readline.Interface`
+         * 3. pause - inherited from `readline.Interface`
+         * 4. resume - inherited from `readline.Interface`
+         * 5. SIGCONT - inherited from `readline.Interface`
+         * 6. SIGINT - inherited from `readline.Interface`
+         * 7. SIGTSTP - inherited from `readline.Interface`
+         * 8. exit
+         * 9. reset
+         */
+
+        addListener(event: string, listener: (...args: any[]) => void): this;
+        addListener(event: "close", listener: () => void): this;
+        addListener(event: "line", listener: (input: string) => void): this;
+        addListener(event: "pause", listener: () => void): this;
+        addListener(event: "resume", listener: () => void): this;
+        addListener(event: "SIGCONT", listener: () => void): this;
+        addListener(event: "SIGINT", listener: () => void): this;
+        addListener(event: "SIGTSTP", listener: () => void): this;
+        addListener(event: "exit", listener: () => void): this;
+        addListener(event: "reset", listener: (context: Context) => void): this;
+
+        emit(event: string | symbol, ...args: any[]): boolean;
+        emit(event: "close"): boolean;
+        emit(event: "line", input: string): boolean;
+        emit(event: "pause"): boolean;
+        emit(event: "resume"): boolean;
+        emit(event: "SIGCONT"): boolean;
+        emit(event: "SIGINT"): boolean;
+        emit(event: "SIGTSTP"): boolean;
+        emit(event: "exit"): boolean;
+        emit(event: "reset", context: Context): boolean;
+
+        on(event: string, listener: (...args: any[]) => void): this;
+        on(event: "close", listener: () => void): this;
+        on(event: "line", listener: (input: string) => void): this;
+        on(event: "pause", listener: () => void): this;
+        on(event: "resume", listener: () => void): this;
+        on(event: "SIGCONT", listener: () => void): this;
+        on(event: "SIGINT", listener: () => void): this;
+        on(event: "SIGTSTP", listener: () => void): this;
+        on(event: "exit", listener: () => void): this;
+        on(event: "reset", listener: (context: Context) => void): this;
+
+        once(event: string, listener: (...args: any[]) => void): this;
+        once(event: "close", listener: () => void): this;
+        once(event: "line", listener: (input: string) => void): this;
+        once(event: "pause", listener: () => void): this;
+        once(event: "resume", listener: () => void): this;
+        once(event: "SIGCONT", listener: () => void): this;
+        once(event: "SIGINT", listener: () => void): this;
+        once(event: "SIGTSTP", listener: () => void): this;
+        once(event: "exit", listener: () => void): this;
+        once(event: "reset", listener: (context: Context) => void): this;
+
+        prependListener(event: string, listener: (...args: any[]) => void): this;
+        prependListener(event: "close", listener: () => void): this;
+        prependListener(event: "line", listener: (input: string) => void): this;
+        prependListener(event: "pause", listener: () => void): this;
+        prependListener(event: "resume", listener: () => void): this;
+        prependListener(event: "SIGCONT", listener: () => void): this;
+        prependListener(event: "SIGINT", listener: () => void): this;
+        prependListener(event: "SIGTSTP", listener: () => void): this;
+        prependListener(event: "exit", listener: () => void): this;
+        prependListener(event: "reset", listener: (context: Context) => void): this;
+
+        prependOnceListener(event: string, listener: (...args: any[]) => void): this;
+        prependOnceListener(event: "close", listener: () => void): this;
+        prependOnceListener(event: "line", listener: (input: string) => void): this;
+        prependOnceListener(event: "pause", listener: () => void): this;
+        prependOnceListener(event: "resume", listener: () => void): this;
+        prependOnceListener(event: "SIGCONT", listener: () => void): this;
+        prependOnceListener(event: "SIGINT", listener: () => void): this;
+        prependOnceListener(event: "SIGTSTP", listener: () => void): this;
+        prependOnceListener(event: "exit", listener: () => void): this;
+        prependOnceListener(event: "reset", listener: (context: Context) => void): this;
+    }
+
+    /**
+     * A flag passed in the REPL options. Evaluates expressions in sloppy mode.
+     */
+    const REPL_MODE_SLOPPY: symbol; // TODO: unique symbol
+
+    /**
+     * A flag passed in the REPL options. Evaluates expressions in strict mode.
+     * This is equivalent to prefacing every repl statement with `'use strict'`.
+     */
+    const REPL_MODE_STRICT: symbol; // TODO: unique symbol
+
+    /**
+     * Creates and starts a `repl.REPLServer` instance.
+     *
+     * @param options The options for the `REPLServer`. If `options` is a string, then it specifies
+     * the input prompt.
+     */
+    function start(options?: string | ReplOptions): REPLServer;
+
+    /**
+     * Indicates a recoverable error that a `REPLServer` can use to support multi-line input.
+     *
+     * @see https://nodejs.org/dist/latest-v10.x/docs/api/repl.html#repl_recoverable_errors
+     */
+    class Recoverable extends SyntaxError {
+        err: Error;
+
+        constructor(err: Error);
+    }
+}
diff --git a/setup-maven/node_modules/@types/node/stream.d.ts b/setup-maven/node_modules/@types/node/stream.d.ts
new file mode 100644
index 0000000..2a0895b
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/stream.d.ts
@@ -0,0 +1,319 @@
+declare module "stream" {
+    import * as events from "events";
+
+    class internal extends events.EventEmitter {
+        pipe<T extends NodeJS.WritableStream>(destination: T, options?: { end?: boolean; }): T;
+    }
+
+    namespace internal {
+        class Stream extends internal { }
+
+        interface ReadableOptions {
+            highWaterMark?: number;
+            encoding?: string;
+            objectMode?: boolean;
+            read?(this: Readable, size: number): void;
+            destroy?(this: Readable, error: Error | null, callback: (error: Error | null) => void): void;
+            autoDestroy?: boolean;
+        }
+
+        class Readable extends Stream implements NodeJS.ReadableStream {
+            /**
+             * A utility method for creating Readable Streams out of iterators.
+             */
+            static from(iterable: Iterable<any> | AsyncIterable<any>, options?: ReadableOptions): Readable;
+
+            readable: boolean;
+            readonly readableHighWaterMark: number;
+            readonly readableLength: number;
+            readonly readableObjectMode: boolean;
+            destroyed: boolean;
+            constructor(opts?: ReadableOptions);
+            _read(size: number): void;
+            read(size?: number): any;
+            setEncoding(encoding: string): this;
+            pause(): this;
+            resume(): this;
+            isPaused(): boolean;
+            unpipe(destination?: NodeJS.WritableStream): this;
+            unshift(chunk: any, encoding?: BufferEncoding): void;
+            wrap(oldStream: NodeJS.ReadableStream): this;
+            push(chunk: any, encoding?: string): boolean;
+            _destroy(error: Error | null, callback: (error?: Error | null) => void): void;
+            destroy(error?: Error): void;
+
+            /**
+             * Event emitter
+             * The defined events on documents including:
+             * 1. close
+             * 2. data
+             * 3. end
+             * 4. readable
+             * 5. error
+             */
+            addListener(event: "close", listener: () => void): this;
+            addListener(event: "data", listener: (chunk: any) => void): this;
+            addListener(event: "end", listener: () => void): this;
+            addListener(event: "readable", listener: () => void): this;
+            addListener(event: "error", listener: (err: Error) => void): this;
+            addListener(event: string | symbol, listener: (...args: any[]) => void): this;
+
+            emit(event: "close"): boolean;
+            emit(event: "data", chunk: any): boolean;
+            emit(event: "end"): boolean;
+            emit(event: "readable"): boolean;
+            emit(event: "error", err: Error): boolean;
+            emit(event: string | symbol, ...args: any[]): boolean;
+
+            on(event: "close", listener: () => void): this;
+            on(event: "data", listener: (chunk: any) => void): this;
+            on(event: "end", listener: () => void): this;
+            on(event: "readable", listener: () => void): this;
+            on(event: "error", listener: (err: Error) => void): this;
+            on(event: string | symbol, listener: (...args: any[]) => void): this;
+
+            once(event: "close", listener: () => void): this;
+            once(event: "data", listener: (chunk: any) => void): this;
+            once(event: "end", listener: () => void): this;
+            once(event: "readable", listener: () => void): this;
+            once(event: "error", listener: (err: Error) => void): this;
+            once(event: string | symbol, listener: (...args: any[]) => void): this;
+
+            prependListener(event: "close", listener: () => void): this;
+            prependListener(event: "data", listener: (chunk: any) => void): this;
+            prependListener(event: "end", listener: () => void): this;
+            prependListener(event: "readable", listener: () => void): this;
+            prependListener(event: "error", listener: (err: Error) => void): this;
+            prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
+
+            prependOnceListener(event: "close", listener: () => void): this;
+            prependOnceListener(event: "data", listener: (chunk: any) => void): this;
+            prependOnceListener(event: "end", listener: () => void): this;
+            prependOnceListener(event: "readable", listener: () => void): this;
+            prependOnceListener(event: "error", listener: (err: Error) => void): this;
+            prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
+
+            removeListener(event: "close", listener: () => void): this;
+            removeListener(event: "data", listener: (chunk: any) => void): this;
+            removeListener(event: "end", listener: () => void): this;
+            removeListener(event: "readable", listener: () => void): this;
+            removeListener(event: "error", listener: (err: Error) => void): this;
+            removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
+
+            [Symbol.asyncIterator](): AsyncIterableIterator<any>;
+        }
+
+        interface WritableOptions {
+            highWaterMark?: number;
+            decodeStrings?: boolean;
+            defaultEncoding?: string;
+            objectMode?: boolean;
+            emitClose?: boolean;
+            write?(this: Writable, chunk: any, encoding: string, callback: (error?: Error | null) => void): void;
+            writev?(this: Writable, chunks: Array<{ chunk: any, encoding: string }>, callback: (error?: Error | null) => void): void;
+            destroy?(this: Writable, error: Error | null, callback: (error: Error | null) => void): void;
+            final?(this: Writable, callback: (error?: Error | null) => void): void;
+            autoDestroy?: boolean;
+        }
+
+        class Writable extends Stream implements NodeJS.WritableStream {
+            readonly writable: boolean;
+            readonly writableEnded: boolean;
+            readonly writableFinished: boolean;
+            readonly writableHighWaterMark: number;
+            readonly writableLength: number;
+            readonly writableObjectMode: boolean;
+            destroyed: boolean;
+            constructor(opts?: WritableOptions);
+            _write(chunk: any, encoding: string, callback: (error?: Error | null) => void): void;
+            _writev?(chunks: Array<{ chunk: any, encoding: string }>, callback: (error?: Error | null) => void): void;
+            _destroy(error: Error | null, callback: (error?: Error | null) => void): void;
+            _final(callback: (error?: Error | null) => void): void;
+            write(chunk: any, cb?: (error: Error | null | undefined) => void): boolean;
+            write(chunk: any, encoding: string, cb?: (error: Error | null | undefined) => void): boolean;
+            setDefaultEncoding(encoding: string): this;
+            end(cb?: () => void): void;
+            end(chunk: any, cb?: () => void): void;
+            end(chunk: any, encoding: string, cb?: () => void): void;
+            cork(): void;
+            uncork(): void;
+            destroy(error?: Error): void;
+
+            /**
+             * Event emitter
+             * The defined events on documents including:
+             * 1. close
+             * 2. drain
+             * 3. error
+             * 4. finish
+             * 5. pipe
+             * 6. unpipe
+             */
+            addListener(event: "close", listener: () => void): this;
+            addListener(event: "drain", listener: () => void): this;
+            addListener(event: "error", listener: (err: Error) => void): this;
+            addListener(event: "finish", listener: () => void): this;
+            addListener(event: "pipe", listener: (src: Readable) => void): this;
+            addListener(event: "unpipe", listener: (src: Readable) => void): this;
+            addListener(event: string | symbol, listener: (...args: any[]) => void): this;
+
+            emit(event: "close"): boolean;
+            emit(event: "drain"): boolean;
+            emit(event: "error", err: Error): boolean;
+            emit(event: "finish"): boolean;
+            emit(event: "pipe", src: Readable): boolean;
+            emit(event: "unpipe", src: Readable): boolean;
+            emit(event: string | symbol, ...args: any[]): boolean;
+
+            on(event: "close", listener: () => void): this;
+            on(event: "drain", listener: () => void): this;
+            on(event: "error", listener: (err: Error) => void): this;
+            on(event: "finish", listener: () => void): this;
+            on(event: "pipe", listener: (src: Readable) => void): this;
+            on(event: "unpipe", listener: (src: Readable) => void): this;
+            on(event: string | symbol, listener: (...args: any[]) => void): this;
+
+            once(event: "close", listener: () => void): this;
+            once(event: "drain", listener: () => void): this;
+            once(event: "error", listener: (err: Error) => void): this;
+            once(event: "finish", listener: () => void): this;
+            once(event: "pipe", listener: (src: Readable) => void): this;
+            once(event: "unpipe", listener: (src: Readable) => void): this;
+            once(event: string | symbol, listener: (...args: any[]) => void): this;
+
+            prependListener(event: "close", listener: () => void): this;
+            prependListener(event: "drain", listener: () => void): this;
+            prependListener(event: "error", listener: (err: Error) => void): this;
+            prependListener(event: "finish", listener: () => void): this;
+            prependListener(event: "pipe", listener: (src: Readable) => void): this;
+            prependListener(event: "unpipe", listener: (src: Readable) => void): this;
+            prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
+
+            prependOnceListener(event: "close", listener: () => void): this;
+            prependOnceListener(event: "drain", listener: () => void): this;
+            prependOnceListener(event: "error", listener: (err: Error) => void): this;
+            prependOnceListener(event: "finish", listener: () => void): this;
+            prependOnceListener(event: "pipe", listener: (src: Readable) => void): this;
+            prependOnceListener(event: "unpipe", listener: (src: Readable) => void): this;
+            prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
+
+            removeListener(event: "close", listener: () => void): this;
+            removeListener(event: "drain", listener: () => void): this;
+            removeListener(event: "error", listener: (err: Error) => void): this;
+            removeListener(event: "finish", listener: () => void): this;
+            removeListener(event: "pipe", listener: (src: Readable) => void): this;
+            removeListener(event: "unpipe", listener: (src: Readable) => void): this;
+            removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
+        }
+
+        interface DuplexOptions extends ReadableOptions, WritableOptions {
+            allowHalfOpen?: boolean;
+            readableObjectMode?: boolean;
+            writableObjectMode?: boolean;
+            read?(this: Duplex, size: number): void;
+            write?(this: Duplex, chunk: any, encoding: string, callback: (error?: Error | null) => void): void;
+            writev?(this: Duplex, chunks: Array<{ chunk: any, encoding: string }>, callback: (error?: Error | null) => void): void;
+            final?(this: Duplex, callback: (error?: Error | null) => void): void;
+            destroy?(this: Duplex, error: Error | null, callback: (error: Error | null) => void): void;
+        }
+
+        // Note: Duplex extends both Readable and Writable.
+        class Duplex extends Readable implements Writable {
+            readonly writable: boolean;
+            readonly writableEnded: boolean;
+            readonly writableFinished: boolean;
+            readonly writableHighWaterMark: number;
+            readonly writableLength: number;
+            readonly writableObjectMode: boolean;
+            constructor(opts?: DuplexOptions);
+            _write(chunk: any, encoding: string, callback: (error?: Error | null) => void): void;
+            _writev?(chunks: Array<{ chunk: any, encoding: string }>, callback: (error?: Error | null) => void): void;
+            _destroy(error: Error | null, callback: (error: Error | null) => void): void;
+            _final(callback: (error?: Error | null) => void): void;
+            write(chunk: any, encoding?: string, cb?: (error: Error | null | undefined) => void): boolean;
+            write(chunk: any, cb?: (error: Error | null | undefined) => void): boolean;
+            setDefaultEncoding(encoding: string): this;
+            end(cb?: () => void): void;
+            end(chunk: any, cb?: () => void): void;
+            end(chunk: any, encoding?: string, cb?: () => void): void;
+            cork(): void;
+            uncork(): void;
+        }
+
+        type TransformCallback = (error?: Error | null, data?: any) => void;
+
+        interface TransformOptions extends DuplexOptions {
+            read?(this: Transform, size: number): void;
+            write?(this: Transform, chunk: any, encoding: string, callback: (error?: Error | null) => void): void;
+            writev?(this: Transform, chunks: Array<{ chunk: any, encoding: string }>, callback: (error?: Error | null) => void): void;
+            final?(this: Transform, callback: (error?: Error | null) => void): void;
+            destroy?(this: Transform, error: Error | null, callback: (error: Error | null) => void): void;
+            transform?(this: Transform, chunk: any, encoding: string, callback: TransformCallback): void;
+            flush?(this: Transform, callback: TransformCallback): void;
+        }
+
+        class Transform extends Duplex {
+            constructor(opts?: TransformOptions);
+            _transform(chunk: any, encoding: string, callback: TransformCallback): void;
+            _flush(callback: TransformCallback): void;
+        }
+
+        class PassThrough extends Transform { }
+
+        function finished(stream: NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream, callback: (err?: NodeJS.ErrnoException | null) => void): () => void;
+        namespace finished {
+            function __promisify__(stream: NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream): Promise<void>;
+        }
+
+        function pipeline<T extends NodeJS.WritableStream>(stream1: NodeJS.ReadableStream, stream2: T, callback?: (err: NodeJS.ErrnoException | null) => void): T;
+        function pipeline<T extends NodeJS.WritableStream>(stream1: NodeJS.ReadableStream, stream2: NodeJS.ReadWriteStream, stream3: T, callback?: (err: NodeJS.ErrnoException | null) => void): T;
+        function pipeline<T extends NodeJS.WritableStream>(
+            stream1: NodeJS.ReadableStream,
+            stream2: NodeJS.ReadWriteStream,
+            stream3: NodeJS.ReadWriteStream,
+            stream4: T,
+            callback?: (err: NodeJS.ErrnoException | null) => void,
+        ): T;
+        function pipeline<T extends NodeJS.WritableStream>(
+            stream1: NodeJS.ReadableStream,
+            stream2: NodeJS.ReadWriteStream,
+            stream3: NodeJS.ReadWriteStream,
+            stream4: NodeJS.ReadWriteStream,
+            stream5: T,
+            callback?: (err: NodeJS.ErrnoException | null) => void,
+        ): T;
+        function pipeline(streams: Array<NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream>, callback?: (err: NodeJS.ErrnoException | null) => void): NodeJS.WritableStream;
+        function pipeline(
+            stream1: NodeJS.ReadableStream,
+            stream2: NodeJS.ReadWriteStream | NodeJS.WritableStream,
+            ...streams: Array<NodeJS.ReadWriteStream | NodeJS.WritableStream | ((err: NodeJS.ErrnoException | null) => void)>,
+        ): NodeJS.WritableStream;
+        namespace pipeline {
+            function __promisify__(stream1: NodeJS.ReadableStream, stream2: NodeJS.WritableStream): Promise<void>;
+            function __promisify__(stream1: NodeJS.ReadableStream, stream2: NodeJS.ReadWriteStream, stream3: NodeJS.WritableStream): Promise<void>;
+            function __promisify__(stream1: NodeJS.ReadableStream, stream2: NodeJS.ReadWriteStream, stream3: NodeJS.ReadWriteStream, stream4: NodeJS.WritableStream): Promise<void>;
+            function __promisify__(
+                stream1: NodeJS.ReadableStream,
+                stream2: NodeJS.ReadWriteStream,
+                stream3: NodeJS.ReadWriteStream,
+                stream4: NodeJS.ReadWriteStream,
+                stream5: NodeJS.WritableStream,
+            ): Promise<void>;
+            function __promisify__(streams: Array<NodeJS.ReadableStream | NodeJS.WritableStream | NodeJS.ReadWriteStream>): Promise<void>;
+            function __promisify__(
+                stream1: NodeJS.ReadableStream,
+                stream2: NodeJS.ReadWriteStream | NodeJS.WritableStream,
+                ...streams: Array<NodeJS.ReadWriteStream | NodeJS.WritableStream>,
+            ): Promise<void>;
+        }
+
+        interface Pipe {
+            close(): void;
+            hasRef(): boolean;
+            ref(): void;
+            unref(): void;
+        }
+    }
+
+    export = internal;
+}
diff --git a/setup-maven/node_modules/@types/node/string_decoder.d.ts b/setup-maven/node_modules/@types/node/string_decoder.d.ts
new file mode 100644
index 0000000..fe0e0b4
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/string_decoder.d.ts
@@ -0,0 +1,7 @@
+declare module "string_decoder" {
+    class StringDecoder {
+        constructor(encoding?: string);
+        write(buffer: Buffer): string;
+        end(buffer?: Buffer): string;
+    }
+}
diff --git a/setup-maven/node_modules/@types/node/timers.d.ts b/setup-maven/node_modules/@types/node/timers.d.ts
new file mode 100644
index 0000000..e64a673
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/timers.d.ts
@@ -0,0 +1,16 @@
+declare module "timers" {
+    function setTimeout(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timeout;
+    namespace setTimeout {
+        function __promisify__(ms: number): Promise<void>;
+        function __promisify__<T>(ms: number, value: T): Promise<T>;
+    }
+    function clearTimeout(timeoutId: NodeJS.Timeout): void;
+    function setInterval(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timeout;
+    function clearInterval(intervalId: NodeJS.Timeout): void;
+    function setImmediate(callback: (...args: any[]) => void, ...args: any[]): NodeJS.Immediate;
+    namespace setImmediate {
+        function __promisify__(): Promise<void>;
+        function __promisify__<T>(value: T): Promise<T>;
+    }
+    function clearImmediate(immediateId: NodeJS.Immediate): void;
+}
diff --git a/setup-maven/node_modules/@types/node/tls.d.ts b/setup-maven/node_modules/@types/node/tls.d.ts
new file mode 100644
index 0000000..2ff817b
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/tls.d.ts
@@ -0,0 +1,418 @@
+declare module "tls" {
+    import * as crypto from "crypto";
+    import * as dns from "dns";
+    import * as net from "net";
+    import * as stream from "stream";
+
+    const CLIENT_RENEG_LIMIT: number;
+    const CLIENT_RENEG_WINDOW: number;
+
+    interface Certificate {
+        /**
+         * Country code.
+         */
+        C: string;
+        /**
+         * Street.
+         */
+        ST: string;
+        /**
+         * Locality.
+         */
+        L: string;
+        /**
+         * Organization.
+         */
+        O: string;
+        /**
+         * Organizational unit.
+         */
+        OU: string;
+        /**
+         * Common name.
+         */
+        CN: string;
+    }
+
+    interface PeerCertificate {
+        subject: Certificate;
+        issuer: Certificate;
+        subjectaltname: string;
+        infoAccess: { [index: string]: string[] | undefined };
+        modulus: string;
+        exponent: string;
+        valid_from: string;
+        valid_to: string;
+        fingerprint: string;
+        ext_key_usage: string[];
+        serialNumber: string;
+        raw: Buffer;
+    }
+
+    interface DetailedPeerCertificate extends PeerCertificate {
+        issuerCertificate: DetailedPeerCertificate;
+    }
+
+    interface CipherNameAndProtocol {
+        /**
+         * The cipher name.
+         */
+        name: string;
+        /**
+         * SSL/TLS protocol version.
+         */
+        version: string;
+    }
+
+    interface TLSSocketOptions extends SecureContextOptions, CommonConnectionOptions {
+        /**
+         * If true the TLS socket will be instantiated in server-mode.
+         * Defaults to false.
+         */
+        isServer?: boolean;
+        /**
+         * An optional net.Server instance.
+         */
+        server?: net.Server;
+
+        /**
+         * An optional Buffer instance containing a TLS session.
+         */
+        session?: Buffer;
+        /**
+         * If true, specifies that the OCSP status request extension will be
+         * added to the client hello and an 'OCSPResponse' event will be
+         * emitted on the socket before establishing a secure communication
+         */
+        requestOCSP?: boolean;
+    }
+
+    class TLSSocket extends net.Socket {
+        /**
+         * Construct a new tls.TLSSocket object from an existing TCP socket.
+         */
+        constructor(socket: net.Socket, options?: TLSSocketOptions);
+
+        /**
+         * A boolean that is true if the peer certificate was signed by one of the specified CAs, otherwise false.
+         */
+        authorized: boolean;
+        /**
+         * The reason why the peer's certificate has not been verified.
+         * This property becomes available only when tlsSocket.authorized === false.
+         */
+        authorizationError: Error;
+        /**
+         * Static boolean value, always true.
+         * May be used to distinguish TLS sockets from regular ones.
+         */
+        encrypted: boolean;
+
+        /**
+         * String containing the selected ALPN protocol.
+         * When ALPN has no selected protocol, tlsSocket.alpnProtocol equals false.
+         */
+        alpnProtocol?: string;
+
+        /**
+         * Returns an object representing the cipher name and the SSL/TLS protocol version of the current connection.
+         * @returns Returns an object representing the cipher name
+         * and the SSL/TLS protocol version of the current connection.
+         */
+        getCipher(): CipherNameAndProtocol;
+        /**
+         * Returns an object representing the peer's certificate.
+         * The returned object has some properties corresponding to the field of the certificate.
+         * If detailed argument is true the full chain with issuer property will be returned,
+         * if false only the top certificate without issuer property.
+         * If the peer does not provide a certificate, it returns null or an empty object.
+         * @param detailed - If true; the full chain with issuer property will be returned.
+         * @returns An object representing the peer's certificate.
+         */
+        getPeerCertificate(detailed: true): DetailedPeerCertificate;
+        getPeerCertificate(detailed?: false): PeerCertificate;
+        getPeerCertificate(detailed?: boolean): PeerCertificate | DetailedPeerCertificate;
+        /**
+         * Returns a string containing the negotiated SSL/TLS protocol version of the current connection.
+         * The value `'unknown'` will be returned for connected sockets that have not completed the handshaking process.
+         * The value `null` will be returned for server sockets or disconnected client sockets.
+         * See https://www.openssl.org/docs/man1.0.2/ssl/SSL_get_version.html for more information.
+         * @returns negotiated SSL/TLS protocol version of the current connection
+         */
+        getProtocol(): string | null;
+        /**
+         * Could be used to speed up handshake establishment when reconnecting to the server.
+         * @returns ASN.1 encoded TLS session or undefined if none was negotiated.
+         */
+        getSession(): Buffer | undefined;
+        /**
+         * NOTE: Works only with client TLS sockets.
+         * Useful only for debugging, for session reuse provide session option to tls.connect().
+         * @returns TLS session ticket or undefined if none was negotiated.
+         */
+        getTLSTicket(): Buffer | undefined;
+        /**
+         * Initiate TLS renegotiation process.
+         *
+         * NOTE: Can be used to request peer's certificate after the secure connection has been established.
+         * ANOTHER NOTE: When running as the server, socket will be destroyed with an error after handshakeTimeout timeout.
+         * @param options - The options may contain the following fields: rejectUnauthorized,
+         * requestCert (See tls.createServer() for details).
+         * @param callback - callback(err) will be executed with null as err, once the renegotiation
+         * is successfully completed.
+         * @return `undefined` when socket is destroy, `false` if negotiaion can't be initiated.
+         */
+        renegotiate(options: { rejectUnauthorized?: boolean, requestCert?: boolean }, callback: (err: Error | null) => void): undefined | boolean;
+        /**
+         * Set maximum TLS fragment size (default and maximum value is: 16384, minimum is: 512).
+         * Smaller fragment size decreases buffering latency on the client: large fragments are buffered by
+         * the TLS layer until the entire fragment is received and its integrity is verified;
+         * large fragments can span multiple roundtrips, and their processing can be delayed due to packet
+         * loss or reordering. However, smaller fragments add extra TLS framing bytes and CPU overhead,
+         * which may decrease overall server throughput.
+         * @param size - TLS fragment size (default and maximum value is: 16384, minimum is: 512).
+         * @returns Returns true on success, false otherwise.
+         */
+        setMaxSendFragment(size: number): boolean;
+
+        /**
+         * When enabled, TLS packet trace information is written to `stderr`. This can be
+         * used to debug TLS connection problems.
+         *
+         * Note: The format of the output is identical to the output of `openssl s_client
+         * -trace` or `openssl s_server -trace`. While it is produced by OpenSSL's
+         * `SSL_trace()` function, the format is undocumented, can change without notice,
+         * and should not be relied on.
+         */
+        enableTrace(): void;
+
+        addListener(event: string, listener: (...args: any[]) => void): this;
+        addListener(event: "OCSPResponse", listener: (response: Buffer) => void): this;
+        addListener(event: "secureConnect", listener: () => void): this;
+        addListener(event: "session", listener: (session: Buffer) => void): this;
+        addListener(event: "keylog", listener: (line: Buffer) => void): this;
+
+        emit(event: string | symbol, ...args: any[]): boolean;
+        emit(event: "OCSPResponse", response: Buffer): boolean;
+        emit(event: "secureConnect"): boolean;
+        emit(event: "session", session: Buffer): boolean;
+        emit(event: "keylog", line: Buffer): boolean;
+
+        on(event: string, listener: (...args: any[]) => void): this;
+        on(event: "OCSPResponse", listener: (response: Buffer) => void): this;
+        on(event: "secureConnect", listener: () => void): this;
+        on(event: "session", listener: (session: Buffer) => void): this;
+        on(event: "keylog", listener: (line: Buffer) => void): this;
+
+        once(event: string, listener: (...args: any[]) => void): this;
+        once(event: "OCSPResponse", listener: (response: Buffer) => void): this;
+        once(event: "secureConnect", listener: () => void): this;
+        once(event: "session", listener: (session: Buffer) => void): this;
+        once(event: "keylog", listener: (line: Buffer) => void): this;
+
+        prependListener(event: string, listener: (...args: any[]) => void): this;
+        prependListener(event: "OCSPResponse", listener: (response: Buffer) => void): this;
+        prependListener(event: "secureConnect", listener: () => void): this;
+        prependListener(event: "session", listener: (session: Buffer) => void): this;
+        prependListener(event: "keylog", listener: (line: Buffer) => void): this;
+
+        prependOnceListener(event: string, listener: (...args: any[]) => void): this;
+        prependOnceListener(event: "OCSPResponse", listener: (response: Buffer) => void): this;
+        prependOnceListener(event: "secureConnect", listener: () => void): this;
+        prependOnceListener(event: "session", listener: (session: Buffer) => void): this;
+        prependOnceListener(event: "keylog", listener: (line: Buffer) => void): this;
+    }
+
+    interface CommonConnectionOptions {
+        /**
+         * An optional TLS context object from tls.createSecureContext()
+         */
+        secureContext?: SecureContext;
+
+        /**
+         * When enabled, TLS packet trace information is written to `stderr`. This can be
+         * used to debug TLS connection problems.
+         * @default false
+         */
+        enableTrace?: boolean;
+        /**
+         * If true the server will request a certificate from clients that
+         * connect and attempt to verify that certificate. Defaults to
+         * false.
+         */
+        requestCert?: boolean;
+        /**
+         * An array of strings or a Buffer naming possible ALPN protocols.
+         * (Protocols should be ordered by their priority.)
+         */
+        ALPNProtocols?: string[] | Uint8Array[] | Uint8Array;
+        /**
+         * SNICallback(servername, cb) <Function> A function that will be
+         * called if the client supports SNI TLS extension. Two arguments
+         * will be passed when called: servername and cb. SNICallback should
+         * invoke cb(null, ctx), where ctx is a SecureContext instance.
+         * (tls.createSecureContext(...) can be used to get a proper
+         * SecureContext.) If SNICallback wasn't provided the default callback
+         * with high-level API will be used (see below).
+         */
+        SNICallback?: (servername: string, cb: (err: Error | null, ctx: SecureContext) => void) => void;
+        /**
+         * If true the server will reject any connection which is not
+         * authorized with the list of supplied CAs. This option only has an
+         * effect if requestCert is true.
+         * @default true
+         */
+        rejectUnauthorized?: boolean;
+    }
+
+    interface TlsOptions extends SecureContextOptions, CommonConnectionOptions {
+        handshakeTimeout?: number;
+        sessionTimeout?: number;
+        ticketKeys?: Buffer;
+    }
+
+    interface ConnectionOptions extends SecureContextOptions, CommonConnectionOptions {
+        host?: string;
+        port?: number;
+        path?: string; // Creates unix socket connection to path. If this option is specified, `host` and `port` are ignored.
+        socket?: net.Socket; // Establish secure connection on a given socket rather than creating a new socket
+        checkServerIdentity?: typeof checkServerIdentity;
+        servername?: string; // SNI TLS Extension
+        session?: Buffer;
+        minDHSize?: number;
+        lookup?: net.LookupFunction;
+        timeout?: number;
+    }
+
+    class Server extends net.Server {
+        addContext(hostName: string, credentials: SecureContextOptions): void;
+
+        /**
+         * events.EventEmitter
+         * 1. tlsClientError
+         * 2. newSession
+         * 3. OCSPRequest
+         * 4. resumeSession
+         * 5. secureConnection
+         */
+        addListener(event: string, listener: (...args: any[]) => void): this;
+        addListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this;
+        addListener(event: "newSession", listener: (sessionId: Buffer, sessionData: Buffer, callback: (err: Error, resp: Buffer) => void) => void): this;
+        addListener(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: (err: Error | null, resp: Buffer) => void) => void): this;
+        addListener(event: "resumeSession", listener: (sessionId: Buffer, callback: (err: Error, sessionData: Buffer) => void) => void): this;
+        addListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this;
+        addListener(event: "keylog", listener: (line: Buffer, tlsSocket: TLSSocket) => void): this;
+
+        emit(event: string | symbol, ...args: any[]): boolean;
+        emit(event: "tlsClientError", err: Error, tlsSocket: TLSSocket): boolean;
+        emit(event: "newSession", sessionId: Buffer, sessionData: Buffer, callback: (err: Error, resp: Buffer) => void): boolean;
+        emit(event: "OCSPRequest", certificate: Buffer, issuer: Buffer, callback: (err: Error | null, resp: Buffer) => void): boolean;
+        emit(event: "resumeSession", sessionId: Buffer, callback: (err: Error, sessionData: Buffer) => void): boolean;
+        emit(event: "secureConnection", tlsSocket: TLSSocket): boolean;
+        emit(event: "keylog", line: Buffer, tlsSocket: TLSSocket): boolean;
+
+        on(event: string, listener: (...args: any[]) => void): this;
+        on(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this;
+        on(event: "newSession", listener: (sessionId: Buffer, sessionData: Buffer, callback: (err: Error, resp: Buffer) => void) => void): this;
+        on(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: (err: Error | null, resp: Buffer) => void) => void): this;
+        on(event: "resumeSession", listener: (sessionId: Buffer, callback: (err: Error, sessionData: Buffer) => void) => void): this;
+        on(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this;
+        on(event: "keylog", listener: (line: Buffer, tlsSocket: TLSSocket) => void): this;
+
+        once(event: string, listener: (...args: any[]) => void): this;
+        once(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this;
+        once(event: "newSession", listener: (sessionId: Buffer, sessionData: Buffer, callback: (err: Error, resp: Buffer) => void) => void): this;
+        once(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: (err: Error | null, resp: Buffer) => void) => void): this;
+        once(event: "resumeSession", listener: (sessionId: Buffer, callback: (err: Error, sessionData: Buffer) => void) => void): this;
+        once(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this;
+        once(event: "keylog", listener: (line: Buffer, tlsSocket: TLSSocket) => void): this;
+
+        prependListener(event: string, listener: (...args: any[]) => void): this;
+        prependListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this;
+        prependListener(event: "newSession", listener: (sessionId: Buffer, sessionData: Buffer, callback: (err: Error, resp: Buffer) => void) => void): this;
+        prependListener(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: (err: Error | null, resp: Buffer) => void) => void): this;
+        prependListener(event: "resumeSession", listener: (sessionId: Buffer, callback: (err: Error, sessionData: Buffer) => void) => void): this;
+        prependListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this;
+        prependListener(event: "keylog", listener: (line: Buffer, tlsSocket: TLSSocket) => void): this;
+
+        prependOnceListener(event: string, listener: (...args: any[]) => void): this;
+        prependOnceListener(event: "tlsClientError", listener: (err: Error, tlsSocket: TLSSocket) => void): this;
+        prependOnceListener(event: "newSession", listener: (sessionId: Buffer, sessionData: Buffer, callback: (err: Error, resp: Buffer) => void) => void): this;
+        prependOnceListener(event: "OCSPRequest", listener: (certificate: Buffer, issuer: Buffer, callback: (err: Error | null, resp: Buffer) => void) => void): this;
+        prependOnceListener(event: "resumeSession", listener: (sessionId: Buffer, callback: (err: Error, sessionData: Buffer) => void) => void): this;
+        prependOnceListener(event: "secureConnection", listener: (tlsSocket: TLSSocket) => void): this;
+        prependOnceListener(event: "keylog", listener: (line: Buffer, tlsSocket: TLSSocket) => void): this;
+    }
+
+    interface SecurePair {
+        encrypted: TLSSocket;
+        cleartext: TLSSocket;
+    }
+
+    type SecureVersion = 'TLSv1.3' | 'TLSv1.2' | 'TLSv1.1' | 'TLSv1';
+
+    interface SecureContextOptions {
+        pfx?: string | Buffer | Array<string | Buffer | Object>;
+        key?: string | Buffer | Array<Buffer | Object>;
+        passphrase?: string;
+        cert?: string | Buffer | Array<string | Buffer>;
+        ca?: string | Buffer | Array<string | Buffer>;
+        ciphers?: string;
+        honorCipherOrder?: boolean;
+        ecdhCurve?: string;
+        clientCertEngine?: string;
+        crl?: string | Buffer | Array<string | Buffer>;
+        dhparam?: string | Buffer;
+        secureOptions?: number; // Value is a numeric bitmask of the `SSL_OP_*` options
+        secureProtocol?: string; // SSL Method, e.g. SSLv23_method
+        sessionIdContext?: string;
+        /**
+         * Optionally set the maximum TLS version to allow. One
+         * of `'TLSv1.3'`, `'TLSv1.2'`, `'TLSv1.1'`, or `'TLSv1'`. Cannot be specified along with the
+         * `secureProtocol` option, use one or the other.
+         * **Default:** `'TLSv1.3'`, unless changed using CLI options. Using
+         * `--tls-max-v1.2` sets the default to `'TLSv1.2'`. Using `--tls-max-v1.3` sets the default to
+         * `'TLSv1.3'`. If multiple of the options are provided, the highest maximum is used.
+         */
+        maxVersion?: SecureVersion;
+        /**
+         * Optionally set the minimum TLS version to allow. One
+         * of `'TLSv1.3'`, `'TLSv1.2'`, `'TLSv1.1'`, or `'TLSv1'`. Cannot be specified along with the
+         * `secureProtocol` option, use one or the other.  It is not recommended to use
+         * less than TLSv1.2, but it may be required for interoperability.
+         * **Default:** `'TLSv1.2'`, unless changed using CLI options. Using
+         * `--tls-v1.0` sets the default to `'TLSv1'`. Using `--tls-v1.1` sets the default to
+         * `'TLSv1.1'`. Using `--tls-min-v1.3` sets the default to
+         * 'TLSv1.3'. If multiple of the options are provided, the lowest minimum is used.
+         */
+        minVersion?: SecureVersion;
+    }
+
+    interface SecureContext {
+        context: any;
+    }
+
+    /*
+     * Verifies the certificate `cert` is issued to host `host`.
+     * @host The hostname to verify the certificate against
+     * @cert PeerCertificate representing the peer's certificate
+     *
+     * Returns Error object, populating it with the reason, host and cert on failure.  On success, returns undefined.
+     */
+    function checkServerIdentity(host: string, cert: PeerCertificate): Error | undefined;
+    function createServer(secureConnectionListener?: (socket: TLSSocket) => void): Server;
+    function createServer(options: TlsOptions, secureConnectionListener?: (socket: TLSSocket) => void): Server;
+    function connect(options: ConnectionOptions, secureConnectListener?: () => void): TLSSocket;
+    function connect(port: number, host?: string, options?: ConnectionOptions, secureConnectListener?: () => void): TLSSocket;
+    function connect(port: number, options?: ConnectionOptions, secureConnectListener?: () => void): TLSSocket;
+    /**
+     * @deprecated
+     */
+    function createSecurePair(credentials?: SecureContext, isServer?: boolean, requestCert?: boolean, rejectUnauthorized?: boolean): SecurePair;
+    function createSecureContext(details: SecureContextOptions): SecureContext;
+    function getCiphers(): string[];
+
+    const DEFAULT_ECDH_CURVE: string;
+
+    const rootCertificates: ReadonlyArray<string>;
+}
diff --git a/setup-maven/node_modules/@types/node/trace_events.d.ts b/setup-maven/node_modules/@types/node/trace_events.d.ts
new file mode 100644
index 0000000..1f3a89c
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/trace_events.d.ts
@@ -0,0 +1,61 @@
+declare module "trace_events" {
+    /**
+     * The `Tracing` object is used to enable or disable tracing for sets of
+     * categories. Instances are created using the
+     * `trace_events.createTracing()` method.
+     *
+     * When created, the `Tracing` object is disabled. Calling the
+     * `tracing.enable()` method adds the categories to the set of enabled trace
+     * event categories. Calling `tracing.disable()` will remove the categories
+     * from the set of enabled trace event categories.
+     */
+    interface Tracing {
+        /**
+         * A comma-separated list of the trace event categories covered by this
+         * `Tracing` object.
+         */
+        readonly categories: string;
+
+        /**
+         * Disables this `Tracing` object.
+         *
+         * Only trace event categories _not_ covered by other enabled `Tracing`
+         * objects and _not_ specified by the `--trace-event-categories` flag
+         * will be disabled.
+         */
+        disable(): void;
+
+        /**
+         * Enables this `Tracing` object for the set of categories covered by
+         * the `Tracing` object.
+         */
+        enable(): void;
+
+        /**
+         * `true` only if the `Tracing` object has been enabled.
+         */
+        readonly enabled: boolean;
+    }
+
+    interface CreateTracingOptions {
+        /**
+         * An array of trace category names. Values included in the array are
+         * coerced to a string when possible. An error will be thrown if the
+         * value cannot be coerced.
+         */
+        categories: string[];
+    }
+
+    /**
+     * Creates and returns a Tracing object for the given set of categories.
+     */
+    function createTracing(options: CreateTracingOptions): Tracing;
+
+    /**
+     * Returns a comma-separated list of all currently-enabled trace event
+     * categories. The current set of enabled trace event categories is
+     * determined by the union of all currently-enabled `Tracing` objects and
+     * any categories enabled using the `--trace-event-categories` flag.
+     */
+    function getEnabledCategories(): string | undefined;
+}
diff --git a/setup-maven/node_modules/@types/node/ts3.2/fs.d.ts b/setup-maven/node_modules/@types/node/ts3.2/fs.d.ts
new file mode 100644
index 0000000..0a9eae0
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/ts3.2/fs.d.ts
@@ -0,0 +1,33 @@
+// tslint:disable-next-line:no-bad-reference
+/// <reference path="../fs.d.ts" />
+
+declare module 'fs' {
+    interface BigIntStats extends StatsBase<BigInt> {
+    }
+
+    class BigIntStats {
+        atimeNs: BigInt;
+        mtimeNs: BigInt;
+        ctimeNs: BigInt;
+        birthtimeNs: BigInt;
+    }
+
+    interface BigIntOptions {
+        bigint: true;
+    }
+
+    interface StatOptions {
+        bigint: boolean;
+    }
+
+    function stat(path: PathLike, options: BigIntOptions, callback: (err: NodeJS.ErrnoException | null, stats: BigIntStats) => void): void;
+    function stat(path: PathLike, options: StatOptions, callback: (err: NodeJS.ErrnoException | null, stats: Stats | BigIntStats) => void): void;
+
+    namespace stat {
+        function __promisify__(path: PathLike, options: BigIntOptions): Promise<BigIntStats>;
+        function __promisify__(path: PathLike, options: StatOptions): Promise<Stats | BigIntStats>;
+    }
+
+    function statSync(path: PathLike, options: BigIntOptions): BigIntStats;
+    function statSync(path: PathLike, options: StatOptions): Stats | BigIntStats;
+}
diff --git a/setup-maven/node_modules/@types/node/ts3.2/globals.d.ts b/setup-maven/node_modules/@types/node/ts3.2/globals.d.ts
new file mode 100644
index 0000000..70892bc
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/ts3.2/globals.d.ts
@@ -0,0 +1,19 @@
+// tslint:disable-next-line:no-bad-reference
+/// <reference path="../globals.d.ts" />
+
+declare namespace NodeJS {
+    interface HRTime {
+        bigint(): bigint;
+    }
+}
+
+interface Buffer extends Uint8Array {
+    readBigUInt64BE(offset?: number): bigint;
+    readBigUInt64LE(offset?: number): bigint;
+    readBigInt64BE(offset?: number): bigint;
+    readBigInt64LE(offset?: number): bigint;
+    writeBigInt64BE(value: bigint, offset?: number): number;
+    writeBigInt64LE(value: bigint, offset?: number): number;
+    writeBigUInt64BE(value: bigint, offset?: number): number;
+    writeBigUInt64LE(value: bigint, offset?: number): number;
+}
diff --git a/setup-maven/node_modules/@types/node/ts3.2/index.d.ts b/setup-maven/node_modules/@types/node/ts3.2/index.d.ts
new file mode 100644
index 0000000..ee07693
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/ts3.2/index.d.ts
@@ -0,0 +1,21 @@
+// NOTE: These definitions support NodeJS and TypeScript 3.2.
+
+// NOTE: TypeScript version-specific augmentations can be found in the following paths:
+//          - ~/base.d.ts         - Shared definitions common to all TypeScript versions
+//          - ~/index.d.ts        - Definitions specific to TypeScript 2.1
+//          - ~/ts3.2/index.d.ts  - Definitions specific to TypeScript 3.2
+
+// Reference required types from the default lib:
+/// <reference lib="es2018" />
+/// <reference lib="esnext.asynciterable" />
+/// <reference lib="esnext.intl" />
+/// <reference lib="esnext.bigint" />
+
+// Base definitions for all NodeJS modules that are not specific to any version of TypeScript:
+// tslint:disable-next-line:no-bad-reference
+/// <reference path="../base.d.ts" />
+
+// TypeScript 3.2-specific augmentations:
+/// <reference path="fs.d.ts" />
+/// <reference path="util.d.ts" />
+/// <reference path="globals.d.ts" />
diff --git a/setup-maven/node_modules/@types/node/ts3.2/util.d.ts b/setup-maven/node_modules/@types/node/ts3.2/util.d.ts
new file mode 100644
index 0000000..a8b2487
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/ts3.2/util.d.ts
@@ -0,0 +1,15 @@
+// tslint:disable-next-line:no-bad-reference
+/// <reference path="../util.d.ts" />
+
+declare module "util" {
+    namespace inspect {
+        const custom: unique symbol;
+    }
+    namespace promisify {
+        const custom: unique symbol;
+    }
+    namespace types {
+        function isBigInt64Array(value: any): value is BigInt64Array;
+        function isBigUint64Array(value: any): value is BigUint64Array;
+    }
+}
diff --git a/setup-maven/node_modules/@types/node/tty.d.ts b/setup-maven/node_modules/@types/node/tty.d.ts
new file mode 100644
index 0000000..22bce21
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/tty.d.ts
@@ -0,0 +1,66 @@
+declare module "tty" {
+    import * as net from "net";
+
+    function isatty(fd: number): boolean;
+    class ReadStream extends net.Socket {
+        constructor(fd: number, options?: net.SocketConstructorOpts);
+        isRaw: boolean;
+        setRawMode(mode: boolean): void;
+        isTTY: boolean;
+    }
+    /**
+     * -1 - to the left from cursor
+     *  0 - the entire line
+     *  1 - to the right from cursor
+     */
+    type Direction = -1 | 0 | 1;
+    class WriteStream extends net.Socket {
+        constructor(fd: number);
+        addListener(event: string, listener: (...args: any[]) => void): this;
+        addListener(event: "resize", listener: () => void): this;
+
+        emit(event: string | symbol, ...args: any[]): boolean;
+        emit(event: "resize"): boolean;
+
+        on(event: string, listener: (...args: any[]) => void): this;
+        on(event: "resize", listener: () => void): this;
+
+        once(event: string, listener: (...args: any[]) => void): this;
+        once(event: "resize", listener: () => void): this;
+
+        prependListener(event: string, listener: (...args: any[]) => void): this;
+        prependListener(event: "resize", listener: () => void): this;
+
+        prependOnceListener(event: string, listener: (...args: any[]) => void): this;
+        prependOnceListener(event: "resize", listener: () => void): this;
+
+        /**
+         * Clears the current line of this WriteStream in a direction identified by `dir`.
+         */
+        clearLine(dir: Direction, callback?: () => void): boolean;
+        /**
+         * Clears this `WriteStream` from the current cursor down.
+         */
+        clearScreenDown(callback?: () => void): boolean;
+        /**
+         * Moves this WriteStream's cursor to the specified position.
+         */
+        cursorTo(x: number, y?: number, callback?: () => void): boolean;
+        cursorTo(x: number, callback: () => void): boolean;
+        /**
+         * Moves this WriteStream's cursor relative to its current position.
+         */
+        moveCursor(dx: number, dy: number, callback?: () => void): boolean;
+        /**
+         * @default `process.env`
+         */
+        getColorDepth(env?: {}): number;
+        hasColors(depth?: number): boolean;
+        hasColors(env?: {}): boolean;
+        hasColors(depth: number, env?: {}): boolean;
+        getWindowSize(): [number, number];
+        columns: number;
+        rows: number;
+        isTTY: boolean;
+    }
+}
diff --git a/setup-maven/node_modules/@types/node/url.d.ts b/setup-maven/node_modules/@types/node/url.d.ts
new file mode 100644
index 0000000..e5b7e28
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/url.d.ts
@@ -0,0 +1,111 @@
+declare module "url" {
+    import { ParsedUrlQuery, ParsedUrlQueryInput } from 'querystring';
+
+    // Input to `url.format`
+    interface UrlObject {
+        auth?: string | null;
+        hash?: string | null;
+        host?: string | null;
+        hostname?: string | null;
+        href?: string | null;
+        path?: string | null;
+        pathname?: string | null;
+        protocol?: string | null;
+        search?: string | null;
+        slashes?: boolean | null;
+        port?: string | number | null;
+        query?: string | null | ParsedUrlQueryInput;
+    }
+
+    // Output of `url.parse`
+    interface Url {
+        auth: string | null;
+        hash: string | null;
+        host: string | null;
+        hostname: string | null;
+        href: string;
+        path: string | null;
+        pathname: string | null;
+        protocol: string | null;
+        search: string | null;
+        slashes: boolean | null;
+        port: string | null;
+        query: string | null | ParsedUrlQuery;
+    }
+
+    interface UrlWithParsedQuery extends Url {
+        query: ParsedUrlQuery;
+    }
+
+    interface UrlWithStringQuery extends Url {
+        query: string | null;
+    }
+
+    function parse(urlStr: string): UrlWithStringQuery;
+    function parse(urlStr: string, parseQueryString: false | undefined, slashesDenoteHost?: boolean): UrlWithStringQuery;
+    function parse(urlStr: string, parseQueryString: true, slashesDenoteHost?: boolean): UrlWithParsedQuery;
+    function parse(urlStr: string, parseQueryString: boolean, slashesDenoteHost?: boolean): Url;
+
+    function format(URL: URL, options?: URLFormatOptions): string;
+    function format(urlObject: UrlObject | string): string;
+    function resolve(from: string, to: string): string;
+
+    function domainToASCII(domain: string): string;
+    function domainToUnicode(domain: string): string;
+
+    /**
+     * This function ensures the correct decodings of percent-encoded characters as
+     * well as ensuring a cross-platform valid absolute path string.
+     * @param url The file URL string or URL object to convert to a path.
+     */
+    function fileURLToPath(url: string | URL): string;
+
+    /**
+     * This function ensures that path is resolved absolutely, and that the URL
+     * control characters are correctly encoded when converting into a File URL.
+     * @param url The path to convert to a File URL.
+     */
+    function pathToFileURL(url: string): URL;
+
+    interface URLFormatOptions {
+        auth?: boolean;
+        fragment?: boolean;
+        search?: boolean;
+        unicode?: boolean;
+    }
+
+    class URL {
+        constructor(input: string, base?: string | URL);
+        hash: string;
+        host: string;
+        hostname: string;
+        href: string;
+        readonly origin: string;
+        password: string;
+        pathname: string;
+        port: string;
+        protocol: string;
+        search: string;
+        readonly searchParams: URLSearchParams;
+        username: string;
+        toString(): string;
+        toJSON(): string;
+    }
+
+    class URLSearchParams implements Iterable<[string, string]> {
+        constructor(init?: URLSearchParams | string | { [key: string]: string | string[] | undefined } | Iterable<[string, string]> | Array<[string, string]>);
+        append(name: string, value: string): void;
+        delete(name: string): void;
+        entries(): IterableIterator<[string, string]>;
+        forEach(callback: (value: string, name: string, searchParams: this) => void): void;
+        get(name: string): string | null;
+        getAll(name: string): string[];
+        has(name: string): boolean;
+        keys(): IterableIterator<string>;
+        set(name: string, value: string): void;
+        sort(): void;
+        toString(): string;
+        values(): IterableIterator<string>;
+        [Symbol.iterator](): IterableIterator<[string, string]>;
+    }
+}
diff --git a/setup-maven/node_modules/@types/node/util.d.ts b/setup-maven/node_modules/@types/node/util.d.ts
new file mode 100644
index 0000000..e0b6c89
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/util.d.ts
@@ -0,0 +1,180 @@
+declare module "util" {
+    interface InspectOptions extends NodeJS.InspectOptions { }
+    function format(format: any, ...param: any[]): string;
+    function formatWithOptions(inspectOptions: InspectOptions, format: string, ...param: any[]): string;
+    /** @deprecated since v0.11.3 - use a third party module instead. */
+    function log(string: string): void;
+    function inspect(object: any, showHidden?: boolean, depth?: number | null, color?: boolean): string;
+    function inspect(object: any, options: InspectOptions): string;
+    namespace inspect {
+        let colors: {
+            [color: string]: [number, number] | undefined
+        };
+        let styles: {
+            [style: string]: string | undefined
+        };
+        let defaultOptions: InspectOptions;
+        /**
+         * Allows changing inspect settings from the repl.
+         */
+        let replDefaults: InspectOptions;
+    }
+    /** @deprecated since v4.0.0 - use `Array.isArray()` instead. */
+    function isArray(object: any): object is any[];
+    /** @deprecated since v4.0.0 - use `util.types.isRegExp()` instead. */
+    function isRegExp(object: any): object is RegExp;
+    /** @deprecated since v4.0.0 - use `util.types.isDate()` instead. */
+    function isDate(object: any): object is Date;
+    /** @deprecated since v4.0.0 - use `util.types.isNativeError()` instead. */
+    function isError(object: any): object is Error;
+    function inherits(constructor: any, superConstructor: any): void;
+    function debuglog(key: string): (msg: string, ...param: any[]) => void;
+    /** @deprecated since v4.0.0 - use `typeof value === 'boolean'` instead. */
+    function isBoolean(object: any): object is boolean;
+    /** @deprecated since v4.0.0 - use `Buffer.isBuffer()` instead. */
+    function isBuffer(object: any): object is Buffer;
+    /** @deprecated since v4.0.0 - use `typeof value === 'function'` instead. */
+    function isFunction(object: any): boolean;
+    /** @deprecated since v4.0.0 - use `value === null` instead. */
+    function isNull(object: any): object is null;
+    /** @deprecated since v4.0.0 - use `value === null || value === undefined` instead. */
+    function isNullOrUndefined(object: any): object is null | undefined;
+    /** @deprecated since v4.0.0 - use `typeof value === 'number'` instead. */
+    function isNumber(object: any): object is number;
+    /** @deprecated since v4.0.0 - use `value !== null && typeof value === 'object'` instead. */
+    function isObject(object: any): boolean;
+    /** @deprecated since v4.0.0 - use `(typeof value !== 'object' && typeof value !== 'function') || value === null` instead. */
+    function isPrimitive(object: any): boolean;
+    /** @deprecated since v4.0.0 - use `typeof value === 'string'` instead. */
+    function isString(object: any): object is string;
+    /** @deprecated since v4.0.0 - use `typeof value === 'symbol'` instead. */
+    function isSymbol(object: any): object is symbol;
+    /** @deprecated since v4.0.0 - use `value === undefined` instead. */
+    function isUndefined(object: any): object is undefined;
+    function deprecate<T extends Function>(fn: T, message: string, code?: string): T;
+    function isDeepStrictEqual(val1: any, val2: any): boolean;
+
+    interface CustomPromisify<TCustom extends Function> extends Function {
+        __promisify__: TCustom;
+    }
+
+    function callbackify(fn: () => Promise<void>): (callback: (err: NodeJS.ErrnoException) => void) => void;
+    function callbackify<TResult>(fn: () => Promise<TResult>): (callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void;
+    function callbackify<T1>(fn: (arg1: T1) => Promise<void>): (arg1: T1, callback: (err: NodeJS.ErrnoException) => void) => void;
+    function callbackify<T1, TResult>(fn: (arg1: T1) => Promise<TResult>): (arg1: T1, callback: (err: NodeJS.ErrnoException, result: TResult) => void) => void;
+    function callbackify<T1, T2>(fn: (arg1: T1, arg2: T2) => Promise<void>): (arg1: T1, arg2: T2, callback: (err: NodeJS.ErrnoException) => void) => void;
+    function callbackify<T1, T2, TResult>(fn: (arg1: T1, arg2: T2) => Promise<TResult>): (arg1: T1, arg2: T2, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void;
+    function callbackify<T1, T2, T3>(fn: (arg1: T1, arg2: T2, arg3: T3) => Promise<void>): (arg1: T1, arg2: T2, arg3: T3, callback: (err: NodeJS.ErrnoException) => void) => void;
+    function callbackify<T1, T2, T3, TResult>(
+        fn: (arg1: T1, arg2: T2, arg3: T3) => Promise<TResult>): (arg1: T1, arg2: T2, arg3: T3, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void;
+    function callbackify<T1, T2, T3, T4>(
+        fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<void>): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: NodeJS.ErrnoException) => void) => void;
+    function callbackify<T1, T2, T3, T4, TResult>(
+        fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<TResult>): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void;
+    function callbackify<T1, T2, T3, T4, T5>(
+        fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<void>): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: NodeJS.ErrnoException) => void) => void;
+    function callbackify<T1, T2, T3, T4, T5, TResult>(
+        fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<TResult>,
+    ): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void;
+    function callbackify<T1, T2, T3, T4, T5, T6>(
+        fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise<void>,
+    ): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, callback: (err: NodeJS.ErrnoException) => void) => void;
+    function callbackify<T1, T2, T3, T4, T5, T6, TResult>(
+        fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise<TResult>
+    ): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, callback: (err: NodeJS.ErrnoException | null, result: TResult) => void) => void;
+
+    function promisify<TCustom extends Function>(fn: CustomPromisify<TCustom>): TCustom;
+    function promisify<TResult>(fn: (callback: (err: any, result: TResult) => void) => void): () => Promise<TResult>;
+    function promisify(fn: (callback: (err?: any) => void) => void): () => Promise<void>;
+    function promisify<T1, TResult>(fn: (arg1: T1, callback: (err: any, result: TResult) => void) => void): (arg1: T1) => Promise<TResult>;
+    function promisify<T1>(fn: (arg1: T1, callback: (err?: any) => void) => void): (arg1: T1) => Promise<void>;
+    function promisify<T1, T2, TResult>(fn: (arg1: T1, arg2: T2, callback: (err: any, result: TResult) => void) => void): (arg1: T1, arg2: T2) => Promise<TResult>;
+    function promisify<T1, T2>(fn: (arg1: T1, arg2: T2, callback: (err?: any) => void) => void): (arg1: T1, arg2: T2) => Promise<void>;
+    function promisify<T1, T2, T3, TResult>(fn: (arg1: T1, arg2: T2, arg3: T3, callback: (err: any, result: TResult) => void) => void):
+        (arg1: T1, arg2: T2, arg3: T3) => Promise<TResult>;
+    function promisify<T1, T2, T3>(fn: (arg1: T1, arg2: T2, arg3: T3, callback: (err?: any) => void) => void): (arg1: T1, arg2: T2, arg3: T3) => Promise<void>;
+    function promisify<T1, T2, T3, T4, TResult>(
+        fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: any, result: TResult) => void) => void,
+    ): (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<TResult>;
+    function promisify<T1, T2, T3, T4>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err?: any) => void) => void):
+        (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<void>;
+    function promisify<T1, T2, T3, T4, T5, TResult>(
+        fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: any, result: TResult) => void) => void,
+    ): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<TResult>;
+    function promisify<T1, T2, T3, T4, T5>(
+        fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err?: any) => void) => void,
+    ): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<void>;
+    function promisify(fn: Function): Function;
+
+    namespace types {
+        function isAnyArrayBuffer(object: any): boolean;
+        function isArgumentsObject(object: any): object is IArguments;
+        function isArrayBuffer(object: any): object is ArrayBuffer;
+        function isAsyncFunction(object: any): boolean;
+        function isBooleanObject(object: any): object is Boolean;
+        function isBoxedPrimitive(object: any): object is (Number | Boolean | String | Symbol /* | Object(BigInt) | Object(Symbol) */);
+        function isDataView(object: any): object is DataView;
+        function isDate(object: any): object is Date;
+        function isExternal(object: any): boolean;
+        function isFloat32Array(object: any): object is Float32Array;
+        function isFloat64Array(object: any): object is Float64Array;
+        function isGeneratorFunction(object: any): boolean;
+        function isGeneratorObject(object: any): boolean;
+        function isInt8Array(object: any): object is Int8Array;
+        function isInt16Array(object: any): object is Int16Array;
+        function isInt32Array(object: any): object is Int32Array;
+        function isMap(object: any): boolean;
+        function isMapIterator(object: any): boolean;
+        function isModuleNamespaceObject(value: any): boolean;
+        function isNativeError(object: any): object is Error;
+        function isNumberObject(object: any): object is Number;
+        function isPromise(object: any): boolean;
+        function isProxy(object: any): boolean;
+        function isRegExp(object: any): object is RegExp;
+        function isSet(object: any): boolean;
+        function isSetIterator(object: any): boolean;
+        function isSharedArrayBuffer(object: any): boolean;
+        function isStringObject(object: any): boolean;
+        function isSymbolObject(object: any): boolean;
+        function isTypedArray(object: any): object is NodeJS.TypedArray;
+        function isUint8Array(object: any): object is Uint8Array;
+        function isUint8ClampedArray(object: any): object is Uint8ClampedArray;
+        function isUint16Array(object: any): object is Uint16Array;
+        function isUint32Array(object: any): object is Uint32Array;
+        function isWeakMap(object: any): boolean;
+        function isWeakSet(object: any): boolean;
+        function isWebAssemblyCompiledModule(object: any): boolean;
+    }
+
+    class TextDecoder {
+        readonly encoding: string;
+        readonly fatal: boolean;
+        readonly ignoreBOM: boolean;
+        constructor(
+          encoding?: string,
+          options?: { fatal?: boolean; ignoreBOM?: boolean }
+        );
+        decode(
+          input?: NodeJS.ArrayBufferView | ArrayBuffer | null,
+          options?: { stream?: boolean }
+        ): string;
+    }
+
+    interface EncodeIntoResult {
+        /**
+         * The read Unicode code units of input.
+         */
+
+        read: number;
+        /**
+         * The written UTF-8 bytes of output.
+         */
+        written: number;
+    }
+
+    class TextEncoder {
+        readonly encoding: string;
+        encode(input?: string): Uint8Array;
+        encodeInto(input: string, output: Uint8Array): EncodeIntoResult;
+    }
+}
diff --git a/setup-maven/node_modules/@types/node/v8.d.ts b/setup-maven/node_modules/@types/node/v8.d.ts
new file mode 100644
index 0000000..2e2706e
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/v8.d.ts
@@ -0,0 +1,197 @@
+declare module "v8" {
+    import { Readable } from "stream";
+
+    interface HeapSpaceInfo {
+        space_name: string;
+        space_size: number;
+        space_used_size: number;
+        space_available_size: number;
+        physical_space_size: number;
+    }
+
+    // ** Signifies if the --zap_code_space option is enabled or not.  1 == enabled, 0 == disabled. */
+    type DoesZapCodeSpaceFlag = 0 | 1;
+
+    interface HeapInfo {
+        total_heap_size: number;
+        total_heap_size_executable: number;
+        total_physical_size: number;
+        total_available_size: number;
+        used_heap_size: number;
+        heap_size_limit: number;
+        malloced_memory: number;
+        peak_malloced_memory: number;
+        does_zap_garbage: DoesZapCodeSpaceFlag;
+        number_of_native_contexts: number;
+        number_of_detached_contexts: number;
+    }
+
+    interface HeapCodeStatistics {
+        code_and_metadata_size: number;
+        bytecode_and_metadata_size: number;
+        external_script_source_size: number;
+    }
+
+    /**
+     * Returns an integer representing a "version tag" derived from the V8 version, command line flags and detected CPU features.
+     * This is useful for determining whether a vm.Script cachedData buffer is compatible with this instance of V8.
+     */
+    function cachedDataVersionTag(): number;
+
+    function getHeapStatistics(): HeapInfo;
+    function getHeapSpaceStatistics(): HeapSpaceInfo[];
+    function setFlagsFromString(flags: string): void;
+    /**
+     * Generates a snapshot of the current V8 heap and returns a Readable
+     * Stream that may be used to read the JSON serialized representation.
+     * This conversation was marked as resolved by joyeecheung
+     * This JSON stream format is intended to be used with tools such as
+     * Chrome DevTools. The JSON schema is undocumented and specific to the
+     * V8 engine, and may change from one version of V8 to the next.
+     */
+    function getHeapSnapshot(): Readable;
+
+    /**
+     *
+     * @param fileName The file path where the V8 heap snapshot is to be
+     * saved. If not specified, a file name with the pattern
+     * `'Heap-${yyyymmdd}-${hhmmss}-${pid}-${thread_id}.heapsnapshot'` will be
+     * generated, where `{pid}` will be the PID of the Node.js process,
+     * `{thread_id}` will be `0` when `writeHeapSnapshot()` is called from
+     * the main Node.js thread or the id of a worker thread.
+     */
+    function writeHeapSnapshot(fileName?: string): string;
+
+    function getHeapCodeStatistics(): HeapCodeStatistics;
+
+    /**
+     * @experimental
+     */
+    class Serializer {
+        /**
+         * Writes out a header, which includes the serialization format version.
+         */
+        writeHeader(): void;
+
+        /**
+         * Serializes a JavaScript value and adds the serialized representation to the internal buffer.
+         * This throws an error if value cannot be serialized.
+         */
+        writeValue(val: any): boolean;
+
+        /**
+         * Returns the stored internal buffer.
+         * This serializer should not be used once the buffer is released.
+         * Calling this method results in undefined behavior if a previous write has failed.
+         */
+        releaseBuffer(): Buffer;
+
+        /**
+         * Marks an ArrayBuffer as having its contents transferred out of band.\
+         * Pass the corresponding ArrayBuffer in the deserializing context to deserializer.transferArrayBuffer().
+         */
+        transferArrayBuffer(id: number, arrayBuffer: ArrayBuffer): void;
+
+        /**
+         * Write a raw 32-bit unsigned integer.
+         */
+        writeUint32(value: number): void;
+
+        /**
+         * Write a raw 64-bit unsigned integer, split into high and low 32-bit parts.
+         */
+        writeUint64(hi: number, lo: number): void;
+
+        /**
+         * Write a JS number value.
+         */
+        writeDouble(value: number): void;
+
+        /**
+         * Write raw bytes into the serializer’s internal buffer.
+         * The deserializer will require a way to compute the length of the buffer.
+         */
+        writeRawBytes(buffer: NodeJS.TypedArray): void;
+    }
+
+    /**
+     * A subclass of `Serializer` that serializes `TypedArray` (in particular `Buffer`) and `DataView` objects as host objects,
+     * and only stores the part of their underlying `ArrayBuffers` that they are referring to.
+     * @experimental
+     */
+    class DefaultSerializer extends Serializer {
+    }
+
+    /**
+     * @experimental
+     */
+    class Deserializer {
+        constructor(data: NodeJS.TypedArray);
+        /**
+         * Reads and validates a header (including the format version).
+         * May, for example, reject an invalid or unsupported wire format.
+         * In that case, an Error is thrown.
+         */
+        readHeader(): boolean;
+
+        /**
+         * Deserializes a JavaScript value from the buffer and returns it.
+         */
+        readValue(): any;
+
+        /**
+         * Marks an ArrayBuffer as having its contents transferred out of band.
+         * Pass the corresponding `ArrayBuffer` in the serializing context to serializer.transferArrayBuffer()
+         * (or return the id from serializer._getSharedArrayBufferId() in the case of SharedArrayBuffers).
+         */
+        transferArrayBuffer(id: number, arrayBuffer: ArrayBuffer): void;
+
+        /**
+         * Reads the underlying wire format version.
+         * Likely mostly to be useful to legacy code reading old wire format versions.
+         * May not be called before .readHeader().
+         */
+        getWireFormatVersion(): number;
+
+        /**
+         * Read a raw 32-bit unsigned integer and return it.
+         */
+        readUint32(): number;
+
+        /**
+         * Read a raw 64-bit unsigned integer and return it as an array [hi, lo] with two 32-bit unsigned integer entries.
+         */
+        readUint64(): [number, number];
+
+        /**
+         * Read a JS number value.
+         */
+        readDouble(): number;
+
+        /**
+         * Read raw bytes from the deserializer’s internal buffer.
+         * The length parameter must correspond to the length of the buffer that was passed to serializer.writeRawBytes().
+         */
+        readRawBytes(length: number): Buffer;
+    }
+
+    /**
+     * A subclass of `Serializer` that serializes `TypedArray` (in particular `Buffer`) and `DataView` objects as host objects,
+     * and only stores the part of their underlying `ArrayBuffers` that they are referring to.
+     * @experimental
+     */
+    class DefaultDeserializer extends Deserializer {
+    }
+
+    /**
+     * Uses a `DefaultSerializer` to serialize value into a buffer.
+     * @experimental
+     */
+    function serialize(value: any): Buffer;
+
+    /**
+     * Uses a `DefaultDeserializer` with default options to read a JS value from a buffer.
+     * @experimental
+     */
+    function deserialize(data: NodeJS.TypedArray): any;
+}
diff --git a/setup-maven/node_modules/@types/node/vm.d.ts b/setup-maven/node_modules/@types/node/vm.d.ts
new file mode 100644
index 0000000..208498c
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/vm.d.ts
@@ -0,0 +1,110 @@
+declare module "vm" {
+    interface Context {
+        [key: string]: any;
+    }
+    interface BaseOptions {
+        /**
+         * Specifies the filename used in stack traces produced by this script.
+         * Default: `''`.
+         */
+        filename?: string;
+        /**
+         * Specifies the line number offset that is displayed in stack traces produced by this script.
+         * Default: `0`.
+         */
+        lineOffset?: number;
+        /**
+         * Specifies the column number offset that is displayed in stack traces produced by this script.
+         * Default: `0`
+         */
+        columnOffset?: number;
+    }
+    interface ScriptOptions extends BaseOptions {
+        displayErrors?: boolean;
+        timeout?: number;
+        cachedData?: Buffer;
+        produceCachedData?: boolean;
+    }
+    interface RunningScriptOptions extends BaseOptions {
+        /**
+         * When `true`, if an `Error` occurs while compiling the `code`, the line of code causing the error is attached to the stack trace.
+         * Default: `true`.
+         */
+        displayErrors?: boolean;
+        /**
+         * Specifies the number of milliseconds to execute code before terminating execution.
+         * If execution is terminated, an `Error` will be thrown. This value must be a strictly positive integer.
+         */
+        timeout?: number;
+        /**
+         * If `true`, the execution will be terminated when `SIGINT` (Ctrl+C) is received.
+         * Existing handlers for the event that have been attached via `process.on('SIGINT')` will be disabled during script execution, but will continue to work after that.
+         * If execution is terminated, an `Error` will be thrown.
+         * Default: `false`.
+         */
+        breakOnSigint?: boolean;
+    }
+    interface CompileFunctionOptions extends BaseOptions {
+        /**
+         * Provides an optional data with V8's code cache data for the supplied source.
+         */
+        cachedData?: Buffer;
+        /**
+         * Specifies whether to produce new cache data.
+         * Default: `false`,
+         */
+        produceCachedData?: boolean;
+        /**
+         * The sandbox/context in which the said function should be compiled in.
+         */
+        parsingContext?: Context;
+
+        /**
+         * An array containing a collection of context extensions (objects wrapping the current scope) to be applied while compiling
+         */
+        contextExtensions?: Object[];
+    }
+
+    interface CreateContextOptions {
+        /**
+         * Human-readable name of the newly created context.
+         * @default 'VM Context i' Where i is an ascending numerical index of the created context.
+         */
+        name?: string;
+        /**
+         * Corresponds to the newly created context for display purposes.
+         * The origin should be formatted like a `URL`, but with only the scheme, host, and port (if necessary),
+         * like the value of the `url.origin` property of a URL object.
+         * Most notably, this string should omit the trailing slash, as that denotes a path.
+         * @default ''
+         */
+        origin?: string;
+        codeGeneration?: {
+            /**
+             * If set to false any calls to eval or function constructors (Function, GeneratorFunction, etc)
+             * will throw an EvalError.
+             * @default true
+             */
+            strings?: boolean;
+            /**
+             * If set to false any attempt to compile a WebAssembly module will throw a WebAssembly.CompileError.
+             * @default true
+             */
+            wasm?: boolean;
+        };
+    }
+
+    class Script {
+        constructor(code: string, options?: ScriptOptions);
+        runInContext(contextifiedSandbox: Context, options?: RunningScriptOptions): any;
+        runInNewContext(sandbox?: Context, options?: RunningScriptOptions): any;
+        runInThisContext(options?: RunningScriptOptions): any;
+        createCachedData(): Buffer;
+    }
+    function createContext(sandbox?: Context, options?: CreateContextOptions): Context;
+    function isContext(sandbox: Context): boolean;
+    function runInContext(code: string, contextifiedSandbox: Context, options?: RunningScriptOptions | string): any;
+    function runInNewContext(code: string, sandbox?: Context, options?: RunningScriptOptions | string): any;
+    function runInThisContext(code: string, options?: RunningScriptOptions | string): any;
+    function compileFunction(code: string, params: string[], options: CompileFunctionOptions): Function;
+}
diff --git a/setup-maven/node_modules/@types/node/worker_threads.d.ts b/setup-maven/node_modules/@types/node/worker_threads.d.ts
new file mode 100644
index 0000000..45ea85e
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/worker_threads.d.ts
@@ -0,0 +1,153 @@
+declare module "worker_threads" {
+    import { Context } from "vm";
+    import { EventEmitter } from "events";
+    import { Readable, Writable } from "stream";
+
+    const isMainThread: boolean;
+    const parentPort: null | MessagePort;
+    const threadId: number;
+    const workerData: any;
+
+    class MessageChannel {
+        readonly port1: MessagePort;
+        readonly port2: MessagePort;
+    }
+
+    class MessagePort extends EventEmitter {
+        close(): void;
+        postMessage(value: any, transferList?: Array<ArrayBuffer | MessagePort>): void;
+        ref(): void;
+        unref(): void;
+        start(): void;
+
+        addListener(event: "close", listener: () => void): this;
+        addListener(event: "message", listener: (value: any) => void): this;
+        addListener(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        emit(event: "close"): boolean;
+        emit(event: "message", value: any): boolean;
+        emit(event: string | symbol, ...args: any[]): boolean;
+
+        on(event: "close", listener: () => void): this;
+        on(event: "message", listener: (value: any) => void): this;
+        on(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        once(event: "close", listener: () => void): this;
+        once(event: "message", listener: (value: any) => void): this;
+        once(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        prependListener(event: "close", listener: () => void): this;
+        prependListener(event: "message", listener: (value: any) => void): this;
+        prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        prependOnceListener(event: "close", listener: () => void): this;
+        prependOnceListener(event: "message", listener: (value: any) => void): this;
+        prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        removeListener(event: "close", listener: () => void): this;
+        removeListener(event: "message", listener: (value: any) => void): this;
+        removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        off(event: "close", listener: () => void): this;
+        off(event: "message", listener: (value: any) => void): this;
+        off(event: string | symbol, listener: (...args: any[]) => void): this;
+    }
+
+    interface WorkerOptions {
+        eval?: boolean;
+        workerData?: any;
+        stdin?: boolean;
+        stdout?: boolean;
+        stderr?: boolean;
+        execArgv?: string[];
+    }
+
+    class Worker extends EventEmitter {
+        readonly stdin: Writable | null;
+        readonly stdout: Readable;
+        readonly stderr: Readable;
+        readonly threadId: number;
+
+        constructor(filename: string, options?: WorkerOptions);
+
+        postMessage(value: any, transferList?: Array<ArrayBuffer | MessagePort>): void;
+        ref(): void;
+        unref(): void;
+        /**
+         * Stop all JavaScript execution in the worker thread as soon as possible.
+         * Returns a Promise for the exit code that is fulfilled when the `exit` event is emitted.
+         */
+        terminate(): Promise<number>;
+        /**
+         * Transfer a `MessagePort` to a different `vm` Context. The original `port`
+         * object will be rendered unusable, and the returned `MessagePort` instance will
+         * take its place.
+         *
+         * The returned `MessagePort` will be an object in the target context, and will
+         * inherit from its global `Object` class. Objects passed to the
+         * `port.onmessage()` listener will also be created in the target context
+         * and inherit from its global `Object` class.
+         *
+         * However, the created `MessagePort` will no longer inherit from
+         * `EventEmitter`, and only `port.onmessage()` can be used to receive
+         * events using it.
+         */
+        moveMessagePortToContext(port: MessagePort, context: Context): MessagePort;
+
+        /**
+         * Receive a single message from a given `MessagePort`. If no message is available,
+         * `undefined` is returned, otherwise an object with a single `message` property
+         * that contains the message payload, corresponding to the oldest message in the
+         * `MessagePort`’s queue.
+         */
+        receiveMessageOnPort(port: MessagePort): {} | undefined;
+
+        addListener(event: "error", listener: (err: Error) => void): this;
+        addListener(event: "exit", listener: (exitCode: number) => void): this;
+        addListener(event: "message", listener: (value: any) => void): this;
+        addListener(event: "online", listener: () => void): this;
+        addListener(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        emit(event: "error", err: Error): boolean;
+        emit(event: "exit", exitCode: number): boolean;
+        emit(event: "message", value: any): boolean;
+        emit(event: "online"): boolean;
+        emit(event: string | symbol, ...args: any[]): boolean;
+
+        on(event: "error", listener: (err: Error) => void): this;
+        on(event: "exit", listener: (exitCode: number) => void): this;
+        on(event: "message", listener: (value: any) => void): this;
+        on(event: "online", listener: () => void): this;
+        on(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        once(event: "error", listener: (err: Error) => void): this;
+        once(event: "exit", listener: (exitCode: number) => void): this;
+        once(event: "message", listener: (value: any) => void): this;
+        once(event: "online", listener: () => void): this;
+        once(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        prependListener(event: "error", listener: (err: Error) => void): this;
+        prependListener(event: "exit", listener: (exitCode: number) => void): this;
+        prependListener(event: "message", listener: (value: any) => void): this;
+        prependListener(event: "online", listener: () => void): this;
+        prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        prependOnceListener(event: "error", listener: (err: Error) => void): this;
+        prependOnceListener(event: "exit", listener: (exitCode: number) => void): this;
+        prependOnceListener(event: "message", listener: (value: any) => void): this;
+        prependOnceListener(event: "online", listener: () => void): this;
+        prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        removeListener(event: "error", listener: (err: Error) => void): this;
+        removeListener(event: "exit", listener: (exitCode: number) => void): this;
+        removeListener(event: "message", listener: (value: any) => void): this;
+        removeListener(event: "online", listener: () => void): this;
+        removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
+
+        off(event: "error", listener: (err: Error) => void): this;
+        off(event: "exit", listener: (exitCode: number) => void): this;
+        off(event: "message", listener: (value: any) => void): this;
+        off(event: "online", listener: () => void): this;
+        off(event: string | symbol, listener: (...args: any[]) => void): this;
+    }
+}
diff --git a/setup-maven/node_modules/@types/node/zlib.d.ts b/setup-maven/node_modules/@types/node/zlib.d.ts
new file mode 100644
index 0000000..a03e900
--- /dev/null
+++ b/setup-maven/node_modules/@types/node/zlib.d.ts
@@ -0,0 +1,352 @@
+declare module "zlib" {
+    import * as stream from "stream";
+
+    interface ZlibOptions {
+        /**
+         * @default constants.Z_NO_FLUSH
+         */
+        flush?: number;
+        /**
+         * @default constants.Z_FINISH
+         */
+        finishFlush?: number;
+        /**
+         * @default 16*1024
+         */
+        chunkSize?: number;
+        windowBits?: number;
+        level?: number; // compression only
+        memLevel?: number; // compression only
+        strategy?: number; // compression only
+        dictionary?: NodeJS.ArrayBufferView | ArrayBuffer; // deflate/inflate only, empty dictionary by default
+    }
+
+    interface BrotliOptions {
+        /**
+         * @default constants.BROTLI_OPERATION_PROCESS
+         */
+        flush?: number;
+        /**
+         * @default constants.BROTLI_OPERATION_FINISH
+         */
+        finishFlush?: number;
+        /**
+         * @default 16*1024
+         */
+        chunkSize?: number;
+        params?: {
+            /**
+             * Each key is a `constants.BROTLI_*` constant.
+             */
+            [key: number]: boolean | number;
+        };
+    }
+
+    interface Zlib {
+        /** @deprecated Use bytesWritten instead. */
+        readonly bytesRead: number;
+        readonly bytesWritten: number;
+        shell?: boolean | string;
+        close(callback?: () => void): void;
+        flush(kind?: number | (() => void), callback?: () => void): void;
+    }
+
+    interface ZlibParams {
+        params(level: number, strategy: number, callback: () => void): void;
+    }
+
+    interface ZlibReset {
+        reset(): void;
+    }
+
+    interface BrotliCompress extends stream.Transform, Zlib { }
+    interface BrotliDecompress extends stream.Transform, Zlib { }
+    interface Gzip extends stream.Transform, Zlib { }
+    interface Gunzip extends stream.Transform, Zlib { }
+    interface Deflate extends stream.Transform, Zlib, ZlibReset, ZlibParams { }
+    interface Inflate extends stream.Transform, Zlib, ZlibReset { }
+    interface DeflateRaw extends stream.Transform, Zlib, ZlibReset, ZlibParams { }
+    interface InflateRaw extends stream.Transform, Zlib, ZlibReset { }
+    interface Unzip extends stream.Transform, Zlib { }
+
+    function createBrotliCompress(options?: BrotliOptions): BrotliCompress;
+    function createBrotliDecompress(options?: BrotliOptions): BrotliDecompress;
+    function createGzip(options?: ZlibOptions): Gzip;
+    function createGunzip(options?: ZlibOptions): Gunzip;
+    function createDeflate(options?: ZlibOptions): Deflate;
+    function createInflate(options?: ZlibOptions): Inflate;
+    function createDeflateRaw(options?: ZlibOptions): DeflateRaw;
+    function createInflateRaw(options?: ZlibOptions): InflateRaw;
+    function createUnzip(options?: ZlibOptions): Unzip;
+
+    type InputType = string | ArrayBuffer | NodeJS.ArrayBufferView;
+
+    type CompressCallback = (error: Error | null, result: Buffer) => void;
+
+    function brotliCompress(buf: InputType, options: BrotliOptions, callback: CompressCallback): void;
+    function brotliCompress(buf: InputType, callback: CompressCallback): void;
+    function brotliCompressSync(buf: InputType, options?: BrotliOptions): Buffer;
+    function brotliDecompress(buf: InputType, options: BrotliOptions, callback: CompressCallback): void;
+    function brotliDecompress(buf: InputType, callback: CompressCallback): void;
+    function brotliDecompressSync(buf: InputType, options?: BrotliOptions): Buffer;
+    function deflate(buf: InputType, callback: CompressCallback): void;
+    function deflate(buf: InputType, options: ZlibOptions, callback: CompressCallback): void;
+    function deflateSync(buf: InputType, options?: ZlibOptions): Buffer;
+    function deflateRaw(buf: InputType, callback: CompressCallback): void;
+    function deflateRaw(buf: InputType, options: ZlibOptions, callback: CompressCallback): void;
+    function deflateRawSync(buf: InputType, options?: ZlibOptions): Buffer;
+    function gzip(buf: InputType, callback: CompressCallback): void;
+    function gzip(buf: InputType, options: ZlibOptions, callback: CompressCallback): void;
+    function gzipSync(buf: InputType, options?: ZlibOptions): Buffer;
+    function gunzip(buf: InputType, callback: CompressCallback): void;
+    function gunzip(buf: InputType, options: ZlibOptions, callback: CompressCallback): void;
+    function gunzipSync(buf: InputType, options?: ZlibOptions): Buffer;
+    function inflate(buf: InputType, callback: CompressCallback): void;
+    function inflate(buf: InputType, options: ZlibOptions, callback: CompressCallback): void;
+    function inflateSync(buf: InputType, options?: ZlibOptions): Buffer;
+    function inflateRaw(buf: InputType, callback: CompressCallback): void;
+    function inflateRaw(buf: InputType, options: ZlibOptions, callback: CompressCallback): void;
+    function inflateRawSync(buf: InputType, options?: ZlibOptions): Buffer;
+    function unzip(buf: InputType, callback: CompressCallback): void;
+    function unzip(buf: InputType, options: ZlibOptions, callback: CompressCallback): void;
+    function unzipSync(buf: InputType, options?: ZlibOptions): Buffer;
+
+    namespace constants {
+        const BROTLI_DECODE: number;
+        const BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES: number;
+        const BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP: number;
+        const BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES: number;
+        const BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1: number;
+        const BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2: number;
+        const BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS: number;
+        const BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET: number;
+        const BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1: number;
+        const BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2: number;
+        const BROTLI_DECODER_ERROR_FORMAT_CL_SPACE: number;
+        const BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT: number;
+        const BROTLI_DECODER_ERROR_FORMAT_DICTIONARY: number;
+        const BROTLI_DECODER_ERROR_FORMAT_DISTANCE: number;
+        const BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE: number;
+        const BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE: number;
+        const BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE: number;
+        const BROTLI_DECODER_ERROR_FORMAT_PADDING_1: number;
+        const BROTLI_DECODER_ERROR_FORMAT_PADDING_2: number;
+        const BROTLI_DECODER_ERROR_FORMAT_RESERVED: number;
+        const BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET: number;
+        const BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME: number;
+        const BROTLI_DECODER_ERROR_FORMAT_TRANSFORM: number;
+        const BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS: number;
+        const BROTLI_DECODER_ERROR_INVALID_ARGUMENTS: number;
+        const BROTLI_DECODER_ERROR_UNREACHABLE: number;
+        const BROTLI_DECODER_NEEDS_MORE_INPUT: number;
+        const BROTLI_DECODER_NEEDS_MORE_OUTPUT: number;
+        const BROTLI_DECODER_NO_ERROR: number;
+        const BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION: number;
+        const BROTLI_DECODER_PARAM_LARGE_WINDOW: number;
+        const BROTLI_DECODER_RESULT_ERROR: number;
+        const BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT: number;
+        const BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT: number;
+        const BROTLI_DECODER_RESULT_SUCCESS: number;
+        const BROTLI_DECODER_SUCCESS: number;
+
+        const BROTLI_DEFAULT_MODE: number;
+        const BROTLI_DEFAULT_QUALITY: number;
+        const BROTLI_DEFAULT_WINDOW: number;
+        const BROTLI_ENCODE: number;
+        const BROTLI_LARGE_MAX_WINDOW_BITS: number;
+        const BROTLI_MAX_INPUT_BLOCK_BITS: number;
+        const BROTLI_MAX_QUALITY: number;
+        const BROTLI_MAX_WINDOW_BITS: number;
+        const BROTLI_MIN_INPUT_BLOCK_BITS: number;
+        const BROTLI_MIN_QUALITY: number;
+        const BROTLI_MIN_WINDOW_BITS: number;
+
+        const BROTLI_MODE_FONT: number;
+        const BROTLI_MODE_GENERIC: number;
+        const BROTLI_MODE_TEXT: number;
+
+        const BROTLI_OPERATION_EMIT_METADATA: number;
+        const BROTLI_OPERATION_FINISH: number;
+        const BROTLI_OPERATION_FLUSH: number;
+        const BROTLI_OPERATION_PROCESS: number;
+
+        const BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING: number;
+        const BROTLI_PARAM_LARGE_WINDOW: number;
+        const BROTLI_PARAM_LGBLOCK: number;
+        const BROTLI_PARAM_LGWIN: number;
+        const BROTLI_PARAM_MODE: number;
+        const BROTLI_PARAM_NDIRECT: number;
+        const BROTLI_PARAM_NPOSTFIX: number;
+        const BROTLI_PARAM_QUALITY: number;
+        const BROTLI_PARAM_SIZE_HINT: number;
+
+        const DEFLATE: number;
+        const DEFLATERAW: number;
+        const GUNZIP: number;
+        const GZIP: number;
+        const INFLATE: number;
+        const INFLATERAW: number;
+        const UNZIP: number;
+
+        const Z_BEST_COMPRESSION: number;
+        const Z_BEST_SPEED: number;
+        const Z_BLOCK: number;
+        const Z_BUF_ERROR: number;
+        const Z_DATA_ERROR: number;
+
+        const Z_DEFAULT_CHUNK: number;
+        const Z_DEFAULT_COMPRESSION: number;
+        const Z_DEFAULT_LEVEL: number;
+        const Z_DEFAULT_MEMLEVEL: number;
+        const Z_DEFAULT_STRATEGY: number;
+        const Z_DEFAULT_WINDOWBITS: number;
+
+        const Z_ERRNO: number;
+        const Z_FILTERED: number;
+        const Z_FINISH: number;
+        const Z_FIXED: number;
+        const Z_FULL_FLUSH: number;
+        const Z_HUFFMAN_ONLY: number;
+        const Z_MAX_CHUNK: number;
+        const Z_MAX_LEVEL: number;
+        const Z_MAX_MEMLEVEL: number;
+        const Z_MAX_WINDOWBITS: number;
+        const Z_MEM_ERROR: number;
+        const Z_MIN_CHUNK: number;
+        const Z_MIN_LEVEL: number;
+        const Z_MIN_MEMLEVEL: number;
+        const Z_MIN_WINDOWBITS: number;
+        const Z_NEED_DICT: number;
+        const Z_NO_COMPRESSION: number;
+        const Z_NO_FLUSH: number;
+        const Z_OK: number;
+        const Z_PARTIAL_FLUSH: number;
+        const Z_RLE: number;
+        const Z_STREAM_END: number;
+        const Z_STREAM_ERROR: number;
+        const Z_SYNC_FLUSH: number;
+        const Z_VERSION_ERROR: number;
+        const ZLIB_VERNUM: number;
+    }
+
+    /**
+     * @deprecated
+     */
+    const Z_NO_FLUSH: number;
+    /**
+     * @deprecated
+     */
+    const Z_PARTIAL_FLUSH: number;
+    /**
+     * @deprecated
+     */
+    const Z_SYNC_FLUSH: number;
+    /**
+     * @deprecated
+     */
+    const Z_FULL_FLUSH: number;
+    /**
+     * @deprecated
+     */
+    const Z_FINISH: number;
+    /**
+     * @deprecated
+     */
+    const Z_BLOCK: number;
+    /**
+     * @deprecated
+     */
+    const Z_TREES: number;
+    /**
+     * @deprecated
+     */
+    const Z_OK: number;
+    /**
+     * @deprecated
+     */
+    const Z_STREAM_END: number;
+    /**
+     * @deprecated
+     */
+    const Z_NEED_DICT: number;
+    /**
+     * @deprecated
+     */
+    const Z_ERRNO: number;
+    /**
+     * @deprecated
+     */
+    const Z_STREAM_ERROR: number;
+    /**
+     * @deprecated
+     */
+    const Z_DATA_ERROR: number;
+    /**
+     * @deprecated
+     */
+    const Z_MEM_ERROR: number;
+    /**
+     * @deprecated
+     */
+    const Z_BUF_ERROR: number;
+    /**
+     * @deprecated
+     */
+    const Z_VERSION_ERROR: number;
+    /**
+     * @deprecated
+     */
+    const Z_NO_COMPRESSION: number;
+    /**
+     * @deprecated
+     */
+    const Z_BEST_SPEED: number;
+    /**
+     * @deprecated
+     */
+    const Z_BEST_COMPRESSION: number;
+    /**
+     * @deprecated
+     */
+    const Z_DEFAULT_COMPRESSION: number;
+    /**
+     * @deprecated
+     */
+    const Z_FILTERED: number;
+    /**
+     * @deprecated
+     */
+    const Z_HUFFMAN_ONLY: number;
+    /**
+     * @deprecated
+     */
+    const Z_RLE: number;
+    /**
+     * @deprecated
+     */
+    const Z_FIXED: number;
+    /**
+     * @deprecated
+     */
+    const Z_DEFAULT_STRATEGY: number;
+    /**
+     * @deprecated
+     */
+    const Z_BINARY: number;
+    /**
+     * @deprecated
+     */
+    const Z_TEXT: number;
+    /**
+     * @deprecated
+     */
+    const Z_ASCII: number;
+    /**
+     * @deprecated
+     */
+    const Z_UNKNOWN: number;
+    /**
+     * @deprecated
+     */
+    const Z_DEFLATED: number;
+}
diff --git a/setup-maven/node_modules/atob-lite/.npmignore b/setup-maven/node_modules/atob-lite/.npmignore
new file mode 100644
index 0000000..50c7458
--- /dev/null
+++ b/setup-maven/node_modules/atob-lite/.npmignore
@@ -0,0 +1,6 @@
+node_modules
+*.log
+.DS_Store
+bundle.js
+test
+test.js
diff --git a/setup-maven/node_modules/atob-lite/LICENSE.md b/setup-maven/node_modules/atob-lite/LICENSE.md
new file mode 100644
index 0000000..ee27ba4
--- /dev/null
+++ b/setup-maven/node_modules/atob-lite/LICENSE.md
@@ -0,0 +1,18 @@
+This software is released under the MIT license:
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/setup-maven/node_modules/atob-lite/README.md b/setup-maven/node_modules/atob-lite/README.md
new file mode 100644
index 0000000..99ea05d
--- /dev/null
+++ b/setup-maven/node_modules/atob-lite/README.md
@@ -0,0 +1,37 @@
+# atob-lite
+![](http://img.shields.io/badge/stability-stable-orange.svg?style=flat)
+![](http://img.shields.io/npm/v/atob-lite.svg?style=flat)
+![](http://img.shields.io/npm/dm/atob-lite.svg?style=flat)
+![](http://img.shields.io/npm/l/atob-lite.svg?style=flat)
+
+Smallest/simplest possible means of using atob with both Node and browserify.
+
+In the browser, decoding base64 strings is done using:
+
+``` javascript
+var decoded = atob(encoded)
+```
+
+However in Node, it's done like so:
+
+``` javascript
+var decoded = new Buffer(encoded, 'base64').toString('utf8')
+```
+
+You can easily check if `Buffer` exists and switch between the approaches
+accordingly, but using `Buffer` anywhere in your browser source will pull
+in browserify's `Buffer` shim which is pretty hefty. This package uses
+the `main` and `browser` fields in its `package.json` to perform this
+check at build time and avoid pulling `Buffer` in unnecessarily.
+
+## Usage
+
+[![NPM](https://nodei.co/npm/atob-lite.png)](https://nodei.co/npm/atob-lite/)
+
+### `decoded = atob(encoded)`
+
+Returns the decoded value of a base64-encoded string.
+
+## License
+
+MIT. See [LICENSE.md](http://github.com/hughsk/atob-lite/blob/master/LICENSE.md) for details.
diff --git a/setup-maven/node_modules/atob-lite/atob-browser.js b/setup-maven/node_modules/atob-lite/atob-browser.js
new file mode 100644
index 0000000..cee1a38
--- /dev/null
+++ b/setup-maven/node_modules/atob-lite/atob-browser.js
@@ -0,0 +1,3 @@
+module.exports = function _atob(str) {
+  return atob(str)
+}
diff --git a/setup-maven/node_modules/atob-lite/atob-node.js b/setup-maven/node_modules/atob-lite/atob-node.js
new file mode 100644
index 0000000..7072075
--- /dev/null
+++ b/setup-maven/node_modules/atob-lite/atob-node.js
@@ -0,0 +1,3 @@
+module.exports = function atob(str) {
+  return Buffer.from(str, 'base64').toString('binary')
+}
diff --git a/setup-maven/node_modules/atob-lite/package.json b/setup-maven/node_modules/atob-lite/package.json
new file mode 100644
index 0000000..4330f28
--- /dev/null
+++ b/setup-maven/node_modules/atob-lite/package.json
@@ -0,0 +1,67 @@
+{
+  "_from": "atob-lite@^2.0.0",
+  "_id": "atob-lite@2.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY=",
+  "_location": "/atob-lite",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "atob-lite@^2.0.0",
+    "name": "atob-lite",
+    "escapedName": "atob-lite",
+    "rawSpec": "^2.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^2.0.0"
+  },
+  "_requiredBy": [
+    "/@octokit/rest"
+  ],
+  "_resolved": "https://registry.npmjs.org/atob-lite/-/atob-lite-2.0.0.tgz",
+  "_shasum": "0fef5ad46f1bd7a8502c65727f0367d5ee43d696",
+  "_spec": "atob-lite@^2.0.0",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/@octokit/rest",
+  "author": {
+    "name": "Hugh Kennedy",
+    "email": "hughskennedy@gmail.com",
+    "url": "http://hughsk.io/"
+  },
+  "browser": "atob-browser.js",
+  "bugs": {
+    "url": "https://github.com/hughsk/atob-lite/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {},
+  "deprecated": false,
+  "description": "Smallest/simplest possible means of using atob with both Node and browserify",
+  "devDependencies": {
+    "browserify": "^10.2.4",
+    "smokestack": "^3.3.0",
+    "tap-closer": "^1.0.0",
+    "tap-spec": "^4.0.0",
+    "tape": "^4.0.0"
+  },
+  "homepage": "https://github.com/hughsk/atob-lite",
+  "keywords": [
+    "atob",
+    "base64",
+    "isomorphic",
+    "browser",
+    "node",
+    "shared"
+  ],
+  "license": "MIT",
+  "main": "atob-node.js",
+  "name": "atob-lite",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/hughsk/atob-lite.git"
+  },
+  "scripts": {
+    "test": "npm run test-node && npm run test-browser",
+    "test-browser": "browserify test | smokestack | tap-spec",
+    "test-node": "node test | tap-spec"
+  },
+  "version": "2.0.0"
+}
diff --git a/setup-maven/node_modules/before-after-hook/LICENSE b/setup-maven/node_modules/before-after-hook/LICENSE
new file mode 100644
index 0000000..225063c
--- /dev/null
+++ b/setup-maven/node_modules/before-after-hook/LICENSE
@@ -0,0 +1,201 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "{}"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright 2018 Gregor Martynus and other contributors.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/setup-maven/node_modules/before-after-hook/README.md b/setup-maven/node_modules/before-after-hook/README.md
new file mode 100644
index 0000000..68c927d
--- /dev/null
+++ b/setup-maven/node_modules/before-after-hook/README.md
@@ -0,0 +1,574 @@
+# before-after-hook
+
+> asynchronous hooks for internal functionality
+
+[![npm downloads](https://img.shields.io/npm/dw/before-after-hook.svg)](https://www.npmjs.com/package/before-after-hook)
+[![Build Status](https://travis-ci.org/gr2m/before-after-hook.svg?branch=master)](https://travis-ci.org/gr2m/before-after-hook)
+[![Coverage Status](https://coveralls.io/repos/gr2m/before-after-hook/badge.svg?branch=master)](https://coveralls.io/r/gr2m/before-after-hook?branch=master)
+[![Greenkeeper badge](https://badges.greenkeeper.io/gr2m/before-after-hook.svg)](https://greenkeeper.io/)
+
+## Usage
+
+### Singular hook
+
+Recommended for [TypeScript](#typescript)
+
+```js
+// instantiate singular hook API
+const hook = new Hook.Singular()
+
+// Create a hook
+function getData (options) {
+  return hook(fetchFromDatabase, options)
+    .then(handleData)
+    .catch(handleGetError)
+}
+
+// register before/error/after hooks.
+// The methods can be async or return a promise
+hook.before(beforeHook)
+hook.error(errorHook)
+hook.after(afterHook)
+
+getData({id: 123})
+```
+
+### Hook collection
+```js
+// instantiate hook collection API
+const hookCollection = new Hook.Collection()
+
+// Create a hook
+function getData (options) {
+  return hookCollection('get', fetchFromDatabase, options)
+    .then(handleData)
+    .catch(handleGetError)
+}
+
+// register before/error/after hooks.
+// The methods can be async or return a promise
+hookCollection.before('get', beforeHook)
+hookCollection.error('get', errorHook)
+hookCollection.after('get', afterHook)
+
+getData({id: 123})
+```
+
+### Hook.Singular vs Hook.Collection
+
+There's no fundamental difference between the `Hook.Singular` and `Hook.Collection` hooks except for the fact that a hook from a collection requires you to pass along the name. Therefore the following explanation applies to both code snippets as described above.
+
+The methods are executed in the following order
+
+1. `beforeHook`
+2. `fetchFromDatabase`
+3. `afterHook`
+4. `getData`
+
+`beforeHook` can mutate `options` before it’s passed to `fetchFromDatabase`.
+
+If an error is thrown in `beforeHook` or `fetchFromDatabase` then `errorHook` is
+called next.
+
+If `afterHook` throws an error then `handleGetError` is called instead
+of `getData`.
+
+If `errorHook` throws an error then `handleGetError` is called next, otherwise
+`afterHook` and `getData`.
+
+You can also use `hook.wrap` to achieve the same thing as shown above (collection example):
+
+```js
+hookCollection.wrap('get', async (getData, options) => {
+  await beforeHook(options)
+
+  try {
+    const result = getData(options)
+  } catch (error) {
+    await errorHook(error, options)
+  }
+
+  await afterHook(result, options)
+})
+```
+
+## Install
+
+```
+npm install before-after-hook
+```
+
+Or download [the latest `before-after-hook.min.js`](https://github.com/gr2m/before-after-hook/releases/latest).
+
+## API
+
+- [Singular Hook Constructor](#singular-hook-api)
+- [Hook Collection Constructor](#hook-collection-api)
+
+## Singular hook API
+
+- [Singular constructor](#singular-constructor)
+- [hook.api](#singular-api)
+- [hook()](#singular-api)
+- [hook.before()](#singular-api)
+- [hook.error()](#singular-api)
+- [hook.after()](#singular-api)
+- [hook.wrap()](#singular-api)
+- [hook.remove()](#singular-api)
+
+### Singular constructor
+
+The `Hook.Singular` constructor has no options and returns a `hook` instance with the
+methods below:
+
+```js
+const hook = new Hook.Singular()
+```
+Using the singular hook is recommended for [TypeScript](#typescript)
+
+### Singular API
+
+The singular hook is a reference to a single hook. This means that there's no need to pass along any identifier (such as a `name` as can be seen in the [Hook.Collection API](#hookcollectionapi)).
+
+The API of a singular hook is exactly the same as a collection hook and we therefore suggest you read the [Hook.Collection API](#hookcollectionapi) and leave out any use of the `name` argument. Just skip it like described in this example:
+```js
+const hook = new Hook.Singular()
+
+// good
+hook.before(beforeHook)
+hook.after(afterHook)
+hook(fetchFromDatabase, options)
+
+// bad
+hook.before('get', beforeHook)
+hook.after('get', afterHook)
+hook('get', fetchFromDatabase, options)
+```
+
+## Hook collection API
+
+- [Collection constructor](#collection-constructor)
+- [collection.api](#collectionapi)
+- [collection()](#collection)
+- [collection.before()](#collectionbefore)
+- [collection.error()](#collectionerror)
+- [collection.after()](#collectionafter)
+- [collection.wrap()](#collectionwrap)
+- [collection.remove()](#collectionremove)
+
+### Collection constructor
+
+The `Hook.Collection` constructor has no options and returns a `hookCollection` instance with the
+methods below
+
+```js
+const hookCollection = new Hook.Collection()
+```
+
+### hookCollection.api
+
+Use the `api` property to return the public API:
+
+- [hookCollection.before()](#hookcollectionbefore)
+- [hookCollection.after()](#hookcollectionafter)
+- [hookCollection.error()](#hookcollectionerror)
+- [hookCollection.wrap()](#hookcollectionwrap)
+- [hookCollection.remove()](#hookcollectionremove)
+
+That way you don’t need to expose the [hookCollection()](#hookcollection) method to consumers of your library
+
+### hookCollection()
+
+Invoke before and after hooks. Returns a promise.
+
+```js
+hookCollection(nameOrNames, method /*, options */)
+```
+
+<table>
+  <thead>
+    <tr>
+      <th>Argument</th>
+      <th>Type</th>
+      <th>Description</th>
+      <th>Required</th>
+    </tr>
+  </thead>
+  <tr>
+    <th align="left"><code>name</code></th>
+    <td>String or Array of Strings</td>
+    <td>Hook name, for example <code>'save'</code>. Or an array of names, see example below.</td>
+    <td>Yes</td>
+  </tr>
+  <tr>
+    <th align="left"><code>method</code></th>
+    <td>Function</td>
+    <td>Callback to be executed after all before hooks finished execution successfully. <code>options</code> is passed as first argument</td>
+    <td>Yes</td>
+  </tr>
+  <tr>
+    <th align="left"><code>options</code></th>
+    <td>Object</td>
+    <td>Will be passed to all before hooks as reference, so they can mutate it</td>
+    <td>No, defaults to empty object (<code>{}</code>)</td>
+  </tr>
+</table>
+
+Resolves with whatever `method` returns or resolves with.
+Rejects with error that is thrown or rejected with by
+
+1. Any of the before hooks, whichever rejects / throws first
+2. `method`
+3. Any of the after hooks, whichever rejects / throws first
+
+Simple Example
+
+```js
+hookCollection('save', function (record) {
+  return store.save(record)
+}, record)
+// shorter:  hookCollection('save', store.save, record)
+
+hookCollection.before('save', function addTimestamps (record) {
+  const now = new Date().toISOString()
+  if (record.createdAt) {
+    record.updatedAt = now
+  } else {
+    record.createdAt = now
+  }
+})
+```
+
+Example defining multiple hooks at once.
+
+```js
+hookCollection(['add', 'save'], function (record) {
+  return store.save(record)
+}, record)
+
+hookCollection.before('add', function addTimestamps (record) {
+  if (!record.type) {
+    throw new Error('type property is required')
+  }
+})
+
+hookCollection.before('save', function addTimestamps (record) {
+  if (!record.type) {
+    throw new Error('type property is required')
+  }
+})
+```
+
+Defining multiple hooks is helpful if you have similar methods for which you want to define separate hooks, but also an additional hook that gets called for all at once. The example above is equal to this:
+
+```js
+hookCollection('add', function (record) {
+  return hookCollection('save', function (record) {
+    return store.save(record)
+  }, record)
+}, record)
+```
+
+### hookCollection.before()
+
+Add before hook for given name.
+
+```js
+hookCollection.before(name, method)
+```
+
+<table>
+  <thead>
+    <tr>
+      <th>Argument</th>
+      <th>Type</th>
+      <th>Description</th>
+      <th>Required</th>
+    </tr>
+  </thead>
+  <tr>
+    <th align="left"><code>name</code></th>
+    <td>String</td>
+    <td>Hook name, for example <code>'save'</code></td>
+    <td>Yes</td>
+  </tr>
+  <tr>
+    <th align="left"><code>method</code></th>
+    <td>Function</td>
+    <td>
+      Executed before the wrapped method. Called with the hook’s
+      <code>options</code> argument. Before hooks can mutate the passed options
+      before they are passed to the wrapped method.
+    </td>
+    <td>Yes</td>
+  </tr>
+</table>
+
+Example
+
+```js
+hookCollection.before('save', function validate (record) {
+  if (!record.name) {
+    throw new Error('name property is required')
+  }
+})
+```
+
+### hookCollection.error()
+
+Add error hook for given name.
+
+```js
+hookCollection.error(name, method)
+```
+
+<table>
+  <thead>
+    <tr>
+      <th>Argument</th>
+      <th>Type</th>
+      <th>Description</th>
+      <th>Required</th>
+    </tr>
+  </thead>
+  <tr>
+    <th align="left"><code>name</code></th>
+    <td>String</td>
+    <td>Hook name, for example <code>'save'</code></td>
+    <td>Yes</td>
+  </tr>
+  <tr>
+    <th align="left"><code>method</code></th>
+    <td>Function</td>
+    <td>
+      Executed when an error occurred in either the wrapped method or a
+      <code>before</code> hook. Called with the thrown <code>error</code>
+      and the hook’s <code>options</code> argument. The first <code>method</code>
+      which does not throw an error will set the result that the after hook
+      methods will receive.
+    </td>
+    <td>Yes</td>
+  </tr>
+</table>
+
+Example
+
+```js
+hookCollection.error('save', function (error, options) {
+  if (error.ignore) return
+  throw error
+})
+```
+
+### hookCollection.after()
+
+Add after hook for given name.
+
+```js
+hookCollection.after(name, method)
+```
+
+<table>
+  <thead>
+    <tr>
+      <th>Argument</th>
+      <th>Type</th>
+      <th>Description</th>
+      <th>Required</th>
+    </tr>
+  </thead>
+  <tr>
+    <th align="left"><code>name</code></th>
+    <td>String</td>
+    <td>Hook name, for example <code>'save'</code></td>
+    <td>Yes</td>
+  </tr>
+  <tr>
+    <th align="left"><code>method</code></th>
+    <td>Function</td>
+    <td>
+    Executed after wrapped method. Called with what the wrapped method
+    resolves with the hook’s <code>options</code> argument.
+    </td>
+    <td>Yes</td>
+  </tr>
+</table>
+
+Example
+
+```js
+hookCollection.after('save', function (result, options) {
+  if (result.updatedAt) {
+    app.emit('update', result)
+  } else {
+    app.emit('create', result)
+  }
+})
+```
+
+### hookCollection.wrap()
+
+Add wrap hook for given name.
+
+```js
+hookCollection.wrap(name, method)
+```
+
+<table>
+  <thead>
+    <tr>
+      <th>Argument</th>
+      <th>Type</th>
+      <th>Description</th>
+      <th>Required</th>
+    </tr>
+  </thead>
+  <tr>
+    <th align="left"><code>name</code></th>
+    <td>String</td>
+    <td>Hook name, for example <code>'save'</code></td>
+    <td>Yes</td>
+  </tr>
+  <tr>
+    <th align="left"><code>method</code></th>
+    <td>Function</td>
+    <td>
+      Receives both the wrapped method and the passed options as arguments so it can add logic before and after the wrapped method, it can handle errors and even replace the wrapped method altogether
+    </td>
+    <td>Yes</td>
+  </tr>
+</table>
+
+Example
+
+```js
+hookCollection.wrap('save', async function (saveInDatabase, options) {
+  if (!record.name) {
+    throw new Error('name property is required')
+  }
+
+  try {
+    const result = await saveInDatabase(options)
+
+    if (result.updatedAt) {
+      app.emit('update', result)
+    } else {
+      app.emit('create', result)
+    }
+
+    return result
+  } catch (error) {
+    if (error.ignore) return
+    throw error
+  }
+})
+```
+
+See also: [Test mock example](examples/test-mock-example.md)
+
+### hookCollection.remove()
+
+Removes hook for given name.
+
+```js
+hookCollection.remove(name, hookMethod)
+```
+
+<table>
+  <thead>
+    <tr>
+      <th>Argument</th>
+      <th>Type</th>
+      <th>Description</th>
+      <th>Required</th>
+    </tr>
+  </thead>
+  <tr>
+    <th align="left"><code>name</code></th>
+    <td>String</td>
+    <td>Hook name, for example <code>'save'</code></td>
+    <td>Yes</td>
+  </tr>
+  <tr>
+    <th align="left"><code>beforeHookMethod</code></th>
+    <td>Function</td>
+    <td>
+      Same function that was previously passed to <code>hookCollection.before()</code>, <code>hookCollection.error()</code>, <code>hookCollection.after()</code> or <code>hookCollection.wrap()</code>
+    </td>
+    <td>Yes</td>
+  </tr>
+</table>
+
+Example
+
+```js
+hookCollection.remove('save', validateRecord)
+```
+
+## TypeScript
+
+This library contains type definitions for TypeScript. When you use TypeScript we highly recommend using the `Hook.Singular` constructor for your hooks as this allows you to pass along type information for the options object. For example:
+
+```ts
+
+import {Hook} from 'before-after-hook'
+
+interface Foo {
+  bar: string
+  num: number;
+}
+
+const hook = new Hook.Singular<Foo>();
+
+hook.before(function (foo) {
+
+  // typescript will complain about the following mutation attempts
+  foo.hello = 'world'
+  foo.bar = 123
+
+  // yet this is valid
+  foo.bar = 'other-string'
+  foo.num = 123
+})
+
+const foo = hook(function(foo) {
+  // handle `foo`
+  foo.bar = 'another-string'
+}, {bar: 'random-string'})
+
+// foo outputs
+{
+  bar: 'another-string',
+  num: 123
+}
+```
+
+An alternative import:
+
+```ts
+import {Singular, Collection} from 'before-after-hook'
+
+const hook = new Singular<{foo: string}>();
+const hookCollection = new Collection();
+```
+
+## Upgrading to 1.4
+
+Since version 1.4 the `Hook` constructor has been deprecated in favor of returning `Hook.Singular` in an upcoming breaking release. 
+
+Version 1.4 is still 100% backwards-compatible, but if you want to continue using hook collections, we recommend using the `Hook.Collection` constructor instead before the next release.
+
+For even more details, check out [the PR](https://github.com/gr2m/before-after-hook/pull/52).
+
+## See also
+
+If `before-after-hook` is not for you, have a look at one of these alternatives:
+
+- https://github.com/keystonejs/grappling-hook
+- https://github.com/sebelga/promised-hooks
+- https://github.com/bnoguchi/hooks-js
+- https://github.com/cb1kenobi/hook-emitter
+
+## License
+
+[Apache 2.0](LICENSE)
diff --git a/setup-maven/node_modules/before-after-hook/index.d.ts b/setup-maven/node_modules/before-after-hook/index.d.ts
new file mode 100644
index 0000000..3c19a5c
--- /dev/null
+++ b/setup-maven/node_modules/before-after-hook/index.d.ts
@@ -0,0 +1,96 @@
+type HookMethod<O, R> = (options: O) => R | Promise<R>
+
+type BeforeHook<O> = (options: O) => void
+type ErrorHook<O, E> = (error: E, options: O) => void
+type AfterHook<O, R> = (result: R, options: O) => void
+type WrapHook<O, R> = (
+  hookMethod: HookMethod<O, R>,
+  options: O
+) => R | Promise<R>
+
+type AnyHook<O, R, E> =
+  | BeforeHook<O>
+  | ErrorHook<O, E>
+  | AfterHook<O, R>
+  | WrapHook<O, R>
+
+export interface HookCollection {
+  /**
+   * Invoke before and after hooks
+   */
+  (
+    name: string | string[],
+    hookMethod: HookMethod<any, any>,
+    options?: any
+  ): Promise<any>
+  /**
+   * Add `before` hook for given `name`
+   */
+  before(name: string, beforeHook: BeforeHook<any>): void
+  /**
+   * Add `error` hook for given `name`
+   */
+  error(name: string, errorHook: ErrorHook<any, any>): void
+  /**
+   * Add `after` hook for given `name`
+   */
+  after(name: string, afterHook: AfterHook<any, any>): void
+  /**
+   * Add `wrap` hook for given `name`
+   */
+  wrap(name: string, wrapHook: WrapHook<any, any>): void
+  /**
+   * Remove added hook for given `name`
+   */
+  remove(name: string, hook: AnyHook<any, any, any>): void
+}
+
+export interface HookSingular<O, R, E> {
+  /**
+   * Invoke before and after hooks
+   */
+  (hookMethod: HookMethod<O, R>, options?: O): Promise<R>
+  /**
+   * Add `before` hook
+   */
+  before(beforeHook: BeforeHook<O>): void
+  /**
+   * Add `error` hook
+   */
+  error(errorHook: ErrorHook<O, E>): void
+  /**
+   * Add `after` hook
+   */
+  after(afterHook: AfterHook<O, R>): void
+  /**
+   * Add `wrap` hook
+   */
+  wrap(wrapHook: WrapHook<O, R>): void
+  /**
+   * Remove added hook
+   */
+  remove(hook: AnyHook<O, R, E>): void
+}
+
+type Collection = new () => HookCollection
+type Singular = new <O = any, R = any, E = any>() => HookSingular<O, R, E>
+
+interface Hook {
+  new (): HookCollection
+
+  /**
+   * Creates a collection of hooks
+   */
+  Collection: Collection
+
+  /**
+   * Creates a nameless hook that supports strict typings
+   */
+  Singular: Singular
+}
+
+export const Hook: Hook
+export const Collection: Collection
+export const Singular: Singular
+
+export default Hook
diff --git a/setup-maven/node_modules/before-after-hook/index.js b/setup-maven/node_modules/before-after-hook/index.js
new file mode 100644
index 0000000..a97d89b
--- /dev/null
+++ b/setup-maven/node_modules/before-after-hook/index.js
@@ -0,0 +1,57 @@
+var register = require('./lib/register')
+var addHook = require('./lib/add')
+var removeHook = require('./lib/remove')
+
+// bind with array of arguments: https://stackoverflow.com/a/21792913
+var bind = Function.bind
+var bindable = bind.bind(bind)
+
+function bindApi (hook, state, name) {
+  var removeHookRef = bindable(removeHook, null).apply(null, name ? [state, name] : [state])
+  hook.api = { remove: removeHookRef }
+  hook.remove = removeHookRef
+
+  ;['before', 'error', 'after', 'wrap'].forEach(function (kind) {
+    var args = name ? [state, kind, name] : [state, kind]
+    hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args)
+  })
+}
+
+function HookSingular () {
+  var singularHookName = 'h'
+  var singularHookState = {
+    registry: {}
+  }
+  var singularHook = register.bind(null, singularHookState, singularHookName)
+  bindApi(singularHook, singularHookState, singularHookName)
+  return singularHook
+}
+
+function HookCollection () {
+  var state = {
+    registry: {}
+  }
+
+  var hook = register.bind(null, state)
+  bindApi(hook, state)
+
+  return hook
+}
+
+var collectionHookDeprecationMessageDisplayed = false
+function Hook () {
+  if (!collectionHookDeprecationMessageDisplayed) {
+    console.warn('[before-after-hook]: "Hook()" repurposing warning, use "Hook.Collection()". Read more: https://git.io/upgrade-before-after-hook-to-1.4')
+    collectionHookDeprecationMessageDisplayed = true
+  }
+  return HookCollection()
+}
+
+Hook.Singular = HookSingular.bind()
+Hook.Collection = HookCollection.bind()
+
+module.exports = Hook
+// expose constructors as a named property for TypeScript
+module.exports.Hook = Hook
+module.exports.Singular = Hook.Singular
+module.exports.Collection = Hook.Collection
diff --git a/setup-maven/node_modules/before-after-hook/lib/add.js b/setup-maven/node_modules/before-after-hook/lib/add.js
new file mode 100644
index 0000000..a34e3f4
--- /dev/null
+++ b/setup-maven/node_modules/before-after-hook/lib/add.js
@@ -0,0 +1,46 @@
+module.exports = addHook
+
+function addHook (state, kind, name, hook) {
+  var orig = hook
+  if (!state.registry[name]) {
+    state.registry[name] = []
+  }
+
+  if (kind === 'before') {
+    hook = function (method, options) {
+      return Promise.resolve()
+        .then(orig.bind(null, options))
+        .then(method.bind(null, options))
+    }
+  }
+
+  if (kind === 'after') {
+    hook = function (method, options) {
+      var result
+      return Promise.resolve()
+        .then(method.bind(null, options))
+        .then(function (result_) {
+          result = result_
+          return orig(result, options)
+        })
+        .then(function () {
+          return result
+        })
+    }
+  }
+
+  if (kind === 'error') {
+    hook = function (method, options) {
+      return Promise.resolve()
+        .then(method.bind(null, options))
+        .catch(function (error) {
+          return orig(error, options)
+        })
+    }
+  }
+
+  state.registry[name].push({
+    hook: hook,
+    orig: orig
+  })
+}
diff --git a/setup-maven/node_modules/before-after-hook/lib/register.js b/setup-maven/node_modules/before-after-hook/lib/register.js
new file mode 100644
index 0000000..b3d01fd
--- /dev/null
+++ b/setup-maven/node_modules/before-after-hook/lib/register.js
@@ -0,0 +1,28 @@
+module.exports = register
+
+function register (state, name, method, options) {
+  if (typeof method !== 'function') {
+    throw new Error('method for before hook must be a function')
+  }
+
+  if (!options) {
+    options = {}
+  }
+
+  if (Array.isArray(name)) {
+    return name.reverse().reduce(function (callback, name) {
+      return register.bind(null, state, name, callback, options)
+    }, method)()
+  }
+
+  return Promise.resolve()
+    .then(function () {
+      if (!state.registry[name]) {
+        return method(options)
+      }
+
+      return (state.registry[name]).reduce(function (method, registered) {
+        return registered.hook.bind(null, method, options)
+      }, method)()
+    })
+}
diff --git a/setup-maven/node_modules/before-after-hook/lib/remove.js b/setup-maven/node_modules/before-after-hook/lib/remove.js
new file mode 100644
index 0000000..e357c51
--- /dev/null
+++ b/setup-maven/node_modules/before-after-hook/lib/remove.js
@@ -0,0 +1,17 @@
+module.exports = removeHook
+
+function removeHook (state, name, method) {
+  if (!state.registry[name]) {
+    return
+  }
+
+  var index = state.registry[name]
+    .map(function (registered) { return registered.orig })
+    .indexOf(method)
+
+  if (index === -1) {
+    return
+  }
+
+  state.registry[name].splice(index, 1)
+}
diff --git a/setup-maven/node_modules/before-after-hook/package.json b/setup-maven/node_modules/before-after-hook/package.json
new file mode 100644
index 0000000..b76cde6
--- /dev/null
+++ b/setup-maven/node_modules/before-after-hook/package.json
@@ -0,0 +1,97 @@
+{
+  "_from": "before-after-hook@^2.0.0",
+  "_id": "before-after-hook@2.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A==",
+  "_location": "/before-after-hook",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "before-after-hook@^2.0.0",
+    "name": "before-after-hook",
+    "escapedName": "before-after-hook",
+    "rawSpec": "^2.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^2.0.0"
+  },
+  "_requiredBy": [
+    "/@octokit/rest"
+  ],
+  "_resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.1.0.tgz",
+  "_shasum": "b6c03487f44e24200dd30ca5e6a1979c5d2fb635",
+  "_spec": "before-after-hook@^2.0.0",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/@octokit/rest",
+  "author": {
+    "name": "Gregor Martynus"
+  },
+  "bugs": {
+    "url": "https://github.com/gr2m/before-after-hook/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {},
+  "deprecated": false,
+  "description": "asynchronous before/error/after hooks for internal functionality",
+  "devDependencies": {
+    "browserify": "^16.0.0",
+    "gaze-cli": "^0.2.0",
+    "istanbul": "^0.4.0",
+    "istanbul-coveralls": "^1.0.3",
+    "mkdirp": "^0.5.1",
+    "rimraf": "^2.4.4",
+    "semantic-release": "^15.0.0",
+    "simple-mock": "^0.8.0",
+    "standard": "^13.0.1",
+    "tap-min": "^2.0.0",
+    "tap-spec": "^5.0.0",
+    "tape": "^4.2.2",
+    "typescript": "^3.5.3",
+    "uglify-js": "^3.0.0"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts",
+    "lib"
+  ],
+  "homepage": "https://github.com/gr2m/before-after-hook#readme",
+  "keywords": [
+    "hook",
+    "hooks",
+    "api"
+  ],
+  "license": "Apache-2.0",
+  "name": "before-after-hook",
+  "release": {
+    "publish": [
+      "@semantic-release/npm",
+      {
+        "path": "@semantic-release/github",
+        "assets": [
+          "dist/*.js"
+        ]
+      }
+    ]
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/gr2m/before-after-hook.git"
+  },
+  "scripts": {
+    "build": "browserify index.js --standalone=Hook > dist/before-after-hook.js",
+    "postbuild": "uglifyjs dist/before-after-hook.js -mc > dist/before-after-hook.min.js",
+    "posttest": "npm run validate:ts",
+    "postvalidate:ts": "tsc --noEmit --strict --target es6 test/typescript-validate.ts",
+    "prebuild": "rimraf dist && mkdirp dist",
+    "presemantic-release": "npm run build",
+    "pretest": "standard",
+    "semantic-release": "semantic-release",
+    "test": "npm run -s test:node | tap-spec",
+    "test:coverage": "istanbul cover test",
+    "test:coverage:upload": "istanbul-coveralls",
+    "test:node": "node test",
+    "test:watch": "gaze 'clear && node test | tap-min' 'test/**/*.js' 'index.js' 'lib/**/*.js'",
+    "validate:ts": "tsc --strict --target es6 index.d.ts"
+  },
+  "types": "./index.d.ts",
+  "version": "2.1.0"
+}
diff --git a/setup-maven/node_modules/btoa-lite/.npmignore b/setup-maven/node_modules/btoa-lite/.npmignore
new file mode 100644
index 0000000..50c7458
--- /dev/null
+++ b/setup-maven/node_modules/btoa-lite/.npmignore
@@ -0,0 +1,6 @@
+node_modules
+*.log
+.DS_Store
+bundle.js
+test
+test.js
diff --git a/setup-maven/node_modules/btoa-lite/LICENSE.md b/setup-maven/node_modules/btoa-lite/LICENSE.md
new file mode 100644
index 0000000..ee27ba4
--- /dev/null
+++ b/setup-maven/node_modules/btoa-lite/LICENSE.md
@@ -0,0 +1,18 @@
+This software is released under the MIT license:
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/setup-maven/node_modules/btoa-lite/README.md b/setup-maven/node_modules/btoa-lite/README.md
new file mode 100644
index 0000000..e36492e
--- /dev/null
+++ b/setup-maven/node_modules/btoa-lite/README.md
@@ -0,0 +1,37 @@
+# btoa-lite
+![](http://img.shields.io/badge/stability-stable-orange.svg?style=flat)
+![](http://img.shields.io/npm/v/btoa-lite.svg?style=flat)
+![](http://img.shields.io/npm/dm/btoa-lite.svg?style=flat)
+![](http://img.shields.io/npm/l/btoa-lite.svg?style=flat)
+
+Smallest/simplest possible means of using btoa with both Node and browserify.
+
+In the browser, encoding base64 strings is done using:
+
+``` javascript
+var encoded = btoa(decoded)
+```
+
+However in Node, it's done like so:
+
+``` javascript
+var encoded = new Buffer(decoded).toString('base64')
+```
+
+You can easily check if `Buffer` exists and switch between the approaches
+accordingly, but using `Buffer` anywhere in your browser source will pull
+in browserify's `Buffer` shim which is pretty hefty. This package uses
+the `main` and `browser` fields in its `package.json` to perform this
+check at build time and avoid pulling `Buffer` in unnecessarily.
+
+## Usage
+
+[![NPM](https://nodei.co/npm/btoa-lite.png)](https://nodei.co/npm/btoa-lite/)
+
+### `encoded = btoa(decoded)`
+
+Returns the base64-encoded value of a string.
+
+## License
+
+MIT. See [LICENSE.md](http://github.com/hughsk/btoa-lite/blob/master/LICENSE.md) for details.
diff --git a/setup-maven/node_modules/btoa-lite/btoa-browser.js b/setup-maven/node_modules/btoa-lite/btoa-browser.js
new file mode 100644
index 0000000..1b3acdb
--- /dev/null
+++ b/setup-maven/node_modules/btoa-lite/btoa-browser.js
@@ -0,0 +1,3 @@
+module.exports = function _btoa(str) {
+  return btoa(str)
+}
diff --git a/setup-maven/node_modules/btoa-lite/btoa-node.js b/setup-maven/node_modules/btoa-lite/btoa-node.js
new file mode 100644
index 0000000..0278470
--- /dev/null
+++ b/setup-maven/node_modules/btoa-lite/btoa-node.js
@@ -0,0 +1,3 @@
+module.exports = function btoa(str) {
+  return new Buffer(str).toString('base64')
+}
diff --git a/setup-maven/node_modules/btoa-lite/package.json b/setup-maven/node_modules/btoa-lite/package.json
new file mode 100644
index 0000000..c604201
--- /dev/null
+++ b/setup-maven/node_modules/btoa-lite/package.json
@@ -0,0 +1,66 @@
+{
+  "_from": "btoa-lite@^1.0.0",
+  "_id": "btoa-lite@1.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-M3dm2hWAEhD92VbCLpxokaudAzc=",
+  "_location": "/btoa-lite",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "btoa-lite@^1.0.0",
+    "name": "btoa-lite",
+    "escapedName": "btoa-lite",
+    "rawSpec": "^1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^1.0.0"
+  },
+  "_requiredBy": [
+    "/@octokit/rest"
+  ],
+  "_resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz",
+  "_shasum": "337766da15801210fdd956c22e9c6891ab9d0337",
+  "_spec": "btoa-lite@^1.0.0",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/@octokit/rest",
+  "author": {
+    "name": "Hugh Kennedy",
+    "email": "hughskennedy@gmail.com",
+    "url": "http://hughsk.io/"
+  },
+  "browser": "btoa-browser.js",
+  "bugs": {
+    "url": "https://github.com/hughsk/btoa-lite/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {},
+  "deprecated": false,
+  "description": "Smallest/simplest possible means of using btoa with both Node and browserify",
+  "devDependencies": {
+    "browserify": "^10.2.4",
+    "smokestack": "^3.3.0",
+    "tap-spec": "^4.0.0",
+    "tape": "^4.0.0"
+  },
+  "homepage": "https://github.com/hughsk/btoa-lite",
+  "keywords": [
+    "btoa",
+    "base64",
+    "isomorphic",
+    "browser",
+    "node",
+    "shared"
+  ],
+  "license": "MIT",
+  "main": "btoa-node.js",
+  "name": "btoa-lite",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/hughsk/btoa-lite.git"
+  },
+  "scripts": {
+    "test": "npm run test-node && npm run test-browser",
+    "test-browser": "browserify test | smokestack | tap-spec",
+    "test-node": "node test | tap-spec"
+  },
+  "version": "1.0.0"
+}
diff --git a/setup-maven/node_modules/cross-spawn/CHANGELOG.md b/setup-maven/node_modules/cross-spawn/CHANGELOG.md
new file mode 100644
index 0000000..ded9620
--- /dev/null
+++ b/setup-maven/node_modules/cross-spawn/CHANGELOG.md
@@ -0,0 +1,100 @@
+# Change Log
+
+All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
+
+<a name="6.0.5"></a>
+## [6.0.5](https://github.com/moxystudio/node-cross-spawn/compare/v6.0.4...v6.0.5) (2018-03-02)
+
+
+### Bug Fixes
+
+* avoid using deprecated Buffer constructor ([#94](https://github.com/moxystudio/node-cross-spawn/issues/94)) ([d5770df](https://github.com/moxystudio/node-cross-spawn/commit/d5770df)), closes [/nodejs.org/api/deprecations.html#deprecations_dep0005](https://github.com//nodejs.org/api/deprecations.html/issues/deprecations_dep0005)
+
+
+
+<a name="6.0.4"></a>
+## [6.0.4](https://github.com/moxystudio/node-cross-spawn/compare/v6.0.3...v6.0.4) (2018-01-31)
+
+
+### Bug Fixes
+
+* fix paths being incorrectly normalized on unix ([06ee3c6](https://github.com/moxystudio/node-cross-spawn/commit/06ee3c6)), closes [#90](https://github.com/moxystudio/node-cross-spawn/issues/90)
+
+
+
+<a name="6.0.3"></a>
+## [6.0.3](https://github.com/moxystudio/node-cross-spawn/compare/v6.0.2...v6.0.3) (2018-01-23)
+
+
+
+<a name="6.0.2"></a>
+## [6.0.2](https://github.com/moxystudio/node-cross-spawn/compare/v6.0.1...v6.0.2) (2018-01-23)
+
+
+
+<a name="6.0.1"></a>
+## [6.0.1](https://github.com/moxystudio/node-cross-spawn/compare/v6.0.0...v6.0.1) (2018-01-23)
+
+
+
+<a name="6.0.0"></a>
+# [6.0.0](https://github.com/moxystudio/node-cross-spawn/compare/5.1.0...6.0.0) (2018-01-23)
+
+
+### Bug Fixes
+
+* fix certain arguments not being correctly escaped or causing batch syntax error ([900cf10](https://github.com/moxystudio/node-cross-spawn/commit/900cf10)), closes [#82](https://github.com/moxystudio/node-cross-spawn/issues/82) [#51](https://github.com/moxystudio/node-cross-spawn/issues/51)
+* fix commands as posix relatixe paths not working correctly, e.g.: `./my-command` ([900cf10](https://github.com/moxystudio/node-cross-spawn/commit/900cf10))
+* fix `options` argument being mutated ([900cf10](https://github.com/moxystudio/node-cross-spawn/commit/900cf10))
+* fix commands resolution when PATH was actually Path ([900cf10](https://github.com/moxystudio/node-cross-spawn/commit/900cf10))
+
+
+### Features
+
+* improve compliance with node's ENOENT errors ([900cf10](https://github.com/moxystudio/node-cross-spawn/commit/900cf10))
+* improve detection of node's shell option support ([900cf10](https://github.com/moxystudio/node-cross-spawn/commit/900cf10))
+
+
+### Chores
+
+* upgrade tooling
+* upgrate project to es6 (node v4)
+
+
+### BREAKING CHANGES
+
+* remove support for older nodejs versions, only `node >= 4` is supported
+
+
+<a name="5.1.0"></a>
+## [5.1.0](https://github.com/moxystudio/node-cross-spawn/compare/5.0.1...5.1.0) (2017-02-26)
+
+
+### Bug Fixes
+
+* fix `options.shell` support for NodeJS [v4.8](https://github.com/nodejs/node/blob/master/doc/changelogs/CHANGELOG_V4.md#4.8.0)
+
+
+<a name="5.0.1"></a>
+## [5.0.1](https://github.com/moxystudio/node-cross-spawn/compare/5.0.0...5.0.1) (2016-11-04)
+
+
+### Bug Fixes
+
+* fix `options.shell` support for NodeJS v7
+
+
+<a name="5.0.0"></a>
+# [5.0.0](https://github.com/moxystudio/node-cross-spawn/compare/4.0.2...5.0.0) (2016-10-30)
+
+
+## Features
+
+* add support for `options.shell`
+* improve parsing of shebangs by using [`shebang-command`](https://github.com/kevva/shebang-command) module
+
+
+## Chores
+
+* refactor some code to make it more clear
+* update README caveats
diff --git a/setup-maven/node_modules/cross-spawn/LICENSE b/setup-maven/node_modules/cross-spawn/LICENSE
new file mode 100644
index 0000000..8407b9a
--- /dev/null
+++ b/setup-maven/node_modules/cross-spawn/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2018 Made With MOXY Lda <hello@moxy.studio>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/setup-maven/node_modules/cross-spawn/README.md b/setup-maven/node_modules/cross-spawn/README.md
new file mode 100644
index 0000000..e895cd7
--- /dev/null
+++ b/setup-maven/node_modules/cross-spawn/README.md
@@ -0,0 +1,94 @@
+# cross-spawn
+
+[![NPM version][npm-image]][npm-url] [![Downloads][downloads-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Build status][appveyor-image]][appveyor-url] [![Coverage Status][codecov-image]][codecov-url] [![Dependency status][david-dm-image]][david-dm-url] [![Dev Dependency status][david-dm-dev-image]][david-dm-dev-url] [![Greenkeeper badge][greenkeeper-image]][greenkeeper-url]
+
+[npm-url]:https://npmjs.org/package/cross-spawn
+[downloads-image]:http://img.shields.io/npm/dm/cross-spawn.svg
+[npm-image]:http://img.shields.io/npm/v/cross-spawn.svg
+[travis-url]:https://travis-ci.org/moxystudio/node-cross-spawn
+[travis-image]:http://img.shields.io/travis/moxystudio/node-cross-spawn/master.svg
+[appveyor-url]:https://ci.appveyor.com/project/satazor/node-cross-spawn
+[appveyor-image]:https://img.shields.io/appveyor/ci/satazor/node-cross-spawn/master.svg
+[codecov-url]:https://codecov.io/gh/moxystudio/node-cross-spawn
+[codecov-image]:https://img.shields.io/codecov/c/github/moxystudio/node-cross-spawn/master.svg
+[david-dm-url]:https://david-dm.org/moxystudio/node-cross-spawn
+[david-dm-image]:https://img.shields.io/david/moxystudio/node-cross-spawn.svg
+[david-dm-dev-url]:https://david-dm.org/moxystudio/node-cross-spawn?type=dev
+[david-dm-dev-image]:https://img.shields.io/david/dev/moxystudio/node-cross-spawn.svg
+[greenkeeper-image]:https://badges.greenkeeper.io/moxystudio/node-cross-spawn.svg
+[greenkeeper-url]:https://greenkeeper.io/
+
+A cross platform solution to node's spawn and spawnSync.
+
+
+## Installation
+
+`$ npm install cross-spawn`
+
+
+## Why
+
+Node has issues when using spawn on Windows:
+
+- It ignores [PATHEXT](https://github.com/joyent/node/issues/2318)
+- It does not support [shebangs](https://en.wikipedia.org/wiki/Shebang_(Unix))
+- Has problems running commands with [spaces](https://github.com/nodejs/node/issues/7367)
+- Has problems running commands with posix relative paths (e.g.: `./my-folder/my-executable`)
+- Has an [issue](https://github.com/moxystudio/node-cross-spawn/issues/82) with command shims (files in `node_modules/.bin/`), where arguments with quotes and parenthesis would result in [invalid syntax error](https://github.com/moxystudio/node-cross-spawn/blob/e77b8f22a416db46b6196767bcd35601d7e11d54/test/index.test.js#L149)
+- No `options.shell` support on node `<v4.8`
+
+All these issues are handled correctly by `cross-spawn`.
+There are some known modules, such as [win-spawn](https://github.com/ForbesLindesay/win-spawn), that try to solve this but they are either broken or provide faulty escaping of shell arguments.
+
+
+## Usage
+
+Exactly the same way as node's [`spawn`](https://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options) or [`spawnSync`](https://nodejs.org/api/child_process.html#child_process_child_process_spawnsync_command_args_options), so it's a drop in replacement.
+
+
+```js
+const spawn = require('cross-spawn');
+
+// Spawn NPM asynchronously
+const child = spawn('npm', ['list', '-g', '-depth', '0'], { stdio: 'inherit' });
+
+// Spawn NPM synchronously
+const result = spawn.sync('npm', ['list', '-g', '-depth', '0'], { stdio: 'inherit' });
+```
+
+
+## Caveats
+
+### Using `options.shell` as an alternative to `cross-spawn`
+
+Starting from node `v4.8`, `spawn` has a `shell` option that allows you run commands from within a shell. This new option solves
+the [PATHEXT](https://github.com/joyent/node/issues/2318) issue but:
+
+- It's not supported in node `<v4.8`
+- You must manually escape the command and arguments which is very error prone, specially when passing user input
+- There are a lot of other unresolved issues from the [Why](#why) section that you must take into account
+
+If you are using the `shell` option to spawn a command in a cross platform way, consider using `cross-spawn` instead. You have been warned.
+
+### `options.shell` support
+
+While `cross-spawn` adds support for `options.shell` in node `<v4.8`, all of its enhancements are disabled.
+
+This mimics the Node.js behavior. More specifically, the command and its arguments will not be automatically escaped nor shebang support will be offered. This is by design because if you are using `options.shell` you are probably targeting a specific platform anyway and you don't want things to get into your way.
+
+### Shebangs support
+
+While `cross-spawn` handles shebangs on Windows, its support is limited. More specifically, it just supports `#!/usr/bin/env <program>` where `<program>` must not contain any arguments.   
+If you would like to have the shebang support improved, feel free to contribute via a pull-request.
+
+Remember to always test your code on Windows!
+
+
+## Tests
+
+`$ npm test`   
+`$ npm test -- --watch` during development
+
+## License
+
+Released under the [MIT License](http://www.opensource.org/licenses/mit-license.php).
diff --git a/setup-maven/node_modules/cross-spawn/index.js b/setup-maven/node_modules/cross-spawn/index.js
new file mode 100644
index 0000000..5509742
--- /dev/null
+++ b/setup-maven/node_modules/cross-spawn/index.js
@@ -0,0 +1,39 @@
+'use strict';
+
+const cp = require('child_process');
+const parse = require('./lib/parse');
+const enoent = require('./lib/enoent');
+
+function spawn(command, args, options) {
+    // Parse the arguments
+    const parsed = parse(command, args, options);
+
+    // Spawn the child process
+    const spawned = cp.spawn(parsed.command, parsed.args, parsed.options);
+
+    // Hook into child process "exit" event to emit an error if the command
+    // does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16
+    enoent.hookChildProcess(spawned, parsed);
+
+    return spawned;
+}
+
+function spawnSync(command, args, options) {
+    // Parse the arguments
+    const parsed = parse(command, args, options);
+
+    // Spawn the child process
+    const result = cp.spawnSync(parsed.command, parsed.args, parsed.options);
+
+    // Analyze if the command does not exist, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16
+    result.error = result.error || enoent.verifyENOENTSync(result.status, parsed);
+
+    return result;
+}
+
+module.exports = spawn;
+module.exports.spawn = spawn;
+module.exports.sync = spawnSync;
+
+module.exports._parse = parse;
+module.exports._enoent = enoent;
diff --git a/setup-maven/node_modules/cross-spawn/lib/enoent.js b/setup-maven/node_modules/cross-spawn/lib/enoent.js
new file mode 100644
index 0000000..14df9b6
--- /dev/null
+++ b/setup-maven/node_modules/cross-spawn/lib/enoent.js
@@ -0,0 +1,59 @@
+'use strict';
+
+const isWin = process.platform === 'win32';
+
+function notFoundError(original, syscall) {
+    return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), {
+        code: 'ENOENT',
+        errno: 'ENOENT',
+        syscall: `${syscall} ${original.command}`,
+        path: original.command,
+        spawnargs: original.args,
+    });
+}
+
+function hookChildProcess(cp, parsed) {
+    if (!isWin) {
+        return;
+    }
+
+    const originalEmit = cp.emit;
+
+    cp.emit = function (name, arg1) {
+        // If emitting "exit" event and exit code is 1, we need to check if
+        // the command exists and emit an "error" instead
+        // See https://github.com/IndigoUnited/node-cross-spawn/issues/16
+        if (name === 'exit') {
+            const err = verifyENOENT(arg1, parsed, 'spawn');
+
+            if (err) {
+                return originalEmit.call(cp, 'error', err);
+            }
+        }
+
+        return originalEmit.apply(cp, arguments); // eslint-disable-line prefer-rest-params
+    };
+}
+
+function verifyENOENT(status, parsed) {
+    if (isWin && status === 1 && !parsed.file) {
+        return notFoundError(parsed.original, 'spawn');
+    }
+
+    return null;
+}
+
+function verifyENOENTSync(status, parsed) {
+    if (isWin && status === 1 && !parsed.file) {
+        return notFoundError(parsed.original, 'spawnSync');
+    }
+
+    return null;
+}
+
+module.exports = {
+    hookChildProcess,
+    verifyENOENT,
+    verifyENOENTSync,
+    notFoundError,
+};
diff --git a/setup-maven/node_modules/cross-spawn/lib/parse.js b/setup-maven/node_modules/cross-spawn/lib/parse.js
new file mode 100644
index 0000000..962827a
--- /dev/null
+++ b/setup-maven/node_modules/cross-spawn/lib/parse.js
@@ -0,0 +1,125 @@
+'use strict';
+
+const path = require('path');
+const niceTry = require('nice-try');
+const resolveCommand = require('./util/resolveCommand');
+const escape = require('./util/escape');
+const readShebang = require('./util/readShebang');
+const semver = require('semver');
+
+const isWin = process.platform === 'win32';
+const isExecutableRegExp = /\.(?:com|exe)$/i;
+const isCmdShimRegExp = /node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;
+
+// `options.shell` is supported in Node ^4.8.0, ^5.7.0 and >= 6.0.0
+const supportsShellOption = niceTry(() => semver.satisfies(process.version, '^4.8.0 || ^5.7.0 || >= 6.0.0', true)) || false;
+
+function detectShebang(parsed) {
+    parsed.file = resolveCommand(parsed);
+
+    const shebang = parsed.file && readShebang(parsed.file);
+
+    if (shebang) {
+        parsed.args.unshift(parsed.file);
+        parsed.command = shebang;
+
+        return resolveCommand(parsed);
+    }
+
+    return parsed.file;
+}
+
+function parseNonShell(parsed) {
+    if (!isWin) {
+        return parsed;
+    }
+
+    // Detect & add support for shebangs
+    const commandFile = detectShebang(parsed);
+
+    // We don't need a shell if the command filename is an executable
+    const needsShell = !isExecutableRegExp.test(commandFile);
+
+    // If a shell is required, use cmd.exe and take care of escaping everything correctly
+    // Note that `forceShell` is an hidden option used only in tests
+    if (parsed.options.forceShell || needsShell) {
+        // Need to double escape meta chars if the command is a cmd-shim located in `node_modules/.bin/`
+        // The cmd-shim simply calls execute the package bin file with NodeJS, proxying any argument
+        // Because the escape of metachars with ^ gets interpreted when the cmd.exe is first called,
+        // we need to double escape them
+        const needsDoubleEscapeMetaChars = isCmdShimRegExp.test(commandFile);
+
+        // Normalize posix paths into OS compatible paths (e.g.: foo/bar -> foo\bar)
+        // This is necessary otherwise it will always fail with ENOENT in those cases
+        parsed.command = path.normalize(parsed.command);
+
+        // Escape command & arguments
+        parsed.command = escape.command(parsed.command);
+        parsed.args = parsed.args.map((arg) => escape.argument(arg, needsDoubleEscapeMetaChars));
+
+        const shellCommand = [parsed.command].concat(parsed.args).join(' ');
+
+        parsed.args = ['/d', '/s', '/c', `"${shellCommand}"`];
+        parsed.command = process.env.comspec || 'cmd.exe';
+        parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped
+    }
+
+    return parsed;
+}
+
+function parseShell(parsed) {
+    // If node supports the shell option, there's no need to mimic its behavior
+    if (supportsShellOption) {
+        return parsed;
+    }
+
+    // Mimic node shell option
+    // See https://github.com/nodejs/node/blob/b9f6a2dc059a1062776133f3d4fd848c4da7d150/lib/child_process.js#L335
+    const shellCommand = [parsed.command].concat(parsed.args).join(' ');
+
+    if (isWin) {
+        parsed.command = typeof parsed.options.shell === 'string' ? parsed.options.shell : process.env.comspec || 'cmd.exe';
+        parsed.args = ['/d', '/s', '/c', `"${shellCommand}"`];
+        parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped
+    } else {
+        if (typeof parsed.options.shell === 'string') {
+            parsed.command = parsed.options.shell;
+        } else if (process.platform === 'android') {
+            parsed.command = '/system/bin/sh';
+        } else {
+            parsed.command = '/bin/sh';
+        }
+
+        parsed.args = ['-c', shellCommand];
+    }
+
+    return parsed;
+}
+
+function parse(command, args, options) {
+    // Normalize arguments, similar to nodejs
+    if (args && !Array.isArray(args)) {
+        options = args;
+        args = null;
+    }
+
+    args = args ? args.slice(0) : []; // Clone array to avoid changing the original
+    options = Object.assign({}, options); // Clone object to avoid changing the original
+
+    // Build our parsed object
+    const parsed = {
+        command,
+        args,
+        options,
+        file: undefined,
+        original: {
+            command,
+            args,
+        },
+    };
+
+    // Delegate further parsing to shell or non-shell
+    return options.shell ? parseShell(parsed) : parseNonShell(parsed);
+}
+
+module.exports = parse;
diff --git a/setup-maven/node_modules/cross-spawn/lib/util/escape.js b/setup-maven/node_modules/cross-spawn/lib/util/escape.js
new file mode 100644
index 0000000..b0bb84c
--- /dev/null
+++ b/setup-maven/node_modules/cross-spawn/lib/util/escape.js
@@ -0,0 +1,45 @@
+'use strict';
+
+// See http://www.robvanderwoude.com/escapechars.php
+const metaCharsRegExp = /([()\][%!^"`<>&|;, *?])/g;
+
+function escapeCommand(arg) {
+    // Escape meta chars
+    arg = arg.replace(metaCharsRegExp, '^$1');
+
+    return arg;
+}
+
+function escapeArgument(arg, doubleEscapeMetaChars) {
+    // Convert to string
+    arg = `${arg}`;
+
+    // Algorithm below is based on https://qntm.org/cmd
+
+    // Sequence of backslashes followed by a double quote:
+    // double up all the backslashes and escape the double quote
+    arg = arg.replace(/(\\*)"/g, '$1$1\\"');
+
+    // Sequence of backslashes followed by the end of the string
+    // (which will become a double quote later):
+    // double up all the backslashes
+    arg = arg.replace(/(\\*)$/, '$1$1');
+
+    // All other backslashes occur literally
+
+    // Quote the whole thing:
+    arg = `"${arg}"`;
+
+    // Escape meta chars
+    arg = arg.replace(metaCharsRegExp, '^$1');
+
+    // Double escape meta chars if necessary
+    if (doubleEscapeMetaChars) {
+        arg = arg.replace(metaCharsRegExp, '^$1');
+    }
+
+    return arg;
+}
+
+module.exports.command = escapeCommand;
+module.exports.argument = escapeArgument;
diff --git a/setup-maven/node_modules/cross-spawn/lib/util/readShebang.js b/setup-maven/node_modules/cross-spawn/lib/util/readShebang.js
new file mode 100644
index 0000000..bd4f128
--- /dev/null
+++ b/setup-maven/node_modules/cross-spawn/lib/util/readShebang.js
@@ -0,0 +1,32 @@
+'use strict';
+
+const fs = require('fs');
+const shebangCommand = require('shebang-command');
+
+function readShebang(command) {
+    // Read the first 150 bytes from the file
+    const size = 150;
+    let buffer;
+
+    if (Buffer.alloc) {
+        // Node.js v4.5+ / v5.10+
+        buffer = Buffer.alloc(size);
+    } else {
+        // Old Node.js API
+        buffer = new Buffer(size);
+        buffer.fill(0); // zero-fill
+    }
+
+    let fd;
+
+    try {
+        fd = fs.openSync(command, 'r');
+        fs.readSync(fd, buffer, 0, size, 0);
+        fs.closeSync(fd);
+    } catch (e) { /* Empty */ }
+
+    // Attempt to extract shebang (null is returned if not a shebang)
+    return shebangCommand(buffer.toString());
+}
+
+module.exports = readShebang;
diff --git a/setup-maven/node_modules/cross-spawn/lib/util/resolveCommand.js b/setup-maven/node_modules/cross-spawn/lib/util/resolveCommand.js
new file mode 100644
index 0000000..2fd5ad2
--- /dev/null
+++ b/setup-maven/node_modules/cross-spawn/lib/util/resolveCommand.js
@@ -0,0 +1,47 @@
+'use strict';
+
+const path = require('path');
+const which = require('which');
+const pathKey = require('path-key')();
+
+function resolveCommandAttempt(parsed, withoutPathExt) {
+    const cwd = process.cwd();
+    const hasCustomCwd = parsed.options.cwd != null;
+
+    // If a custom `cwd` was specified, we need to change the process cwd
+    // because `which` will do stat calls but does not support a custom cwd
+    if (hasCustomCwd) {
+        try {
+            process.chdir(parsed.options.cwd);
+        } catch (err) {
+            /* Empty */
+        }
+    }
+
+    let resolved;
+
+    try {
+        resolved = which.sync(parsed.command, {
+            path: (parsed.options.env || process.env)[pathKey],
+            pathExt: withoutPathExt ? path.delimiter : undefined,
+        });
+    } catch (e) {
+        /* Empty */
+    } finally {
+        process.chdir(cwd);
+    }
+
+    // If we successfully resolved, ensure that an absolute path is returned
+    // Note that when a custom `cwd` was used, we need to resolve to an absolute path based on it
+    if (resolved) {
+        resolved = path.resolve(hasCustomCwd ? parsed.options.cwd : '', resolved);
+    }
+
+    return resolved;
+}
+
+function resolveCommand(parsed) {
+    return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true);
+}
+
+module.exports = resolveCommand;
diff --git a/setup-maven/node_modules/cross-spawn/node_modules/.bin/semver b/setup-maven/node_modules/cross-spawn/node_modules/.bin/semver
new file mode 100755
index 0000000..801e77f
--- /dev/null
+++ b/setup-maven/node_modules/cross-spawn/node_modules/.bin/semver
@@ -0,0 +1,160 @@
+#!/usr/bin/env node
+// Standalone semver comparison program.
+// Exits successfully and prints matching version(s) if
+// any supplied version is valid and passes all tests.
+
+var argv = process.argv.slice(2)
+
+var versions = []
+
+var range = []
+
+var inc = null
+
+var version = require('../package.json').version
+
+var loose = false
+
+var includePrerelease = false
+
+var coerce = false
+
+var identifier
+
+var semver = require('../semver')
+
+var reverse = false
+
+var options = {}
+
+main()
+
+function main () {
+  if (!argv.length) return help()
+  while (argv.length) {
+    var a = argv.shift()
+    var indexOfEqualSign = a.indexOf('=')
+    if (indexOfEqualSign !== -1) {
+      a = a.slice(0, indexOfEqualSign)
+      argv.unshift(a.slice(indexOfEqualSign + 1))
+    }
+    switch (a) {
+      case '-rv': case '-rev': case '--rev': case '--reverse':
+        reverse = true
+        break
+      case '-l': case '--loose':
+        loose = true
+        break
+      case '-p': case '--include-prerelease':
+        includePrerelease = true
+        break
+      case '-v': case '--version':
+        versions.push(argv.shift())
+        break
+      case '-i': case '--inc': case '--increment':
+        switch (argv[0]) {
+          case 'major': case 'minor': case 'patch': case 'prerelease':
+          case 'premajor': case 'preminor': case 'prepatch':
+            inc = argv.shift()
+            break
+          default:
+            inc = 'patch'
+            break
+        }
+        break
+      case '--preid':
+        identifier = argv.shift()
+        break
+      case '-r': case '--range':
+        range.push(argv.shift())
+        break
+      case '-c': case '--coerce':
+        coerce = true
+        break
+      case '-h': case '--help': case '-?':
+        return help()
+      default:
+        versions.push(a)
+        break
+    }
+  }
+
+  var options = { loose: loose, includePrerelease: includePrerelease }
+
+  versions = versions.map(function (v) {
+    return coerce ? (semver.coerce(v) || { version: v }).version : v
+  }).filter(function (v) {
+    return semver.valid(v)
+  })
+  if (!versions.length) return fail()
+  if (inc && (versions.length !== 1 || range.length)) { return failInc() }
+
+  for (var i = 0, l = range.length; i < l; i++) {
+    versions = versions.filter(function (v) {
+      return semver.satisfies(v, range[i], options)
+    })
+    if (!versions.length) return fail()
+  }
+  return success(versions)
+}
+
+function failInc () {
+  console.error('--inc can only be used on a single version with no range')
+  fail()
+}
+
+function fail () { process.exit(1) }
+
+function success () {
+  var compare = reverse ? 'rcompare' : 'compare'
+  versions.sort(function (a, b) {
+    return semver[compare](a, b, options)
+  }).map(function (v) {
+    return semver.clean(v, options)
+  }).map(function (v) {
+    return inc ? semver.inc(v, inc, options, identifier) : v
+  }).forEach(function (v, i, _) { console.log(v) })
+}
+
+function help () {
+  console.log(['SemVer ' + version,
+    '',
+    'A JavaScript implementation of the https://semver.org/ specification',
+    'Copyright Isaac Z. Schlueter',
+    '',
+    'Usage: semver [options] <version> [<version> [...]]',
+    'Prints valid versions sorted by SemVer precedence',
+    '',
+    'Options:',
+    '-r --range <range>',
+    '        Print versions that match the specified range.',
+    '',
+    '-i --increment [<level>]',
+    '        Increment a version by the specified level.  Level can',
+    '        be one of: major, minor, patch, premajor, preminor,',
+    "        prepatch, or prerelease.  Default level is 'patch'.",
+    '        Only one version may be specified.',
+    '',
+    '--preid <identifier>',
+    '        Identifier to be used to prefix premajor, preminor,',
+    '        prepatch or prerelease version increments.',
+    '',
+    '-l --loose',
+    '        Interpret versions and ranges loosely',
+    '',
+    '-p --include-prerelease',
+    '        Always include prerelease versions in range matching',
+    '',
+    '-c --coerce',
+    '        Coerce a string into SemVer if possible',
+    '        (does not imply --loose)',
+    '',
+    'Program exits successfully if any valid version satisfies',
+    'all supplied ranges, and prints all satisfying versions.',
+    '',
+    'If no satisfying versions are found, then exits failure.',
+    '',
+    'Versions are printed in ascending order, so supplying',
+    'multiple versions to the utility will just sort them.'
+  ].join('\n'))
+}
diff --git a/setup-maven/node_modules/cross-spawn/node_modules/semver/CHANGELOG.md b/setup-maven/node_modules/cross-spawn/node_modules/semver/CHANGELOG.md
new file mode 100644
index 0000000..66304fd
--- /dev/null
+++ b/setup-maven/node_modules/cross-spawn/node_modules/semver/CHANGELOG.md
@@ -0,0 +1,39 @@
+# changes log
+
+## 5.7
+
+* Add `minVersion` method
+
+## 5.6
+
+* Move boolean `loose` param to an options object, with
+  backwards-compatibility protection.
+* Add ability to opt out of special prerelease version handling with
+  the `includePrerelease` option flag.
+
+## 5.5
+
+* Add version coercion capabilities
+
+## 5.4
+
+* Add intersection checking
+
+## 5.3
+
+* Add `minSatisfying` method
+
+## 5.2
+
+* Add `prerelease(v)` that returns prerelease components
+
+## 5.1
+
+* Add Backus-Naur for ranges
+* Remove excessively cute inspection methods
+
+## 5.0
+
+* Remove AMD/Browserified build artifacts
+* Fix ltr and gtr when using the `*` range
+* Fix for range `*` with a prerelease identifier
diff --git a/setup-maven/node_modules/cross-spawn/node_modules/semver/LICENSE b/setup-maven/node_modules/cross-spawn/node_modules/semver/LICENSE
new file mode 100644
index 0000000..19129e3
--- /dev/null
+++ b/setup-maven/node_modules/cross-spawn/node_modules/semver/LICENSE
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/setup-maven/node_modules/cross-spawn/node_modules/semver/README.md b/setup-maven/node_modules/cross-spawn/node_modules/semver/README.md
new file mode 100644
index 0000000..f8dfa5a
--- /dev/null
+++ b/setup-maven/node_modules/cross-spawn/node_modules/semver/README.md
@@ -0,0 +1,412 @@
+semver(1) -- The semantic versioner for npm
+===========================================
+
+## Install
+
+```bash
+npm install --save semver
+````
+
+## Usage
+
+As a node module:
+
+```js
+const semver = require('semver')
+
+semver.valid('1.2.3') // '1.2.3'
+semver.valid('a.b.c') // null
+semver.clean('  =v1.2.3   ') // '1.2.3'
+semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true
+semver.gt('1.2.3', '9.8.7') // false
+semver.lt('1.2.3', '9.8.7') // true
+semver.minVersion('>=1.0.0') // '1.0.0'
+semver.valid(semver.coerce('v2')) // '2.0.0'
+semver.valid(semver.coerce('42.6.7.9.3-alpha')) // '42.6.7'
+```
+
+As a command-line utility:
+
+```
+$ semver -h
+
+A JavaScript implementation of the https://semver.org/ specification
+Copyright Isaac Z. Schlueter
+
+Usage: semver [options] <version> [<version> [...]]
+Prints valid versions sorted by SemVer precedence
+
+Options:
+-r --range <range>
+        Print versions that match the specified range.
+
+-i --increment [<level>]
+        Increment a version by the specified level.  Level can
+        be one of: major, minor, patch, premajor, preminor,
+        prepatch, or prerelease.  Default level is 'patch'.
+        Only one version may be specified.
+
+--preid <identifier>
+        Identifier to be used to prefix premajor, preminor,
+        prepatch or prerelease version increments.
+
+-l --loose
+        Interpret versions and ranges loosely
+
+-p --include-prerelease
+        Always include prerelease versions in range matching
+
+-c --coerce
+        Coerce a string into SemVer if possible
+        (does not imply --loose)
+
+Program exits successfully if any valid version satisfies
+all supplied ranges, and prints all satisfying versions.
+
+If no satisfying versions are found, then exits failure.
+
+Versions are printed in ascending order, so supplying
+multiple versions to the utility will just sort them.
+```
+
+## Versions
+
+A "version" is described by the `v2.0.0` specification found at
+<https://semver.org/>.
+
+A leading `"="` or `"v"` character is stripped off and ignored.
+
+## Ranges
+
+A `version range` is a set of `comparators` which specify versions
+that satisfy the range.
+
+A `comparator` is composed of an `operator` and a `version`.  The set
+of primitive `operators` is:
+
+* `<` Less than
+* `<=` Less than or equal to
+* `>` Greater than
+* `>=` Greater than or equal to
+* `=` Equal.  If no operator is specified, then equality is assumed,
+  so this operator is optional, but MAY be included.
+
+For example, the comparator `>=1.2.7` would match the versions
+`1.2.7`, `1.2.8`, `2.5.3`, and `1.3.9`, but not the versions `1.2.6`
+or `1.1.0`.
+
+Comparators can be joined by whitespace to form a `comparator set`,
+which is satisfied by the **intersection** of all of the comparators
+it includes.
+
+A range is composed of one or more comparator sets, joined by `||`.  A
+version matches a range if and only if every comparator in at least
+one of the `||`-separated comparator sets is satisfied by the version.
+
+For example, the range `>=1.2.7 <1.3.0` would match the versions
+`1.2.7`, `1.2.8`, and `1.2.99`, but not the versions `1.2.6`, `1.3.0`,
+or `1.1.0`.
+
+The range `1.2.7 || >=1.2.9 <2.0.0` would match the versions `1.2.7`,
+`1.2.9`, and `1.4.6`, but not the versions `1.2.8` or `2.0.0`.
+
+### Prerelease Tags
+
+If a version has a prerelease tag (for example, `1.2.3-alpha.3`) then
+it will only be allowed to satisfy comparator sets if at least one
+comparator with the same `[major, minor, patch]` tuple also has a
+prerelease tag.
+
+For example, the range `>1.2.3-alpha.3` would be allowed to match the
+version `1.2.3-alpha.7`, but it would *not* be satisfied by
+`3.4.5-alpha.9`, even though `3.4.5-alpha.9` is technically "greater
+than" `1.2.3-alpha.3` according to the SemVer sort rules.  The version
+range only accepts prerelease tags on the `1.2.3` version.  The
+version `3.4.5` *would* satisfy the range, because it does not have a
+prerelease flag, and `3.4.5` is greater than `1.2.3-alpha.7`.
+
+The purpose for this behavior is twofold.  First, prerelease versions
+frequently are updated very quickly, and contain many breaking changes
+that are (by the author's design) not yet fit for public consumption.
+Therefore, by default, they are excluded from range matching
+semantics.
+
+Second, a user who has opted into using a prerelease version has
+clearly indicated the intent to use *that specific* set of
+alpha/beta/rc versions.  By including a prerelease tag in the range,
+the user is indicating that they are aware of the risk.  However, it
+is still not appropriate to assume that they have opted into taking a
+similar risk on the *next* set of prerelease versions.
+
+Note that this behavior can be suppressed (treating all prerelease
+versions as if they were normal versions, for the purpose of range
+matching) by setting the `includePrerelease` flag on the options
+object to any
+[functions](https://github.com/npm/node-semver#functions) that do
+range matching.
+
+#### Prerelease Identifiers
+
+The method `.inc` takes an additional `identifier` string argument that
+will append the value of the string as a prerelease identifier:
+
+```javascript
+semver.inc('1.2.3', 'prerelease', 'beta')
+// '1.2.4-beta.0'
+```
+
+command-line example:
+
+```bash
+$ semver 1.2.3 -i prerelease --preid beta
+1.2.4-beta.0
+```
+
+Which then can be used to increment further:
+
+```bash
+$ semver 1.2.4-beta.0 -i prerelease
+1.2.4-beta.1
+```
+
+### Advanced Range Syntax
+
+Advanced range syntax desugars to primitive comparators in
+deterministic ways.
+
+Advanced ranges may be combined in the same way as primitive
+comparators using white space or `||`.
+
+#### Hyphen Ranges `X.Y.Z - A.B.C`
+
+Specifies an inclusive set.
+
+* `1.2.3 - 2.3.4` := `>=1.2.3 <=2.3.4`
+
+If a partial version is provided as the first version in the inclusive
+range, then the missing pieces are replaced with zeroes.
+
+* `1.2 - 2.3.4` := `>=1.2.0 <=2.3.4`
+
+If a partial version is provided as the second version in the
+inclusive range, then all versions that start with the supplied parts
+of the tuple are accepted, but nothing that would be greater than the
+provided tuple parts.
+
+* `1.2.3 - 2.3` := `>=1.2.3 <2.4.0`
+* `1.2.3 - 2` := `>=1.2.3 <3.0.0`
+
+#### X-Ranges `1.2.x` `1.X` `1.2.*` `*`
+
+Any of `X`, `x`, or `*` may be used to "stand in" for one of the
+numeric values in the `[major, minor, patch]` tuple.
+
+* `*` := `>=0.0.0` (Any version satisfies)
+* `1.x` := `>=1.0.0 <2.0.0` (Matching major version)
+* `1.2.x` := `>=1.2.0 <1.3.0` (Matching major and minor versions)
+
+A partial version range is treated as an X-Range, so the special
+character is in fact optional.
+
+* `""` (empty string) := `*` := `>=0.0.0`
+* `1` := `1.x.x` := `>=1.0.0 <2.0.0`
+* `1.2` := `1.2.x` := `>=1.2.0 <1.3.0`
+
+#### Tilde Ranges `~1.2.3` `~1.2` `~1`
+
+Allows patch-level changes if a minor version is specified on the
+comparator.  Allows minor-level changes if not.
+
+* `~1.2.3` := `>=1.2.3 <1.(2+1).0` := `>=1.2.3 <1.3.0`
+* `~1.2` := `>=1.2.0 <1.(2+1).0` := `>=1.2.0 <1.3.0` (Same as `1.2.x`)
+* `~1` := `>=1.0.0 <(1+1).0.0` := `>=1.0.0 <2.0.0` (Same as `1.x`)
+* `~0.2.3` := `>=0.2.3 <0.(2+1).0` := `>=0.2.3 <0.3.0`
+* `~0.2` := `>=0.2.0 <0.(2+1).0` := `>=0.2.0 <0.3.0` (Same as `0.2.x`)
+* `~0` := `>=0.0.0 <(0+1).0.0` := `>=0.0.0 <1.0.0` (Same as `0.x`)
+* `~1.2.3-beta.2` := `>=1.2.3-beta.2 <1.3.0` Note that prereleases in
+  the `1.2.3` version will be allowed, if they are greater than or
+  equal to `beta.2`.  So, `1.2.3-beta.4` would be allowed, but
+  `1.2.4-beta.2` would not, because it is a prerelease of a
+  different `[major, minor, patch]` tuple.
+
+#### Caret Ranges `^1.2.3` `^0.2.5` `^0.0.4`
+
+Allows changes that do not modify the left-most non-zero digit in the
+`[major, minor, patch]` tuple.  In other words, this allows patch and
+minor updates for versions `1.0.0` and above, patch updates for
+versions `0.X >=0.1.0`, and *no* updates for versions `0.0.X`.
+
+Many authors treat a `0.x` version as if the `x` were the major
+"breaking-change" indicator.
+
+Caret ranges are ideal when an author may make breaking changes
+between `0.2.4` and `0.3.0` releases, which is a common practice.
+However, it presumes that there will *not* be breaking changes between
+`0.2.4` and `0.2.5`.  It allows for changes that are presumed to be
+additive (but non-breaking), according to commonly observed practices.
+
+* `^1.2.3` := `>=1.2.3 <2.0.0`
+* `^0.2.3` := `>=0.2.3 <0.3.0`
+* `^0.0.3` := `>=0.0.3 <0.0.4`
+* `^1.2.3-beta.2` := `>=1.2.3-beta.2 <2.0.0` Note that prereleases in
+  the `1.2.3` version will be allowed, if they are greater than or
+  equal to `beta.2`.  So, `1.2.3-beta.4` would be allowed, but
+  `1.2.4-beta.2` would not, because it is a prerelease of a
+  different `[major, minor, patch]` tuple.
+* `^0.0.3-beta` := `>=0.0.3-beta <0.0.4`  Note that prereleases in the
+  `0.0.3` version *only* will be allowed, if they are greater than or
+  equal to `beta`.  So, `0.0.3-pr.2` would be allowed.
+
+When parsing caret ranges, a missing `patch` value desugars to the
+number `0`, but will allow flexibility within that value, even if the
+major and minor versions are both `0`.
+
+* `^1.2.x` := `>=1.2.0 <2.0.0`
+* `^0.0.x` := `>=0.0.0 <0.1.0`
+* `^0.0` := `>=0.0.0 <0.1.0`
+
+A missing `minor` and `patch` values will desugar to zero, but also
+allow flexibility within those values, even if the major version is
+zero.
+
+* `^1.x` := `>=1.0.0 <2.0.0`
+* `^0.x` := `>=0.0.0 <1.0.0`
+
+### Range Grammar
+
+Putting all this together, here is a Backus-Naur grammar for ranges,
+for the benefit of parser authors:
+
+```bnf
+range-set  ::= range ( logical-or range ) *
+logical-or ::= ( ' ' ) * '||' ( ' ' ) *
+range      ::= hyphen | simple ( ' ' simple ) * | ''
+hyphen     ::= partial ' - ' partial
+simple     ::= primitive | partial | tilde | caret
+primitive  ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial
+partial    ::= xr ( '.' xr ( '.' xr qualifier ? )? )?
+xr         ::= 'x' | 'X' | '*' | nr
+nr         ::= '0' | ['1'-'9'] ( ['0'-'9'] ) *
+tilde      ::= '~' partial
+caret      ::= '^' partial
+qualifier  ::= ( '-' pre )? ( '+' build )?
+pre        ::= parts
+build      ::= parts
+parts      ::= part ( '.' part ) *
+part       ::= nr | [-0-9A-Za-z]+
+```
+
+## Functions
+
+All methods and classes take a final `options` object argument.  All
+options in this object are `false` by default.  The options supported
+are:
+
+- `loose`  Be more forgiving about not-quite-valid semver strings.
+  (Any resulting output will always be 100% strict compliant, of
+  course.)  For backwards compatibility reasons, if the `options`
+  argument is a boolean value instead of an object, it is interpreted
+  to be the `loose` param.
+- `includePrerelease`  Set to suppress the [default
+  behavior](https://github.com/npm/node-semver#prerelease-tags) of
+  excluding prerelease tagged versions from ranges unless they are
+  explicitly opted into.
+
+Strict-mode Comparators and Ranges will be strict about the SemVer
+strings that they parse.
+
+* `valid(v)`: Return the parsed version, or null if it's not valid.
+* `inc(v, release)`: Return the version incremented by the release
+  type (`major`,   `premajor`, `minor`, `preminor`, `patch`,
+  `prepatch`, or `prerelease`), or null if it's not valid
+  * `premajor` in one call will bump the version up to the next major
+    version and down to a prerelease of that major version.
+    `preminor`, and `prepatch` work the same way.
+  * If called from a non-prerelease version, the `prerelease` will work the
+    same as `prepatch`. It increments the patch version, then makes a
+    prerelease. If the input version is already a prerelease it simply
+    increments it.
+* `prerelease(v)`: Returns an array of prerelease components, or null
+  if none exist. Example: `prerelease('1.2.3-alpha.1') -> ['alpha', 1]`
+* `major(v)`: Return the major version number.
+* `minor(v)`: Return the minor version number.
+* `patch(v)`: Return the patch version number.
+* `intersects(r1, r2, loose)`: Return true if the two supplied ranges
+  or comparators intersect.
+* `parse(v)`: Attempt to parse a string as a semantic version, returning either
+  a `SemVer` object or `null`.
+
+### Comparison
+
+* `gt(v1, v2)`: `v1 > v2`
+* `gte(v1, v2)`: `v1 >= v2`
+* `lt(v1, v2)`: `v1 < v2`
+* `lte(v1, v2)`: `v1 <= v2`
+* `eq(v1, v2)`: `v1 == v2` This is true if they're logically equivalent,
+  even if they're not the exact same string.  You already know how to
+  compare strings.
+* `neq(v1, v2)`: `v1 != v2` The opposite of `eq`.
+* `cmp(v1, comparator, v2)`: Pass in a comparison string, and it'll call
+  the corresponding function above.  `"==="` and `"!=="` do simple
+  string comparison, but are included for completeness.  Throws if an
+  invalid comparison string is provided.
+* `compare(v1, v2)`: Return `0` if `v1 == v2`, or `1` if `v1` is greater, or `-1` if
+  `v2` is greater.  Sorts in ascending order if passed to `Array.sort()`.
+* `rcompare(v1, v2)`: The reverse of compare.  Sorts an array of versions
+  in descending order when passed to `Array.sort()`.
+* `diff(v1, v2)`: Returns difference between two versions by the release type
+  (`major`, `premajor`, `minor`, `preminor`, `patch`, `prepatch`, or `prerelease`),
+  or null if the versions are the same.
+
+### Comparators
+
+* `intersects(comparator)`: Return true if the comparators intersect
+
+### Ranges
+
+* `validRange(range)`: Return the valid range or null if it's not valid
+* `satisfies(version, range)`: Return true if the version satisfies the
+  range.
+* `maxSatisfying(versions, range)`: Return the highest version in the list
+  that satisfies the range, or `null` if none of them do.
+* `minSatisfying(versions, range)`: Return the lowest version in the list
+  that satisfies the range, or `null` if none of them do.
+* `minVersion(range)`: Return the lowest version that can possibly match
+  the given range.
+* `gtr(version, range)`: Return `true` if version is greater than all the
+  versions possible in the range.
+* `ltr(version, range)`: Return `true` if version is less than all the
+  versions possible in the range.
+* `outside(version, range, hilo)`: Return true if the version is outside
+  the bounds of the range in either the high or low direction.  The
+  `hilo` argument must be either the string `'>'` or `'<'`.  (This is
+  the function called by `gtr` and `ltr`.)
+* `intersects(range)`: Return true if any of the ranges comparators intersect
+
+Note that, since ranges may be non-contiguous, a version might not be
+greater than a range, less than a range, *or* satisfy a range!  For
+example, the range `1.2 <1.2.9 || >2.0.0` would have a hole from `1.2.9`
+until `2.0.0`, so the version `1.2.10` would not be greater than the
+range (because `2.0.1` satisfies, which is higher), nor less than the
+range (since `1.2.8` satisfies, which is lower), and it also does not
+satisfy the range.
+
+If you want to know if a version satisfies or does not satisfy a
+range, use the `satisfies(version, range)` function.
+
+### Coercion
+
+* `coerce(version)`: Coerces a string to semver if possible
+
+This aims to provide a very forgiving translation of a non-semver string to
+semver. It looks for the first digit in a string, and consumes all
+remaining characters which satisfy at least a partial semver (e.g., `1`,
+`1.2`, `1.2.3`) up to the max permitted length (256 characters).  Longer
+versions are simply truncated (`4.6.3.9.2-alpha2` becomes `4.6.3`).  All
+surrounding text is simply ignored (`v3.4 replaces v3.3.1` becomes
+`3.4.0`).  Only text which lacks digits will fail coercion (`version one`
+is not valid).  The maximum  length for any semver component considered for
+coercion is 16 characters; longer components will be ignored
+(`10000000000000000.4.7.4` becomes `4.7.4`).  The maximum value for any
+semver component is `Number.MAX_SAFE_INTEGER || (2**53 - 1)`; higher value
+components are invalid (`9999999999999999.4.7.4` is likely invalid).
diff --git a/setup-maven/node_modules/cross-spawn/node_modules/semver/bin/semver b/setup-maven/node_modules/cross-spawn/node_modules/semver/bin/semver
new file mode 100755
index 0000000..801e77f
--- /dev/null
+++ b/setup-maven/node_modules/cross-spawn/node_modules/semver/bin/semver
@@ -0,0 +1,160 @@
+#!/usr/bin/env node
+// Standalone semver comparison program.
+// Exits successfully and prints matching version(s) if
+// any supplied version is valid and passes all tests.
+
+var argv = process.argv.slice(2)
+
+var versions = []
+
+var range = []
+
+var inc = null
+
+var version = require('../package.json').version
+
+var loose = false
+
+var includePrerelease = false
+
+var coerce = false
+
+var identifier
+
+var semver = require('../semver')
+
+var reverse = false
+
+var options = {}
+
+main()
+
+function main () {
+  if (!argv.length) return help()
+  while (argv.length) {
+    var a = argv.shift()
+    var indexOfEqualSign = a.indexOf('=')
+    if (indexOfEqualSign !== -1) {
+      a = a.slice(0, indexOfEqualSign)
+      argv.unshift(a.slice(indexOfEqualSign + 1))
+    }
+    switch (a) {
+      case '-rv': case '-rev': case '--rev': case '--reverse':
+        reverse = true
+        break
+      case '-l': case '--loose':
+        loose = true
+        break
+      case '-p': case '--include-prerelease':
+        includePrerelease = true
+        break
+      case '-v': case '--version':
+        versions.push(argv.shift())
+        break
+      case '-i': case '--inc': case '--increment':
+        switch (argv[0]) {
+          case 'major': case 'minor': case 'patch': case 'prerelease':
+          case 'premajor': case 'preminor': case 'prepatch':
+            inc = argv.shift()
+            break
+          default:
+            inc = 'patch'
+            break
+        }
+        break
+      case '--preid':
+        identifier = argv.shift()
+        break
+      case '-r': case '--range':
+        range.push(argv.shift())
+        break
+      case '-c': case '--coerce':
+        coerce = true
+        break
+      case '-h': case '--help': case '-?':
+        return help()
+      default:
+        versions.push(a)
+        break
+    }
+  }
+
+  var options = { loose: loose, includePrerelease: includePrerelease }
+
+  versions = versions.map(function (v) {
+    return coerce ? (semver.coerce(v) || { version: v }).version : v
+  }).filter(function (v) {
+    return semver.valid(v)
+  })
+  if (!versions.length) return fail()
+  if (inc && (versions.length !== 1 || range.length)) { return failInc() }
+
+  for (var i = 0, l = range.length; i < l; i++) {
+    versions = versions.filter(function (v) {
+      return semver.satisfies(v, range[i], options)
+    })
+    if (!versions.length) return fail()
+  }
+  return success(versions)
+}
+
+function failInc () {
+  console.error('--inc can only be used on a single version with no range')
+  fail()
+}
+
+function fail () { process.exit(1) }
+
+function success () {
+  var compare = reverse ? 'rcompare' : 'compare'
+  versions.sort(function (a, b) {
+    return semver[compare](a, b, options)
+  }).map(function (v) {
+    return semver.clean(v, options)
+  }).map(function (v) {
+    return inc ? semver.inc(v, inc, options, identifier) : v
+  }).forEach(function (v, i, _) { console.log(v) })
+}
+
+function help () {
+  console.log(['SemVer ' + version,
+    '',
+    'A JavaScript implementation of the https://semver.org/ specification',
+    'Copyright Isaac Z. Schlueter',
+    '',
+    'Usage: semver [options] <version> [<version> [...]]',
+    'Prints valid versions sorted by SemVer precedence',
+    '',
+    'Options:',
+    '-r --range <range>',
+    '        Print versions that match the specified range.',
+    '',
+    '-i --increment [<level>]',
+    '        Increment a version by the specified level.  Level can',
+    '        be one of: major, minor, patch, premajor, preminor,',
+    "        prepatch, or prerelease.  Default level is 'patch'.",
+    '        Only one version may be specified.',
+    '',
+    '--preid <identifier>',
+    '        Identifier to be used to prefix premajor, preminor,',
+    '        prepatch or prerelease version increments.',
+    '',
+    '-l --loose',
+    '        Interpret versions and ranges loosely',
+    '',
+    '-p --include-prerelease',
+    '        Always include prerelease versions in range matching',
+    '',
+    '-c --coerce',
+    '        Coerce a string into SemVer if possible',
+    '        (does not imply --loose)',
+    '',
+    'Program exits successfully if any valid version satisfies',
+    'all supplied ranges, and prints all satisfying versions.',
+    '',
+    'If no satisfying versions are found, then exits failure.',
+    '',
+    'Versions are printed in ascending order, so supplying',
+    'multiple versions to the utility will just sort them.'
+  ].join('\n'))
+}
diff --git a/setup-maven/node_modules/cross-spawn/node_modules/semver/package.json b/setup-maven/node_modules/cross-spawn/node_modules/semver/package.json
new file mode 100644
index 0000000..f78e5f2
--- /dev/null
+++ b/setup-maven/node_modules/cross-spawn/node_modules/semver/package.json
@@ -0,0 +1,60 @@
+{
+  "_from": "semver@^5.5.0",
+  "_id": "semver@5.7.1",
+  "_inBundle": false,
+  "_integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+  "_location": "/cross-spawn/semver",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "semver@^5.5.0",
+    "name": "semver",
+    "escapedName": "semver",
+    "rawSpec": "^5.5.0",
+    "saveSpec": null,
+    "fetchSpec": "^5.5.0"
+  },
+  "_requiredBy": [
+    "/cross-spawn"
+  ],
+  "_resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+  "_shasum": "a954f931aeba508d307bbf069eff0c01c96116f7",
+  "_spec": "semver@^5.5.0",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/cross-spawn",
+  "bin": {
+    "semver": "./bin/semver"
+  },
+  "bugs": {
+    "url": "https://github.com/npm/node-semver/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "The semantic version parser used by npm.",
+  "devDependencies": {
+    "tap": "^13.0.0-rc.18"
+  },
+  "files": [
+    "bin",
+    "range.bnf",
+    "semver.js"
+  ],
+  "homepage": "https://github.com/npm/node-semver#readme",
+  "license": "ISC",
+  "main": "semver.js",
+  "name": "semver",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/npm/node-semver.git"
+  },
+  "scripts": {
+    "postpublish": "git push origin --all; git push origin --tags",
+    "postversion": "npm publish",
+    "preversion": "npm test",
+    "test": "tap"
+  },
+  "tap": {
+    "check-coverage": true
+  },
+  "version": "5.7.1"
+}
diff --git a/setup-maven/node_modules/cross-spawn/node_modules/semver/range.bnf b/setup-maven/node_modules/cross-spawn/node_modules/semver/range.bnf
new file mode 100644
index 0000000..d4c6ae0
--- /dev/null
+++ b/setup-maven/node_modules/cross-spawn/node_modules/semver/range.bnf
@@ -0,0 +1,16 @@
+range-set  ::= range ( logical-or range ) *
+logical-or ::= ( ' ' ) * '||' ( ' ' ) *
+range      ::= hyphen | simple ( ' ' simple ) * | ''
+hyphen     ::= partial ' - ' partial
+simple     ::= primitive | partial | tilde | caret
+primitive  ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial
+partial    ::= xr ( '.' xr ( '.' xr qualifier ? )? )?
+xr         ::= 'x' | 'X' | '*' | nr
+nr         ::= '0' | [1-9] ( [0-9] ) *
+tilde      ::= '~' partial
+caret      ::= '^' partial
+qualifier  ::= ( '-' pre )? ( '+' build )?
+pre        ::= parts
+build      ::= parts
+parts      ::= part ( '.' part ) *
+part       ::= nr | [-0-9A-Za-z]+
diff --git a/setup-maven/node_modules/cross-spawn/node_modules/semver/semver.js b/setup-maven/node_modules/cross-spawn/node_modules/semver/semver.js
new file mode 100644
index 0000000..d315d5d
--- /dev/null
+++ b/setup-maven/node_modules/cross-spawn/node_modules/semver/semver.js
@@ -0,0 +1,1483 @@
+exports = module.exports = SemVer
+
+var debug
+/* istanbul ignore next */
+if (typeof process === 'object' &&
+    process.env &&
+    process.env.NODE_DEBUG &&
+    /\bsemver\b/i.test(process.env.NODE_DEBUG)) {
+  debug = function () {
+    var args = Array.prototype.slice.call(arguments, 0)
+    args.unshift('SEMVER')
+    console.log.apply(console, args)
+  }
+} else {
+  debug = function () {}
+}
+
+// Note: this is the semver.org version of the spec that it implements
+// Not necessarily the package version of this code.
+exports.SEMVER_SPEC_VERSION = '2.0.0'
+
+var MAX_LENGTH = 256
+var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||
+  /* istanbul ignore next */ 9007199254740991
+
+// Max safe segment length for coercion.
+var MAX_SAFE_COMPONENT_LENGTH = 16
+
+// The actual regexps go on exports.re
+var re = exports.re = []
+var src = exports.src = []
+var R = 0
+
+// The following Regular Expressions can be used for tokenizing,
+// validating, and parsing SemVer version strings.
+
+// ## Numeric Identifier
+// A single `0`, or a non-zero digit followed by zero or more digits.
+
+var NUMERICIDENTIFIER = R++
+src[NUMERICIDENTIFIER] = '0|[1-9]\\d*'
+var NUMERICIDENTIFIERLOOSE = R++
+src[NUMERICIDENTIFIERLOOSE] = '[0-9]+'
+
+// ## Non-numeric Identifier
+// Zero or more digits, followed by a letter or hyphen, and then zero or
+// more letters, digits, or hyphens.
+
+var NONNUMERICIDENTIFIER = R++
+src[NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*'
+
+// ## Main Version
+// Three dot-separated numeric identifiers.
+
+var MAINVERSION = R++
+src[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\.' +
+                   '(' + src[NUMERICIDENTIFIER] + ')\\.' +
+                   '(' + src[NUMERICIDENTIFIER] + ')'
+
+var MAINVERSIONLOOSE = R++
+src[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' +
+                        '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' +
+                        '(' + src[NUMERICIDENTIFIERLOOSE] + ')'
+
+// ## Pre-release Version Identifier
+// A numeric identifier, or a non-numeric identifier.
+
+var PRERELEASEIDENTIFIER = R++
+src[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] +
+                            '|' + src[NONNUMERICIDENTIFIER] + ')'
+
+var PRERELEASEIDENTIFIERLOOSE = R++
+src[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] +
+                                 '|' + src[NONNUMERICIDENTIFIER] + ')'
+
+// ## Pre-release Version
+// Hyphen, followed by one or more dot-separated pre-release version
+// identifiers.
+
+var PRERELEASE = R++
+src[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] +
+                  '(?:\\.' + src[PRERELEASEIDENTIFIER] + ')*))'
+
+var PRERELEASELOOSE = R++
+src[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] +
+                       '(?:\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))'
+
+// ## Build Metadata Identifier
+// Any combination of digits, letters, or hyphens.
+
+var BUILDIDENTIFIER = R++
+src[BUILDIDENTIFIER] = '[0-9A-Za-z-]+'
+
+// ## Build Metadata
+// Plus sign, followed by one or more period-separated build metadata
+// identifiers.
+
+var BUILD = R++
+src[BUILD] = '(?:\\+(' + src[BUILDIDENTIFIER] +
+             '(?:\\.' + src[BUILDIDENTIFIER] + ')*))'
+
+// ## Full Version String
+// A main version, followed optionally by a pre-release version and
+// build metadata.
+
+// Note that the only major, minor, patch, and pre-release sections of
+// the version string are capturing groups.  The build metadata is not a
+// capturing group, because it should not ever be used in version
+// comparison.
+
+var FULL = R++
+var FULLPLAIN = 'v?' + src[MAINVERSION] +
+                src[PRERELEASE] + '?' +
+                src[BUILD] + '?'
+
+src[FULL] = '^' + FULLPLAIN + '$'
+
+// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.
+// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty
+// common in the npm registry.
+var LOOSEPLAIN = '[v=\\s]*' + src[MAINVERSIONLOOSE] +
+                 src[PRERELEASELOOSE] + '?' +
+                 src[BUILD] + '?'
+
+var LOOSE = R++
+src[LOOSE] = '^' + LOOSEPLAIN + '$'
+
+var GTLT = R++
+src[GTLT] = '((?:<|>)?=?)'
+
+// Something like "2.*" or "1.2.x".
+// Note that "x.x" is a valid xRange identifer, meaning "any version"
+// Only the first item is strictly required.
+var XRANGEIDENTIFIERLOOSE = R++
+src[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\*'
+var XRANGEIDENTIFIER = R++
+src[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\*'
+
+var XRANGEPLAIN = R++
+src[XRANGEPLAIN] = '[v=\\s]*(' + src[XRANGEIDENTIFIER] + ')' +
+                   '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' +
+                   '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' +
+                   '(?:' + src[PRERELEASE] + ')?' +
+                   src[BUILD] + '?' +
+                   ')?)?'
+
+var XRANGEPLAINLOOSE = R++
+src[XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
+                        '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
+                        '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' +
+                        '(?:' + src[PRERELEASELOOSE] + ')?' +
+                        src[BUILD] + '?' +
+                        ')?)?'
+
+var XRANGE = R++
+src[XRANGE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAIN] + '$'
+var XRANGELOOSE = R++
+src[XRANGELOOSE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAINLOOSE] + '$'
+
+// Coercion.
+// Extract anything that could conceivably be a part of a valid semver
+var COERCE = R++
+src[COERCE] = '(?:^|[^\\d])' +
+              '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' +
+              '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +
+              '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +
+              '(?:$|[^\\d])'
+
+// Tilde ranges.
+// Meaning is "reasonably at or greater than"
+var LONETILDE = R++
+src[LONETILDE] = '(?:~>?)'
+
+var TILDETRIM = R++
+src[TILDETRIM] = '(\\s*)' + src[LONETILDE] + '\\s+'
+re[TILDETRIM] = new RegExp(src[TILDETRIM], 'g')
+var tildeTrimReplace = '$1~'
+
+var TILDE = R++
+src[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$'
+var TILDELOOSE = R++
+src[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$'
+
+// Caret ranges.
+// Meaning is "at least and backwards compatible with"
+var LONECARET = R++
+src[LONECARET] = '(?:\\^)'
+
+var CARETTRIM = R++
+src[CARETTRIM] = '(\\s*)' + src[LONECARET] + '\\s+'
+re[CARETTRIM] = new RegExp(src[CARETTRIM], 'g')
+var caretTrimReplace = '$1^'
+
+var CARET = R++
+src[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$'
+var CARETLOOSE = R++
+src[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$'
+
+// A simple gt/lt/eq thing, or just "" to indicate "any version"
+var COMPARATORLOOSE = R++
+src[COMPARATORLOOSE] = '^' + src[GTLT] + '\\s*(' + LOOSEPLAIN + ')$|^$'
+var COMPARATOR = R++
+src[COMPARATOR] = '^' + src[GTLT] + '\\s*(' + FULLPLAIN + ')$|^$'
+
+// An expression to strip any whitespace between the gtlt and the thing
+// it modifies, so that `> 1.2.3` ==> `>1.2.3`
+var COMPARATORTRIM = R++
+src[COMPARATORTRIM] = '(\\s*)' + src[GTLT] +
+                      '\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')'
+
+// this one has to use the /g flag
+re[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g')
+var comparatorTrimReplace = '$1$2$3'
+
+// Something like `1.2.3 - 1.2.4`
+// Note that these all use the loose form, because they'll be
+// checked against either the strict or loose comparator form
+// later.
+var HYPHENRANGE = R++
+src[HYPHENRANGE] = '^\\s*(' + src[XRANGEPLAIN] + ')' +
+                   '\\s+-\\s+' +
+                   '(' + src[XRANGEPLAIN] + ')' +
+                   '\\s*$'
+
+var HYPHENRANGELOOSE = R++
+src[HYPHENRANGELOOSE] = '^\\s*(' + src[XRANGEPLAINLOOSE] + ')' +
+                        '\\s+-\\s+' +
+                        '(' + src[XRANGEPLAINLOOSE] + ')' +
+                        '\\s*$'
+
+// Star ranges basically just allow anything at all.
+var STAR = R++
+src[STAR] = '(<|>)?=?\\s*\\*'
+
+// Compile to actual regexp objects.
+// All are flag-free, unless they were created above with a flag.
+for (var i = 0; i < R; i++) {
+  debug(i, src[i])
+  if (!re[i]) {
+    re[i] = new RegExp(src[i])
+  }
+}
+
+exports.parse = parse
+function parse (version, options) {
+  if (!options || typeof options !== 'object') {
+    options = {
+      loose: !!options,
+      includePrerelease: false
+    }
+  }
+
+  if (version instanceof SemVer) {
+    return version
+  }
+
+  if (typeof version !== 'string') {
+    return null
+  }
+
+  if (version.length > MAX_LENGTH) {
+    return null
+  }
+
+  var r = options.loose ? re[LOOSE] : re[FULL]
+  if (!r.test(version)) {
+    return null
+  }
+
+  try {
+    return new SemVer(version, options)
+  } catch (er) {
+    return null
+  }
+}
+
+exports.valid = valid
+function valid (version, options) {
+  var v = parse(version, options)
+  return v ? v.version : null
+}
+
+exports.clean = clean
+function clean (version, options) {
+  var s = parse(version.trim().replace(/^[=v]+/, ''), options)
+  return s ? s.version : null
+}
+
+exports.SemVer = SemVer
+
+function SemVer (version, options) {
+  if (!options || typeof options !== 'object') {
+    options = {
+      loose: !!options,
+      includePrerelease: false
+    }
+  }
+  if (version instanceof SemVer) {
+    if (version.loose === options.loose) {
+      return version
+    } else {
+      version = version.version
+    }
+  } else if (typeof version !== 'string') {
+    throw new TypeError('Invalid Version: ' + version)
+  }
+
+  if (version.length > MAX_LENGTH) {
+    throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')
+  }
+
+  if (!(this instanceof SemVer)) {
+    return new SemVer(version, options)
+  }
+
+  debug('SemVer', version, options)
+  this.options = options
+  this.loose = !!options.loose
+
+  var m = version.trim().match(options.loose ? re[LOOSE] : re[FULL])
+
+  if (!m) {
+    throw new TypeError('Invalid Version: ' + version)
+  }
+
+  this.raw = version
+
+  // these are actually numbers
+  this.major = +m[1]
+  this.minor = +m[2]
+  this.patch = +m[3]
+
+  if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
+    throw new TypeError('Invalid major version')
+  }
+
+  if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
+    throw new TypeError('Invalid minor version')
+  }
+
+  if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
+    throw new TypeError('Invalid patch version')
+  }
+
+  // numberify any prerelease numeric ids
+  if (!m[4]) {
+    this.prerelease = []
+  } else {
+    this.prerelease = m[4].split('.').map(function (id) {
+      if (/^[0-9]+$/.test(id)) {
+        var num = +id
+        if (num >= 0 && num < MAX_SAFE_INTEGER) {
+          return num
+        }
+      }
+      return id
+    })
+  }
+
+  this.build = m[5] ? m[5].split('.') : []
+  this.format()
+}
+
+SemVer.prototype.format = function () {
+  this.version = this.major + '.' + this.minor + '.' + this.patch
+  if (this.prerelease.length) {
+    this.version += '-' + this.prerelease.join('.')
+  }
+  return this.version
+}
+
+SemVer.prototype.toString = function () {
+  return this.version
+}
+
+SemVer.prototype.compare = function (other) {
+  debug('SemVer.compare', this.version, this.options, other)
+  if (!(other instanceof SemVer)) {
+    other = new SemVer(other, this.options)
+  }
+
+  return this.compareMain(other) || this.comparePre(other)
+}
+
+SemVer.prototype.compareMain = function (other) {
+  if (!(other instanceof SemVer)) {
+    other = new SemVer(other, this.options)
+  }
+
+  return compareIdentifiers(this.major, other.major) ||
+         compareIdentifiers(this.minor, other.minor) ||
+         compareIdentifiers(this.patch, other.patch)
+}
+
+SemVer.prototype.comparePre = function (other) {
+  if (!(other instanceof SemVer)) {
+    other = new SemVer(other, this.options)
+  }
+
+  // NOT having a prerelease is > having one
+  if (this.prerelease.length && !other.prerelease.length) {
+    return -1
+  } else if (!this.prerelease.length && other.prerelease.length) {
+    return 1
+  } else if (!this.prerelease.length && !other.prerelease.length) {
+    return 0
+  }
+
+  var i = 0
+  do {
+    var a = this.prerelease[i]
+    var b = other.prerelease[i]
+    debug('prerelease compare', i, a, b)
+    if (a === undefined && b === undefined) {
+      return 0
+    } else if (b === undefined) {
+      return 1
+    } else if (a === undefined) {
+      return -1
+    } else if (a === b) {
+      continue
+    } else {
+      return compareIdentifiers(a, b)
+    }
+  } while (++i)
+}
+
+// preminor will bump the version up to the next minor release, and immediately
+// down to pre-release. premajor and prepatch work the same way.
+SemVer.prototype.inc = function (release, identifier) {
+  switch (release) {
+    case 'premajor':
+      this.prerelease.length = 0
+      this.patch = 0
+      this.minor = 0
+      this.major++
+      this.inc('pre', identifier)
+      break
+    case 'preminor':
+      this.prerelease.length = 0
+      this.patch = 0
+      this.minor++
+      this.inc('pre', identifier)
+      break
+    case 'prepatch':
+      // If this is already a prerelease, it will bump to the next version
+      // drop any prereleases that might already exist, since they are not
+      // relevant at this point.
+      this.prerelease.length = 0
+      this.inc('patch', identifier)
+      this.inc('pre', identifier)
+      break
+    // If the input is a non-prerelease version, this acts the same as
+    // prepatch.
+    case 'prerelease':
+      if (this.prerelease.length === 0) {
+        this.inc('patch', identifier)
+      }
+      this.inc('pre', identifier)
+      break
+
+    case 'major':
+      // If this is a pre-major version, bump up to the same major version.
+      // Otherwise increment major.
+      // 1.0.0-5 bumps to 1.0.0
+      // 1.1.0 bumps to 2.0.0
+      if (this.minor !== 0 ||
+          this.patch !== 0 ||
+          this.prerelease.length === 0) {
+        this.major++
+      }
+      this.minor = 0
+      this.patch = 0
+      this.prerelease = []
+      break
+    case 'minor':
+      // If this is a pre-minor version, bump up to the same minor version.
+      // Otherwise increment minor.
+      // 1.2.0-5 bumps to 1.2.0
+      // 1.2.1 bumps to 1.3.0
+      if (this.patch !== 0 || this.prerelease.length === 0) {
+        this.minor++
+      }
+      this.patch = 0
+      this.prerelease = []
+      break
+    case 'patch':
+      // If this is not a pre-release version, it will increment the patch.
+      // If it is a pre-release it will bump up to the same patch version.
+      // 1.2.0-5 patches to 1.2.0
+      // 1.2.0 patches to 1.2.1
+      if (this.prerelease.length === 0) {
+        this.patch++
+      }
+      this.prerelease = []
+      break
+    // This probably shouldn't be used publicly.
+    // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction.
+    case 'pre':
+      if (this.prerelease.length === 0) {
+        this.prerelease = [0]
+      } else {
+        var i = this.prerelease.length
+        while (--i >= 0) {
+          if (typeof this.prerelease[i] === 'number') {
+            this.prerelease[i]++
+            i = -2
+          }
+        }
+        if (i === -1) {
+          // didn't increment anything
+          this.prerelease.push(0)
+        }
+      }
+      if (identifier) {
+        // 1.2.0-beta.1 bumps to 1.2.0-beta.2,
+        // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
+        if (this.prerelease[0] === identifier) {
+          if (isNaN(this.prerelease[1])) {
+            this.prerelease = [identifier, 0]
+          }
+        } else {
+          this.prerelease = [identifier, 0]
+        }
+      }
+      break
+
+    default:
+      throw new Error('invalid increment argument: ' + release)
+  }
+  this.format()
+  this.raw = this.version
+  return this
+}
+
+exports.inc = inc
+function inc (version, release, loose, identifier) {
+  if (typeof (loose) === 'string') {
+    identifier = loose
+    loose = undefined
+  }
+
+  try {
+    return new SemVer(version, loose).inc(release, identifier).version
+  } catch (er) {
+    return null
+  }
+}
+
+exports.diff = diff
+function diff (version1, version2) {
+  if (eq(version1, version2)) {
+    return null
+  } else {
+    var v1 = parse(version1)
+    var v2 = parse(version2)
+    var prefix = ''
+    if (v1.prerelease.length || v2.prerelease.length) {
+      prefix = 'pre'
+      var defaultResult = 'prerelease'
+    }
+    for (var key in v1) {
+      if (key === 'major' || key === 'minor' || key === 'patch') {
+        if (v1[key] !== v2[key]) {
+          return prefix + key
+        }
+      }
+    }
+    return defaultResult // may be undefined
+  }
+}
+
+exports.compareIdentifiers = compareIdentifiers
+
+var numeric = /^[0-9]+$/
+function compareIdentifiers (a, b) {
+  var anum = numeric.test(a)
+  var bnum = numeric.test(b)
+
+  if (anum && bnum) {
+    a = +a
+    b = +b
+  }
+
+  return a === b ? 0
+    : (anum && !bnum) ? -1
+    : (bnum && !anum) ? 1
+    : a < b ? -1
+    : 1
+}
+
+exports.rcompareIdentifiers = rcompareIdentifiers
+function rcompareIdentifiers (a, b) {
+  return compareIdentifiers(b, a)
+}
+
+exports.major = major
+function major (a, loose) {
+  return new SemVer(a, loose).major
+}
+
+exports.minor = minor
+function minor (a, loose) {
+  return new SemVer(a, loose).minor
+}
+
+exports.patch = patch
+function patch (a, loose) {
+  return new SemVer(a, loose).patch
+}
+
+exports.compare = compare
+function compare (a, b, loose) {
+  return new SemVer(a, loose).compare(new SemVer(b, loose))
+}
+
+exports.compareLoose = compareLoose
+function compareLoose (a, b) {
+  return compare(a, b, true)
+}
+
+exports.rcompare = rcompare
+function rcompare (a, b, loose) {
+  return compare(b, a, loose)
+}
+
+exports.sort = sort
+function sort (list, loose) {
+  return list.sort(function (a, b) {
+    return exports.compare(a, b, loose)
+  })
+}
+
+exports.rsort = rsort
+function rsort (list, loose) {
+  return list.sort(function (a, b) {
+    return exports.rcompare(a, b, loose)
+  })
+}
+
+exports.gt = gt
+function gt (a, b, loose) {
+  return compare(a, b, loose) > 0
+}
+
+exports.lt = lt
+function lt (a, b, loose) {
+  return compare(a, b, loose) < 0
+}
+
+exports.eq = eq
+function eq (a, b, loose) {
+  return compare(a, b, loose) === 0
+}
+
+exports.neq = neq
+function neq (a, b, loose) {
+  return compare(a, b, loose) !== 0
+}
+
+exports.gte = gte
+function gte (a, b, loose) {
+  return compare(a, b, loose) >= 0
+}
+
+exports.lte = lte
+function lte (a, b, loose) {
+  return compare(a, b, loose) <= 0
+}
+
+exports.cmp = cmp
+function cmp (a, op, b, loose) {
+  switch (op) {
+    case '===':
+      if (typeof a === 'object')
+        a = a.version
+      if (typeof b === 'object')
+        b = b.version
+      return a === b
+
+    case '!==':
+      if (typeof a === 'object')
+        a = a.version
+      if (typeof b === 'object')
+        b = b.version
+      return a !== b
+
+    case '':
+    case '=':
+    case '==':
+      return eq(a, b, loose)
+
+    case '!=':
+      return neq(a, b, loose)
+
+    case '>':
+      return gt(a, b, loose)
+
+    case '>=':
+      return gte(a, b, loose)
+
+    case '<':
+      return lt(a, b, loose)
+
+    case '<=':
+      return lte(a, b, loose)
+
+    default:
+      throw new TypeError('Invalid operator: ' + op)
+  }
+}
+
+exports.Comparator = Comparator
+function Comparator (comp, options) {
+  if (!options || typeof options !== 'object') {
+    options = {
+      loose: !!options,
+      includePrerelease: false
+    }
+  }
+
+  if (comp instanceof Comparator) {
+    if (comp.loose === !!options.loose) {
+      return comp
+    } else {
+      comp = comp.value
+    }
+  }
+
+  if (!(this instanceof Comparator)) {
+    return new Comparator(comp, options)
+  }
+
+  debug('comparator', comp, options)
+  this.options = options
+  this.loose = !!options.loose
+  this.parse(comp)
+
+  if (this.semver === ANY) {
+    this.value = ''
+  } else {
+    this.value = this.operator + this.semver.version
+  }
+
+  debug('comp', this)
+}
+
+var ANY = {}
+Comparator.prototype.parse = function (comp) {
+  var r = this.options.loose ? re[COMPARATORLOOSE] : re[COMPARATOR]
+  var m = comp.match(r)
+
+  if (!m) {
+    throw new TypeError('Invalid comparator: ' + comp)
+  }
+
+  this.operator = m[1]
+  if (this.operator === '=') {
+    this.operator = ''
+  }
+
+  // if it literally is just '>' or '' then allow anything.
+  if (!m[2]) {
+    this.semver = ANY
+  } else {
+    this.semver = new SemVer(m[2], this.options.loose)
+  }
+}
+
+Comparator.prototype.toString = function () {
+  return this.value
+}
+
+Comparator.prototype.test = function (version) {
+  debug('Comparator.test', version, this.options.loose)
+
+  if (this.semver === ANY) {
+    return true
+  }
+
+  if (typeof version === 'string') {
+    version = new SemVer(version, this.options)
+  }
+
+  return cmp(version, this.operator, this.semver, this.options)
+}
+
+Comparator.prototype.intersects = function (comp, options) {
+  if (!(comp instanceof Comparator)) {
+    throw new TypeError('a Comparator is required')
+  }
+
+  if (!options || typeof options !== 'object') {
+    options = {
+      loose: !!options,
+      includePrerelease: false
+    }
+  }
+
+  var rangeTmp
+
+  if (this.operator === '') {
+    rangeTmp = new Range(comp.value, options)
+    return satisfies(this.value, rangeTmp, options)
+  } else if (comp.operator === '') {
+    rangeTmp = new Range(this.value, options)
+    return satisfies(comp.semver, rangeTmp, options)
+  }
+
+  var sameDirectionIncreasing =
+    (this.operator === '>=' || this.operator === '>') &&
+    (comp.operator === '>=' || comp.operator === '>')
+  var sameDirectionDecreasing =
+    (this.operator === '<=' || this.operator === '<') &&
+    (comp.operator === '<=' || comp.operator === '<')
+  var sameSemVer = this.semver.version === comp.semver.version
+  var differentDirectionsInclusive =
+    (this.operator === '>=' || this.operator === '<=') &&
+    (comp.operator === '>=' || comp.operator === '<=')
+  var oppositeDirectionsLessThan =
+    cmp(this.semver, '<', comp.semver, options) &&
+    ((this.operator === '>=' || this.operator === '>') &&
+    (comp.operator === '<=' || comp.operator === '<'))
+  var oppositeDirectionsGreaterThan =
+    cmp(this.semver, '>', comp.semver, options) &&
+    ((this.operator === '<=' || this.operator === '<') &&
+    (comp.operator === '>=' || comp.operator === '>'))
+
+  return sameDirectionIncreasing || sameDirectionDecreasing ||
+    (sameSemVer && differentDirectionsInclusive) ||
+    oppositeDirectionsLessThan || oppositeDirectionsGreaterThan
+}
+
+exports.Range = Range
+function Range (range, options) {
+  if (!options || typeof options !== 'object') {
+    options = {
+      loose: !!options,
+      includePrerelease: false
+    }
+  }
+
+  if (range instanceof Range) {
+    if (range.loose === !!options.loose &&
+        range.includePrerelease === !!options.includePrerelease) {
+      return range
+    } else {
+      return new Range(range.raw, options)
+    }
+  }
+
+  if (range instanceof Comparator) {
+    return new Range(range.value, options)
+  }
+
+  if (!(this instanceof Range)) {
+    return new Range(range, options)
+  }
+
+  this.options = options
+  this.loose = !!options.loose
+  this.includePrerelease = !!options.includePrerelease
+
+  // First, split based on boolean or ||
+  this.raw = range
+  this.set = range.split(/\s*\|\|\s*/).map(function (range) {
+    return this.parseRange(range.trim())
+  }, this).filter(function (c) {
+    // throw out any that are not relevant for whatever reason
+    return c.length
+  })
+
+  if (!this.set.length) {
+    throw new TypeError('Invalid SemVer Range: ' + range)
+  }
+
+  this.format()
+}
+
+Range.prototype.format = function () {
+  this.range = this.set.map(function (comps) {
+    return comps.join(' ').trim()
+  }).join('||').trim()
+  return this.range
+}
+
+Range.prototype.toString = function () {
+  return this.range
+}
+
+Range.prototype.parseRange = function (range) {
+  var loose = this.options.loose
+  range = range.trim()
+  // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`
+  var hr = loose ? re[HYPHENRANGELOOSE] : re[HYPHENRANGE]
+  range = range.replace(hr, hyphenReplace)
+  debug('hyphen replace', range)
+  // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`
+  range = range.replace(re[COMPARATORTRIM], comparatorTrimReplace)
+  debug('comparator trim', range, re[COMPARATORTRIM])
+
+  // `~ 1.2.3` => `~1.2.3`
+  range = range.replace(re[TILDETRIM], tildeTrimReplace)
+
+  // `^ 1.2.3` => `^1.2.3`
+  range = range.replace(re[CARETTRIM], caretTrimReplace)
+
+  // normalize spaces
+  range = range.split(/\s+/).join(' ')
+
+  // At this point, the range is completely trimmed and
+  // ready to be split into comparators.
+
+  var compRe = loose ? re[COMPARATORLOOSE] : re[COMPARATOR]
+  var set = range.split(' ').map(function (comp) {
+    return parseComparator(comp, this.options)
+  }, this).join(' ').split(/\s+/)
+  if (this.options.loose) {
+    // in loose mode, throw out any that are not valid comparators
+    set = set.filter(function (comp) {
+      return !!comp.match(compRe)
+    })
+  }
+  set = set.map(function (comp) {
+    return new Comparator(comp, this.options)
+  }, this)
+
+  return set
+}
+
+Range.prototype.intersects = function (range, options) {
+  if (!(range instanceof Range)) {
+    throw new TypeError('a Range is required')
+  }
+
+  return this.set.some(function (thisComparators) {
+    return thisComparators.every(function (thisComparator) {
+      return range.set.some(function (rangeComparators) {
+        return rangeComparators.every(function (rangeComparator) {
+          return thisComparator.intersects(rangeComparator, options)
+        })
+      })
+    })
+  })
+}
+
+// Mostly just for testing and legacy API reasons
+exports.toComparators = toComparators
+function toComparators (range, options) {
+  return new Range(range, options).set.map(function (comp) {
+    return comp.map(function (c) {
+      return c.value
+    }).join(' ').trim().split(' ')
+  })
+}
+
+// comprised of xranges, tildes, stars, and gtlt's at this point.
+// already replaced the hyphen ranges
+// turn into a set of JUST comparators.
+function parseComparator (comp, options) {
+  debug('comp', comp, options)
+  comp = replaceCarets(comp, options)
+  debug('caret', comp)
+  comp = replaceTildes(comp, options)
+  debug('tildes', comp)
+  comp = replaceXRanges(comp, options)
+  debug('xrange', comp)
+  comp = replaceStars(comp, options)
+  debug('stars', comp)
+  return comp
+}
+
+function isX (id) {
+  return !id || id.toLowerCase() === 'x' || id === '*'
+}
+
+// ~, ~> --> * (any, kinda silly)
+// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0
+// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0
+// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0
+// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0
+// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0
+function replaceTildes (comp, options) {
+  return comp.trim().split(/\s+/).map(function (comp) {
+    return replaceTilde(comp, options)
+  }).join(' ')
+}
+
+function replaceTilde (comp, options) {
+  var r = options.loose ? re[TILDELOOSE] : re[TILDE]
+  return comp.replace(r, function (_, M, m, p, pr) {
+    debug('tilde', comp, _, M, m, p, pr)
+    var ret
+
+    if (isX(M)) {
+      ret = ''
+    } else if (isX(m)) {
+      ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
+    } else if (isX(p)) {
+      // ~1.2 == >=1.2.0 <1.3.0
+      ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
+    } else if (pr) {
+      debug('replaceTilde pr', pr)
+      ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
+            ' <' + M + '.' + (+m + 1) + '.0'
+    } else {
+      // ~1.2.3 == >=1.2.3 <1.3.0
+      ret = '>=' + M + '.' + m + '.' + p +
+            ' <' + M + '.' + (+m + 1) + '.0'
+    }
+
+    debug('tilde return', ret)
+    return ret
+  })
+}
+
+// ^ --> * (any, kinda silly)
+// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0
+// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0
+// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0
+// ^1.2.3 --> >=1.2.3 <2.0.0
+// ^1.2.0 --> >=1.2.0 <2.0.0
+function replaceCarets (comp, options) {
+  return comp.trim().split(/\s+/).map(function (comp) {
+    return replaceCaret(comp, options)
+  }).join(' ')
+}
+
+function replaceCaret (comp, options) {
+  debug('caret', comp, options)
+  var r = options.loose ? re[CARETLOOSE] : re[CARET]
+  return comp.replace(r, function (_, M, m, p, pr) {
+    debug('caret', comp, _, M, m, p, pr)
+    var ret
+
+    if (isX(M)) {
+      ret = ''
+    } else if (isX(m)) {
+      ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
+    } else if (isX(p)) {
+      if (M === '0') {
+        ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
+      } else {
+        ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'
+      }
+    } else if (pr) {
+      debug('replaceCaret pr', pr)
+      if (M === '0') {
+        if (m === '0') {
+          ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
+                ' <' + M + '.' + m + '.' + (+p + 1)
+        } else {
+          ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
+                ' <' + M + '.' + (+m + 1) + '.0'
+        }
+      } else {
+        ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
+              ' <' + (+M + 1) + '.0.0'
+      }
+    } else {
+      debug('no pr')
+      if (M === '0') {
+        if (m === '0') {
+          ret = '>=' + M + '.' + m + '.' + p +
+                ' <' + M + '.' + m + '.' + (+p + 1)
+        } else {
+          ret = '>=' + M + '.' + m + '.' + p +
+                ' <' + M + '.' + (+m + 1) + '.0'
+        }
+      } else {
+        ret = '>=' + M + '.' + m + '.' + p +
+              ' <' + (+M + 1) + '.0.0'
+      }
+    }
+
+    debug('caret return', ret)
+    return ret
+  })
+}
+
+function replaceXRanges (comp, options) {
+  debug('replaceXRanges', comp, options)
+  return comp.split(/\s+/).map(function (comp) {
+    return replaceXRange(comp, options)
+  }).join(' ')
+}
+
+function replaceXRange (comp, options) {
+  comp = comp.trim()
+  var r = options.loose ? re[XRANGELOOSE] : re[XRANGE]
+  return comp.replace(r, function (ret, gtlt, M, m, p, pr) {
+    debug('xRange', comp, ret, gtlt, M, m, p, pr)
+    var xM = isX(M)
+    var xm = xM || isX(m)
+    var xp = xm || isX(p)
+    var anyX = xp
+
+    if (gtlt === '=' && anyX) {
+      gtlt = ''
+    }
+
+    if (xM) {
+      if (gtlt === '>' || gtlt === '<') {
+        // nothing is allowed
+        ret = '<0.0.0'
+      } else {
+        // nothing is forbidden
+        ret = '*'
+      }
+    } else if (gtlt && anyX) {
+      // we know patch is an x, because we have any x at all.
+      // replace X with 0
+      if (xm) {
+        m = 0
+      }
+      p = 0
+
+      if (gtlt === '>') {
+        // >1 => >=2.0.0
+        // >1.2 => >=1.3.0
+        // >1.2.3 => >= 1.2.4
+        gtlt = '>='
+        if (xm) {
+          M = +M + 1
+          m = 0
+          p = 0
+        } else {
+          m = +m + 1
+          p = 0
+        }
+      } else if (gtlt === '<=') {
+        // <=0.7.x is actually <0.8.0, since any 0.7.x should
+        // pass.  Similarly, <=7.x is actually <8.0.0, etc.
+        gtlt = '<'
+        if (xm) {
+          M = +M + 1
+        } else {
+          m = +m + 1
+        }
+      }
+
+      ret = gtlt + M + '.' + m + '.' + p
+    } else if (xm) {
+      ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
+    } else if (xp) {
+      ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
+    }
+
+    debug('xRange return', ret)
+
+    return ret
+  })
+}
+
+// Because * is AND-ed with everything else in the comparator,
+// and '' means "any version", just remove the *s entirely.
+function replaceStars (comp, options) {
+  debug('replaceStars', comp, options)
+  // Looseness is ignored here.  star is always as loose as it gets!
+  return comp.trim().replace(re[STAR], '')
+}
+
+// This function is passed to string.replace(re[HYPHENRANGE])
+// M, m, patch, prerelease, build
+// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5
+// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do
+// 1.2 - 3.4 => >=1.2.0 <3.5.0
+function hyphenReplace ($0,
+  from, fM, fm, fp, fpr, fb,
+  to, tM, tm, tp, tpr, tb) {
+  if (isX(fM)) {
+    from = ''
+  } else if (isX(fm)) {
+    from = '>=' + fM + '.0.0'
+  } else if (isX(fp)) {
+    from = '>=' + fM + '.' + fm + '.0'
+  } else {
+    from = '>=' + from
+  }
+
+  if (isX(tM)) {
+    to = ''
+  } else if (isX(tm)) {
+    to = '<' + (+tM + 1) + '.0.0'
+  } else if (isX(tp)) {
+    to = '<' + tM + '.' + (+tm + 1) + '.0'
+  } else if (tpr) {
+    to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr
+  } else {
+    to = '<=' + to
+  }
+
+  return (from + ' ' + to).trim()
+}
+
+// if ANY of the sets match ALL of its comparators, then pass
+Range.prototype.test = function (version) {
+  if (!version) {
+    return false
+  }
+
+  if (typeof version === 'string') {
+    version = new SemVer(version, this.options)
+  }
+
+  for (var i = 0; i < this.set.length; i++) {
+    if (testSet(this.set[i], version, this.options)) {
+      return true
+    }
+  }
+  return false
+}
+
+function testSet (set, version, options) {
+  for (var i = 0; i < set.length; i++) {
+    if (!set[i].test(version)) {
+      return false
+    }
+  }
+
+  if (version.prerelease.length && !options.includePrerelease) {
+    // Find the set of versions that are allowed to have prereleases
+    // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0
+    // That should allow `1.2.3-pr.2` to pass.
+    // However, `1.2.4-alpha.notready` should NOT be allowed,
+    // even though it's within the range set by the comparators.
+    for (i = 0; i < set.length; i++) {
+      debug(set[i].semver)
+      if (set[i].semver === ANY) {
+        continue
+      }
+
+      if (set[i].semver.prerelease.length > 0) {
+        var allowed = set[i].semver
+        if (allowed.major === version.major &&
+            allowed.minor === version.minor &&
+            allowed.patch === version.patch) {
+          return true
+        }
+      }
+    }
+
+    // Version has a -pre, but it's not one of the ones we like.
+    return false
+  }
+
+  return true
+}
+
+exports.satisfies = satisfies
+function satisfies (version, range, options) {
+  try {
+    range = new Range(range, options)
+  } catch (er) {
+    return false
+  }
+  return range.test(version)
+}
+
+exports.maxSatisfying = maxSatisfying
+function maxSatisfying (versions, range, options) {
+  var max = null
+  var maxSV = null
+  try {
+    var rangeObj = new Range(range, options)
+  } catch (er) {
+    return null
+  }
+  versions.forEach(function (v) {
+    if (rangeObj.test(v)) {
+      // satisfies(v, range, options)
+      if (!max || maxSV.compare(v) === -1) {
+        // compare(max, v, true)
+        max = v
+        maxSV = new SemVer(max, options)
+      }
+    }
+  })
+  return max
+}
+
+exports.minSatisfying = minSatisfying
+function minSatisfying (versions, range, options) {
+  var min = null
+  var minSV = null
+  try {
+    var rangeObj = new Range(range, options)
+  } catch (er) {
+    return null
+  }
+  versions.forEach(function (v) {
+    if (rangeObj.test(v)) {
+      // satisfies(v, range, options)
+      if (!min || minSV.compare(v) === 1) {
+        // compare(min, v, true)
+        min = v
+        minSV = new SemVer(min, options)
+      }
+    }
+  })
+  return min
+}
+
+exports.minVersion = minVersion
+function minVersion (range, loose) {
+  range = new Range(range, loose)
+
+  var minver = new SemVer('0.0.0')
+  if (range.test(minver)) {
+    return minver
+  }
+
+  minver = new SemVer('0.0.0-0')
+  if (range.test(minver)) {
+    return minver
+  }
+
+  minver = null
+  for (var i = 0; i < range.set.length; ++i) {
+    var comparators = range.set[i]
+
+    comparators.forEach(function (comparator) {
+      // Clone to avoid manipulating the comparator's semver object.
+      var compver = new SemVer(comparator.semver.version)
+      switch (comparator.operator) {
+        case '>':
+          if (compver.prerelease.length === 0) {
+            compver.patch++
+          } else {
+            compver.prerelease.push(0)
+          }
+          compver.raw = compver.format()
+          /* fallthrough */
+        case '':
+        case '>=':
+          if (!minver || gt(minver, compver)) {
+            minver = compver
+          }
+          break
+        case '<':
+        case '<=':
+          /* Ignore maximum versions */
+          break
+        /* istanbul ignore next */
+        default:
+          throw new Error('Unexpected operation: ' + comparator.operator)
+      }
+    })
+  }
+
+  if (minver && range.test(minver)) {
+    return minver
+  }
+
+  return null
+}
+
+exports.validRange = validRange
+function validRange (range, options) {
+  try {
+    // Return '*' instead of '' so that truthiness works.
+    // This will throw if it's invalid anyway
+    return new Range(range, options).range || '*'
+  } catch (er) {
+    return null
+  }
+}
+
+// Determine if version is less than all the versions possible in the range
+exports.ltr = ltr
+function ltr (version, range, options) {
+  return outside(version, range, '<', options)
+}
+
+// Determine if version is greater than all the versions possible in the range.
+exports.gtr = gtr
+function gtr (version, range, options) {
+  return outside(version, range, '>', options)
+}
+
+exports.outside = outside
+function outside (version, range, hilo, options) {
+  version = new SemVer(version, options)
+  range = new Range(range, options)
+
+  var gtfn, ltefn, ltfn, comp, ecomp
+  switch (hilo) {
+    case '>':
+      gtfn = gt
+      ltefn = lte
+      ltfn = lt
+      comp = '>'
+      ecomp = '>='
+      break
+    case '<':
+      gtfn = lt
+      ltefn = gte
+      ltfn = gt
+      comp = '<'
+      ecomp = '<='
+      break
+    default:
+      throw new TypeError('Must provide a hilo val of "<" or ">"')
+  }
+
+  // If it satisifes the range it is not outside
+  if (satisfies(version, range, options)) {
+    return false
+  }
+
+  // From now on, variable terms are as if we're in "gtr" mode.
+  // but note that everything is flipped for the "ltr" function.
+
+  for (var i = 0; i < range.set.length; ++i) {
+    var comparators = range.set[i]
+
+    var high = null
+    var low = null
+
+    comparators.forEach(function (comparator) {
+      if (comparator.semver === ANY) {
+        comparator = new Comparator('>=0.0.0')
+      }
+      high = high || comparator
+      low = low || comparator
+      if (gtfn(comparator.semver, high.semver, options)) {
+        high = comparator
+      } else if (ltfn(comparator.semver, low.semver, options)) {
+        low = comparator
+      }
+    })
+
+    // If the edge version comparator has a operator then our version
+    // isn't outside it
+    if (high.operator === comp || high.operator === ecomp) {
+      return false
+    }
+
+    // If the lowest version comparator has an operator and our version
+    // is less than it then it isn't higher than the range
+    if ((!low.operator || low.operator === comp) &&
+        ltefn(version, low.semver)) {
+      return false
+    } else if (low.operator === ecomp && ltfn(version, low.semver)) {
+      return false
+    }
+  }
+  return true
+}
+
+exports.prerelease = prerelease
+function prerelease (version, options) {
+  var parsed = parse(version, options)
+  return (parsed && parsed.prerelease.length) ? parsed.prerelease : null
+}
+
+exports.intersects = intersects
+function intersects (r1, r2, options) {
+  r1 = new Range(r1, options)
+  r2 = new Range(r2, options)
+  return r1.intersects(r2)
+}
+
+exports.coerce = coerce
+function coerce (version) {
+  if (version instanceof SemVer) {
+    return version
+  }
+
+  if (typeof version !== 'string') {
+    return null
+  }
+
+  var match = version.match(re[COERCE])
+
+  if (match == null) {
+    return null
+  }
+
+  return parse(match[1] +
+    '.' + (match[2] || '0') +
+    '.' + (match[3] || '0'))
+}
diff --git a/setup-maven/node_modules/cross-spawn/package.json b/setup-maven/node_modules/cross-spawn/package.json
new file mode 100644
index 0000000..68e4ca8
--- /dev/null
+++ b/setup-maven/node_modules/cross-spawn/package.json
@@ -0,0 +1,107 @@
+{
+  "_from": "cross-spawn@^6.0.0",
+  "_id": "cross-spawn@6.0.5",
+  "_inBundle": false,
+  "_integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+  "_location": "/cross-spawn",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "cross-spawn@^6.0.0",
+    "name": "cross-spawn",
+    "escapedName": "cross-spawn",
+    "rawSpec": "^6.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^6.0.0"
+  },
+  "_requiredBy": [
+    "/execa"
+  ],
+  "_resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+  "_shasum": "4a5ec7c64dfae22c3a14124dbacdee846d80cbc4",
+  "_spec": "cross-spawn@^6.0.0",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/execa",
+  "author": {
+    "name": "André Cruz",
+    "email": "andre@moxy.studio"
+  },
+  "bugs": {
+    "url": "https://github.com/moxystudio/node-cross-spawn/issues"
+  },
+  "bundleDependencies": false,
+  "commitlint": {
+    "extends": [
+      "@commitlint/config-conventional"
+    ]
+  },
+  "dependencies": {
+    "nice-try": "^1.0.4",
+    "path-key": "^2.0.1",
+    "semver": "^5.5.0",
+    "shebang-command": "^1.2.0",
+    "which": "^1.2.9"
+  },
+  "deprecated": false,
+  "description": "Cross platform child_process#spawn and child_process#spawnSync",
+  "devDependencies": {
+    "@commitlint/cli": "^6.0.0",
+    "@commitlint/config-conventional": "^6.0.2",
+    "babel-core": "^6.26.0",
+    "babel-jest": "^22.1.0",
+    "babel-preset-moxy": "^2.2.1",
+    "eslint": "^4.3.0",
+    "eslint-config-moxy": "^5.0.0",
+    "husky": "^0.14.3",
+    "jest": "^22.0.0",
+    "lint-staged": "^7.0.0",
+    "mkdirp": "^0.5.1",
+    "regenerator-runtime": "^0.11.1",
+    "rimraf": "^2.6.2",
+    "standard-version": "^4.2.0"
+  },
+  "engines": {
+    "node": ">=4.8"
+  },
+  "files": [
+    "lib"
+  ],
+  "homepage": "https://github.com/moxystudio/node-cross-spawn",
+  "keywords": [
+    "spawn",
+    "spawnSync",
+    "windows",
+    "cross-platform",
+    "path-ext",
+    "shebang",
+    "cmd",
+    "execute"
+  ],
+  "license": "MIT",
+  "lint-staged": {
+    "*.js": [
+      "eslint --fix",
+      "git add"
+    ]
+  },
+  "main": "index.js",
+  "name": "cross-spawn",
+  "repository": {
+    "type": "git",
+    "url": "git+ssh://git@github.com/moxystudio/node-cross-spawn.git"
+  },
+  "scripts": {
+    "commitmsg": "commitlint -e $GIT_PARAMS",
+    "lint": "eslint .",
+    "precommit": "lint-staged",
+    "prerelease": "npm t && npm run lint",
+    "release": "standard-version",
+    "test": "jest --env node --coverage"
+  },
+  "standard-version": {
+    "scripts": {
+      "posttag": "git push --follow-tags origin master && npm publish"
+    }
+  },
+  "version": "6.0.5"
+}
diff --git a/setup-maven/node_modules/deprecation/LICENSE b/setup-maven/node_modules/deprecation/LICENSE
new file mode 100644
index 0000000..1683b58
--- /dev/null
+++ b/setup-maven/node_modules/deprecation/LICENSE
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) Gregor Martynus and contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/setup-maven/node_modules/deprecation/README.md b/setup-maven/node_modules/deprecation/README.md
new file mode 100644
index 0000000..648809d
--- /dev/null
+++ b/setup-maven/node_modules/deprecation/README.md
@@ -0,0 +1,77 @@
+# deprecation
+
+> Log a deprecation message with stack
+
+![build](https://action-badges.now.sh/gr2m/deprecation)
+
+## Usage
+
+<table>
+<tbody valign=top align=left>
+<tr><th>
+Browsers
+</th><td width=100%>
+
+Load `deprecation` directly from [cdn.pika.dev](https://cdn.pika.dev)
+
+```html
+<script type="module">
+  import { Deprecation } from "https://cdn.pika.dev/deprecation/v2";
+</script>
+```
+
+</td></tr>
+<tr><th>
+Node
+</th><td>
+
+Install with `npm install deprecation`
+
+```js
+const { Deprecation } = require("deprecation");
+// or: import { Deprecation } from "deprecation";
+```
+
+</td></tr>
+</tbody>
+</table>
+
+```js
+function foo() {
+  bar();
+}
+
+function bar() {
+  baz();
+}
+
+function baz() {
+  console.warn(new Deprecation("[my-lib] foo() is deprecated, use bar()"));
+}
+
+foo();
+// { Deprecation: [my-lib] foo() is deprecated, use bar()
+//     at baz (/path/to/file.js:12:15)
+//     at bar (/path/to/file.js:8:3)
+//     at foo (/path/to/file.js:4:3)
+```
+
+To log a deprecation message only once, you can use the [once](https://www.npmjs.com/package/once) module.
+
+```js
+const Deprecation = require("deprecation");
+const once = require("once");
+
+const deprecateFoo = once(console.warn);
+
+function foo() {
+  deprecateFoo(new Deprecation("[my-lib] foo() is deprecated, use bar()"));
+}
+
+foo();
+foo(); // logs nothing
+```
+
+## License
+
+[ISC](LICENSE)
diff --git a/setup-maven/node_modules/deprecation/dist-node/index.js b/setup-maven/node_modules/deprecation/dist-node/index.js
new file mode 100644
index 0000000..9da1775
--- /dev/null
+++ b/setup-maven/node_modules/deprecation/dist-node/index.js
@@ -0,0 +1,20 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+class Deprecation extends Error {
+  constructor(message) {
+    super(message); // Maintains proper stack trace (only available on V8)
+
+    /* istanbul ignore next */
+
+    if (Error.captureStackTrace) {
+      Error.captureStackTrace(this, this.constructor);
+    }
+
+    this.name = 'Deprecation';
+  }
+
+}
+
+exports.Deprecation = Deprecation;
diff --git a/setup-maven/node_modules/deprecation/dist-src/index.js b/setup-maven/node_modules/deprecation/dist-src/index.js
new file mode 100644
index 0000000..7950fdc
--- /dev/null
+++ b/setup-maven/node_modules/deprecation/dist-src/index.js
@@ -0,0 +1,14 @@
+export class Deprecation extends Error {
+  constructor(message) {
+    super(message); // Maintains proper stack trace (only available on V8)
+
+    /* istanbul ignore next */
+
+    if (Error.captureStackTrace) {
+      Error.captureStackTrace(this, this.constructor);
+    }
+
+    this.name = 'Deprecation';
+  }
+
+}
\ No newline at end of file
diff --git a/setup-maven/node_modules/deprecation/dist-types/index.d.ts b/setup-maven/node_modules/deprecation/dist-types/index.d.ts
new file mode 100644
index 0000000..e3ae7ad
--- /dev/null
+++ b/setup-maven/node_modules/deprecation/dist-types/index.d.ts
@@ -0,0 +1,3 @@
+export class Deprecation extends Error {
+  name: "Deprecation";
+}
diff --git a/setup-maven/node_modules/deprecation/dist-web/index.js b/setup-maven/node_modules/deprecation/dist-web/index.js
new file mode 100644
index 0000000..c6bbda7
--- /dev/null
+++ b/setup-maven/node_modules/deprecation/dist-web/index.js
@@ -0,0 +1,16 @@
+class Deprecation extends Error {
+  constructor(message) {
+    super(message); // Maintains proper stack trace (only available on V8)
+
+    /* istanbul ignore next */
+
+    if (Error.captureStackTrace) {
+      Error.captureStackTrace(this, this.constructor);
+    }
+
+    this.name = 'Deprecation';
+  }
+
+}
+
+export { Deprecation };
diff --git a/setup-maven/node_modules/deprecation/package.json b/setup-maven/node_modules/deprecation/package.json
new file mode 100644
index 0000000..1cf007c
--- /dev/null
+++ b/setup-maven/node_modules/deprecation/package.json
@@ -0,0 +1,65 @@
+{
+  "_from": "deprecation@^2.0.0",
+  "_id": "deprecation@2.3.1",
+  "_inBundle": false,
+  "_integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==",
+  "_location": "/deprecation",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "deprecation@^2.0.0",
+    "name": "deprecation",
+    "escapedName": "deprecation",
+    "rawSpec": "^2.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^2.0.0"
+  },
+  "_requiredBy": [
+    "/@octokit/request",
+    "/@octokit/request-error",
+    "/@octokit/rest"
+  ],
+  "_resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
+  "_shasum": "6368cbdb40abf3373b525ac87e4a260c3a700919",
+  "_spec": "deprecation@^2.0.0",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/@octokit/request",
+  "bugs": {
+    "url": "https://github.com/gr2m/deprecation/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {},
+  "deprecated": false,
+  "description": "Log a deprecation message with stack",
+  "devDependencies": {
+    "@pika/pack": "^0.3.7",
+    "@pika/plugin-build-node": "^0.4.0",
+    "@pika/plugin-build-types": "^0.4.0",
+    "@pika/plugin-build-web": "^0.4.0",
+    "@pika/plugin-standard-pkg": "^0.4.0",
+    "semantic-release": "^15.13.3"
+  },
+  "esnext": "dist-src/index.js",
+  "files": [
+    "dist-*/",
+    "bin/"
+  ],
+  "homepage": "https://github.com/gr2m/deprecation#readme",
+  "keywords": [
+    "deprecate",
+    "deprecated",
+    "deprecation"
+  ],
+  "license": "ISC",
+  "main": "dist-node/index.js",
+  "module": "dist-web/index.js",
+  "name": "deprecation",
+  "pika": true,
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/gr2m/deprecation.git"
+  },
+  "sideEffects": false,
+  "types": "dist-types/index.d.ts",
+  "version": "2.3.1"
+}
diff --git a/setup-maven/node_modules/end-of-stream/LICENSE b/setup-maven/node_modules/end-of-stream/LICENSE
new file mode 100644
index 0000000..757562e
--- /dev/null
+++ b/setup-maven/node_modules/end-of-stream/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014 Mathias Buus
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
\ No newline at end of file
diff --git a/setup-maven/node_modules/end-of-stream/README.md b/setup-maven/node_modules/end-of-stream/README.md
new file mode 100644
index 0000000..857b14b
--- /dev/null
+++ b/setup-maven/node_modules/end-of-stream/README.md
@@ -0,0 +1,54 @@
+# end-of-stream
+
+A node module that calls a callback when a readable/writable/duplex stream has completed or failed.
+
+	npm install end-of-stream
+
+[![Build status](https://travis-ci.org/mafintosh/end-of-stream.svg?branch=master)](https://travis-ci.org/mafintosh/end-of-stream)
+
+## Usage
+
+Simply pass a stream and a callback to the `eos`.
+Both legacy streams, streams2 and stream3 are supported.
+
+``` js
+var eos = require('end-of-stream');
+
+eos(readableStream, function(err) {
+  // this will be set to the stream instance
+	if (err) return console.log('stream had an error or closed early');
+	console.log('stream has ended', this === readableStream);
+});
+
+eos(writableStream, function(err) {
+	if (err) return console.log('stream had an error or closed early');
+	console.log('stream has finished', this === writableStream);
+});
+
+eos(duplexStream, function(err) {
+	if (err) return console.log('stream had an error or closed early');
+	console.log('stream has ended and finished', this === duplexStream);
+});
+
+eos(duplexStream, {readable:false}, function(err) {
+	if (err) return console.log('stream had an error or closed early');
+	console.log('stream has finished but might still be readable');
+});
+
+eos(duplexStream, {writable:false}, function(err) {
+	if (err) return console.log('stream had an error or closed early');
+	console.log('stream has ended but might still be writable');
+});
+
+eos(readableStream, {error:false}, function(err) {
+	// do not treat emit('error', err) as a end-of-stream
+});
+```
+
+## License
+
+MIT
+
+## Related
+
+`end-of-stream` is part of the [mississippi stream utility collection](https://github.com/maxogden/mississippi) which includes more useful stream modules similar to this one.
diff --git a/setup-maven/node_modules/end-of-stream/index.js b/setup-maven/node_modules/end-of-stream/index.js
new file mode 100644
index 0000000..c77f0d5
--- /dev/null
+++ b/setup-maven/node_modules/end-of-stream/index.js
@@ -0,0 +1,94 @@
+var once = require('once');
+
+var noop = function() {};
+
+var isRequest = function(stream) {
+	return stream.setHeader && typeof stream.abort === 'function';
+};
+
+var isChildProcess = function(stream) {
+	return stream.stdio && Array.isArray(stream.stdio) && stream.stdio.length === 3
+};
+
+var eos = function(stream, opts, callback) {
+	if (typeof opts === 'function') return eos(stream, null, opts);
+	if (!opts) opts = {};
+
+	callback = once(callback || noop);
+
+	var ws = stream._writableState;
+	var rs = stream._readableState;
+	var readable = opts.readable || (opts.readable !== false && stream.readable);
+	var writable = opts.writable || (opts.writable !== false && stream.writable);
+	var cancelled = false;
+
+	var onlegacyfinish = function() {
+		if (!stream.writable) onfinish();
+	};
+
+	var onfinish = function() {
+		writable = false;
+		if (!readable) callback.call(stream);
+	};
+
+	var onend = function() {
+		readable = false;
+		if (!writable) callback.call(stream);
+	};
+
+	var onexit = function(exitCode) {
+		callback.call(stream, exitCode ? new Error('exited with error code: ' + exitCode) : null);
+	};
+
+	var onerror = function(err) {
+		callback.call(stream, err);
+	};
+
+	var onclose = function() {
+		process.nextTick(onclosenexttick);
+	};
+
+	var onclosenexttick = function() {
+		if (cancelled) return;
+		if (readable && !(rs && (rs.ended && !rs.destroyed))) return callback.call(stream, new Error('premature close'));
+		if (writable && !(ws && (ws.ended && !ws.destroyed))) return callback.call(stream, new Error('premature close'));
+	};
+
+	var onrequest = function() {
+		stream.req.on('finish', onfinish);
+	};
+
+	if (isRequest(stream)) {
+		stream.on('complete', onfinish);
+		stream.on('abort', onclose);
+		if (stream.req) onrequest();
+		else stream.on('request', onrequest);
+	} else if (writable && !ws) { // legacy streams
+		stream.on('end', onlegacyfinish);
+		stream.on('close', onlegacyfinish);
+	}
+
+	if (isChildProcess(stream)) stream.on('exit', onexit);
+
+	stream.on('end', onend);
+	stream.on('finish', onfinish);
+	if (opts.error !== false) stream.on('error', onerror);
+	stream.on('close', onclose);
+
+	return function() {
+		cancelled = true;
+		stream.removeListener('complete', onfinish);
+		stream.removeListener('abort', onclose);
+		stream.removeListener('request', onrequest);
+		if (stream.req) stream.req.removeListener('finish', onfinish);
+		stream.removeListener('end', onlegacyfinish);
+		stream.removeListener('close', onlegacyfinish);
+		stream.removeListener('finish', onfinish);
+		stream.removeListener('exit', onexit);
+		stream.removeListener('end', onend);
+		stream.removeListener('error', onerror);
+		stream.removeListener('close', onclose);
+	};
+};
+
+module.exports = eos;
diff --git a/setup-maven/node_modules/end-of-stream/package.json b/setup-maven/node_modules/end-of-stream/package.json
new file mode 100644
index 0000000..a60e969
--- /dev/null
+++ b/setup-maven/node_modules/end-of-stream/package.json
@@ -0,0 +1,65 @@
+{
+  "_from": "end-of-stream@^1.1.0",
+  "_id": "end-of-stream@1.4.4",
+  "_inBundle": false,
+  "_integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+  "_location": "/end-of-stream",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "end-of-stream@^1.1.0",
+    "name": "end-of-stream",
+    "escapedName": "end-of-stream",
+    "rawSpec": "^1.1.0",
+    "saveSpec": null,
+    "fetchSpec": "^1.1.0"
+  },
+  "_requiredBy": [
+    "/pump"
+  ],
+  "_resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+  "_shasum": "5ae64a5f45057baf3626ec14da0ca5e4b2431eb0",
+  "_spec": "end-of-stream@^1.1.0",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/pump",
+  "author": {
+    "name": "Mathias Buus",
+    "email": "mathiasbuus@gmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/mafintosh/end-of-stream/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "once": "^1.4.0"
+  },
+  "deprecated": false,
+  "description": "Call a callback when a readable/writable/duplex stream has completed or failed.",
+  "devDependencies": {
+    "tape": "^4.11.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/mafintosh/end-of-stream",
+  "keywords": [
+    "stream",
+    "streams",
+    "callback",
+    "finish",
+    "close",
+    "end",
+    "wait"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "end-of-stream",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/mafintosh/end-of-stream.git"
+  },
+  "scripts": {
+    "test": "node test.js"
+  },
+  "version": "1.4.4"
+}
diff --git a/setup-maven/node_modules/execa/index.js b/setup-maven/node_modules/execa/index.js
new file mode 100644
index 0000000..aad9ac8
--- /dev/null
+++ b/setup-maven/node_modules/execa/index.js
@@ -0,0 +1,361 @@
+'use strict';
+const path = require('path');
+const childProcess = require('child_process');
+const crossSpawn = require('cross-spawn');
+const stripEof = require('strip-eof');
+const npmRunPath = require('npm-run-path');
+const isStream = require('is-stream');
+const _getStream = require('get-stream');
+const pFinally = require('p-finally');
+const onExit = require('signal-exit');
+const errname = require('./lib/errname');
+const stdio = require('./lib/stdio');
+
+const TEN_MEGABYTES = 1000 * 1000 * 10;
+
+function handleArgs(cmd, args, opts) {
+	let parsed;
+
+	opts = Object.assign({
+		extendEnv: true,
+		env: {}
+	}, opts);
+
+	if (opts.extendEnv) {
+		opts.env = Object.assign({}, process.env, opts.env);
+	}
+
+	if (opts.__winShell === true) {
+		delete opts.__winShell;
+		parsed = {
+			command: cmd,
+			args,
+			options: opts,
+			file: cmd,
+			original: {
+				cmd,
+				args
+			}
+		};
+	} else {
+		parsed = crossSpawn._parse(cmd, args, opts);
+	}
+
+	opts = Object.assign({
+		maxBuffer: TEN_MEGABYTES,
+		buffer: true,
+		stripEof: true,
+		preferLocal: true,
+		localDir: parsed.options.cwd || process.cwd(),
+		encoding: 'utf8',
+		reject: true,
+		cleanup: true
+	}, parsed.options);
+
+	opts.stdio = stdio(opts);
+
+	if (opts.preferLocal) {
+		opts.env = npmRunPath.env(Object.assign({}, opts, {cwd: opts.localDir}));
+	}
+
+	if (opts.detached) {
+		// #115
+		opts.cleanup = false;
+	}
+
+	if (process.platform === 'win32' && path.basename(parsed.command) === 'cmd.exe') {
+		// #116
+		parsed.args.unshift('/q');
+	}
+
+	return {
+		cmd: parsed.command,
+		args: parsed.args,
+		opts,
+		parsed
+	};
+}
+
+function handleInput(spawned, input) {
+	if (input === null || input === undefined) {
+		return;
+	}
+
+	if (isStream(input)) {
+		input.pipe(spawned.stdin);
+	} else {
+		spawned.stdin.end(input);
+	}
+}
+
+function handleOutput(opts, val) {
+	if (val && opts.stripEof) {
+		val = stripEof(val);
+	}
+
+	return val;
+}
+
+function handleShell(fn, cmd, opts) {
+	let file = '/bin/sh';
+	let args = ['-c', cmd];
+
+	opts = Object.assign({}, opts);
+
+	if (process.platform === 'win32') {
+		opts.__winShell = true;
+		file = process.env.comspec || 'cmd.exe';
+		args = ['/s', '/c', `"${cmd}"`];
+		opts.windowsVerbatimArguments = true;
+	}
+
+	if (opts.shell) {
+		file = opts.shell;
+		delete opts.shell;
+	}
+
+	return fn(file, args, opts);
+}
+
+function getStream(process, stream, {encoding, buffer, maxBuffer}) {
+	if (!process[stream]) {
+		return null;
+	}
+
+	let ret;
+
+	if (!buffer) {
+		// TODO: Use `ret = util.promisify(stream.finished)(process[stream]);` when targeting Node.js 10
+		ret = new Promise((resolve, reject) => {
+			process[stream]
+				.once('end', resolve)
+				.once('error', reject);
+		});
+	} else if (encoding) {
+		ret = _getStream(process[stream], {
+			encoding,
+			maxBuffer
+		});
+	} else {
+		ret = _getStream.buffer(process[stream], {maxBuffer});
+	}
+
+	return ret.catch(err => {
+		err.stream = stream;
+		err.message = `${stream} ${err.message}`;
+		throw err;
+	});
+}
+
+function makeError(result, options) {
+	const {stdout, stderr} = result;
+
+	let err = result.error;
+	const {code, signal} = result;
+
+	const {parsed, joinedCmd} = options;
+	const timedOut = options.timedOut || false;
+
+	if (!err) {
+		let output = '';
+
+		if (Array.isArray(parsed.opts.stdio)) {
+			if (parsed.opts.stdio[2] !== 'inherit') {
+				output += output.length > 0 ? stderr : `\n${stderr}`;
+			}
+
+			if (parsed.opts.stdio[1] !== 'inherit') {
+				output += `\n${stdout}`;
+			}
+		} else if (parsed.opts.stdio !== 'inherit') {
+			output = `\n${stderr}${stdout}`;
+		}
+
+		err = new Error(`Command failed: ${joinedCmd}${output}`);
+		err.code = code < 0 ? errname(code) : code;
+	}
+
+	err.stdout = stdout;
+	err.stderr = stderr;
+	err.failed = true;
+	err.signal = signal || null;
+	err.cmd = joinedCmd;
+	err.timedOut = timedOut;
+
+	return err;
+}
+
+function joinCmd(cmd, args) {
+	let joinedCmd = cmd;
+
+	if (Array.isArray(args) && args.length > 0) {
+		joinedCmd += ' ' + args.join(' ');
+	}
+
+	return joinedCmd;
+}
+
+module.exports = (cmd, args, opts) => {
+	const parsed = handleArgs(cmd, args, opts);
+	const {encoding, buffer, maxBuffer} = parsed.opts;
+	const joinedCmd = joinCmd(cmd, args);
+
+	let spawned;
+	try {
+		spawned = childProcess.spawn(parsed.cmd, parsed.args, parsed.opts);
+	} catch (err) {
+		return Promise.reject(err);
+	}
+
+	let removeExitHandler;
+	if (parsed.opts.cleanup) {
+		removeExitHandler = onExit(() => {
+			spawned.kill();
+		});
+	}
+
+	let timeoutId = null;
+	let timedOut = false;
+
+	const cleanup = () => {
+		if (timeoutId) {
+			clearTimeout(timeoutId);
+			timeoutId = null;
+		}
+
+		if (removeExitHandler) {
+			removeExitHandler();
+		}
+	};
+
+	if (parsed.opts.timeout > 0) {
+		timeoutId = setTimeout(() => {
+			timeoutId = null;
+			timedOut = true;
+			spawned.kill(parsed.opts.killSignal);
+		}, parsed.opts.timeout);
+	}
+
+	const processDone = new Promise(resolve => {
+		spawned.on('exit', (code, signal) => {
+			cleanup();
+			resolve({code, signal});
+		});
+
+		spawned.on('error', err => {
+			cleanup();
+			resolve({error: err});
+		});
+
+		if (spawned.stdin) {
+			spawned.stdin.on('error', err => {
+				cleanup();
+				resolve({error: err});
+			});
+		}
+	});
+
+	function destroy() {
+		if (spawned.stdout) {
+			spawned.stdout.destroy();
+		}
+
+		if (spawned.stderr) {
+			spawned.stderr.destroy();
+		}
+	}
+
+	const handlePromise = () => pFinally(Promise.all([
+		processDone,
+		getStream(spawned, 'stdout', {encoding, buffer, maxBuffer}),
+		getStream(spawned, 'stderr', {encoding, buffer, maxBuffer})
+	]).then(arr => {
+		const result = arr[0];
+		result.stdout = arr[1];
+		result.stderr = arr[2];
+
+		if (result.error || result.code !== 0 || result.signal !== null) {
+			const err = makeError(result, {
+				joinedCmd,
+				parsed,
+				timedOut
+			});
+
+			// TODO: missing some timeout logic for killed
+			// https://github.com/nodejs/node/blob/master/lib/child_process.js#L203
+			// err.killed = spawned.killed || killed;
+			err.killed = err.killed || spawned.killed;
+
+			if (!parsed.opts.reject) {
+				return err;
+			}
+
+			throw err;
+		}
+
+		return {
+			stdout: handleOutput(parsed.opts, result.stdout),
+			stderr: handleOutput(parsed.opts, result.stderr),
+			code: 0,
+			failed: false,
+			killed: false,
+			signal: null,
+			cmd: joinedCmd,
+			timedOut: false
+		};
+	}), destroy);
+
+	crossSpawn._enoent.hookChildProcess(spawned, parsed.parsed);
+
+	handleInput(spawned, parsed.opts.input);
+
+	spawned.then = (onfulfilled, onrejected) => handlePromise().then(onfulfilled, onrejected);
+	spawned.catch = onrejected => handlePromise().catch(onrejected);
+
+	return spawned;
+};
+
+// TODO: set `stderr: 'ignore'` when that option is implemented
+module.exports.stdout = (...args) => module.exports(...args).then(x => x.stdout);
+
+// TODO: set `stdout: 'ignore'` when that option is implemented
+module.exports.stderr = (...args) => module.exports(...args).then(x => x.stderr);
+
+module.exports.shell = (cmd, opts) => handleShell(module.exports, cmd, opts);
+
+module.exports.sync = (cmd, args, opts) => {
+	const parsed = handleArgs(cmd, args, opts);
+	const joinedCmd = joinCmd(cmd, args);
+
+	if (isStream(parsed.opts.input)) {
+		throw new TypeError('The `input` option cannot be a stream in sync mode');
+	}
+
+	const result = childProcess.spawnSync(parsed.cmd, parsed.args, parsed.opts);
+	result.code = result.status;
+
+	if (result.error || result.status !== 0 || result.signal !== null) {
+		const err = makeError(result, {
+			joinedCmd,
+			parsed
+		});
+
+		if (!parsed.opts.reject) {
+			return err;
+		}
+
+		throw err;
+	}
+
+	return {
+		stdout: handleOutput(parsed.opts, result.stdout),
+		stderr: handleOutput(parsed.opts, result.stderr),
+		code: 0,
+		failed: false,
+		signal: null,
+		cmd: joinedCmd,
+		timedOut: false
+	};
+};
+
+module.exports.shellSync = (cmd, opts) => handleShell(module.exports.sync, cmd, opts);
diff --git a/setup-maven/node_modules/execa/lib/errname.js b/setup-maven/node_modules/execa/lib/errname.js
new file mode 100644
index 0000000..e367837
--- /dev/null
+++ b/setup-maven/node_modules/execa/lib/errname.js
@@ -0,0 +1,39 @@
+'use strict';
+// Older verions of Node.js might not have `util.getSystemErrorName()`.
+// In that case, fall back to a deprecated internal.
+const util = require('util');
+
+let uv;
+
+if (typeof util.getSystemErrorName === 'function') {
+	module.exports = util.getSystemErrorName;
+} else {
+	try {
+		uv = process.binding('uv');
+
+		if (typeof uv.errname !== 'function') {
+			throw new TypeError('uv.errname is not a function');
+		}
+	} catch (err) {
+		console.error('execa/lib/errname: unable to establish process.binding(\'uv\')', err);
+		uv = null;
+	}
+
+	module.exports = code => errname(uv, code);
+}
+
+// Used for testing the fallback behavior
+module.exports.__test__ = errname;
+
+function errname(uv, code) {
+	if (uv) {
+		return uv.errname(code);
+	}
+
+	if (!(code < 0)) {
+		throw new Error('err >= 0');
+	}
+
+	return `Unknown system error ${code}`;
+}
+
diff --git a/setup-maven/node_modules/execa/lib/stdio.js b/setup-maven/node_modules/execa/lib/stdio.js
new file mode 100644
index 0000000..a82d468
--- /dev/null
+++ b/setup-maven/node_modules/execa/lib/stdio.js
@@ -0,0 +1,41 @@
+'use strict';
+const alias = ['stdin', 'stdout', 'stderr'];
+
+const hasAlias = opts => alias.some(x => Boolean(opts[x]));
+
+module.exports = opts => {
+	if (!opts) {
+		return null;
+	}
+
+	if (opts.stdio && hasAlias(opts)) {
+		throw new Error(`It's not possible to provide \`stdio\` in combination with one of ${alias.map(x => `\`${x}\``).join(', ')}`);
+	}
+
+	if (typeof opts.stdio === 'string') {
+		return opts.stdio;
+	}
+
+	const stdio = opts.stdio || [];
+
+	if (!Array.isArray(stdio)) {
+		throw new TypeError(`Expected \`stdio\` to be of type \`string\` or \`Array\`, got \`${typeof stdio}\``);
+	}
+
+	const result = [];
+	const len = Math.max(stdio.length, alias.length);
+
+	for (let i = 0; i < len; i++) {
+		let value = null;
+
+		if (stdio[i] !== undefined) {
+			value = stdio[i];
+		} else if (opts[alias[i]] !== undefined) {
+			value = opts[alias[i]];
+		}
+
+		result[i] = value;
+	}
+
+	return result;
+};
diff --git a/setup-maven/node_modules/execa/license b/setup-maven/node_modules/execa/license
new file mode 100644
index 0000000..e7af2f7
--- /dev/null
+++ b/setup-maven/node_modules/execa/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/setup-maven/node_modules/execa/package.json b/setup-maven/node_modules/execa/package.json
new file mode 100644
index 0000000..c538a70
--- /dev/null
+++ b/setup-maven/node_modules/execa/package.json
@@ -0,0 +1,102 @@
+{
+  "_from": "execa@^1.0.0",
+  "_id": "execa@1.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+  "_location": "/execa",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "execa@^1.0.0",
+    "name": "execa",
+    "escapedName": "execa",
+    "rawSpec": "^1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^1.0.0"
+  },
+  "_requiredBy": [
+    "/husky",
+    "/windows-release"
+  ],
+  "_resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
+  "_shasum": "c6236a5bb4df6d6f15e88e7f017798216749ddd8",
+  "_spec": "execa@^1.0.0",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/windows-release",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/execa/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "cross-spawn": "^6.0.0",
+    "get-stream": "^4.0.0",
+    "is-stream": "^1.1.0",
+    "npm-run-path": "^2.0.0",
+    "p-finally": "^1.0.0",
+    "signal-exit": "^3.0.0",
+    "strip-eof": "^1.0.0"
+  },
+  "deprecated": false,
+  "description": "A better `child_process`",
+  "devDependencies": {
+    "ava": "*",
+    "cat-names": "^1.0.2",
+    "coveralls": "^3.0.1",
+    "delay": "^3.0.0",
+    "is-running": "^2.0.0",
+    "nyc": "^13.0.1",
+    "tempfile": "^2.0.0",
+    "xo": "*"
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "index.js",
+    "lib"
+  ],
+  "homepage": "https://github.com/sindresorhus/execa#readme",
+  "keywords": [
+    "exec",
+    "child",
+    "process",
+    "execute",
+    "fork",
+    "execfile",
+    "spawn",
+    "file",
+    "shell",
+    "bin",
+    "binary",
+    "binaries",
+    "npm",
+    "path",
+    "local"
+  ],
+  "license": "MIT",
+  "name": "execa",
+  "nyc": {
+    "reporter": [
+      "text",
+      "lcov"
+    ],
+    "exclude": [
+      "**/fixtures/**",
+      "**/test.js",
+      "**/test/**"
+    ]
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/execa.git"
+  },
+  "scripts": {
+    "test": "xo && nyc ava"
+  },
+  "version": "1.0.0"
+}
diff --git a/setup-maven/node_modules/execa/readme.md b/setup-maven/node_modules/execa/readme.md
new file mode 100644
index 0000000..f3f533d
--- /dev/null
+++ b/setup-maven/node_modules/execa/readme.md
@@ -0,0 +1,327 @@
+# execa [![Build Status: Linux](https://travis-ci.org/sindresorhus/execa.svg?branch=master)](https://travis-ci.org/sindresorhus/execa) [![Build status: Windows](https://ci.appveyor.com/api/projects/status/x5ajamxtjtt93cqv/branch/master?svg=true)](https://ci.appveyor.com/project/sindresorhus/execa/branch/master) [![Coverage Status](https://coveralls.io/repos/github/sindresorhus/execa/badge.svg?branch=master)](https://coveralls.io/github/sindresorhus/execa?branch=master)
+
+> A better [`child_process`](https://nodejs.org/api/child_process.html)
+
+
+## Why
+
+- Promise interface.
+- [Strips EOF](https://github.com/sindresorhus/strip-eof) from the output so you don't have to `stdout.trim()`.
+- Supports [shebang](https://en.wikipedia.org/wiki/Shebang_(Unix)) binaries cross-platform.
+- [Improved Windows support.](https://github.com/IndigoUnited/node-cross-spawn#why)
+- Higher max buffer. 10 MB instead of 200 KB.
+- [Executes locally installed binaries by name.](#preferlocal)
+- [Cleans up spawned processes when the parent process dies.](#cleanup)
+
+
+## Install
+
+```
+$ npm install execa
+```
+
+<a href="https://www.patreon.com/sindresorhus">
+	<img src="https://c5.patreon.com/external/logo/become_a_patron_button@2x.png" width="160">
+</a>
+
+
+## Usage
+
+```js
+const execa = require('execa');
+
+(async () => {
+	const {stdout} = await execa('echo', ['unicorns']);
+	console.log(stdout);
+	//=> 'unicorns'
+})();
+```
+
+Additional examples:
+
+```js
+const execa = require('execa');
+
+(async () => {
+	// Pipe the child process stdout to the current stdout
+	execa('echo', ['unicorns']).stdout.pipe(process.stdout);
+
+
+	// Run a shell command
+	const {stdout} = await execa.shell('echo unicorns');
+	//=> 'unicorns'
+
+
+	// Catching an error
+	try {
+		await execa.shell('exit 3');
+	} catch (error) {
+		console.log(error);
+		/*
+		{
+			message: 'Command failed: /bin/sh -c exit 3'
+			killed: false,
+			code: 3,
+			signal: null,
+			cmd: '/bin/sh -c exit 3',
+			stdout: '',
+			stderr: '',
+			timedOut: false
+		}
+		*/
+	}
+})();
+
+// Catching an error with a sync method
+try {
+	execa.shellSync('exit 3');
+} catch (error) {
+	console.log(error);
+	/*
+	{
+		message: 'Command failed: /bin/sh -c exit 3'
+		code: 3,
+		signal: null,
+		cmd: '/bin/sh -c exit 3',
+		stdout: '',
+		stderr: '',
+		timedOut: false
+	}
+	*/
+}
+```
+
+
+## API
+
+### execa(file, [arguments], [options])
+
+Execute a file.
+
+Think of this as a mix of `child_process.execFile` and `child_process.spawn`.
+
+Returns a [`child_process` instance](https://nodejs.org/api/child_process.html#child_process_class_childprocess), which is enhanced to also be a `Promise` for a result `Object` with `stdout` and `stderr` properties.
+
+### execa.stdout(file, [arguments], [options])
+
+Same as `execa()`, but returns only `stdout`.
+
+### execa.stderr(file, [arguments], [options])
+
+Same as `execa()`, but returns only `stderr`.
+
+### execa.shell(command, [options])
+
+Execute a command through the system shell. Prefer `execa()` whenever possible, as it's both faster and safer.
+
+Returns a [`child_process` instance](https://nodejs.org/api/child_process.html#child_process_class_childprocess).
+
+The `child_process` instance is enhanced to also be promise for a result object with `stdout` and `stderr` properties.
+
+### execa.sync(file, [arguments], [options])
+
+Execute a file synchronously.
+
+Returns the same result object as [`child_process.spawnSync`](https://nodejs.org/api/child_process.html#child_process_child_process_spawnsync_command_args_options).
+
+This method throws an `Error` if the command fails.
+
+### execa.shellSync(file, [options])
+
+Execute a command synchronously through the system shell.
+
+Returns the same result object as [`child_process.spawnSync`](https://nodejs.org/api/child_process.html#child_process_child_process_spawnsync_command_args_options).
+
+### options
+
+Type: `Object`
+
+#### cwd
+
+Type: `string`<br>
+Default: `process.cwd()`
+
+Current working directory of the child process.
+
+#### env
+
+Type: `Object`<br>
+Default: `process.env`
+
+Environment key-value pairs. Extends automatically from `process.env`. Set `extendEnv` to `false` if you don't want this.
+
+#### extendEnv
+
+Type: `boolean`<br>
+Default: `true`
+
+Set to `false` if you don't want to extend the environment variables when providing the `env` property.
+
+#### argv0
+
+Type: `string`
+
+Explicitly set the value of `argv[0]` sent to the child process. This will be set to `command` or `file` if not specified.
+
+#### stdio
+
+Type: `string[]` `string`<br>
+Default: `pipe`
+
+Child's [stdio](https://nodejs.org/api/child_process.html#child_process_options_stdio) configuration.
+
+#### detached
+
+Type: `boolean`
+
+Prepare child to run independently of its parent process. Specific behavior [depends on the platform](https://nodejs.org/api/child_process.html#child_process_options_detached).
+
+#### uid
+
+Type: `number`
+
+Sets the user identity of the process.
+
+#### gid
+
+Type: `number`
+
+Sets the group identity of the process.
+
+#### shell
+
+Type: `boolean` `string`<br>
+Default: `false`
+
+If `true`, runs `command` inside of a shell. Uses `/bin/sh` on UNIX and `cmd.exe` on Windows. A different shell can be specified as a string. The shell should understand the `-c` switch on UNIX or `/d /s /c` on Windows.
+
+#### stripEof
+
+Type: `boolean`<br>
+Default: `true`
+
+[Strip EOF](https://github.com/sindresorhus/strip-eof) (last newline) from the output.
+
+#### preferLocal
+
+Type: `boolean`<br>
+Default: `true`
+
+Prefer locally installed binaries when looking for a binary to execute.<br>
+If you `$ npm install foo`, you can then `execa('foo')`.
+
+#### localDir
+
+Type: `string`<br>
+Default: `process.cwd()`
+
+Preferred path to find locally installed binaries in (use with `preferLocal`).
+
+#### input
+
+Type: `string` `Buffer` `stream.Readable`
+
+Write some input to the `stdin` of your binary.<br>
+Streams are not allowed when using the synchronous methods.
+
+#### reject
+
+Type: `boolean`<br>
+Default: `true`
+
+Setting this to `false` resolves the promise with the error instead of rejecting it.
+
+#### cleanup
+
+Type: `boolean`<br>
+Default: `true`
+
+Keep track of the spawned process and `kill` it when the parent process exits.
+
+#### encoding
+
+Type: `string`<br>
+Default: `utf8`
+
+Specify the character encoding used to decode the `stdout` and `stderr` output.
+
+#### timeout
+
+Type: `number`<br>
+Default: `0`
+
+If timeout is greater than `0`, the parent will send the signal identified by the `killSignal` property (the default is `SIGTERM`) if the child runs longer than timeout milliseconds.
+
+#### buffer
+
+Type: `boolean`<br>
+Default: `true`
+
+Buffer the output from the spawned process. When buffering is disabled you must consume the output of the `stdout` and `stderr` streams because the promise will not be resolved/rejected until they have completed.
+
+#### maxBuffer
+
+Type: `number`<br>
+Default: `10000000` (10MB)
+
+Largest amount of data in bytes allowed on `stdout` or `stderr`.
+
+#### killSignal
+
+Type: `string` `number`<br>
+Default: `SIGTERM`
+
+Signal value to be used when the spawned process will be killed.
+
+#### stdin
+
+Type: `string` `number` `Stream` `undefined` `null`<br>
+Default: `pipe`
+
+Same options as [`stdio`](https://nodejs.org/dist/latest-v6.x/docs/api/child_process.html#child_process_options_stdio).
+
+#### stdout
+
+Type: `string` `number` `Stream` `undefined` `null`<br>
+Default: `pipe`
+
+Same options as [`stdio`](https://nodejs.org/dist/latest-v6.x/docs/api/child_process.html#child_process_options_stdio).
+
+#### stderr
+
+Type: `string` `number` `Stream` `undefined` `null`<br>
+Default: `pipe`
+
+Same options as [`stdio`](https://nodejs.org/dist/latest-v6.x/docs/api/child_process.html#child_process_options_stdio).
+
+#### windowsVerbatimArguments
+
+Type: `boolean`<br>
+Default: `false`
+
+If `true`, no quoting or escaping of arguments is done on Windows. Ignored on other platforms. This is set to `true` automatically when the `shell` option is `true`.
+
+
+## Tips
+
+### Save and pipe output from a child process
+
+Let's say you want to show the output of a child process in real-time while also saving it to a variable.
+
+```js
+const execa = require('execa');
+const getStream = require('get-stream');
+
+const stream = execa('echo', ['foo']).stdout;
+
+stream.pipe(process.stdout);
+
+getStream(stream).then(value => {
+	console.log('child output:', value);
+});
+```
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/setup-maven/node_modules/get-stream/buffer-stream.js b/setup-maven/node_modules/get-stream/buffer-stream.js
new file mode 100644
index 0000000..4121c8e
--- /dev/null
+++ b/setup-maven/node_modules/get-stream/buffer-stream.js
@@ -0,0 +1,51 @@
+'use strict';
+const {PassThrough} = require('stream');
+
+module.exports = options => {
+	options = Object.assign({}, options);
+
+	const {array} = options;
+	let {encoding} = options;
+	const buffer = encoding === 'buffer';
+	let objectMode = false;
+
+	if (array) {
+		objectMode = !(encoding || buffer);
+	} else {
+		encoding = encoding || 'utf8';
+	}
+
+	if (buffer) {
+		encoding = null;
+	}
+
+	let len = 0;
+	const ret = [];
+	const stream = new PassThrough({objectMode});
+
+	if (encoding) {
+		stream.setEncoding(encoding);
+	}
+
+	stream.on('data', chunk => {
+		ret.push(chunk);
+
+		if (objectMode) {
+			len = ret.length;
+		} else {
+			len += chunk.length;
+		}
+	});
+
+	stream.getBufferedValue = () => {
+		if (array) {
+			return ret;
+		}
+
+		return buffer ? Buffer.concat(ret, len) : ret.join('');
+	};
+
+	stream.getBufferedLength = () => len;
+
+	return stream;
+};
diff --git a/setup-maven/node_modules/get-stream/index.js b/setup-maven/node_modules/get-stream/index.js
new file mode 100644
index 0000000..7e5584a
--- /dev/null
+++ b/setup-maven/node_modules/get-stream/index.js
@@ -0,0 +1,50 @@
+'use strict';
+const pump = require('pump');
+const bufferStream = require('./buffer-stream');
+
+class MaxBufferError extends Error {
+	constructor() {
+		super('maxBuffer exceeded');
+		this.name = 'MaxBufferError';
+	}
+}
+
+function getStream(inputStream, options) {
+	if (!inputStream) {
+		return Promise.reject(new Error('Expected a stream'));
+	}
+
+	options = Object.assign({maxBuffer: Infinity}, options);
+
+	const {maxBuffer} = options;
+
+	let stream;
+	return new Promise((resolve, reject) => {
+		const rejectPromise = error => {
+			if (error) { // A null check
+				error.bufferedData = stream.getBufferedValue();
+			}
+			reject(error);
+		};
+
+		stream = pump(inputStream, bufferStream(options), error => {
+			if (error) {
+				rejectPromise(error);
+				return;
+			}
+
+			resolve();
+		});
+
+		stream.on('data', () => {
+			if (stream.getBufferedLength() > maxBuffer) {
+				rejectPromise(new MaxBufferError());
+			}
+		});
+	}).then(() => stream.getBufferedValue());
+}
+
+module.exports = getStream;
+module.exports.buffer = (stream, options) => getStream(stream, Object.assign({}, options, {encoding: 'buffer'}));
+module.exports.array = (stream, options) => getStream(stream, Object.assign({}, options, {array: true}));
+module.exports.MaxBufferError = MaxBufferError;
diff --git a/setup-maven/node_modules/get-stream/license b/setup-maven/node_modules/get-stream/license
new file mode 100644
index 0000000..e7af2f7
--- /dev/null
+++ b/setup-maven/node_modules/get-stream/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/setup-maven/node_modules/get-stream/package.json b/setup-maven/node_modules/get-stream/package.json
new file mode 100644
index 0000000..9a3f660
--- /dev/null
+++ b/setup-maven/node_modules/get-stream/package.json
@@ -0,0 +1,78 @@
+{
+  "_from": "get-stream@^4.0.0",
+  "_id": "get-stream@4.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+  "_location": "/get-stream",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "get-stream@^4.0.0",
+    "name": "get-stream",
+    "escapedName": "get-stream",
+    "rawSpec": "^4.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^4.0.0"
+  },
+  "_requiredBy": [
+    "/execa"
+  ],
+  "_resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+  "_shasum": "c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5",
+  "_spec": "get-stream@^4.0.0",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/execa",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/get-stream/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "pump": "^3.0.0"
+  },
+  "deprecated": false,
+  "description": "Get a stream as a string, buffer, or array",
+  "devDependencies": {
+    "ava": "*",
+    "into-stream": "^3.0.0",
+    "xo": "*"
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "index.js",
+    "buffer-stream.js"
+  ],
+  "homepage": "https://github.com/sindresorhus/get-stream#readme",
+  "keywords": [
+    "get",
+    "stream",
+    "promise",
+    "concat",
+    "string",
+    "text",
+    "buffer",
+    "read",
+    "data",
+    "consume",
+    "readable",
+    "readablestream",
+    "array",
+    "object"
+  ],
+  "license": "MIT",
+  "name": "get-stream",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/get-stream.git"
+  },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "4.1.0"
+}
diff --git a/setup-maven/node_modules/get-stream/readme.md b/setup-maven/node_modules/get-stream/readme.md
new file mode 100644
index 0000000..b87a4d3
--- /dev/null
+++ b/setup-maven/node_modules/get-stream/readme.md
@@ -0,0 +1,123 @@
+# get-stream [![Build Status](https://travis-ci.org/sindresorhus/get-stream.svg?branch=master)](https://travis-ci.org/sindresorhus/get-stream)
+
+> Get a stream as a string, buffer, or array
+
+
+## Install
+
+```
+$ npm install get-stream
+```
+
+
+## Usage
+
+```js
+const fs = require('fs');
+const getStream = require('get-stream');
+
+(async () => {
+	const stream = fs.createReadStream('unicorn.txt');
+
+	console.log(await getStream(stream));
+	/*
+	              ,,))))))));,
+	           __)))))))))))))),
+	\|/       -\(((((''''((((((((.
+	-*-==//////((''  .     `)))))),
+	/|\      ))| o    ;-.    '(((((                                  ,(,
+	         ( `|    /  )    ;))))'                               ,_))^;(~
+	            |   |   |   ,))((((_     _____------~~~-.        %,;(;(>';'~
+	            o_);   ;    )))(((` ~---~  `::           \      %%~~)(v;(`('~
+	                  ;    ''''````         `:       `:::|\,__,%%    );`'; ~
+	                 |   _                )     /      `:|`----'     `-'
+	           ______/\/~    |                 /        /
+	         /~;;.____/;;'  /          ___--,-(   `;;;/
+	        / //  _;______;'------~~~~~    /;;/\    /
+	       //  | |                        / ;   \;;,\
+	      (<_  | ;                      /',/-----'  _>
+	       \_| ||_                     //~;~~~~~~~~~
+	           `\_|                   (,~~
+	                                   \~\
+	                                    ~~
+	*/
+})();
+```
+
+
+## API
+
+The methods returns a promise that resolves when the `end` event fires on the stream, indicating that there is no more data to be read. The stream is switched to flowing mode.
+
+### getStream(stream, [options])
+
+Get the `stream` as a string.
+
+#### options
+
+Type: `Object`
+
+##### encoding
+
+Type: `string`<br>
+Default: `utf8`
+
+[Encoding](https://nodejs.org/api/buffer.html#buffer_buffer) of the incoming stream.
+
+##### maxBuffer
+
+Type: `number`<br>
+Default: `Infinity`
+
+Maximum length of the returned string. If it exceeds this value before the stream ends, the promise will be rejected with a `getStream.MaxBufferError` error.
+
+### getStream.buffer(stream, [options])
+
+Get the `stream` as a buffer.
+
+It honors the `maxBuffer` option as above, but it refers to byte length rather than string length.
+
+### getStream.array(stream, [options])
+
+Get the `stream` as an array of values.
+
+It honors both the `maxBuffer` and `encoding` options. The behavior changes slightly based on the encoding chosen:
+
+- When `encoding` is unset, it assumes an [object mode stream](https://nodesource.com/blog/understanding-object-streams/) and collects values emitted from `stream` unmodified. In this case `maxBuffer` refers to the number of items in the array (not the sum of their sizes).
+
+- When `encoding` is set to `buffer`, it collects an array of buffers. `maxBuffer` refers to the summed byte lengths of every buffer in the array.
+
+- When `encoding` is set to anything else, it collects an array of strings. `maxBuffer` refers to the summed character lengths of every string in the array.
+
+
+## Errors
+
+If the input stream emits an `error` event, the promise will be rejected with the error. The buffered data will be attached to the `bufferedData` property of the error.
+
+```js
+(async () => {
+	try {
+		await getStream(streamThatErrorsAtTheEnd('unicorn'));
+	} catch (error) {
+		console.log(error.bufferedData);
+		//=> 'unicorn'
+	}
+})()
+```
+
+
+## FAQ
+
+### How is this different from [`concat-stream`](https://github.com/maxogden/concat-stream)?
+
+This module accepts a stream instead of being one and returns a promise instead of using a callback. The API is simpler and it only supports returning a string, buffer, or array. It doesn't have a fragile type inference. You explicitly choose what you want. And it doesn't depend on the huge `readable-stream` package.
+
+
+## Related
+
+- [get-stdin](https://github.com/sindresorhus/get-stdin) - Get stdin as a string or buffer
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/setup-maven/node_modules/is-plain-object/LICENSE b/setup-maven/node_modules/is-plain-object/LICENSE
new file mode 100644
index 0000000..3f2eca1
--- /dev/null
+++ b/setup-maven/node_modules/is-plain-object/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014-2017, Jon Schlinkert.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/setup-maven/node_modules/is-plain-object/README.md b/setup-maven/node_modules/is-plain-object/README.md
new file mode 100644
index 0000000..60b7b59
--- /dev/null
+++ b/setup-maven/node_modules/is-plain-object/README.md
@@ -0,0 +1,119 @@
+# is-plain-object [![NPM version](https://img.shields.io/npm/v/is-plain-object.svg?style=flat)](https://www.npmjs.com/package/is-plain-object) [![NPM monthly downloads](https://img.shields.io/npm/dm/is-plain-object.svg?style=flat)](https://npmjs.org/package/is-plain-object) [![NPM total downloads](https://img.shields.io/npm/dt/is-plain-object.svg?style=flat)](https://npmjs.org/package/is-plain-object) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/is-plain-object.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/is-plain-object)
+
+> Returns true if an object was created by the `Object` constructor.
+
+Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support.
+
+## Install
+
+Install with [npm](https://www.npmjs.com/):
+
+```sh
+$ npm install --save is-plain-object
+```
+
+Use [isobject](https://github.com/jonschlinkert/isobject) if you only want to check if the value is an object and not an array or null.
+
+## Usage
+
+```js
+import isPlainObject from 'is-plain-object';
+```
+
+**true** when created by the `Object` constructor.
+
+```js
+isPlainObject(Object.create({}));
+//=> true
+isPlainObject(Object.create(Object.prototype));
+//=> true
+isPlainObject({foo: 'bar'});
+//=> true
+isPlainObject({});
+//=> true
+```
+
+**false** when not created by the `Object` constructor.
+
+```js
+isPlainObject(1);
+//=> false
+isPlainObject(['foo', 'bar']);
+//=> false
+isPlainObject([]);
+//=> false
+isPlainObject(new Foo);
+//=> false
+isPlainObject(null);
+//=> false
+isPlainObject(Object.create(null));
+//=> false
+```
+
+## About
+
+<details>
+<summary><strong>Contributing</strong></summary>
+
+Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
+
+</details>
+
+<details>
+<summary><strong>Running Tests</strong></summary>
+
+Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
+
+```sh
+$ npm install && npm test
+```
+
+</details>
+
+<details>
+<summary><strong>Building docs</strong></summary>
+
+_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
+
+To generate the readme, run the following command:
+
+```sh
+$ npm install -g verbose/verb#dev verb-generate-readme && verb
+```
+
+</details>
+
+### Related projects
+
+You might also be interested in these projects:
+
+* [is-number](https://www.npmjs.com/package/is-number): Returns true if a number or string value is a finite number. Useful for regex… [more](https://github.com/jonschlinkert/is-number) | [homepage](https://github.com/jonschlinkert/is-number "Returns true if a number or string value is a finite number. Useful for regex matches, parsing, user input, etc.")
+* [isobject](https://www.npmjs.com/package/isobject): Returns true if the value is an object and not an array or null. | [homepage](https://github.com/jonschlinkert/isobject "Returns true if the value is an object and not an array or null.")
+* [kind-of](https://www.npmjs.com/package/kind-of): Get the native type of a value. | [homepage](https://github.com/jonschlinkert/kind-of "Get the native type of a value.")
+
+### Contributors
+
+| **Commits** | **Contributor** |  
+| --- | --- |  
+| 19 | [jonschlinkert](https://github.com/jonschlinkert) |  
+| 6  | [TrySound](https://github.com/TrySound) |  
+| 6  | [stevenvachon](https://github.com/stevenvachon) |  
+| 3  | [onokumus](https://github.com/onokumus) |  
+| 1  | [wtgtybhertgeghgtwtg](https://github.com/wtgtybhertgeghgtwtg) |  
+
+### Author
+
+**Jon Schlinkert**
+
+* [GitHub Profile](https://github.com/jonschlinkert)
+* [Twitter Profile](https://twitter.com/jonschlinkert)
+* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert)
+
+### License
+
+Copyright © 2019, [Jon Schlinkert](https://github.com/jonschlinkert).
+Released under the [MIT License](LICENSE).
+
+***
+
+_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.8.0, on April 28, 2019._
\ No newline at end of file
diff --git a/setup-maven/node_modules/is-plain-object/index.cjs.js b/setup-maven/node_modules/is-plain-object/index.cjs.js
new file mode 100644
index 0000000..d7dda95
--- /dev/null
+++ b/setup-maven/node_modules/is-plain-object/index.cjs.js
@@ -0,0 +1,48 @@
+'use strict';
+
+/*!
+ * isobject <https://github.com/jonschlinkert/isobject>
+ *
+ * Copyright (c) 2014-2017, Jon Schlinkert.
+ * Released under the MIT License.
+ */
+
+function isObject(val) {
+  return val != null && typeof val === 'object' && Array.isArray(val) === false;
+}
+
+/*!
+ * is-plain-object <https://github.com/jonschlinkert/is-plain-object>
+ *
+ * Copyright (c) 2014-2017, Jon Schlinkert.
+ * Released under the MIT License.
+ */
+
+function isObjectObject(o) {
+  return isObject(o) === true
+    && Object.prototype.toString.call(o) === '[object Object]';
+}
+
+function isPlainObject(o) {
+  var ctor,prot;
+
+  if (isObjectObject(o) === false) return false;
+
+  // If has modified constructor
+  ctor = o.constructor;
+  if (typeof ctor !== 'function') return false;
+
+  // If has modified prototype
+  prot = ctor.prototype;
+  if (isObjectObject(prot) === false) return false;
+
+  // If constructor does not have an Object-specific method
+  if (prot.hasOwnProperty('isPrototypeOf') === false) {
+    return false;
+  }
+
+  // Most likely a plain Object
+  return true;
+}
+
+module.exports = isPlainObject;
diff --git a/setup-maven/node_modules/is-plain-object/index.d.ts b/setup-maven/node_modules/is-plain-object/index.d.ts
new file mode 100644
index 0000000..fd131f0
--- /dev/null
+++ b/setup-maven/node_modules/is-plain-object/index.d.ts
@@ -0,0 +1,3 @@
+declare function isPlainObject(o: any): boolean;
+
+export default isPlainObject;
diff --git a/setup-maven/node_modules/is-plain-object/index.js b/setup-maven/node_modules/is-plain-object/index.js
new file mode 100644
index 0000000..565ce9e
--- /dev/null
+++ b/setup-maven/node_modules/is-plain-object/index.js
@@ -0,0 +1,35 @@
+/*!
+ * is-plain-object <https://github.com/jonschlinkert/is-plain-object>
+ *
+ * Copyright (c) 2014-2017, Jon Schlinkert.
+ * Released under the MIT License.
+ */
+
+import isObject from 'isobject';
+
+function isObjectObject(o) {
+  return isObject(o) === true
+    && Object.prototype.toString.call(o) === '[object Object]';
+}
+
+export default function isPlainObject(o) {
+  var ctor,prot;
+
+  if (isObjectObject(o) === false) return false;
+
+  // If has modified constructor
+  ctor = o.constructor;
+  if (typeof ctor !== 'function') return false;
+
+  // If has modified prototype
+  prot = ctor.prototype;
+  if (isObjectObject(prot) === false) return false;
+
+  // If constructor does not have an Object-specific method
+  if (prot.hasOwnProperty('isPrototypeOf') === false) {
+    return false;
+  }
+
+  // Most likely a plain Object
+  return true;
+};
diff --git a/setup-maven/node_modules/is-plain-object/package.json b/setup-maven/node_modules/is-plain-object/package.json
new file mode 100644
index 0000000..45f716c
--- /dev/null
+++ b/setup-maven/node_modules/is-plain-object/package.json
@@ -0,0 +1,125 @@
+{
+  "_from": "is-plain-object@^3.0.0",
+  "_id": "is-plain-object@3.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==",
+  "_location": "/is-plain-object",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "is-plain-object@^3.0.0",
+    "name": "is-plain-object",
+    "escapedName": "is-plain-object",
+    "rawSpec": "^3.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^3.0.0"
+  },
+  "_requiredBy": [
+    "/@octokit/endpoint",
+    "/@octokit/request"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.0.tgz",
+  "_shasum": "47bfc5da1b5d50d64110806c199359482e75a928",
+  "_spec": "is-plain-object@^3.0.0",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/@octokit/request",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
+  "bugs": {
+    "url": "https://github.com/jonschlinkert/is-plain-object/issues"
+  },
+  "bundleDependencies": false,
+  "contributors": [
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    },
+    {
+      "name": "Osman Nuri Okumuş",
+      "url": "http://onokumus.com"
+    },
+    {
+      "name": "Steven Vachon",
+      "url": "https://svachon.com"
+    },
+    {
+      "url": "https://github.com/wtgtybhertgeghgtwtg"
+    }
+  ],
+  "dependencies": {
+    "isobject": "^4.0.0"
+  },
+  "deprecated": false,
+  "description": "Returns true if an object was created by the `Object` constructor.",
+  "devDependencies": {
+    "chai": "^4.2.0",
+    "esm": "^3.2.22",
+    "gulp-format-md": "^1.0.0",
+    "mocha": "^6.1.4",
+    "mocha-headless-chrome": "^2.0.2",
+    "rollup": "^1.10.1",
+    "rollup-plugin-node-resolve": "^4.2.3"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.d.ts",
+    "index.js",
+    "index.cjs.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/is-plain-object",
+  "keywords": [
+    "check",
+    "is",
+    "is-object",
+    "isobject",
+    "javascript",
+    "kind",
+    "kind-of",
+    "object",
+    "plain",
+    "type",
+    "typeof",
+    "value"
+  ],
+  "license": "MIT",
+  "main": "index.cjs.js",
+  "module": "index.js",
+  "name": "is-plain-object",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/is-plain-object.git"
+  },
+  "scripts": {
+    "build": "rollup -c",
+    "prepare": "rollup -c",
+    "test": "npm run test_node && npm run build && npm run test_browser",
+    "test_browser": "mocha-headless-chrome --args=disable-web-security -f test/browser.html",
+    "test_node": "mocha -r esm"
+  },
+  "types": "index.d.ts",
+  "verb": {
+    "toc": false,
+    "layout": "default",
+    "tasks": [
+      "readme"
+    ],
+    "plugins": [
+      "gulp-format-md"
+    ],
+    "related": {
+      "list": [
+        "is-number",
+        "isobject",
+        "kind-of"
+      ]
+    },
+    "lint": {
+      "reflinks": true
+    }
+  },
+  "version": "3.0.0"
+}
diff --git a/setup-maven/node_modules/is-stream/index.js b/setup-maven/node_modules/is-stream/index.js
new file mode 100644
index 0000000..6f7ec91
--- /dev/null
+++ b/setup-maven/node_modules/is-stream/index.js
@@ -0,0 +1,21 @@
+'use strict';
+
+var isStream = module.exports = function (stream) {
+	return stream !== null && typeof stream === 'object' && typeof stream.pipe === 'function';
+};
+
+isStream.writable = function (stream) {
+	return isStream(stream) && stream.writable !== false && typeof stream._write === 'function' && typeof stream._writableState === 'object';
+};
+
+isStream.readable = function (stream) {
+	return isStream(stream) && stream.readable !== false && typeof stream._read === 'function' && typeof stream._readableState === 'object';
+};
+
+isStream.duplex = function (stream) {
+	return isStream.writable(stream) && isStream.readable(stream);
+};
+
+isStream.transform = function (stream) {
+	return isStream.duplex(stream) && typeof stream._transform === 'function' && typeof stream._transformState === 'object';
+};
diff --git a/setup-maven/node_modules/is-stream/license b/setup-maven/node_modules/is-stream/license
new file mode 100644
index 0000000..654d0bf
--- /dev/null
+++ b/setup-maven/node_modules/is-stream/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/setup-maven/node_modules/is-stream/package.json b/setup-maven/node_modules/is-stream/package.json
new file mode 100644
index 0000000..da4d0f8
--- /dev/null
+++ b/setup-maven/node_modules/is-stream/package.json
@@ -0,0 +1,70 @@
+{
+  "_from": "is-stream@^1.1.0",
+  "_id": "is-stream@1.1.0",
+  "_inBundle": false,
+  "_integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
+  "_location": "/is-stream",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "is-stream@^1.1.0",
+    "name": "is-stream",
+    "escapedName": "is-stream",
+    "rawSpec": "^1.1.0",
+    "saveSpec": null,
+    "fetchSpec": "^1.1.0"
+  },
+  "_requiredBy": [
+    "/execa"
+  ],
+  "_resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+  "_shasum": "12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44",
+  "_spec": "is-stream@^1.1.0",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/execa",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/is-stream/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "Check if something is a Node.js stream",
+  "devDependencies": {
+    "ava": "*",
+    "tempfile": "^1.1.0",
+    "xo": "*"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/sindresorhus/is-stream#readme",
+  "keywords": [
+    "stream",
+    "type",
+    "streams",
+    "writable",
+    "readable",
+    "duplex",
+    "transform",
+    "check",
+    "detect",
+    "is"
+  ],
+  "license": "MIT",
+  "name": "is-stream",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/is-stream.git"
+  },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "1.1.0"
+}
diff --git a/setup-maven/node_modules/is-stream/readme.md b/setup-maven/node_modules/is-stream/readme.md
new file mode 100644
index 0000000..d8afce8
--- /dev/null
+++ b/setup-maven/node_modules/is-stream/readme.md
@@ -0,0 +1,42 @@
+# is-stream [![Build Status](https://travis-ci.org/sindresorhus/is-stream.svg?branch=master)](https://travis-ci.org/sindresorhus/is-stream)
+
+> Check if something is a [Node.js stream](https://nodejs.org/api/stream.html)
+
+
+## Install
+
+```
+$ npm install --save is-stream
+```
+
+
+## Usage
+
+```js
+const fs = require('fs');
+const isStream = require('is-stream');
+
+isStream(fs.createReadStream('unicorn.png'));
+//=> true
+
+isStream({});
+//=> false
+```
+
+
+## API
+
+### isStream(stream)
+
+#### isStream.writable(stream)
+
+#### isStream.readable(stream)
+
+#### isStream.duplex(stream)
+
+#### isStream.transform(stream)
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/setup-maven/node_modules/isexe/.npmignore b/setup-maven/node_modules/isexe/.npmignore
new file mode 100644
index 0000000..c1cb757
--- /dev/null
+++ b/setup-maven/node_modules/isexe/.npmignore
@@ -0,0 +1,2 @@
+.nyc_output/
+coverage/
diff --git a/setup-maven/node_modules/isexe/LICENSE b/setup-maven/node_modules/isexe/LICENSE
new file mode 100644
index 0000000..19129e3
--- /dev/null
+++ b/setup-maven/node_modules/isexe/LICENSE
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/setup-maven/node_modules/isexe/README.md b/setup-maven/node_modules/isexe/README.md
new file mode 100644
index 0000000..35769e8
--- /dev/null
+++ b/setup-maven/node_modules/isexe/README.md
@@ -0,0 +1,51 @@
+# isexe
+
+Minimal module to check if a file is executable, and a normal file.
+
+Uses `fs.stat` and tests against the `PATHEXT` environment variable on
+Windows.
+
+## USAGE
+
+```javascript
+var isexe = require('isexe')
+isexe('some-file-name', function (err, isExe) {
+  if (err) {
+    console.error('probably file does not exist or something', err)
+  } else if (isExe) {
+    console.error('this thing can be run')
+  } else {
+    console.error('cannot be run')
+  }
+})
+
+// same thing but synchronous, throws errors
+var isExe = isexe.sync('some-file-name')
+
+// treat errors as just "not executable"
+isexe('maybe-missing-file', { ignoreErrors: true }, callback)
+var isExe = isexe.sync('maybe-missing-file', { ignoreErrors: true })
+```
+
+## API
+
+### `isexe(path, [options], [callback])`
+
+Check if the path is executable.  If no callback provided, and a
+global `Promise` object is available, then a Promise will be returned.
+
+Will raise whatever errors may be raised by `fs.stat`, unless
+`options.ignoreErrors` is set to true.
+
+### `isexe.sync(path, [options])`
+
+Same as `isexe` but returns the value and throws any errors raised.
+
+### Options
+
+* `ignoreErrors` Treat all errors as "no, this is not executable", but
+  don't raise them.
+* `uid` Number to use as the user id
+* `gid` Number to use as the group id
+* `pathExt` List of path extensions to use instead of `PATHEXT`
+  environment variable on Windows.
diff --git a/setup-maven/node_modules/isexe/index.js b/setup-maven/node_modules/isexe/index.js
new file mode 100644
index 0000000..553fb32
--- /dev/null
+++ b/setup-maven/node_modules/isexe/index.js
@@ -0,0 +1,57 @@
+var fs = require('fs')
+var core
+if (process.platform === 'win32' || global.TESTING_WINDOWS) {
+  core = require('./windows.js')
+} else {
+  core = require('./mode.js')
+}
+
+module.exports = isexe
+isexe.sync = sync
+
+function isexe (path, options, cb) {
+  if (typeof options === 'function') {
+    cb = options
+    options = {}
+  }
+
+  if (!cb) {
+    if (typeof Promise !== 'function') {
+      throw new TypeError('callback not provided')
+    }
+
+    return new Promise(function (resolve, reject) {
+      isexe(path, options || {}, function (er, is) {
+        if (er) {
+          reject(er)
+        } else {
+          resolve(is)
+        }
+      })
+    })
+  }
+
+  core(path, options || {}, function (er, is) {
+    // ignore EACCES because that just means we aren't allowed to run it
+    if (er) {
+      if (er.code === 'EACCES' || options && options.ignoreErrors) {
+        er = null
+        is = false
+      }
+    }
+    cb(er, is)
+  })
+}
+
+function sync (path, options) {
+  // my kingdom for a filtered catch
+  try {
+    return core.sync(path, options || {})
+  } catch (er) {
+    if (options && options.ignoreErrors || er.code === 'EACCES') {
+      return false
+    } else {
+      throw er
+    }
+  }
+}
diff --git a/setup-maven/node_modules/isexe/mode.js b/setup-maven/node_modules/isexe/mode.js
new file mode 100644
index 0000000..1995ea4
--- /dev/null
+++ b/setup-maven/node_modules/isexe/mode.js
@@ -0,0 +1,41 @@
+module.exports = isexe
+isexe.sync = sync
+
+var fs = require('fs')
+
+function isexe (path, options, cb) {
+  fs.stat(path, function (er, stat) {
+    cb(er, er ? false : checkStat(stat, options))
+  })
+}
+
+function sync (path, options) {
+  return checkStat(fs.statSync(path), options)
+}
+
+function checkStat (stat, options) {
+  return stat.isFile() && checkMode(stat, options)
+}
+
+function checkMode (stat, options) {
+  var mod = stat.mode
+  var uid = stat.uid
+  var gid = stat.gid
+
+  var myUid = options.uid !== undefined ?
+    options.uid : process.getuid && process.getuid()
+  var myGid = options.gid !== undefined ?
+    options.gid : process.getgid && process.getgid()
+
+  var u = parseInt('100', 8)
+  var g = parseInt('010', 8)
+  var o = parseInt('001', 8)
+  var ug = u | g
+
+  var ret = (mod & o) ||
+    (mod & g) && gid === myGid ||
+    (mod & u) && uid === myUid ||
+    (mod & ug) && myUid === 0
+
+  return ret
+}
diff --git a/setup-maven/node_modules/isexe/package.json b/setup-maven/node_modules/isexe/package.json
new file mode 100644
index 0000000..4788f40
--- /dev/null
+++ b/setup-maven/node_modules/isexe/package.json
@@ -0,0 +1,60 @@
+{
+  "_from": "isexe@^2.0.0",
+  "_id": "isexe@2.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+  "_location": "/isexe",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "isexe@^2.0.0",
+    "name": "isexe",
+    "escapedName": "isexe",
+    "rawSpec": "^2.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^2.0.0"
+  },
+  "_requiredBy": [
+    "/which"
+  ],
+  "_resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+  "_shasum": "e8fbf374dc556ff8947a10dcb0572d633f2cfa10",
+  "_spec": "isexe@^2.0.0",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/which",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "http://blog.izs.me/"
+  },
+  "bugs": {
+    "url": "https://github.com/isaacs/isexe/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "Minimal module to check if a file is executable.",
+  "devDependencies": {
+    "mkdirp": "^0.5.1",
+    "rimraf": "^2.5.0",
+    "tap": "^10.3.0"
+  },
+  "directories": {
+    "test": "test"
+  },
+  "homepage": "https://github.com/isaacs/isexe#readme",
+  "keywords": [],
+  "license": "ISC",
+  "main": "index.js",
+  "name": "isexe",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/isaacs/isexe.git"
+  },
+  "scripts": {
+    "postpublish": "git push origin --all; git push origin --tags",
+    "postversion": "npm publish",
+    "preversion": "npm test",
+    "test": "tap test/*.js --100"
+  },
+  "version": "2.0.0"
+}
diff --git a/setup-maven/node_modules/isexe/test/basic.js b/setup-maven/node_modules/isexe/test/basic.js
new file mode 100644
index 0000000..d926df6
--- /dev/null
+++ b/setup-maven/node_modules/isexe/test/basic.js
@@ -0,0 +1,221 @@
+var t = require('tap')
+var fs = require('fs')
+var path = require('path')
+var fixture = path.resolve(__dirname, 'fixtures')
+var meow = fixture + '/meow.cat'
+var mine = fixture + '/mine.cat'
+var ours = fixture + '/ours.cat'
+var fail = fixture + '/fail.false'
+var noent = fixture + '/enoent.exe'
+var mkdirp = require('mkdirp')
+var rimraf = require('rimraf')
+
+var isWindows = process.platform === 'win32'
+var hasAccess = typeof fs.access === 'function'
+var winSkip = isWindows && 'windows'
+var accessSkip = !hasAccess && 'no fs.access function'
+var hasPromise = typeof Promise === 'function'
+var promiseSkip = !hasPromise && 'no global Promise'
+
+function reset () {
+  delete require.cache[require.resolve('../')]
+  return require('../')
+}
+
+t.test('setup fixtures', function (t) {
+  rimraf.sync(fixture)
+  mkdirp.sync(fixture)
+  fs.writeFileSync(meow, '#!/usr/bin/env cat\nmeow\n')
+  fs.chmodSync(meow, parseInt('0755', 8))
+  fs.writeFileSync(fail, '#!/usr/bin/env false\n')
+  fs.chmodSync(fail, parseInt('0644', 8))
+  fs.writeFileSync(mine, '#!/usr/bin/env cat\nmine\n')
+  fs.chmodSync(mine, parseInt('0744', 8))
+  fs.writeFileSync(ours, '#!/usr/bin/env cat\nours\n')
+  fs.chmodSync(ours, parseInt('0754', 8))
+  t.end()
+})
+
+t.test('promise', { skip: promiseSkip }, function (t) {
+  var isexe = reset()
+  t.test('meow async', function (t) {
+    isexe(meow).then(function (is) {
+      t.ok(is)
+      t.end()
+    })
+  })
+  t.test('fail async', function (t) {
+    isexe(fail).then(function (is) {
+      t.notOk(is)
+      t.end()
+    })
+  })
+  t.test('noent async', function (t) {
+    isexe(noent).catch(function (er) {
+      t.ok(er)
+      t.end()
+    })
+  })
+  t.test('noent ignore async', function (t) {
+    isexe(noent, { ignoreErrors: true }).then(function (is) {
+      t.notOk(is)
+      t.end()
+    })
+  })
+  t.end()
+})
+
+t.test('no promise', function (t) {
+  global.Promise = null
+  var isexe = reset()
+  t.throws('try to meow a promise', function () {
+    isexe(meow)
+  })
+  t.end()
+})
+
+t.test('access', { skip: accessSkip || winSkip }, function (t) {
+  runTest(t)
+})
+
+t.test('mode', { skip: winSkip }, function (t) {
+  delete fs.access
+  delete fs.accessSync
+  var isexe = reset()
+  t.ok(isexe.sync(ours, { uid: 0, gid: 0 }))
+  t.ok(isexe.sync(mine, { uid: 0, gid: 0 }))
+  runTest(t)
+})
+
+t.test('windows', function (t) {
+  global.TESTING_WINDOWS = true
+  var pathExt = '.EXE;.CAT;.CMD;.COM'
+  t.test('pathExt option', function (t) {
+    runTest(t, { pathExt: '.EXE;.CAT;.CMD;.COM' })
+  })
+  t.test('pathExt env', function (t) {
+    process.env.PATHEXT = pathExt
+    runTest(t)
+  })
+  t.test('no pathExt', function (t) {
+    // with a pathExt of '', any filename is fine.
+    // so the "fail" one would still pass.
+    runTest(t, { pathExt: '', skipFail: true })
+  })
+  t.test('pathext with empty entry', function (t) {
+    // with a pathExt of '', any filename is fine.
+    // so the "fail" one would still pass.
+    runTest(t, { pathExt: ';' + pathExt, skipFail: true })
+  })
+  t.end()
+})
+
+t.test('cleanup', function (t) {
+  rimraf.sync(fixture)
+  t.end()
+})
+
+function runTest (t, options) {
+  var isexe = reset()
+
+  var optionsIgnore = Object.create(options || {})
+  optionsIgnore.ignoreErrors = true
+
+  if (!options || !options.skipFail) {
+    t.notOk(isexe.sync(fail, options))
+  }
+  t.notOk(isexe.sync(noent, optionsIgnore))
+  if (!options) {
+    t.ok(isexe.sync(meow))
+  } else {
+    t.ok(isexe.sync(meow, options))
+  }
+
+  t.ok(isexe.sync(mine, options))
+  t.ok(isexe.sync(ours, options))
+  t.throws(function () {
+    isexe.sync(noent, options)
+  })
+
+  t.test('meow async', function (t) {
+    if (!options) {
+      isexe(meow, function (er, is) {
+        if (er) {
+          throw er
+        }
+        t.ok(is)
+        t.end()
+      })
+    } else {
+      isexe(meow, options, function (er, is) {
+        if (er) {
+          throw er
+        }
+        t.ok(is)
+        t.end()
+      })
+    }
+  })
+
+  t.test('mine async', function (t) {
+    isexe(mine, options, function (er, is) {
+      if (er) {
+        throw er
+      }
+      t.ok(is)
+      t.end()
+    })
+  })
+
+  t.test('ours async', function (t) {
+    isexe(ours, options, function (er, is) {
+      if (er) {
+        throw er
+      }
+      t.ok(is)
+      t.end()
+    })
+  })
+
+  if (!options || !options.skipFail) {
+    t.test('fail async', function (t) {
+      isexe(fail, options, function (er, is) {
+        if (er) {
+          throw er
+        }
+        t.notOk(is)
+        t.end()
+      })
+    })
+  }
+
+  t.test('noent async', function (t) {
+    isexe(noent, options, function (er, is) {
+      t.ok(er)
+      t.notOk(is)
+      t.end()
+    })
+  })
+
+  t.test('noent ignore async', function (t) {
+    isexe(noent, optionsIgnore, function (er, is) {
+      if (er) {
+        throw er
+      }
+      t.notOk(is)
+      t.end()
+    })
+  })
+
+  t.test('directory is not executable', function (t) {
+    isexe(__dirname, options, function (er, is) {
+      if (er) {
+        throw er
+      }
+      t.notOk(is)
+      t.end()
+    })
+  })
+
+  t.end()
+}
diff --git a/setup-maven/node_modules/isexe/windows.js b/setup-maven/node_modules/isexe/windows.js
new file mode 100644
index 0000000..3499673
--- /dev/null
+++ b/setup-maven/node_modules/isexe/windows.js
@@ -0,0 +1,42 @@
+module.exports = isexe
+isexe.sync = sync
+
+var fs = require('fs')
+
+function checkPathExt (path, options) {
+  var pathext = options.pathExt !== undefined ?
+    options.pathExt : process.env.PATHEXT
+
+  if (!pathext) {
+    return true
+  }
+
+  pathext = pathext.split(';')
+  if (pathext.indexOf('') !== -1) {
+    return true
+  }
+  for (var i = 0; i < pathext.length; i++) {
+    var p = pathext[i].toLowerCase()
+    if (p && path.substr(-p.length).toLowerCase() === p) {
+      return true
+    }
+  }
+  return false
+}
+
+function checkStat (stat, path, options) {
+  if (!stat.isSymbolicLink() && !stat.isFile()) {
+    return false
+  }
+  return checkPathExt(path, options)
+}
+
+function isexe (path, options, cb) {
+  fs.stat(path, function (er, stat) {
+    cb(er, er ? false : checkStat(stat, path, options))
+  })
+}
+
+function sync (path, options) {
+  return checkStat(fs.statSync(path), path, options)
+}
diff --git a/setup-maven/node_modules/isobject/LICENSE b/setup-maven/node_modules/isobject/LICENSE
new file mode 100644
index 0000000..943e71d
--- /dev/null
+++ b/setup-maven/node_modules/isobject/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014-2017, Jon Schlinkert.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
\ No newline at end of file
diff --git a/setup-maven/node_modules/isobject/README.md b/setup-maven/node_modules/isobject/README.md
new file mode 100644
index 0000000..1c6e21f
--- /dev/null
+++ b/setup-maven/node_modules/isobject/README.md
@@ -0,0 +1,127 @@
+# isobject [![NPM version](https://img.shields.io/npm/v/isobject.svg?style=flat)](https://www.npmjs.com/package/isobject) [![NPM monthly downloads](https://img.shields.io/npm/dm/isobject.svg?style=flat)](https://npmjs.org/package/isobject) [![NPM total downloads](https://img.shields.io/npm/dt/isobject.svg?style=flat)](https://npmjs.org/package/isobject) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/isobject.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/isobject)
+
+> Returns true if the value is an object and not an array or null.
+
+Please consider following this project's author, [Jon Schlinkert](https://github.com/jonschlinkert), and consider starring the project to show your :heart: and support.
+
+## Install
+
+Install with [npm](https://www.npmjs.com/):
+
+```sh
+$ npm install --save isobject
+```
+
+Use [is-plain-object](https://github.com/jonschlinkert/is-plain-object) if you want only objects that are created by the `Object` constructor.
+
+## Install
+
+Install with [npm](https://www.npmjs.com/):
+
+```sh
+$ npm install isobject
+```
+
+## Usage
+
+```js
+import isObject from 'isobject';
+```
+
+**True**
+
+All of the following return `true`:
+
+```js
+isObject({});
+isObject(Object.create({}));
+isObject(Object.create(Object.prototype));
+isObject(Object.create(null));
+isObject({});
+isObject(new Foo);
+isObject(/foo/);
+```
+
+**False**
+
+All of the following return `false`:
+
+```js
+isObject();
+isObject(function () {});
+isObject(1);
+isObject([]);
+isObject(undefined);
+isObject(null);
+```
+
+## About
+
+<details>
+<summary><strong>Contributing</strong></summary>
+
+Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).
+
+</details>
+
+<details>
+<summary><strong>Running Tests</strong></summary>
+
+Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
+
+```sh
+$ npm install && npm test
+```
+
+</details>
+
+<details>
+<summary><strong>Building docs</strong></summary>
+
+_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_
+
+To generate the readme, run the following command:
+
+```sh
+$ npm install -g verbose/verb#dev verb-generate-readme && verb
+```
+
+</details>
+
+### Related projects
+
+You might also be interested in these projects:
+
+* [extend-shallow](https://www.npmjs.com/package/extend-shallow): Extend an object with the properties of additional objects. node.js/javascript util. | [homepage](https://github.com/jonschlinkert/extend-shallow "Extend an object with the properties of additional objects. node.js/javascript util.")
+* [is-plain-object](https://www.npmjs.com/package/is-plain-object): Returns true if an object was created by the `Object` constructor. | [homepage](https://github.com/jonschlinkert/is-plain-object "Returns true if an object was created by the `Object` constructor.")
+* [kind-of](https://www.npmjs.com/package/kind-of): Get the native type of a value. | [homepage](https://github.com/jonschlinkert/kind-of "Get the native type of a value.")
+* [merge-deep](https://www.npmjs.com/package/merge-deep): Recursively merge values in a javascript object. | [homepage](https://github.com/jonschlinkert/merge-deep "Recursively merge values in a javascript object.")
+
+### Contributors
+
+| **Commits** | **Contributor** |  
+| --- | --- |  
+| 30 | [jonschlinkert](https://github.com/jonschlinkert) |  
+| 8  | [doowb](https://github.com/doowb) |  
+| 7  | [TrySound](https://github.com/TrySound) |  
+| 3  | [onokumus](https://github.com/onokumus) |  
+| 1  | [LeSuisse](https://github.com/LeSuisse) |  
+| 1  | [tmcw](https://github.com/tmcw) |  
+| 1  | [ZhouHansen](https://github.com/ZhouHansen) |  
+
+### Author
+
+**Jon Schlinkert**
+
+* [GitHub Profile](https://github.com/jonschlinkert)
+* [Twitter Profile](https://twitter.com/jonschlinkert)
+* [LinkedIn Profile](https://linkedin.com/in/jonschlinkert)
+
+### License
+
+Copyright © 2019, [Jon Schlinkert](https://github.com/jonschlinkert).
+Released under the [MIT License](LICENSE).
+
+***
+
+_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.8.0, on April 28, 2019._
\ No newline at end of file
diff --git a/setup-maven/node_modules/isobject/index.cjs.js b/setup-maven/node_modules/isobject/index.cjs.js
new file mode 100644
index 0000000..49debe7
--- /dev/null
+++ b/setup-maven/node_modules/isobject/index.cjs.js
@@ -0,0 +1,14 @@
+'use strict';
+
+/*!
+ * isobject <https://github.com/jonschlinkert/isobject>
+ *
+ * Copyright (c) 2014-2017, Jon Schlinkert.
+ * Released under the MIT License.
+ */
+
+function isObject(val) {
+  return val != null && typeof val === 'object' && Array.isArray(val) === false;
+}
+
+module.exports = isObject;
diff --git a/setup-maven/node_modules/isobject/index.d.ts b/setup-maven/node_modules/isobject/index.d.ts
new file mode 100644
index 0000000..c471c71
--- /dev/null
+++ b/setup-maven/node_modules/isobject/index.d.ts
@@ -0,0 +1,3 @@
+declare function isObject(val: any): boolean;
+
+export default isObject;
diff --git a/setup-maven/node_modules/isobject/index.js b/setup-maven/node_modules/isobject/index.js
new file mode 100644
index 0000000..e9f0382
--- /dev/null
+++ b/setup-maven/node_modules/isobject/index.js
@@ -0,0 +1,10 @@
+/*!
+ * isobject <https://github.com/jonschlinkert/isobject>
+ *
+ * Copyright (c) 2014-2017, Jon Schlinkert.
+ * Released under the MIT License.
+ */
+
+export default function isObject(val) {
+  return val != null && typeof val === 'object' && Array.isArray(val) === false;
+};
diff --git a/setup-maven/node_modules/isobject/package.json b/setup-maven/node_modules/isobject/package.json
new file mode 100644
index 0000000..b5da72e
--- /dev/null
+++ b/setup-maven/node_modules/isobject/package.json
@@ -0,0 +1,125 @@
+{
+  "_from": "isobject@^4.0.0",
+  "_id": "isobject@4.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==",
+  "_location": "/isobject",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "isobject@^4.0.0",
+    "name": "isobject",
+    "escapedName": "isobject",
+    "rawSpec": "^4.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^4.0.0"
+  },
+  "_requiredBy": [
+    "/is-plain-object"
+  ],
+  "_resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz",
+  "_shasum": "3f1c9155e73b192022a80819bacd0343711697b0",
+  "_spec": "isobject@^4.0.0",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/is-plain-object",
+  "author": {
+    "name": "Jon Schlinkert",
+    "url": "https://github.com/jonschlinkert"
+  },
+  "bugs": {
+    "url": "https://github.com/jonschlinkert/isobject/issues"
+  },
+  "bundleDependencies": false,
+  "contributors": [
+    {
+      "url": "https://github.com/LeSuisse"
+    },
+    {
+      "name": "Brian Woodward",
+      "url": "https://twitter.com/doowb"
+    },
+    {
+      "name": "Jon Schlinkert",
+      "url": "http://twitter.com/jonschlinkert"
+    },
+    {
+      "name": "Magnús Dæhlen",
+      "url": "https://github.com/magnudae"
+    },
+    {
+      "name": "Tom MacWright",
+      "url": "https://macwright.org"
+    }
+  ],
+  "dependencies": {},
+  "deprecated": false,
+  "description": "Returns true if the value is an object and not an array or null.",
+  "devDependencies": {
+    "esm": "^3.2.22",
+    "gulp-format-md": "^0.1.9",
+    "mocha": "^2.4.5",
+    "rollup": "^1.10.1"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.d.ts",
+    "index.cjs.js",
+    "index.js"
+  ],
+  "homepage": "https://github.com/jonschlinkert/isobject",
+  "keywords": [
+    "check",
+    "is",
+    "is-object",
+    "isobject",
+    "kind",
+    "kind-of",
+    "kindof",
+    "native",
+    "object",
+    "type",
+    "typeof",
+    "value"
+  ],
+  "license": "MIT",
+  "main": "index.cjs.js",
+  "module": "index.js",
+  "name": "isobject",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jonschlinkert/isobject.git"
+  },
+  "scripts": {
+    "build": "rollup -i index.js -o index.cjs.js -f cjs",
+    "prepublish": "npm run build",
+    "test": "mocha -r esm"
+  },
+  "types": "index.d.ts",
+  "verb": {
+    "related": {
+      "list": [
+        "extend-shallow",
+        "is-plain-object",
+        "kind-of",
+        "merge-deep"
+      ]
+    },
+    "toc": false,
+    "layout": "default",
+    "tasks": [
+      "readme"
+    ],
+    "plugins": [
+      "gulp-format-md"
+    ],
+    "lint": {
+      "reflinks": true
+    },
+    "reflinks": [
+      "verb"
+    ]
+  },
+  "version": "4.0.0"
+}
diff --git a/setup-maven/node_modules/lodash.get/LICENSE b/setup-maven/node_modules/lodash.get/LICENSE
new file mode 100644
index 0000000..e0c69d5
--- /dev/null
+++ b/setup-maven/node_modules/lodash.get/LICENSE
@@ -0,0 +1,47 @@
+Copyright jQuery Foundation and other contributors <https://jquery.org/>
+
+Based on Underscore.js, copyright Jeremy Ashkenas,
+DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+available at https://github.com/lodash/lodash
+
+The following license applies to all parts of this software except as
+documented below:
+
+====
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+====
+
+Copyright and related rights for sample code are waived via CC0. Sample
+code is defined as all source code displayed within the prose of the
+documentation.
+
+CC0: http://creativecommons.org/publicdomain/zero/1.0/
+
+====
+
+Files located in the node_modules and vendor directories are externally
+maintained libraries used by this software which have their own
+licenses; we recommend you read them, as their terms may differ from the
+terms above.
diff --git a/setup-maven/node_modules/lodash.get/README.md b/setup-maven/node_modules/lodash.get/README.md
new file mode 100644
index 0000000..9079614
--- /dev/null
+++ b/setup-maven/node_modules/lodash.get/README.md
@@ -0,0 +1,18 @@
+# lodash.get v4.4.2
+
+The [lodash](https://lodash.com/) method `_.get` exported as a [Node.js](https://nodejs.org/) module.
+
+## Installation
+
+Using npm:
+```bash
+$ {sudo -H} npm i -g npm
+$ npm i --save lodash.get
+```
+
+In Node.js:
+```js
+var get = require('lodash.get');
+```
+
+See the [documentation](https://lodash.com/docs#get) or [package source](https://github.com/lodash/lodash/blob/4.4.2-npm-packages/lodash.get) for more details.
diff --git a/setup-maven/node_modules/lodash.get/index.js b/setup-maven/node_modules/lodash.get/index.js
new file mode 100644
index 0000000..0eaadec
--- /dev/null
+++ b/setup-maven/node_modules/lodash.get/index.js
@@ -0,0 +1,931 @@
+/**
+ * lodash (Custom Build) <https://lodash.com/>
+ * Build: `lodash modularize exports="npm" -o ./`
+ * Copyright jQuery Foundation and other contributors <https://jquery.org/>
+ * Released under MIT license <https://lodash.com/license>
+ * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
+ * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+ */
+
+/** Used as the `TypeError` message for "Functions" methods. */
+var FUNC_ERROR_TEXT = 'Expected a function';
+
+/** Used to stand-in for `undefined` hash values. */
+var HASH_UNDEFINED = '__lodash_hash_undefined__';
+
+/** Used as references for various `Number` constants. */
+var INFINITY = 1 / 0;
+
+/** `Object#toString` result references. */
+var funcTag = '[object Function]',
+    genTag = '[object GeneratorFunction]',
+    symbolTag = '[object Symbol]';
+
+/** Used to match property names within property paths. */
+var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
+    reIsPlainProp = /^\w*$/,
+    reLeadingDot = /^\./,
+    rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
+
+/**
+ * Used to match `RegExp`
+ * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
+ */
+var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
+
+/** Used to match backslashes in property paths. */
+var reEscapeChar = /\\(\\)?/g;
+
+/** Used to detect host constructors (Safari). */
+var reIsHostCtor = /^\[object .+?Constructor\]$/;
+
+/** Detect free variable `global` from Node.js. */
+var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
+
+/** Detect free variable `self`. */
+var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
+
+/** Used as a reference to the global object. */
+var root = freeGlobal || freeSelf || Function('return this')();
+
+/**
+ * Gets the value at `key` of `object`.
+ *
+ * @private
+ * @param {Object} [object] The object to query.
+ * @param {string} key The key of the property to get.
+ * @returns {*} Returns the property value.
+ */
+function getValue(object, key) {
+  return object == null ? undefined : object[key];
+}
+
+/**
+ * Checks if `value` is a host object in IE < 9.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a host object, else `false`.
+ */
+function isHostObject(value) {
+  // Many host objects are `Object` objects that can coerce to strings
+  // despite having improperly defined `toString` methods.
+  var result = false;
+  if (value != null && typeof value.toString != 'function') {
+    try {
+      result = !!(value + '');
+    } catch (e) {}
+  }
+  return result;
+}
+
+/** Used for built-in method references. */
+var arrayProto = Array.prototype,
+    funcProto = Function.prototype,
+    objectProto = Object.prototype;
+
+/** Used to detect overreaching core-js shims. */
+var coreJsData = root['__core-js_shared__'];
+
+/** Used to detect methods masquerading as native. */
+var maskSrcKey = (function() {
+  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
+  return uid ? ('Symbol(src)_1.' + uid) : '';
+}());
+
+/** Used to resolve the decompiled source of functions. */
+var funcToString = funcProto.toString;
+
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
+
+/**
+ * Used to resolve the
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
+ * of values.
+ */
+var objectToString = objectProto.toString;
+
+/** Used to detect if a method is native. */
+var reIsNative = RegExp('^' +
+  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
+  .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
+);
+
+/** Built-in value references. */
+var Symbol = root.Symbol,
+    splice = arrayProto.splice;
+
+/* Built-in method references that are verified to be native. */
+var Map = getNative(root, 'Map'),
+    nativeCreate = getNative(Object, 'create');
+
+/** Used to convert symbols to primitives and strings. */
+var symbolProto = Symbol ? Symbol.prototype : undefined,
+    symbolToString = symbolProto ? symbolProto.toString : undefined;
+
+/**
+ * Creates a hash object.
+ *
+ * @private
+ * @constructor
+ * @param {Array} [entries] The key-value pairs to cache.
+ */
+function Hash(entries) {
+  var index = -1,
+      length = entries ? entries.length : 0;
+
+  this.clear();
+  while (++index < length) {
+    var entry = entries[index];
+    this.set(entry[0], entry[1]);
+  }
+}
+
+/**
+ * Removes all key-value entries from the hash.
+ *
+ * @private
+ * @name clear
+ * @memberOf Hash
+ */
+function hashClear() {
+  this.__data__ = nativeCreate ? nativeCreate(null) : {};
+}
+
+/**
+ * Removes `key` and its value from the hash.
+ *
+ * @private
+ * @name delete
+ * @memberOf Hash
+ * @param {Object} hash The hash to modify.
+ * @param {string} key The key of the value to remove.
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
+ */
+function hashDelete(key) {
+  return this.has(key) && delete this.__data__[key];
+}
+
+/**
+ * Gets the hash value for `key`.
+ *
+ * @private
+ * @name get
+ * @memberOf Hash
+ * @param {string} key The key of the value to get.
+ * @returns {*} Returns the entry value.
+ */
+function hashGet(key) {
+  var data = this.__data__;
+  if (nativeCreate) {
+    var result = data[key];
+    return result === HASH_UNDEFINED ? undefined : result;
+  }
+  return hasOwnProperty.call(data, key) ? data[key] : undefined;
+}
+
+/**
+ * Checks if a hash value for `key` exists.
+ *
+ * @private
+ * @name has
+ * @memberOf Hash
+ * @param {string} key The key of the entry to check.
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+ */
+function hashHas(key) {
+  var data = this.__data__;
+  return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);
+}
+
+/**
+ * Sets the hash `key` to `value`.
+ *
+ * @private
+ * @name set
+ * @memberOf Hash
+ * @param {string} key The key of the value to set.
+ * @param {*} value The value to set.
+ * @returns {Object} Returns the hash instance.
+ */
+function hashSet(key, value) {
+  var data = this.__data__;
+  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
+  return this;
+}
+
+// Add methods to `Hash`.
+Hash.prototype.clear = hashClear;
+Hash.prototype['delete'] = hashDelete;
+Hash.prototype.get = hashGet;
+Hash.prototype.has = hashHas;
+Hash.prototype.set = hashSet;
+
+/**
+ * Creates an list cache object.
+ *
+ * @private
+ * @constructor
+ * @param {Array} [entries] The key-value pairs to cache.
+ */
+function ListCache(entries) {
+  var index = -1,
+      length = entries ? entries.length : 0;
+
+  this.clear();
+  while (++index < length) {
+    var entry = entries[index];
+    this.set(entry[0], entry[1]);
+  }
+}
+
+/**
+ * Removes all key-value entries from the list cache.
+ *
+ * @private
+ * @name clear
+ * @memberOf ListCache
+ */
+function listCacheClear() {
+  this.__data__ = [];
+}
+
+/**
+ * Removes `key` and its value from the list cache.
+ *
+ * @private
+ * @name delete
+ * @memberOf ListCache
+ * @param {string} key The key of the value to remove.
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
+ */
+function listCacheDelete(key) {
+  var data = this.__data__,
+      index = assocIndexOf(data, key);
+
+  if (index < 0) {
+    return false;
+  }
+  var lastIndex = data.length - 1;
+  if (index == lastIndex) {
+    data.pop();
+  } else {
+    splice.call(data, index, 1);
+  }
+  return true;
+}
+
+/**
+ * Gets the list cache value for `key`.
+ *
+ * @private
+ * @name get
+ * @memberOf ListCache
+ * @param {string} key The key of the value to get.
+ * @returns {*} Returns the entry value.
+ */
+function listCacheGet(key) {
+  var data = this.__data__,
+      index = assocIndexOf(data, key);
+
+  return index < 0 ? undefined : data[index][1];
+}
+
+/**
+ * Checks if a list cache value for `key` exists.
+ *
+ * @private
+ * @name has
+ * @memberOf ListCache
+ * @param {string} key The key of the entry to check.
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+ */
+function listCacheHas(key) {
+  return assocIndexOf(this.__data__, key) > -1;
+}
+
+/**
+ * Sets the list cache `key` to `value`.
+ *
+ * @private
+ * @name set
+ * @memberOf ListCache
+ * @param {string} key The key of the value to set.
+ * @param {*} value The value to set.
+ * @returns {Object} Returns the list cache instance.
+ */
+function listCacheSet(key, value) {
+  var data = this.__data__,
+      index = assocIndexOf(data, key);
+
+  if (index < 0) {
+    data.push([key, value]);
+  } else {
+    data[index][1] = value;
+  }
+  return this;
+}
+
+// Add methods to `ListCache`.
+ListCache.prototype.clear = listCacheClear;
+ListCache.prototype['delete'] = listCacheDelete;
+ListCache.prototype.get = listCacheGet;
+ListCache.prototype.has = listCacheHas;
+ListCache.prototype.set = listCacheSet;
+
+/**
+ * Creates a map cache object to store key-value pairs.
+ *
+ * @private
+ * @constructor
+ * @param {Array} [entries] The key-value pairs to cache.
+ */
+function MapCache(entries) {
+  var index = -1,
+      length = entries ? entries.length : 0;
+
+  this.clear();
+  while (++index < length) {
+    var entry = entries[index];
+    this.set(entry[0], entry[1]);
+  }
+}
+
+/**
+ * Removes all key-value entries from the map.
+ *
+ * @private
+ * @name clear
+ * @memberOf MapCache
+ */
+function mapCacheClear() {
+  this.__data__ = {
+    'hash': new Hash,
+    'map': new (Map || ListCache),
+    'string': new Hash
+  };
+}
+
+/**
+ * Removes `key` and its value from the map.
+ *
+ * @private
+ * @name delete
+ * @memberOf MapCache
+ * @param {string} key The key of the value to remove.
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
+ */
+function mapCacheDelete(key) {
+  return getMapData(this, key)['delete'](key);
+}
+
+/**
+ * Gets the map value for `key`.
+ *
+ * @private
+ * @name get
+ * @memberOf MapCache
+ * @param {string} key The key of the value to get.
+ * @returns {*} Returns the entry value.
+ */
+function mapCacheGet(key) {
+  return getMapData(this, key).get(key);
+}
+
+/**
+ * Checks if a map value for `key` exists.
+ *
+ * @private
+ * @name has
+ * @memberOf MapCache
+ * @param {string} key The key of the entry to check.
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+ */
+function mapCacheHas(key) {
+  return getMapData(this, key).has(key);
+}
+
+/**
+ * Sets the map `key` to `value`.
+ *
+ * @private
+ * @name set
+ * @memberOf MapCache
+ * @param {string} key The key of the value to set.
+ * @param {*} value The value to set.
+ * @returns {Object} Returns the map cache instance.
+ */
+function mapCacheSet(key, value) {
+  getMapData(this, key).set(key, value);
+  return this;
+}
+
+// Add methods to `MapCache`.
+MapCache.prototype.clear = mapCacheClear;
+MapCache.prototype['delete'] = mapCacheDelete;
+MapCache.prototype.get = mapCacheGet;
+MapCache.prototype.has = mapCacheHas;
+MapCache.prototype.set = mapCacheSet;
+
+/**
+ * Gets the index at which the `key` is found in `array` of key-value pairs.
+ *
+ * @private
+ * @param {Array} array The array to inspect.
+ * @param {*} key The key to search for.
+ * @returns {number} Returns the index of the matched value, else `-1`.
+ */
+function assocIndexOf(array, key) {
+  var length = array.length;
+  while (length--) {
+    if (eq(array[length][0], key)) {
+      return length;
+    }
+  }
+  return -1;
+}
+
+/**
+ * The base implementation of `_.get` without support for default values.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @param {Array|string} path The path of the property to get.
+ * @returns {*} Returns the resolved value.
+ */
+function baseGet(object, path) {
+  path = isKey(path, object) ? [path] : castPath(path);
+
+  var index = 0,
+      length = path.length;
+
+  while (object != null && index < length) {
+    object = object[toKey(path[index++])];
+  }
+  return (index && index == length) ? object : undefined;
+}
+
+/**
+ * The base implementation of `_.isNative` without bad shim checks.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a native function,
+ *  else `false`.
+ */
+function baseIsNative(value) {
+  if (!isObject(value) || isMasked(value)) {
+    return false;
+  }
+  var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;
+  return pattern.test(toSource(value));
+}
+
+/**
+ * The base implementation of `_.toString` which doesn't convert nullish
+ * values to empty strings.
+ *
+ * @private
+ * @param {*} value The value to process.
+ * @returns {string} Returns the string.
+ */
+function baseToString(value) {
+  // Exit early for strings to avoid a performance hit in some environments.
+  if (typeof value == 'string') {
+    return value;
+  }
+  if (isSymbol(value)) {
+    return symbolToString ? symbolToString.call(value) : '';
+  }
+  var result = (value + '');
+  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
+}
+
+/**
+ * Casts `value` to a path array if it's not one.
+ *
+ * @private
+ * @param {*} value The value to inspect.
+ * @returns {Array} Returns the cast property path array.
+ */
+function castPath(value) {
+  return isArray(value) ? value : stringToPath(value);
+}
+
+/**
+ * Gets the data for `map`.
+ *
+ * @private
+ * @param {Object} map The map to query.
+ * @param {string} key The reference key.
+ * @returns {*} Returns the map data.
+ */
+function getMapData(map, key) {
+  var data = map.__data__;
+  return isKeyable(key)
+    ? data[typeof key == 'string' ? 'string' : 'hash']
+    : data.map;
+}
+
+/**
+ * Gets the native function at `key` of `object`.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @param {string} key The key of the method to get.
+ * @returns {*} Returns the function if it's native, else `undefined`.
+ */
+function getNative(object, key) {
+  var value = getValue(object, key);
+  return baseIsNative(value) ? value : undefined;
+}
+
+/**
+ * Checks if `value` is a property name and not a property path.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @param {Object} [object] The object to query keys on.
+ * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
+ */
+function isKey(value, object) {
+  if (isArray(value)) {
+    return false;
+  }
+  var type = typeof value;
+  if (type == 'number' || type == 'symbol' || type == 'boolean' ||
+      value == null || isSymbol(value)) {
+    return true;
+  }
+  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
+    (object != null && value in Object(object));
+}
+
+/**
+ * Checks if `value` is suitable for use as unique object key.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
+ */
+function isKeyable(value) {
+  var type = typeof value;
+  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
+    ? (value !== '__proto__')
+    : (value === null);
+}
+
+/**
+ * Checks if `func` has its source masked.
+ *
+ * @private
+ * @param {Function} func The function to check.
+ * @returns {boolean} Returns `true` if `func` is masked, else `false`.
+ */
+function isMasked(func) {
+  return !!maskSrcKey && (maskSrcKey in func);
+}
+
+/**
+ * Converts `string` to a property path array.
+ *
+ * @private
+ * @param {string} string The string to convert.
+ * @returns {Array} Returns the property path array.
+ */
+var stringToPath = memoize(function(string) {
+  string = toString(string);
+
+  var result = [];
+  if (reLeadingDot.test(string)) {
+    result.push('');
+  }
+  string.replace(rePropName, function(match, number, quote, string) {
+    result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));
+  });
+  return result;
+});
+
+/**
+ * Converts `value` to a string key if it's not a string or symbol.
+ *
+ * @private
+ * @param {*} value The value to inspect.
+ * @returns {string|symbol} Returns the key.
+ */
+function toKey(value) {
+  if (typeof value == 'string' || isSymbol(value)) {
+    return value;
+  }
+  var result = (value + '');
+  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
+}
+
+/**
+ * Converts `func` to its source code.
+ *
+ * @private
+ * @param {Function} func The function to process.
+ * @returns {string} Returns the source code.
+ */
+function toSource(func) {
+  if (func != null) {
+    try {
+      return funcToString.call(func);
+    } catch (e) {}
+    try {
+      return (func + '');
+    } catch (e) {}
+  }
+  return '';
+}
+
+/**
+ * Creates a function that memoizes the result of `func`. If `resolver` is
+ * provided, it determines the cache key for storing the result based on the
+ * arguments provided to the memoized function. By default, the first argument
+ * provided to the memoized function is used as the map cache key. The `func`
+ * is invoked with the `this` binding of the memoized function.
+ *
+ * **Note:** The cache is exposed as the `cache` property on the memoized
+ * function. Its creation may be customized by replacing the `_.memoize.Cache`
+ * constructor with one whose instances implement the
+ * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
+ * method interface of `delete`, `get`, `has`, and `set`.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Function
+ * @param {Function} func The function to have its output memoized.
+ * @param {Function} [resolver] The function to resolve the cache key.
+ * @returns {Function} Returns the new memoized function.
+ * @example
+ *
+ * var object = { 'a': 1, 'b': 2 };
+ * var other = { 'c': 3, 'd': 4 };
+ *
+ * var values = _.memoize(_.values);
+ * values(object);
+ * // => [1, 2]
+ *
+ * values(other);
+ * // => [3, 4]
+ *
+ * object.a = 2;
+ * values(object);
+ * // => [1, 2]
+ *
+ * // Modify the result cache.
+ * values.cache.set(object, ['a', 'b']);
+ * values(object);
+ * // => ['a', 'b']
+ *
+ * // Replace `_.memoize.Cache`.
+ * _.memoize.Cache = WeakMap;
+ */
+function memoize(func, resolver) {
+  if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {
+    throw new TypeError(FUNC_ERROR_TEXT);
+  }
+  var memoized = function() {
+    var args = arguments,
+        key = resolver ? resolver.apply(this, args) : args[0],
+        cache = memoized.cache;
+
+    if (cache.has(key)) {
+      return cache.get(key);
+    }
+    var result = func.apply(this, args);
+    memoized.cache = cache.set(key, result);
+    return result;
+  };
+  memoized.cache = new (memoize.Cache || MapCache);
+  return memoized;
+}
+
+// Assign cache to `_.memoize`.
+memoize.Cache = MapCache;
+
+/**
+ * Performs a
+ * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
+ * comparison between two values to determine if they are equivalent.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to compare.
+ * @param {*} other The other value to compare.
+ * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
+ * @example
+ *
+ * var object = { 'a': 1 };
+ * var other = { 'a': 1 };
+ *
+ * _.eq(object, object);
+ * // => true
+ *
+ * _.eq(object, other);
+ * // => false
+ *
+ * _.eq('a', 'a');
+ * // => true
+ *
+ * _.eq('a', Object('a'));
+ * // => false
+ *
+ * _.eq(NaN, NaN);
+ * // => true
+ */
+function eq(value, other) {
+  return value === other || (value !== value && other !== other);
+}
+
+/**
+ * Checks if `value` is classified as an `Array` object.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an array, else `false`.
+ * @example
+ *
+ * _.isArray([1, 2, 3]);
+ * // => true
+ *
+ * _.isArray(document.body.children);
+ * // => false
+ *
+ * _.isArray('abc');
+ * // => false
+ *
+ * _.isArray(_.noop);
+ * // => false
+ */
+var isArray = Array.isArray;
+
+/**
+ * Checks if `value` is classified as a `Function` object.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a function, else `false`.
+ * @example
+ *
+ * _.isFunction(_);
+ * // => true
+ *
+ * _.isFunction(/abc/);
+ * // => false
+ */
+function isFunction(value) {
+  // The use of `Object#toString` avoids issues with the `typeof` operator
+  // in Safari 8-9 which returns 'object' for typed array and other constructors.
+  var tag = isObject(value) ? objectToString.call(value) : '';
+  return tag == funcTag || tag == genTag;
+}
+
+/**
+ * Checks if `value` is the
+ * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
+ * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an object, else `false`.
+ * @example
+ *
+ * _.isObject({});
+ * // => true
+ *
+ * _.isObject([1, 2, 3]);
+ * // => true
+ *
+ * _.isObject(_.noop);
+ * // => true
+ *
+ * _.isObject(null);
+ * // => false
+ */
+function isObject(value) {
+  var type = typeof value;
+  return !!value && (type == 'object' || type == 'function');
+}
+
+/**
+ * Checks if `value` is object-like. A value is object-like if it's not `null`
+ * and has a `typeof` result of "object".
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
+ * @example
+ *
+ * _.isObjectLike({});
+ * // => true
+ *
+ * _.isObjectLike([1, 2, 3]);
+ * // => true
+ *
+ * _.isObjectLike(_.noop);
+ * // => false
+ *
+ * _.isObjectLike(null);
+ * // => false
+ */
+function isObjectLike(value) {
+  return !!value && typeof value == 'object';
+}
+
+/**
+ * Checks if `value` is classified as a `Symbol` primitive or object.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
+ * @example
+ *
+ * _.isSymbol(Symbol.iterator);
+ * // => true
+ *
+ * _.isSymbol('abc');
+ * // => false
+ */
+function isSymbol(value) {
+  return typeof value == 'symbol' ||
+    (isObjectLike(value) && objectToString.call(value) == symbolTag);
+}
+
+/**
+ * Converts `value` to a string. An empty string is returned for `null`
+ * and `undefined` values. The sign of `-0` is preserved.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to process.
+ * @returns {string} Returns the string.
+ * @example
+ *
+ * _.toString(null);
+ * // => ''
+ *
+ * _.toString(-0);
+ * // => '-0'
+ *
+ * _.toString([1, 2, 3]);
+ * // => '1,2,3'
+ */
+function toString(value) {
+  return value == null ? '' : baseToString(value);
+}
+
+/**
+ * Gets the value at `path` of `object`. If the resolved value is
+ * `undefined`, the `defaultValue` is returned in its place.
+ *
+ * @static
+ * @memberOf _
+ * @since 3.7.0
+ * @category Object
+ * @param {Object} object The object to query.
+ * @param {Array|string} path The path of the property to get.
+ * @param {*} [defaultValue] The value returned for `undefined` resolved values.
+ * @returns {*} Returns the resolved value.
+ * @example
+ *
+ * var object = { 'a': [{ 'b': { 'c': 3 } }] };
+ *
+ * _.get(object, 'a[0].b.c');
+ * // => 3
+ *
+ * _.get(object, ['a', '0', 'b', 'c']);
+ * // => 3
+ *
+ * _.get(object, 'a.b.c', 'default');
+ * // => 'default'
+ */
+function get(object, path, defaultValue) {
+  var result = object == null ? undefined : baseGet(object, path);
+  return result === undefined ? defaultValue : result;
+}
+
+module.exports = get;
diff --git a/setup-maven/node_modules/lodash.get/package.json b/setup-maven/node_modules/lodash.get/package.json
new file mode 100644
index 0000000..599cbe1
--- /dev/null
+++ b/setup-maven/node_modules/lodash.get/package.json
@@ -0,0 +1,69 @@
+{
+  "_from": "lodash.get@^4.4.2",
+  "_id": "lodash.get@4.4.2",
+  "_inBundle": false,
+  "_integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=",
+  "_location": "/lodash.get",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "lodash.get@^4.4.2",
+    "name": "lodash.get",
+    "escapedName": "lodash.get",
+    "rawSpec": "^4.4.2",
+    "saveSpec": null,
+    "fetchSpec": "^4.4.2"
+  },
+  "_requiredBy": [
+    "/@octokit/rest"
+  ],
+  "_resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
+  "_shasum": "2d177f652fa31e939b4438d5341499dfa3825e99",
+  "_spec": "lodash.get@^4.4.2",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/@octokit/rest",
+  "author": {
+    "name": "John-David Dalton",
+    "email": "john.david.dalton@gmail.com",
+    "url": "http://allyoucanleet.com/"
+  },
+  "bugs": {
+    "url": "https://github.com/lodash/lodash/issues"
+  },
+  "bundleDependencies": false,
+  "contributors": [
+    {
+      "name": "John-David Dalton",
+      "email": "john.david.dalton@gmail.com",
+      "url": "http://allyoucanleet.com/"
+    },
+    {
+      "name": "Blaine Bublitz",
+      "email": "blaine.bublitz@gmail.com",
+      "url": "https://github.com/phated"
+    },
+    {
+      "name": "Mathias Bynens",
+      "email": "mathias@qiwi.be",
+      "url": "https://mathiasbynens.be/"
+    }
+  ],
+  "deprecated": false,
+  "description": "The lodash method `_.get` exported as a module.",
+  "homepage": "https://lodash.com/",
+  "icon": "https://lodash.com/icon.svg",
+  "keywords": [
+    "lodash-modularized",
+    "get"
+  ],
+  "license": "MIT",
+  "name": "lodash.get",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/lodash/lodash.git"
+  },
+  "scripts": {
+    "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\""
+  },
+  "version": "4.4.2"
+}
diff --git a/setup-maven/node_modules/lodash.set/LICENSE b/setup-maven/node_modules/lodash.set/LICENSE
new file mode 100644
index 0000000..e0c69d5
--- /dev/null
+++ b/setup-maven/node_modules/lodash.set/LICENSE
@@ -0,0 +1,47 @@
+Copyright jQuery Foundation and other contributors <https://jquery.org/>
+
+Based on Underscore.js, copyright Jeremy Ashkenas,
+DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+available at https://github.com/lodash/lodash
+
+The following license applies to all parts of this software except as
+documented below:
+
+====
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+====
+
+Copyright and related rights for sample code are waived via CC0. Sample
+code is defined as all source code displayed within the prose of the
+documentation.
+
+CC0: http://creativecommons.org/publicdomain/zero/1.0/
+
+====
+
+Files located in the node_modules and vendor directories are externally
+maintained libraries used by this software which have their own
+licenses; we recommend you read them, as their terms may differ from the
+terms above.
diff --git a/setup-maven/node_modules/lodash.set/README.md b/setup-maven/node_modules/lodash.set/README.md
new file mode 100644
index 0000000..1f530bc
--- /dev/null
+++ b/setup-maven/node_modules/lodash.set/README.md
@@ -0,0 +1,18 @@
+# lodash.set v4.3.2
+
+The [lodash](https://lodash.com/) method `_.set` exported as a [Node.js](https://nodejs.org/) module.
+
+## Installation
+
+Using npm:
+```bash
+$ {sudo -H} npm i -g npm
+$ npm i --save lodash.set
+```
+
+In Node.js:
+```js
+var set = require('lodash.set');
+```
+
+See the [documentation](https://lodash.com/docs#set) or [package source](https://github.com/lodash/lodash/blob/4.3.2-npm-packages/lodash.set) for more details.
diff --git a/setup-maven/node_modules/lodash.set/index.js b/setup-maven/node_modules/lodash.set/index.js
new file mode 100644
index 0000000..9f3ed6b
--- /dev/null
+++ b/setup-maven/node_modules/lodash.set/index.js
@@ -0,0 +1,990 @@
+/**
+ * lodash (Custom Build) <https://lodash.com/>
+ * Build: `lodash modularize exports="npm" -o ./`
+ * Copyright jQuery Foundation and other contributors <https://jquery.org/>
+ * Released under MIT license <https://lodash.com/license>
+ * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
+ * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+ */
+
+/** Used as the `TypeError` message for "Functions" methods. */
+var FUNC_ERROR_TEXT = 'Expected a function';
+
+/** Used to stand-in for `undefined` hash values. */
+var HASH_UNDEFINED = '__lodash_hash_undefined__';
+
+/** Used as references for various `Number` constants. */
+var INFINITY = 1 / 0,
+    MAX_SAFE_INTEGER = 9007199254740991;
+
+/** `Object#toString` result references. */
+var funcTag = '[object Function]',
+    genTag = '[object GeneratorFunction]',
+    symbolTag = '[object Symbol]';
+
+/** Used to match property names within property paths. */
+var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
+    reIsPlainProp = /^\w*$/,
+    reLeadingDot = /^\./,
+    rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
+
+/**
+ * Used to match `RegExp`
+ * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
+ */
+var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
+
+/** Used to match backslashes in property paths. */
+var reEscapeChar = /\\(\\)?/g;
+
+/** Used to detect host constructors (Safari). */
+var reIsHostCtor = /^\[object .+?Constructor\]$/;
+
+/** Used to detect unsigned integer values. */
+var reIsUint = /^(?:0|[1-9]\d*)$/;
+
+/** Detect free variable `global` from Node.js. */
+var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
+
+/** Detect free variable `self`. */
+var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
+
+/** Used as a reference to the global object. */
+var root = freeGlobal || freeSelf || Function('return this')();
+
+/**
+ * Gets the value at `key` of `object`.
+ *
+ * @private
+ * @param {Object} [object] The object to query.
+ * @param {string} key The key of the property to get.
+ * @returns {*} Returns the property value.
+ */
+function getValue(object, key) {
+  return object == null ? undefined : object[key];
+}
+
+/**
+ * Checks if `value` is a host object in IE < 9.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a host object, else `false`.
+ */
+function isHostObject(value) {
+  // Many host objects are `Object` objects that can coerce to strings
+  // despite having improperly defined `toString` methods.
+  var result = false;
+  if (value != null && typeof value.toString != 'function') {
+    try {
+      result = !!(value + '');
+    } catch (e) {}
+  }
+  return result;
+}
+
+/** Used for built-in method references. */
+var arrayProto = Array.prototype,
+    funcProto = Function.prototype,
+    objectProto = Object.prototype;
+
+/** Used to detect overreaching core-js shims. */
+var coreJsData = root['__core-js_shared__'];
+
+/** Used to detect methods masquerading as native. */
+var maskSrcKey = (function() {
+  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
+  return uid ? ('Symbol(src)_1.' + uid) : '';
+}());
+
+/** Used to resolve the decompiled source of functions. */
+var funcToString = funcProto.toString;
+
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
+
+/**
+ * Used to resolve the
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
+ * of values.
+ */
+var objectToString = objectProto.toString;
+
+/** Used to detect if a method is native. */
+var reIsNative = RegExp('^' +
+  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
+  .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
+);
+
+/** Built-in value references. */
+var Symbol = root.Symbol,
+    splice = arrayProto.splice;
+
+/* Built-in method references that are verified to be native. */
+var Map = getNative(root, 'Map'),
+    nativeCreate = getNative(Object, 'create');
+
+/** Used to convert symbols to primitives and strings. */
+var symbolProto = Symbol ? Symbol.prototype : undefined,
+    symbolToString = symbolProto ? symbolProto.toString : undefined;
+
+/**
+ * Creates a hash object.
+ *
+ * @private
+ * @constructor
+ * @param {Array} [entries] The key-value pairs to cache.
+ */
+function Hash(entries) {
+  var index = -1,
+      length = entries ? entries.length : 0;
+
+  this.clear();
+  while (++index < length) {
+    var entry = entries[index];
+    this.set(entry[0], entry[1]);
+  }
+}
+
+/**
+ * Removes all key-value entries from the hash.
+ *
+ * @private
+ * @name clear
+ * @memberOf Hash
+ */
+function hashClear() {
+  this.__data__ = nativeCreate ? nativeCreate(null) : {};
+}
+
+/**
+ * Removes `key` and its value from the hash.
+ *
+ * @private
+ * @name delete
+ * @memberOf Hash
+ * @param {Object} hash The hash to modify.
+ * @param {string} key The key of the value to remove.
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
+ */
+function hashDelete(key) {
+  return this.has(key) && delete this.__data__[key];
+}
+
+/**
+ * Gets the hash value for `key`.
+ *
+ * @private
+ * @name get
+ * @memberOf Hash
+ * @param {string} key The key of the value to get.
+ * @returns {*} Returns the entry value.
+ */
+function hashGet(key) {
+  var data = this.__data__;
+  if (nativeCreate) {
+    var result = data[key];
+    return result === HASH_UNDEFINED ? undefined : result;
+  }
+  return hasOwnProperty.call(data, key) ? data[key] : undefined;
+}
+
+/**
+ * Checks if a hash value for `key` exists.
+ *
+ * @private
+ * @name has
+ * @memberOf Hash
+ * @param {string} key The key of the entry to check.
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+ */
+function hashHas(key) {
+  var data = this.__data__;
+  return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);
+}
+
+/**
+ * Sets the hash `key` to `value`.
+ *
+ * @private
+ * @name set
+ * @memberOf Hash
+ * @param {string} key The key of the value to set.
+ * @param {*} value The value to set.
+ * @returns {Object} Returns the hash instance.
+ */
+function hashSet(key, value) {
+  var data = this.__data__;
+  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
+  return this;
+}
+
+// Add methods to `Hash`.
+Hash.prototype.clear = hashClear;
+Hash.prototype['delete'] = hashDelete;
+Hash.prototype.get = hashGet;
+Hash.prototype.has = hashHas;
+Hash.prototype.set = hashSet;
+
+/**
+ * Creates an list cache object.
+ *
+ * @private
+ * @constructor
+ * @param {Array} [entries] The key-value pairs to cache.
+ */
+function ListCache(entries) {
+  var index = -1,
+      length = entries ? entries.length : 0;
+
+  this.clear();
+  while (++index < length) {
+    var entry = entries[index];
+    this.set(entry[0], entry[1]);
+  }
+}
+
+/**
+ * Removes all key-value entries from the list cache.
+ *
+ * @private
+ * @name clear
+ * @memberOf ListCache
+ */
+function listCacheClear() {
+  this.__data__ = [];
+}
+
+/**
+ * Removes `key` and its value from the list cache.
+ *
+ * @private
+ * @name delete
+ * @memberOf ListCache
+ * @param {string} key The key of the value to remove.
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
+ */
+function listCacheDelete(key) {
+  var data = this.__data__,
+      index = assocIndexOf(data, key);
+
+  if (index < 0) {
+    return false;
+  }
+  var lastIndex = data.length - 1;
+  if (index == lastIndex) {
+    data.pop();
+  } else {
+    splice.call(data, index, 1);
+  }
+  return true;
+}
+
+/**
+ * Gets the list cache value for `key`.
+ *
+ * @private
+ * @name get
+ * @memberOf ListCache
+ * @param {string} key The key of the value to get.
+ * @returns {*} Returns the entry value.
+ */
+function listCacheGet(key) {
+  var data = this.__data__,
+      index = assocIndexOf(data, key);
+
+  return index < 0 ? undefined : data[index][1];
+}
+
+/**
+ * Checks if a list cache value for `key` exists.
+ *
+ * @private
+ * @name has
+ * @memberOf ListCache
+ * @param {string} key The key of the entry to check.
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+ */
+function listCacheHas(key) {
+  return assocIndexOf(this.__data__, key) > -1;
+}
+
+/**
+ * Sets the list cache `key` to `value`.
+ *
+ * @private
+ * @name set
+ * @memberOf ListCache
+ * @param {string} key The key of the value to set.
+ * @param {*} value The value to set.
+ * @returns {Object} Returns the list cache instance.
+ */
+function listCacheSet(key, value) {
+  var data = this.__data__,
+      index = assocIndexOf(data, key);
+
+  if (index < 0) {
+    data.push([key, value]);
+  } else {
+    data[index][1] = value;
+  }
+  return this;
+}
+
+// Add methods to `ListCache`.
+ListCache.prototype.clear = listCacheClear;
+ListCache.prototype['delete'] = listCacheDelete;
+ListCache.prototype.get = listCacheGet;
+ListCache.prototype.has = listCacheHas;
+ListCache.prototype.set = listCacheSet;
+
+/**
+ * Creates a map cache object to store key-value pairs.
+ *
+ * @private
+ * @constructor
+ * @param {Array} [entries] The key-value pairs to cache.
+ */
+function MapCache(entries) {
+  var index = -1,
+      length = entries ? entries.length : 0;
+
+  this.clear();
+  while (++index < length) {
+    var entry = entries[index];
+    this.set(entry[0], entry[1]);
+  }
+}
+
+/**
+ * Removes all key-value entries from the map.
+ *
+ * @private
+ * @name clear
+ * @memberOf MapCache
+ */
+function mapCacheClear() {
+  this.__data__ = {
+    'hash': new Hash,
+    'map': new (Map || ListCache),
+    'string': new Hash
+  };
+}
+
+/**
+ * Removes `key` and its value from the map.
+ *
+ * @private
+ * @name delete
+ * @memberOf MapCache
+ * @param {string} key The key of the value to remove.
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
+ */
+function mapCacheDelete(key) {
+  return getMapData(this, key)['delete'](key);
+}
+
+/**
+ * Gets the map value for `key`.
+ *
+ * @private
+ * @name get
+ * @memberOf MapCache
+ * @param {string} key The key of the value to get.
+ * @returns {*} Returns the entry value.
+ */
+function mapCacheGet(key) {
+  return getMapData(this, key).get(key);
+}
+
+/**
+ * Checks if a map value for `key` exists.
+ *
+ * @private
+ * @name has
+ * @memberOf MapCache
+ * @param {string} key The key of the entry to check.
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+ */
+function mapCacheHas(key) {
+  return getMapData(this, key).has(key);
+}
+
+/**
+ * Sets the map `key` to `value`.
+ *
+ * @private
+ * @name set
+ * @memberOf MapCache
+ * @param {string} key The key of the value to set.
+ * @param {*} value The value to set.
+ * @returns {Object} Returns the map cache instance.
+ */
+function mapCacheSet(key, value) {
+  getMapData(this, key).set(key, value);
+  return this;
+}
+
+// Add methods to `MapCache`.
+MapCache.prototype.clear = mapCacheClear;
+MapCache.prototype['delete'] = mapCacheDelete;
+MapCache.prototype.get = mapCacheGet;
+MapCache.prototype.has = mapCacheHas;
+MapCache.prototype.set = mapCacheSet;
+
+/**
+ * Assigns `value` to `key` of `object` if the existing value is not equivalent
+ * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
+ * for equality comparisons.
+ *
+ * @private
+ * @param {Object} object The object to modify.
+ * @param {string} key The key of the property to assign.
+ * @param {*} value The value to assign.
+ */
+function assignValue(object, key, value) {
+  var objValue = object[key];
+  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
+      (value === undefined && !(key in object))) {
+    object[key] = value;
+  }
+}
+
+/**
+ * Gets the index at which the `key` is found in `array` of key-value pairs.
+ *
+ * @private
+ * @param {Array} array The array to inspect.
+ * @param {*} key The key to search for.
+ * @returns {number} Returns the index of the matched value, else `-1`.
+ */
+function assocIndexOf(array, key) {
+  var length = array.length;
+  while (length--) {
+    if (eq(array[length][0], key)) {
+      return length;
+    }
+  }
+  return -1;
+}
+
+/**
+ * The base implementation of `_.isNative` without bad shim checks.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a native function,
+ *  else `false`.
+ */
+function baseIsNative(value) {
+  if (!isObject(value) || isMasked(value)) {
+    return false;
+  }
+  var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;
+  return pattern.test(toSource(value));
+}
+
+/**
+ * The base implementation of `_.set`.
+ *
+ * @private
+ * @param {Object} object The object to modify.
+ * @param {Array|string} path The path of the property to set.
+ * @param {*} value The value to set.
+ * @param {Function} [customizer] The function to customize path creation.
+ * @returns {Object} Returns `object`.
+ */
+function baseSet(object, path, value, customizer) {
+  if (!isObject(object)) {
+    return object;
+  }
+  path = isKey(path, object) ? [path] : castPath(path);
+
+  var index = -1,
+      length = path.length,
+      lastIndex = length - 1,
+      nested = object;
+
+  while (nested != null && ++index < length) {
+    var key = toKey(path[index]),
+        newValue = value;
+
+    if (index != lastIndex) {
+      var objValue = nested[key];
+      newValue = customizer ? customizer(objValue, key, nested) : undefined;
+      if (newValue === undefined) {
+        newValue = isObject(objValue)
+          ? objValue
+          : (isIndex(path[index + 1]) ? [] : {});
+      }
+    }
+    assignValue(nested, key, newValue);
+    nested = nested[key];
+  }
+  return object;
+}
+
+/**
+ * The base implementation of `_.toString` which doesn't convert nullish
+ * values to empty strings.
+ *
+ * @private
+ * @param {*} value The value to process.
+ * @returns {string} Returns the string.
+ */
+function baseToString(value) {
+  // Exit early for strings to avoid a performance hit in some environments.
+  if (typeof value == 'string') {
+    return value;
+  }
+  if (isSymbol(value)) {
+    return symbolToString ? symbolToString.call(value) : '';
+  }
+  var result = (value + '');
+  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
+}
+
+/**
+ * Casts `value` to a path array if it's not one.
+ *
+ * @private
+ * @param {*} value The value to inspect.
+ * @returns {Array} Returns the cast property path array.
+ */
+function castPath(value) {
+  return isArray(value) ? value : stringToPath(value);
+}
+
+/**
+ * Gets the data for `map`.
+ *
+ * @private
+ * @param {Object} map The map to query.
+ * @param {string} key The reference key.
+ * @returns {*} Returns the map data.
+ */
+function getMapData(map, key) {
+  var data = map.__data__;
+  return isKeyable(key)
+    ? data[typeof key == 'string' ? 'string' : 'hash']
+    : data.map;
+}
+
+/**
+ * Gets the native function at `key` of `object`.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @param {string} key The key of the method to get.
+ * @returns {*} Returns the function if it's native, else `undefined`.
+ */
+function getNative(object, key) {
+  var value = getValue(object, key);
+  return baseIsNative(value) ? value : undefined;
+}
+
+/**
+ * Checks if `value` is a valid array-like index.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
+ * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
+ */
+function isIndex(value, length) {
+  length = length == null ? MAX_SAFE_INTEGER : length;
+  return !!length &&
+    (typeof value == 'number' || reIsUint.test(value)) &&
+    (value > -1 && value % 1 == 0 && value < length);
+}
+
+/**
+ * Checks if `value` is a property name and not a property path.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @param {Object} [object] The object to query keys on.
+ * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
+ */
+function isKey(value, object) {
+  if (isArray(value)) {
+    return false;
+  }
+  var type = typeof value;
+  if (type == 'number' || type == 'symbol' || type == 'boolean' ||
+      value == null || isSymbol(value)) {
+    return true;
+  }
+  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
+    (object != null && value in Object(object));
+}
+
+/**
+ * Checks if `value` is suitable for use as unique object key.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
+ */
+function isKeyable(value) {
+  var type = typeof value;
+  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
+    ? (value !== '__proto__')
+    : (value === null);
+}
+
+/**
+ * Checks if `func` has its source masked.
+ *
+ * @private
+ * @param {Function} func The function to check.
+ * @returns {boolean} Returns `true` if `func` is masked, else `false`.
+ */
+function isMasked(func) {
+  return !!maskSrcKey && (maskSrcKey in func);
+}
+
+/**
+ * Converts `string` to a property path array.
+ *
+ * @private
+ * @param {string} string The string to convert.
+ * @returns {Array} Returns the property path array.
+ */
+var stringToPath = memoize(function(string) {
+  string = toString(string);
+
+  var result = [];
+  if (reLeadingDot.test(string)) {
+    result.push('');
+  }
+  string.replace(rePropName, function(match, number, quote, string) {
+    result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));
+  });
+  return result;
+});
+
+/**
+ * Converts `value` to a string key if it's not a string or symbol.
+ *
+ * @private
+ * @param {*} value The value to inspect.
+ * @returns {string|symbol} Returns the key.
+ */
+function toKey(value) {
+  if (typeof value == 'string' || isSymbol(value)) {
+    return value;
+  }
+  var result = (value + '');
+  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
+}
+
+/**
+ * Converts `func` to its source code.
+ *
+ * @private
+ * @param {Function} func The function to process.
+ * @returns {string} Returns the source code.
+ */
+function toSource(func) {
+  if (func != null) {
+    try {
+      return funcToString.call(func);
+    } catch (e) {}
+    try {
+      return (func + '');
+    } catch (e) {}
+  }
+  return '';
+}
+
+/**
+ * Creates a function that memoizes the result of `func`. If `resolver` is
+ * provided, it determines the cache key for storing the result based on the
+ * arguments provided to the memoized function. By default, the first argument
+ * provided to the memoized function is used as the map cache key. The `func`
+ * is invoked with the `this` binding of the memoized function.
+ *
+ * **Note:** The cache is exposed as the `cache` property on the memoized
+ * function. Its creation may be customized by replacing the `_.memoize.Cache`
+ * constructor with one whose instances implement the
+ * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
+ * method interface of `delete`, `get`, `has`, and `set`.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Function
+ * @param {Function} func The function to have its output memoized.
+ * @param {Function} [resolver] The function to resolve the cache key.
+ * @returns {Function} Returns the new memoized function.
+ * @example
+ *
+ * var object = { 'a': 1, 'b': 2 };
+ * var other = { 'c': 3, 'd': 4 };
+ *
+ * var values = _.memoize(_.values);
+ * values(object);
+ * // => [1, 2]
+ *
+ * values(other);
+ * // => [3, 4]
+ *
+ * object.a = 2;
+ * values(object);
+ * // => [1, 2]
+ *
+ * // Modify the result cache.
+ * values.cache.set(object, ['a', 'b']);
+ * values(object);
+ * // => ['a', 'b']
+ *
+ * // Replace `_.memoize.Cache`.
+ * _.memoize.Cache = WeakMap;
+ */
+function memoize(func, resolver) {
+  if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {
+    throw new TypeError(FUNC_ERROR_TEXT);
+  }
+  var memoized = function() {
+    var args = arguments,
+        key = resolver ? resolver.apply(this, args) : args[0],
+        cache = memoized.cache;
+
+    if (cache.has(key)) {
+      return cache.get(key);
+    }
+    var result = func.apply(this, args);
+    memoized.cache = cache.set(key, result);
+    return result;
+  };
+  memoized.cache = new (memoize.Cache || MapCache);
+  return memoized;
+}
+
+// Assign cache to `_.memoize`.
+memoize.Cache = MapCache;
+
+/**
+ * Performs a
+ * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
+ * comparison between two values to determine if they are equivalent.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to compare.
+ * @param {*} other The other value to compare.
+ * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
+ * @example
+ *
+ * var object = { 'a': 1 };
+ * var other = { 'a': 1 };
+ *
+ * _.eq(object, object);
+ * // => true
+ *
+ * _.eq(object, other);
+ * // => false
+ *
+ * _.eq('a', 'a');
+ * // => true
+ *
+ * _.eq('a', Object('a'));
+ * // => false
+ *
+ * _.eq(NaN, NaN);
+ * // => true
+ */
+function eq(value, other) {
+  return value === other || (value !== value && other !== other);
+}
+
+/**
+ * Checks if `value` is classified as an `Array` object.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an array, else `false`.
+ * @example
+ *
+ * _.isArray([1, 2, 3]);
+ * // => true
+ *
+ * _.isArray(document.body.children);
+ * // => false
+ *
+ * _.isArray('abc');
+ * // => false
+ *
+ * _.isArray(_.noop);
+ * // => false
+ */
+var isArray = Array.isArray;
+
+/**
+ * Checks if `value` is classified as a `Function` object.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a function, else `false`.
+ * @example
+ *
+ * _.isFunction(_);
+ * // => true
+ *
+ * _.isFunction(/abc/);
+ * // => false
+ */
+function isFunction(value) {
+  // The use of `Object#toString` avoids issues with the `typeof` operator
+  // in Safari 8-9 which returns 'object' for typed array and other constructors.
+  var tag = isObject(value) ? objectToString.call(value) : '';
+  return tag == funcTag || tag == genTag;
+}
+
+/**
+ * Checks if `value` is the
+ * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
+ * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an object, else `false`.
+ * @example
+ *
+ * _.isObject({});
+ * // => true
+ *
+ * _.isObject([1, 2, 3]);
+ * // => true
+ *
+ * _.isObject(_.noop);
+ * // => true
+ *
+ * _.isObject(null);
+ * // => false
+ */
+function isObject(value) {
+  var type = typeof value;
+  return !!value && (type == 'object' || type == 'function');
+}
+
+/**
+ * Checks if `value` is object-like. A value is object-like if it's not `null`
+ * and has a `typeof` result of "object".
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
+ * @example
+ *
+ * _.isObjectLike({});
+ * // => true
+ *
+ * _.isObjectLike([1, 2, 3]);
+ * // => true
+ *
+ * _.isObjectLike(_.noop);
+ * // => false
+ *
+ * _.isObjectLike(null);
+ * // => false
+ */
+function isObjectLike(value) {
+  return !!value && typeof value == 'object';
+}
+
+/**
+ * Checks if `value` is classified as a `Symbol` primitive or object.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
+ * @example
+ *
+ * _.isSymbol(Symbol.iterator);
+ * // => true
+ *
+ * _.isSymbol('abc');
+ * // => false
+ */
+function isSymbol(value) {
+  return typeof value == 'symbol' ||
+    (isObjectLike(value) && objectToString.call(value) == symbolTag);
+}
+
+/**
+ * Converts `value` to a string. An empty string is returned for `null`
+ * and `undefined` values. The sign of `-0` is preserved.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to process.
+ * @returns {string} Returns the string.
+ * @example
+ *
+ * _.toString(null);
+ * // => ''
+ *
+ * _.toString(-0);
+ * // => '-0'
+ *
+ * _.toString([1, 2, 3]);
+ * // => '1,2,3'
+ */
+function toString(value) {
+  return value == null ? '' : baseToString(value);
+}
+
+/**
+ * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,
+ * it's created. Arrays are created for missing index properties while objects
+ * are created for all other missing properties. Use `_.setWith` to customize
+ * `path` creation.
+ *
+ * **Note:** This method mutates `object`.
+ *
+ * @static
+ * @memberOf _
+ * @since 3.7.0
+ * @category Object
+ * @param {Object} object The object to modify.
+ * @param {Array|string} path The path of the property to set.
+ * @param {*} value The value to set.
+ * @returns {Object} Returns `object`.
+ * @example
+ *
+ * var object = { 'a': [{ 'b': { 'c': 3 } }] };
+ *
+ * _.set(object, 'a[0].b.c', 4);
+ * console.log(object.a[0].b.c);
+ * // => 4
+ *
+ * _.set(object, ['x', '0', 'y', 'z'], 5);
+ * console.log(object.x[0].y.z);
+ * // => 5
+ */
+function set(object, path, value) {
+  return object == null ? object : baseSet(object, path, value);
+}
+
+module.exports = set;
diff --git a/setup-maven/node_modules/lodash.set/package.json b/setup-maven/node_modules/lodash.set/package.json
new file mode 100644
index 0000000..9058e99
--- /dev/null
+++ b/setup-maven/node_modules/lodash.set/package.json
@@ -0,0 +1,69 @@
+{
+  "_from": "lodash.set@^4.3.2",
+  "_id": "lodash.set@4.3.2",
+  "_inBundle": false,
+  "_integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=",
+  "_location": "/lodash.set",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "lodash.set@^4.3.2",
+    "name": "lodash.set",
+    "escapedName": "lodash.set",
+    "rawSpec": "^4.3.2",
+    "saveSpec": null,
+    "fetchSpec": "^4.3.2"
+  },
+  "_requiredBy": [
+    "/@octokit/rest"
+  ],
+  "_resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz",
+  "_shasum": "d8757b1da807dde24816b0d6a84bea1a76230b23",
+  "_spec": "lodash.set@^4.3.2",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/@octokit/rest",
+  "author": {
+    "name": "John-David Dalton",
+    "email": "john.david.dalton@gmail.com",
+    "url": "http://allyoucanleet.com/"
+  },
+  "bugs": {
+    "url": "https://github.com/lodash/lodash/issues"
+  },
+  "bundleDependencies": false,
+  "contributors": [
+    {
+      "name": "John-David Dalton",
+      "email": "john.david.dalton@gmail.com",
+      "url": "http://allyoucanleet.com/"
+    },
+    {
+      "name": "Blaine Bublitz",
+      "email": "blaine.bublitz@gmail.com",
+      "url": "https://github.com/phated"
+    },
+    {
+      "name": "Mathias Bynens",
+      "email": "mathias@qiwi.be",
+      "url": "https://mathiasbynens.be/"
+    }
+  ],
+  "deprecated": false,
+  "description": "The lodash method `_.set` exported as a module.",
+  "homepage": "https://lodash.com/",
+  "icon": "https://lodash.com/icon.svg",
+  "keywords": [
+    "lodash-modularized",
+    "set"
+  ],
+  "license": "MIT",
+  "name": "lodash.set",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/lodash/lodash.git"
+  },
+  "scripts": {
+    "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\""
+  },
+  "version": "4.3.2"
+}
diff --git a/setup-maven/node_modules/lodash.uniq/LICENSE b/setup-maven/node_modules/lodash.uniq/LICENSE
new file mode 100644
index 0000000..e0c69d5
--- /dev/null
+++ b/setup-maven/node_modules/lodash.uniq/LICENSE
@@ -0,0 +1,47 @@
+Copyright jQuery Foundation and other contributors <https://jquery.org/>
+
+Based on Underscore.js, copyright Jeremy Ashkenas,
+DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+available at https://github.com/lodash/lodash
+
+The following license applies to all parts of this software except as
+documented below:
+
+====
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+====
+
+Copyright and related rights for sample code are waived via CC0. Sample
+code is defined as all source code displayed within the prose of the
+documentation.
+
+CC0: http://creativecommons.org/publicdomain/zero/1.0/
+
+====
+
+Files located in the node_modules and vendor directories are externally
+maintained libraries used by this software which have their own
+licenses; we recommend you read them, as their terms may differ from the
+terms above.
diff --git a/setup-maven/node_modules/lodash.uniq/README.md b/setup-maven/node_modules/lodash.uniq/README.md
new file mode 100644
index 0000000..a662a5e
--- /dev/null
+++ b/setup-maven/node_modules/lodash.uniq/README.md
@@ -0,0 +1,18 @@
+# lodash.uniq v4.5.0
+
+The [lodash](https://lodash.com/) method `_.uniq` exported as a [Node.js](https://nodejs.org/) module.
+
+## Installation
+
+Using npm:
+```bash
+$ {sudo -H} npm i -g npm
+$ npm i --save lodash.uniq
+```
+
+In Node.js:
+```js
+var uniq = require('lodash.uniq');
+```
+
+See the [documentation](https://lodash.com/docs#uniq) or [package source](https://github.com/lodash/lodash/blob/4.5.0-npm-packages/lodash.uniq) for more details.
diff --git a/setup-maven/node_modules/lodash.uniq/index.js b/setup-maven/node_modules/lodash.uniq/index.js
new file mode 100644
index 0000000..83fce2b
--- /dev/null
+++ b/setup-maven/node_modules/lodash.uniq/index.js
@@ -0,0 +1,896 @@
+/**
+ * lodash (Custom Build) <https://lodash.com/>
+ * Build: `lodash modularize exports="npm" -o ./`
+ * Copyright jQuery Foundation and other contributors <https://jquery.org/>
+ * Released under MIT license <https://lodash.com/license>
+ * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
+ * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+ */
+
+/** Used as the size to enable large array optimizations. */
+var LARGE_ARRAY_SIZE = 200;
+
+/** Used to stand-in for `undefined` hash values. */
+var HASH_UNDEFINED = '__lodash_hash_undefined__';
+
+/** Used as references for various `Number` constants. */
+var INFINITY = 1 / 0;
+
+/** `Object#toString` result references. */
+var funcTag = '[object Function]',
+    genTag = '[object GeneratorFunction]';
+
+/**
+ * Used to match `RegExp`
+ * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
+ */
+var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
+
+/** Used to detect host constructors (Safari). */
+var reIsHostCtor = /^\[object .+?Constructor\]$/;
+
+/** Detect free variable `global` from Node.js. */
+var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
+
+/** Detect free variable `self`. */
+var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
+
+/** Used as a reference to the global object. */
+var root = freeGlobal || freeSelf || Function('return this')();
+
+/**
+ * A specialized version of `_.includes` for arrays without support for
+ * specifying an index to search from.
+ *
+ * @private
+ * @param {Array} [array] The array to inspect.
+ * @param {*} target The value to search for.
+ * @returns {boolean} Returns `true` if `target` is found, else `false`.
+ */
+function arrayIncludes(array, value) {
+  var length = array ? array.length : 0;
+  return !!length && baseIndexOf(array, value, 0) > -1;
+}
+
+/**
+ * This function is like `arrayIncludes` except that it accepts a comparator.
+ *
+ * @private
+ * @param {Array} [array] The array to inspect.
+ * @param {*} target The value to search for.
+ * @param {Function} comparator The comparator invoked per element.
+ * @returns {boolean} Returns `true` if `target` is found, else `false`.
+ */
+function arrayIncludesWith(array, value, comparator) {
+  var index = -1,
+      length = array ? array.length : 0;
+
+  while (++index < length) {
+    if (comparator(value, array[index])) {
+      return true;
+    }
+  }
+  return false;
+}
+
+/**
+ * The base implementation of `_.findIndex` and `_.findLastIndex` without
+ * support for iteratee shorthands.
+ *
+ * @private
+ * @param {Array} array The array to inspect.
+ * @param {Function} predicate The function invoked per iteration.
+ * @param {number} fromIndex The index to search from.
+ * @param {boolean} [fromRight] Specify iterating from right to left.
+ * @returns {number} Returns the index of the matched value, else `-1`.
+ */
+function baseFindIndex(array, predicate, fromIndex, fromRight) {
+  var length = array.length,
+      index = fromIndex + (fromRight ? 1 : -1);
+
+  while ((fromRight ? index-- : ++index < length)) {
+    if (predicate(array[index], index, array)) {
+      return index;
+    }
+  }
+  return -1;
+}
+
+/**
+ * The base implementation of `_.indexOf` without `fromIndex` bounds checks.
+ *
+ * @private
+ * @param {Array} array The array to inspect.
+ * @param {*} value The value to search for.
+ * @param {number} fromIndex The index to search from.
+ * @returns {number} Returns the index of the matched value, else `-1`.
+ */
+function baseIndexOf(array, value, fromIndex) {
+  if (value !== value) {
+    return baseFindIndex(array, baseIsNaN, fromIndex);
+  }
+  var index = fromIndex - 1,
+      length = array.length;
+
+  while (++index < length) {
+    if (array[index] === value) {
+      return index;
+    }
+  }
+  return -1;
+}
+
+/**
+ * The base implementation of `_.isNaN` without support for number objects.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
+ */
+function baseIsNaN(value) {
+  return value !== value;
+}
+
+/**
+ * Checks if a cache value for `key` exists.
+ *
+ * @private
+ * @param {Object} cache The cache to query.
+ * @param {string} key The key of the entry to check.
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+ */
+function cacheHas(cache, key) {
+  return cache.has(key);
+}
+
+/**
+ * Gets the value at `key` of `object`.
+ *
+ * @private
+ * @param {Object} [object] The object to query.
+ * @param {string} key The key of the property to get.
+ * @returns {*} Returns the property value.
+ */
+function getValue(object, key) {
+  return object == null ? undefined : object[key];
+}
+
+/**
+ * Checks if `value` is a host object in IE < 9.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a host object, else `false`.
+ */
+function isHostObject(value) {
+  // Many host objects are `Object` objects that can coerce to strings
+  // despite having improperly defined `toString` methods.
+  var result = false;
+  if (value != null && typeof value.toString != 'function') {
+    try {
+      result = !!(value + '');
+    } catch (e) {}
+  }
+  return result;
+}
+
+/**
+ * Converts `set` to an array of its values.
+ *
+ * @private
+ * @param {Object} set The set to convert.
+ * @returns {Array} Returns the values.
+ */
+function setToArray(set) {
+  var index = -1,
+      result = Array(set.size);
+
+  set.forEach(function(value) {
+    result[++index] = value;
+  });
+  return result;
+}
+
+/** Used for built-in method references. */
+var arrayProto = Array.prototype,
+    funcProto = Function.prototype,
+    objectProto = Object.prototype;
+
+/** Used to detect overreaching core-js shims. */
+var coreJsData = root['__core-js_shared__'];
+
+/** Used to detect methods masquerading as native. */
+var maskSrcKey = (function() {
+  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
+  return uid ? ('Symbol(src)_1.' + uid) : '';
+}());
+
+/** Used to resolve the decompiled source of functions. */
+var funcToString = funcProto.toString;
+
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
+
+/**
+ * Used to resolve the
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
+ * of values.
+ */
+var objectToString = objectProto.toString;
+
+/** Used to detect if a method is native. */
+var reIsNative = RegExp('^' +
+  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
+  .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
+);
+
+/** Built-in value references. */
+var splice = arrayProto.splice;
+
+/* Built-in method references that are verified to be native. */
+var Map = getNative(root, 'Map'),
+    Set = getNative(root, 'Set'),
+    nativeCreate = getNative(Object, 'create');
+
+/**
+ * Creates a hash object.
+ *
+ * @private
+ * @constructor
+ * @param {Array} [entries] The key-value pairs to cache.
+ */
+function Hash(entries) {
+  var index = -1,
+      length = entries ? entries.length : 0;
+
+  this.clear();
+  while (++index < length) {
+    var entry = entries[index];
+    this.set(entry[0], entry[1]);
+  }
+}
+
+/**
+ * Removes all key-value entries from the hash.
+ *
+ * @private
+ * @name clear
+ * @memberOf Hash
+ */
+function hashClear() {
+  this.__data__ = nativeCreate ? nativeCreate(null) : {};
+}
+
+/**
+ * Removes `key` and its value from the hash.
+ *
+ * @private
+ * @name delete
+ * @memberOf Hash
+ * @param {Object} hash The hash to modify.
+ * @param {string} key The key of the value to remove.
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
+ */
+function hashDelete(key) {
+  return this.has(key) && delete this.__data__[key];
+}
+
+/**
+ * Gets the hash value for `key`.
+ *
+ * @private
+ * @name get
+ * @memberOf Hash
+ * @param {string} key The key of the value to get.
+ * @returns {*} Returns the entry value.
+ */
+function hashGet(key) {
+  var data = this.__data__;
+  if (nativeCreate) {
+    var result = data[key];
+    return result === HASH_UNDEFINED ? undefined : result;
+  }
+  return hasOwnProperty.call(data, key) ? data[key] : undefined;
+}
+
+/**
+ * Checks if a hash value for `key` exists.
+ *
+ * @private
+ * @name has
+ * @memberOf Hash
+ * @param {string} key The key of the entry to check.
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+ */
+function hashHas(key) {
+  var data = this.__data__;
+  return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);
+}
+
+/**
+ * Sets the hash `key` to `value`.
+ *
+ * @private
+ * @name set
+ * @memberOf Hash
+ * @param {string} key The key of the value to set.
+ * @param {*} value The value to set.
+ * @returns {Object} Returns the hash instance.
+ */
+function hashSet(key, value) {
+  var data = this.__data__;
+  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
+  return this;
+}
+
+// Add methods to `Hash`.
+Hash.prototype.clear = hashClear;
+Hash.prototype['delete'] = hashDelete;
+Hash.prototype.get = hashGet;
+Hash.prototype.has = hashHas;
+Hash.prototype.set = hashSet;
+
+/**
+ * Creates an list cache object.
+ *
+ * @private
+ * @constructor
+ * @param {Array} [entries] The key-value pairs to cache.
+ */
+function ListCache(entries) {
+  var index = -1,
+      length = entries ? entries.length : 0;
+
+  this.clear();
+  while (++index < length) {
+    var entry = entries[index];
+    this.set(entry[0], entry[1]);
+  }
+}
+
+/**
+ * Removes all key-value entries from the list cache.
+ *
+ * @private
+ * @name clear
+ * @memberOf ListCache
+ */
+function listCacheClear() {
+  this.__data__ = [];
+}
+
+/**
+ * Removes `key` and its value from the list cache.
+ *
+ * @private
+ * @name delete
+ * @memberOf ListCache
+ * @param {string} key The key of the value to remove.
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
+ */
+function listCacheDelete(key) {
+  var data = this.__data__,
+      index = assocIndexOf(data, key);
+
+  if (index < 0) {
+    return false;
+  }
+  var lastIndex = data.length - 1;
+  if (index == lastIndex) {
+    data.pop();
+  } else {
+    splice.call(data, index, 1);
+  }
+  return true;
+}
+
+/**
+ * Gets the list cache value for `key`.
+ *
+ * @private
+ * @name get
+ * @memberOf ListCache
+ * @param {string} key The key of the value to get.
+ * @returns {*} Returns the entry value.
+ */
+function listCacheGet(key) {
+  var data = this.__data__,
+      index = assocIndexOf(data, key);
+
+  return index < 0 ? undefined : data[index][1];
+}
+
+/**
+ * Checks if a list cache value for `key` exists.
+ *
+ * @private
+ * @name has
+ * @memberOf ListCache
+ * @param {string} key The key of the entry to check.
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+ */
+function listCacheHas(key) {
+  return assocIndexOf(this.__data__, key) > -1;
+}
+
+/**
+ * Sets the list cache `key` to `value`.
+ *
+ * @private
+ * @name set
+ * @memberOf ListCache
+ * @param {string} key The key of the value to set.
+ * @param {*} value The value to set.
+ * @returns {Object} Returns the list cache instance.
+ */
+function listCacheSet(key, value) {
+  var data = this.__data__,
+      index = assocIndexOf(data, key);
+
+  if (index < 0) {
+    data.push([key, value]);
+  } else {
+    data[index][1] = value;
+  }
+  return this;
+}
+
+// Add methods to `ListCache`.
+ListCache.prototype.clear = listCacheClear;
+ListCache.prototype['delete'] = listCacheDelete;
+ListCache.prototype.get = listCacheGet;
+ListCache.prototype.has = listCacheHas;
+ListCache.prototype.set = listCacheSet;
+
+/**
+ * Creates a map cache object to store key-value pairs.
+ *
+ * @private
+ * @constructor
+ * @param {Array} [entries] The key-value pairs to cache.
+ */
+function MapCache(entries) {
+  var index = -1,
+      length = entries ? entries.length : 0;
+
+  this.clear();
+  while (++index < length) {
+    var entry = entries[index];
+    this.set(entry[0], entry[1]);
+  }
+}
+
+/**
+ * Removes all key-value entries from the map.
+ *
+ * @private
+ * @name clear
+ * @memberOf MapCache
+ */
+function mapCacheClear() {
+  this.__data__ = {
+    'hash': new Hash,
+    'map': new (Map || ListCache),
+    'string': new Hash
+  };
+}
+
+/**
+ * Removes `key` and its value from the map.
+ *
+ * @private
+ * @name delete
+ * @memberOf MapCache
+ * @param {string} key The key of the value to remove.
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
+ */
+function mapCacheDelete(key) {
+  return getMapData(this, key)['delete'](key);
+}
+
+/**
+ * Gets the map value for `key`.
+ *
+ * @private
+ * @name get
+ * @memberOf MapCache
+ * @param {string} key The key of the value to get.
+ * @returns {*} Returns the entry value.
+ */
+function mapCacheGet(key) {
+  return getMapData(this, key).get(key);
+}
+
+/**
+ * Checks if a map value for `key` exists.
+ *
+ * @private
+ * @name has
+ * @memberOf MapCache
+ * @param {string} key The key of the entry to check.
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+ */
+function mapCacheHas(key) {
+  return getMapData(this, key).has(key);
+}
+
+/**
+ * Sets the map `key` to `value`.
+ *
+ * @private
+ * @name set
+ * @memberOf MapCache
+ * @param {string} key The key of the value to set.
+ * @param {*} value The value to set.
+ * @returns {Object} Returns the map cache instance.
+ */
+function mapCacheSet(key, value) {
+  getMapData(this, key).set(key, value);
+  return this;
+}
+
+// Add methods to `MapCache`.
+MapCache.prototype.clear = mapCacheClear;
+MapCache.prototype['delete'] = mapCacheDelete;
+MapCache.prototype.get = mapCacheGet;
+MapCache.prototype.has = mapCacheHas;
+MapCache.prototype.set = mapCacheSet;
+
+/**
+ *
+ * Creates an array cache object to store unique values.
+ *
+ * @private
+ * @constructor
+ * @param {Array} [values] The values to cache.
+ */
+function SetCache(values) {
+  var index = -1,
+      length = values ? values.length : 0;
+
+  this.__data__ = new MapCache;
+  while (++index < length) {
+    this.add(values[index]);
+  }
+}
+
+/**
+ * Adds `value` to the array cache.
+ *
+ * @private
+ * @name add
+ * @memberOf SetCache
+ * @alias push
+ * @param {*} value The value to cache.
+ * @returns {Object} Returns the cache instance.
+ */
+function setCacheAdd(value) {
+  this.__data__.set(value, HASH_UNDEFINED);
+  return this;
+}
+
+/**
+ * Checks if `value` is in the array cache.
+ *
+ * @private
+ * @name has
+ * @memberOf SetCache
+ * @param {*} value The value to search for.
+ * @returns {number} Returns `true` if `value` is found, else `false`.
+ */
+function setCacheHas(value) {
+  return this.__data__.has(value);
+}
+
+// Add methods to `SetCache`.
+SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
+SetCache.prototype.has = setCacheHas;
+
+/**
+ * Gets the index at which the `key` is found in `array` of key-value pairs.
+ *
+ * @private
+ * @param {Array} array The array to inspect.
+ * @param {*} key The key to search for.
+ * @returns {number} Returns the index of the matched value, else `-1`.
+ */
+function assocIndexOf(array, key) {
+  var length = array.length;
+  while (length--) {
+    if (eq(array[length][0], key)) {
+      return length;
+    }
+  }
+  return -1;
+}
+
+/**
+ * The base implementation of `_.isNative` without bad shim checks.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a native function,
+ *  else `false`.
+ */
+function baseIsNative(value) {
+  if (!isObject(value) || isMasked(value)) {
+    return false;
+  }
+  var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;
+  return pattern.test(toSource(value));
+}
+
+/**
+ * The base implementation of `_.uniqBy` without support for iteratee shorthands.
+ *
+ * @private
+ * @param {Array} array The array to inspect.
+ * @param {Function} [iteratee] The iteratee invoked per element.
+ * @param {Function} [comparator] The comparator invoked per element.
+ * @returns {Array} Returns the new duplicate free array.
+ */
+function baseUniq(array, iteratee, comparator) {
+  var index = -1,
+      includes = arrayIncludes,
+      length = array.length,
+      isCommon = true,
+      result = [],
+      seen = result;
+
+  if (comparator) {
+    isCommon = false;
+    includes = arrayIncludesWith;
+  }
+  else if (length >= LARGE_ARRAY_SIZE) {
+    var set = iteratee ? null : createSet(array);
+    if (set) {
+      return setToArray(set);
+    }
+    isCommon = false;
+    includes = cacheHas;
+    seen = new SetCache;
+  }
+  else {
+    seen = iteratee ? [] : result;
+  }
+  outer:
+  while (++index < length) {
+    var value = array[index],
+        computed = iteratee ? iteratee(value) : value;
+
+    value = (comparator || value !== 0) ? value : 0;
+    if (isCommon && computed === computed) {
+      var seenIndex = seen.length;
+      while (seenIndex--) {
+        if (seen[seenIndex] === computed) {
+          continue outer;
+        }
+      }
+      if (iteratee) {
+        seen.push(computed);
+      }
+      result.push(value);
+    }
+    else if (!includes(seen, computed, comparator)) {
+      if (seen !== result) {
+        seen.push(computed);
+      }
+      result.push(value);
+    }
+  }
+  return result;
+}
+
+/**
+ * Creates a set object of `values`.
+ *
+ * @private
+ * @param {Array} values The values to add to the set.
+ * @returns {Object} Returns the new set.
+ */
+var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {
+  return new Set(values);
+};
+
+/**
+ * Gets the data for `map`.
+ *
+ * @private
+ * @param {Object} map The map to query.
+ * @param {string} key The reference key.
+ * @returns {*} Returns the map data.
+ */
+function getMapData(map, key) {
+  var data = map.__data__;
+  return isKeyable(key)
+    ? data[typeof key == 'string' ? 'string' : 'hash']
+    : data.map;
+}
+
+/**
+ * Gets the native function at `key` of `object`.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @param {string} key The key of the method to get.
+ * @returns {*} Returns the function if it's native, else `undefined`.
+ */
+function getNative(object, key) {
+  var value = getValue(object, key);
+  return baseIsNative(value) ? value : undefined;
+}
+
+/**
+ * Checks if `value` is suitable for use as unique object key.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
+ */
+function isKeyable(value) {
+  var type = typeof value;
+  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
+    ? (value !== '__proto__')
+    : (value === null);
+}
+
+/**
+ * Checks if `func` has its source masked.
+ *
+ * @private
+ * @param {Function} func The function to check.
+ * @returns {boolean} Returns `true` if `func` is masked, else `false`.
+ */
+function isMasked(func) {
+  return !!maskSrcKey && (maskSrcKey in func);
+}
+
+/**
+ * Converts `func` to its source code.
+ *
+ * @private
+ * @param {Function} func The function to process.
+ * @returns {string} Returns the source code.
+ */
+function toSource(func) {
+  if (func != null) {
+    try {
+      return funcToString.call(func);
+    } catch (e) {}
+    try {
+      return (func + '');
+    } catch (e) {}
+  }
+  return '';
+}
+
+/**
+ * Creates a duplicate-free version of an array, using
+ * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
+ * for equality comparisons, in which only the first occurrence of each
+ * element is kept.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Array
+ * @param {Array} array The array to inspect.
+ * @returns {Array} Returns the new duplicate free array.
+ * @example
+ *
+ * _.uniq([2, 1, 2]);
+ * // => [2, 1]
+ */
+function uniq(array) {
+  return (array && array.length)
+    ? baseUniq(array)
+    : [];
+}
+
+/**
+ * Performs a
+ * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
+ * comparison between two values to determine if they are equivalent.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to compare.
+ * @param {*} other The other value to compare.
+ * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
+ * @example
+ *
+ * var object = { 'a': 1 };
+ * var other = { 'a': 1 };
+ *
+ * _.eq(object, object);
+ * // => true
+ *
+ * _.eq(object, other);
+ * // => false
+ *
+ * _.eq('a', 'a');
+ * // => true
+ *
+ * _.eq('a', Object('a'));
+ * // => false
+ *
+ * _.eq(NaN, NaN);
+ * // => true
+ */
+function eq(value, other) {
+  return value === other || (value !== value && other !== other);
+}
+
+/**
+ * Checks if `value` is classified as a `Function` object.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a function, else `false`.
+ * @example
+ *
+ * _.isFunction(_);
+ * // => true
+ *
+ * _.isFunction(/abc/);
+ * // => false
+ */
+function isFunction(value) {
+  // The use of `Object#toString` avoids issues with the `typeof` operator
+  // in Safari 8-9 which returns 'object' for typed array and other constructors.
+  var tag = isObject(value) ? objectToString.call(value) : '';
+  return tag == funcTag || tag == genTag;
+}
+
+/**
+ * Checks if `value` is the
+ * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
+ * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an object, else `false`.
+ * @example
+ *
+ * _.isObject({});
+ * // => true
+ *
+ * _.isObject([1, 2, 3]);
+ * // => true
+ *
+ * _.isObject(_.noop);
+ * // => true
+ *
+ * _.isObject(null);
+ * // => false
+ */
+function isObject(value) {
+  var type = typeof value;
+  return !!value && (type == 'object' || type == 'function');
+}
+
+/**
+ * This method returns `undefined`.
+ *
+ * @static
+ * @memberOf _
+ * @since 2.3.0
+ * @category Util
+ * @example
+ *
+ * _.times(2, _.noop);
+ * // => [undefined, undefined]
+ */
+function noop() {
+  // No operation performed.
+}
+
+module.exports = uniq;
diff --git a/setup-maven/node_modules/lodash.uniq/package.json b/setup-maven/node_modules/lodash.uniq/package.json
new file mode 100644
index 0000000..4f55ae4
--- /dev/null
+++ b/setup-maven/node_modules/lodash.uniq/package.json
@@ -0,0 +1,69 @@
+{
+  "_from": "lodash.uniq@^4.5.0",
+  "_id": "lodash.uniq@4.5.0",
+  "_inBundle": false,
+  "_integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=",
+  "_location": "/lodash.uniq",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "lodash.uniq@^4.5.0",
+    "name": "lodash.uniq",
+    "escapedName": "lodash.uniq",
+    "rawSpec": "^4.5.0",
+    "saveSpec": null,
+    "fetchSpec": "^4.5.0"
+  },
+  "_requiredBy": [
+    "/@octokit/rest"
+  ],
+  "_resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
+  "_shasum": "d0225373aeb652adc1bc82e4945339a842754773",
+  "_spec": "lodash.uniq@^4.5.0",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/@octokit/rest",
+  "author": {
+    "name": "John-David Dalton",
+    "email": "john.david.dalton@gmail.com",
+    "url": "http://allyoucanleet.com/"
+  },
+  "bugs": {
+    "url": "https://github.com/lodash/lodash/issues"
+  },
+  "bundleDependencies": false,
+  "contributors": [
+    {
+      "name": "John-David Dalton",
+      "email": "john.david.dalton@gmail.com",
+      "url": "http://allyoucanleet.com/"
+    },
+    {
+      "name": "Blaine Bublitz",
+      "email": "blaine.bublitz@gmail.com",
+      "url": "https://github.com/phated"
+    },
+    {
+      "name": "Mathias Bynens",
+      "email": "mathias@qiwi.be",
+      "url": "https://mathiasbynens.be/"
+    }
+  ],
+  "deprecated": false,
+  "description": "The lodash method `_.uniq` exported as a module.",
+  "homepage": "https://lodash.com/",
+  "icon": "https://lodash.com/icon.svg",
+  "keywords": [
+    "lodash-modularized",
+    "uniq"
+  ],
+  "license": "MIT",
+  "name": "lodash.uniq",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/lodash/lodash.git"
+  },
+  "scripts": {
+    "test": "echo \"See https://travis-ci.org/lodash/lodash-cli for testing details.\""
+  },
+  "version": "4.5.0"
+}
diff --git a/setup-maven/node_modules/macos-release/index.d.ts b/setup-maven/node_modules/macos-release/index.d.ts
new file mode 100644
index 0000000..c4efcf4
--- /dev/null
+++ b/setup-maven/node_modules/macos-release/index.d.ts
@@ -0,0 +1,36 @@
+declare const macosRelease: {
+	/**
+	Get the name and version of a macOS release from the Darwin version.
+
+	@param release - By default, the current operating system is used, but you can supply a custom [Darwin kernel version](http://en.wikipedia.org/wiki/Darwin_%28operating_system%29#Release_history), which is the output of [`os.release()`](https://nodejs.org/api/os.html#os_os_release).
+
+	@example
+	```
+	import * as os from 'os';
+	import macosRelease = require('macos-release');
+
+	// On a macOS Sierra system
+
+	macosRelease();
+	//=> {name: 'Sierra', version: '10.12'}
+
+	os.release();
+	//=> 13.2.0
+	// This is the Darwin kernel version
+
+	macosRelease(os.release());
+	//=> {name: 'Sierra', version: '10.12'}
+
+	macosRelease('14.0.0');
+	//=> {name: 'Yosemite', version: '10.10'}
+	```
+	*/
+	(release?: string): string;
+
+	// TODO: remove this in the next major version, refactor the whole definition to:
+	// declare function macosRelease(release?: string): string;
+	// export = macosRelease;
+	default: typeof macosRelease;
+};
+
+export = macosRelease;
diff --git a/setup-maven/node_modules/macos-release/index.js b/setup-maven/node_modules/macos-release/index.js
new file mode 100644
index 0000000..b6eba6b
--- /dev/null
+++ b/setup-maven/node_modules/macos-release/index.js
@@ -0,0 +1,32 @@
+'use strict';
+const os = require('os');
+
+const nameMap = new Map([
+	[19, 'Catalina'],
+	[18, 'Mojave'],
+	[17, 'High Sierra'],
+	[16, 'Sierra'],
+	[15, 'El Capitan'],
+	[14, 'Yosemite'],
+	[13, 'Mavericks'],
+	[12, 'Mountain Lion'],
+	[11, 'Lion'],
+	[10, 'Snow Leopard'],
+	[9, 'Leopard'],
+	[8, 'Tiger'],
+	[7, 'Panther'],
+	[6, 'Jaguar'],
+	[5, 'Puma']
+]);
+
+const macosRelease = release => {
+	release = Number((release || os.release()).split('.')[0]);
+	return {
+		name: nameMap.get(release),
+		version: '10.' + (release - 4)
+	};
+};
+
+module.exports = macosRelease;
+// TODO: remove this in the next major version
+module.exports.default = macosRelease;
diff --git a/setup-maven/node_modules/macos-release/license b/setup-maven/node_modules/macos-release/license
new file mode 100644
index 0000000..e7af2f7
--- /dev/null
+++ b/setup-maven/node_modules/macos-release/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/setup-maven/node_modules/macos-release/package.json b/setup-maven/node_modules/macos-release/package.json
new file mode 100644
index 0000000..143691a
--- /dev/null
+++ b/setup-maven/node_modules/macos-release/package.json
@@ -0,0 +1,71 @@
+{
+  "_from": "macos-release@^2.2.0",
+  "_id": "macos-release@2.3.0",
+  "_inBundle": false,
+  "_integrity": "sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA==",
+  "_location": "/macos-release",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "macos-release@^2.2.0",
+    "name": "macos-release",
+    "escapedName": "macos-release",
+    "rawSpec": "^2.2.0",
+    "saveSpec": null,
+    "fetchSpec": "^2.2.0"
+  },
+  "_requiredBy": [
+    "/os-name"
+  ],
+  "_resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.3.0.tgz",
+  "_shasum": "eb1930b036c0800adebccd5f17bc4c12de8bb71f",
+  "_spec": "macos-release@^2.2.0",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/os-name",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/macos-release/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "Get the name and version of a macOS release from the Darwin version",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "tsd": "^0.7.1",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/sindresorhus/macos-release#readme",
+  "keywords": [
+    "macos",
+    "os",
+    "darwin",
+    "operating",
+    "system",
+    "platform",
+    "name",
+    "title",
+    "release",
+    "version"
+  ],
+  "license": "MIT",
+  "name": "macos-release",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/macos-release.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "2.3.0"
+}
diff --git a/setup-maven/node_modules/macos-release/readme.md b/setup-maven/node_modules/macos-release/readme.md
new file mode 100644
index 0000000..2e7b907
--- /dev/null
+++ b/setup-maven/node_modules/macos-release/readme.md
@@ -0,0 +1,57 @@
+# macos-release [![Build Status](https://travis-ci.org/sindresorhus/macos-release.svg?branch=master)](https://travis-ci.org/sindresorhus/macos-release)
+
+> Get the name and version of a macOS release from the Darwin version<br>
+> Example: `13.2.0` → `{name: 'Mavericks', version: '10.9'}`
+
+
+## Install
+
+```
+$ npm install macos-release
+```
+
+
+## Usage
+
+```js
+const os = require('os');
+const macosRelease = require('macos-release');
+
+// On a macOS Sierra system
+
+macosRelease();
+//=> {name: 'Sierra', version: '10.12'}
+
+os.release();
+//=> 13.2.0
+// This is the Darwin kernel version
+
+macosRelease(os.release());
+//=> {name: 'Sierra', version: '10.12'}
+
+macosRelease('14.0.0');
+//=> {name: 'Yosemite', version: '10.10'}
+```
+
+
+## API
+
+### macosRelease([release])
+
+#### release
+
+Type: `string`
+
+By default, the current operating system is used, but you can supply a custom [Darwin kernel version](http://en.wikipedia.org/wiki/Darwin_%28operating_system%29#Release_history), which is the output of [`os.release()`](http://nodejs.org/api/os.html#os_os_release).
+
+
+## Related
+
+- [os-name](https://github.com/sindresorhus/os-name) - Get the name of the current operating system. Example: `macOS Sierra`
+- [macos-version](https://github.com/sindresorhus/macos-version) - Get the macOS version of the current system. Example: `10.9.3`
+- [win-release](https://github.com/sindresorhus/win-release) - Get the name of a Windows version from the release number: `5.1.2600` → `XP`
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/setup-maven/node_modules/nice-try/CHANGELOG.md b/setup-maven/node_modules/nice-try/CHANGELOG.md
new file mode 100644
index 0000000..9e6baf2
--- /dev/null
+++ b/setup-maven/node_modules/nice-try/CHANGELOG.md
@@ -0,0 +1,21 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
+
+## [1.0.5] - 2018-08-25
+
+### Changed
+
+- Removed `prepublish` script from `package.json`
+
+## [1.0.4] - 2017-08-08
+
+### New
+
+- Added a changelog
+
+### Changed
+
+- Ignore `yarn.lock` and `package-lock.json` files
\ No newline at end of file
diff --git a/setup-maven/node_modules/nice-try/LICENSE b/setup-maven/node_modules/nice-try/LICENSE
new file mode 100644
index 0000000..681c8f5
--- /dev/null
+++ b/setup-maven/node_modules/nice-try/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2018 Tobias Reich
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/setup-maven/node_modules/nice-try/README.md b/setup-maven/node_modules/nice-try/README.md
new file mode 100644
index 0000000..5b83b78
--- /dev/null
+++ b/setup-maven/node_modules/nice-try/README.md
@@ -0,0 +1,32 @@
+# nice-try
+
+[![Travis Build Status](https://travis-ci.org/electerious/nice-try.svg?branch=master)](https://travis-ci.org/electerious/nice-try) [![AppVeyor Status](https://ci.appveyor.com/api/projects/status/8tqb09wrwci3xf8l?svg=true)](https://ci.appveyor.com/project/electerious/nice-try) [![Coverage Status](https://coveralls.io/repos/github/electerious/nice-try/badge.svg?branch=master)](https://coveralls.io/github/electerious/nice-try?branch=master) [![Dependencies](https://david-dm.org/electerious/nice-try.svg)](https://david-dm.org/electerious/nice-try#info=dependencies) [![Greenkeeper badge](https://badges.greenkeeper.io/electerious/nice-try.svg)](https://greenkeeper.io/)
+
+A function that tries to execute a function and discards any error that occurs.
+
+## Install
+
+```
+npm install nice-try
+```
+
+## Usage
+
+```js
+const niceTry = require('nice-try')
+
+niceTry(() => JSON.parse('true')) // true
+niceTry(() => JSON.parse('truee')) // undefined
+niceTry() // undefined
+niceTry(true) // undefined
+```
+
+## API
+
+### Parameters
+
+- `fn` `{Function}` Function that might or might not throw an error.
+
+### Returns
+
+- `{?*}` Return-value of the function when no error occurred.
\ No newline at end of file
diff --git a/setup-maven/node_modules/nice-try/package.json b/setup-maven/node_modules/nice-try/package.json
new file mode 100644
index 0000000..934913c
--- /dev/null
+++ b/setup-maven/node_modules/nice-try/package.json
@@ -0,0 +1,61 @@
+{
+  "_from": "nice-try@^1.0.4",
+  "_id": "nice-try@1.0.5",
+  "_inBundle": false,
+  "_integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+  "_location": "/nice-try",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "nice-try@^1.0.4",
+    "name": "nice-try",
+    "escapedName": "nice-try",
+    "rawSpec": "^1.0.4",
+    "saveSpec": null,
+    "fetchSpec": "^1.0.4"
+  },
+  "_requiredBy": [
+    "/cross-spawn"
+  ],
+  "_resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+  "_shasum": "a3378a7696ce7d223e88fc9b764bd7ef1089e366",
+  "_spec": "nice-try@^1.0.4",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/cross-spawn",
+  "authors": [
+    "Tobias Reich <tobias@electerious.com>"
+  ],
+  "bugs": {
+    "url": "https://github.com/electerious/nice-try/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "Tries to execute a function and discards any error that occurs",
+  "devDependencies": {
+    "chai": "^4.1.2",
+    "coveralls": "^3.0.0",
+    "mocha": "^5.1.1",
+    "nyc": "^12.0.1"
+  },
+  "files": [
+    "src"
+  ],
+  "homepage": "https://github.com/electerious/nice-try",
+  "keywords": [
+    "try",
+    "catch",
+    "error"
+  ],
+  "license": "MIT",
+  "main": "src/index.js",
+  "name": "nice-try",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/electerious/nice-try.git"
+  },
+  "scripts": {
+    "coveralls": "nyc report --reporter=text-lcov | coveralls",
+    "test": "nyc node_modules/mocha/bin/_mocha"
+  },
+  "version": "1.0.5"
+}
diff --git a/setup-maven/node_modules/nice-try/src/index.js b/setup-maven/node_modules/nice-try/src/index.js
new file mode 100644
index 0000000..837506f
--- /dev/null
+++ b/setup-maven/node_modules/nice-try/src/index.js
@@ -0,0 +1,12 @@
+'use strict'
+
+/**
+ * Tries to execute a function and discards any error that occurs.
+ * @param {Function} fn - Function that might or might not throw an error.
+ * @returns {?*} Return-value of the function when no error occurred.
+ */
+module.exports = function(fn) {
+
+	try { return fn() } catch (e) {}
+
+}
\ No newline at end of file
diff --git a/setup-maven/node_modules/node-fetch/CHANGELOG.md b/setup-maven/node_modules/node-fetch/CHANGELOG.md
new file mode 100644
index 0000000..188fcd3
--- /dev/null
+++ b/setup-maven/node_modules/node-fetch/CHANGELOG.md
@@ -0,0 +1,266 @@
+
+Changelog
+=========
+
+
+# 2.x release
+
+## v2.6.0
+
+- Enhance: `options.agent`, it now accepts a function that returns custom http(s).Agent instance based on current URL, see readme for more information.
+- Fix: incorrect `Content-Length` was returned for stream body in 2.5.0 release; note that `node-fetch` doesn't calculate content length for stream body.
+- Fix: `Response.url` should return empty string instead of `null` by default.
+
+## v2.5.0
+
+- Enhance: `Response` object now includes `redirected` property.
+- Enhance: `fetch()` now accepts third-party `Blob` implementation as body.
+- Other: disable `package-lock.json` generation as we never commit them.
+- Other: dev dependency update.
+- Other: readme update.
+
+## v2.4.1
+
+- Fix: `Blob` import rule for node < 10, as `Readable` isn't a named export.
+
+## v2.4.0
+
+- Enhance: added `Brotli` compression support (using node's zlib).
+- Enhance: updated `Blob` implementation per spec.
+- Fix: set content type automatically for `URLSearchParams`.
+- Fix: `Headers` now reject empty header names.
+- Fix: test cases, as node 12+ no longer accepts invalid header response.
+
+## v2.3.0
+
+- Enhance: added `AbortSignal` support, with README example.
+- Enhance: handle invalid `Location` header during redirect by rejecting them explicitly with `FetchError`.
+- Fix: update `browser.js` to support react-native environment, where `self` isn't available globally.
+
+## v2.2.1
+
+- Fix: `compress` flag shouldn't overwrite existing `Accept-Encoding` header.
+- Fix: multiple `import` rules, where `PassThrough` etc. doesn't have a named export when using node <10 and `--exerimental-modules` flag.
+- Other: Better README.
+
+## v2.2.0
+
+- Enhance: Support all `ArrayBuffer` view types
+- Enhance: Support Web Workers
+- Enhance: Support Node.js' `--experimental-modules` mode; deprecate `.es.js` file
+- Fix: Add `__esModule` property to the exports object
+- Other: Better example in README for writing response to a file
+- Other: More tests for Agent
+
+## v2.1.2
+
+- Fix: allow `Body` methods to work on `ArrayBuffer`-backed `Body` objects
+- Fix: reject promise returned by `Body` methods when the accumulated `Buffer` exceeds the maximum size
+- Fix: support custom `Host` headers with any casing
+- Fix: support importing `fetch()` from TypeScript in `browser.js`
+- Fix: handle the redirect response body properly
+
+## v2.1.1
+
+Fix packaging errors in v2.1.0.
+
+## v2.1.0
+
+- Enhance: allow using ArrayBuffer as the `body` of a `fetch()` or `Request`
+- Fix: store HTTP headers of a `Headers` object internally with the given case, for compatibility with older servers that incorrectly treated header names in a case-sensitive manner
+- Fix: silently ignore invalid HTTP headers
+- Fix: handle HTTP redirect responses without a `Location` header just like non-redirect responses
+- Fix: include bodies when following a redirection when appropriate
+
+## v2.0.0
+
+This is a major release. Check [our upgrade guide](https://github.com/bitinn/node-fetch/blob/master/UPGRADE-GUIDE.md) for an overview on some key differences between v1 and v2.
+
+### General changes
+
+- Major: Node.js 0.10.x and 0.12.x support is dropped
+- Major: `require('node-fetch/lib/response')` etc. is now unsupported; use `require('node-fetch').Response` or ES6 module imports
+- Enhance: start testing on Node.js v4.x, v6.x, v8.x LTS, as well as v9.x stable
+- Enhance: use Rollup to produce a distributed bundle (less memory overhead and faster startup)
+- Enhance: make `Object.prototype.toString()` on Headers, Requests, and Responses return correct class strings
+- Other: rewrite in ES2015 using Babel
+- Other: use Codecov for code coverage tracking
+- Other: update package.json script for npm 5
+- Other: `encoding` module is now optional (alpha.7)
+- Other: expose browser.js through package.json, avoid bundling mishaps (alpha.9)
+- Other: allow TypeScript to `import` node-fetch by exposing default (alpha.9)
+
+### HTTP requests
+
+- Major: overwrite user's `Content-Length` if we can be sure our information is correct (per spec)
+- Fix: errors in a response are caught before the body is accessed
+- Fix: support WHATWG URL objects, created by `whatwg-url` package or `require('url').URL` in Node.js 7+
+
+### Response and Request classes
+
+- Major: `response.text()` no longer attempts to detect encoding, instead always opting for UTF-8 (per spec); use `response.textConverted()` for the v1 behavior
+- Major: make `response.json()` throw error instead of returning an empty object on 204 no-content respose (per spec; reverts behavior changed in v1.6.2)
+- Major: internal methods are no longer exposed
+- Major: throw error when a `GET` or `HEAD` Request is constructed with a non-null body (per spec)
+- Enhance: add `response.arrayBuffer()` (also applies to Requests)
+- Enhance: add experimental `response.blob()` (also applies to Requests)
+- Enhance: `URLSearchParams` is now accepted as a body
+- Enhance: wrap `response.json()` json parsing error as `FetchError`
+- Fix: fix Request and Response with `null` body
+
+### Headers class
+
+- Major: remove `headers.getAll()`; make `get()` return all headers delimited by commas (per spec)
+- Enhance: make Headers iterable
+- Enhance: make Headers constructor accept an array of tuples
+- Enhance: make sure header names and values are valid in HTTP
+- Fix: coerce Headers prototype function parameters to strings, where applicable
+
+### Documentation
+
+- Enhance: more comprehensive API docs
+- Enhance: add a list of default headers in README
+
+
+# 1.x release
+
+## backport releases (v1.7.0 and beyond)
+
+See [changelog on 1.x branch](https://github.com/bitinn/node-fetch/blob/1.x/CHANGELOG.md) for details.
+
+## v1.6.3
+
+- Enhance: error handling document to explain `FetchError` design
+- Fix: support `form-data` 2.x releases (requires `form-data` >= 2.1.0)
+
+## v1.6.2
+
+- Enhance: minor document update
+- Fix: response.json() returns empty object on 204 no-content response instead of throwing a syntax error
+
+## v1.6.1
+
+- Fix: if `res.body` is a non-stream non-formdata object, we will call `body.toString` and send it as a string
+- Fix: `counter` value is incorrectly set to `follow` value when wrapping Request instance
+- Fix: documentation update
+
+## v1.6.0
+
+- Enhance: added `res.buffer()` api for convenience, it returns body as a Node.js buffer
+- Enhance: better old server support by handling raw deflate response
+- Enhance: skip encoding detection for non-HTML/XML response
+- Enhance: minor document update
+- Fix: HEAD request doesn't need decompression, as body is empty
+- Fix: `req.body` now accepts a Node.js buffer
+
+## v1.5.3
+
+- Fix: handle 204 and 304 responses when body is empty but content-encoding is gzip/deflate
+- Fix: allow resolving response and cloned response in any order
+- Fix: avoid setting `content-length` when `form-data` body use streams
+- Fix: send DELETE request with content-length when body is present
+- Fix: allow any url when calling new Request, but still reject non-http(s) url in fetch
+
+## v1.5.2
+
+- Fix: allow node.js core to handle keep-alive connection pool when passing a custom agent
+
+## v1.5.1
+
+- Fix: redirect mode `manual` should work even when there is no redirection or broken redirection
+
+## v1.5.0
+
+- Enhance: rejected promise now use custom `Error` (thx to @pekeler)
+- Enhance: `FetchError` contains `err.type` and `err.code`, allows for better error handling (thx to @pekeler)
+- Enhance: basic support for redirect mode `manual` and `error`, allows for location header extraction (thx to @jimmywarting for the initial PR)
+
+## v1.4.1
+
+- Fix: wrapping Request instance with FormData body again should preserve the body as-is
+
+## v1.4.0
+
+- Enhance: Request and Response now have `clone` method (thx to @kirill-konshin for the initial PR)
+- Enhance: Request and Response now have proper string and buffer body support (thx to @kirill-konshin)
+- Enhance: Body constructor has been refactored out (thx to @kirill-konshin)
+- Enhance: Headers now has `forEach` method (thx to @tricoder42)
+- Enhance: back to 100% code coverage
+- Fix: better form-data support (thx to @item4)
+- Fix: better character encoding detection under chunked encoding (thx to @dsuket for the initial PR)
+
+## v1.3.3
+
+- Fix: make sure `Content-Length` header is set when body is string for POST/PUT/PATCH requests
+- Fix: handle body stream error, for cases such as incorrect `Content-Encoding` header
+- Fix: when following certain redirects, use `GET` on subsequent request per Fetch Spec
+- Fix: `Request` and `Response` constructors now parse headers input using `Headers`
+
+## v1.3.2
+
+- Enhance: allow auto detect of form-data input (no `FormData` spec on node.js, this is form-data specific feature)
+
+## v1.3.1
+
+- Enhance: allow custom host header to be set (server-side only feature, as it's a forbidden header on client-side)
+
+## v1.3.0
+
+- Enhance: now `fetch.Request` is exposed as well
+
+## v1.2.1
+
+- Enhance: `Headers` now normalized `Number` value to `String`, prevent common mistakes
+
+## v1.2.0
+
+- Enhance: now fetch.Headers and fetch.Response are exposed, making testing easier
+
+## v1.1.2
+
+- Fix: `Headers` should only support `String` and `Array` properties, and ignore others
+
+## v1.1.1
+
+- Enhance: now req.headers accept both plain object and `Headers` instance
+
+## v1.1.0
+
+- Enhance: timeout now also applies to response body (in case of slow response)
+- Fix: timeout is now cleared properly when fetch is done/has failed
+
+## v1.0.6
+
+- Fix: less greedy content-type charset matching
+
+## v1.0.5
+
+- Fix: when `follow = 0`, fetch should not follow redirect
+- Enhance: update tests for better coverage
+- Enhance: code formatting
+- Enhance: clean up doc
+
+## v1.0.4
+
+- Enhance: test iojs support
+- Enhance: timeout attached to socket event only fire once per redirect
+
+## v1.0.3
+
+- Fix: response size limit should reject large chunk
+- Enhance: added character encoding detection for xml, such as rss/atom feed (encoding in DTD)
+
+## v1.0.2
+
+- Fix: added res.ok per spec change
+
+## v1.0.0
+
+- Enhance: better test coverage and doc
+
+
+# 0.x release
+
+## v0.1
+
+- Major: initial public release
diff --git a/setup-maven/node_modules/node-fetch/LICENSE.md b/setup-maven/node_modules/node-fetch/LICENSE.md
new file mode 100644
index 0000000..660ffec
--- /dev/null
+++ b/setup-maven/node_modules/node-fetch/LICENSE.md
@@ -0,0 +1,22 @@
+The MIT License (MIT)
+
+Copyright (c) 2016 David Frank
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
diff --git a/setup-maven/node_modules/node-fetch/README.md b/setup-maven/node_modules/node-fetch/README.md
new file mode 100644
index 0000000..cb19901
--- /dev/null
+++ b/setup-maven/node_modules/node-fetch/README.md
@@ -0,0 +1,583 @@
+node-fetch
+==========
+
+[![npm version][npm-image]][npm-url]
+[![build status][travis-image]][travis-url]
+[![coverage status][codecov-image]][codecov-url]
+[![install size][install-size-image]][install-size-url]
+
+A light-weight module that brings `window.fetch` to Node.js
+
+(We are looking for [v2 maintainers and collaborators](https://github.com/bitinn/node-fetch/issues/567))
+
+<!-- TOC -->
+
+- [Motivation](#motivation)
+- [Features](#features)
+- [Difference from client-side fetch](#difference-from-client-side-fetch)
+- [Installation](#installation)
+- [Loading and configuring the module](#loading-and-configuring-the-module)
+- [Common Usage](#common-usage)
+    - [Plain text or HTML](#plain-text-or-html)
+    - [JSON](#json)
+    - [Simple Post](#simple-post)
+    - [Post with JSON](#post-with-json)
+    - [Post with form parameters](#post-with-form-parameters)
+    - [Handling exceptions](#handling-exceptions)
+    - [Handling client and server errors](#handling-client-and-server-errors)
+- [Advanced Usage](#advanced-usage)
+    - [Streams](#streams)
+    - [Buffer](#buffer)
+    - [Accessing Headers and other Meta data](#accessing-headers-and-other-meta-data)
+    - [Extract Set-Cookie Header](#extract-set-cookie-header)
+    - [Post data using a file stream](#post-data-using-a-file-stream)
+    - [Post with form-data (detect multipart)](#post-with-form-data-detect-multipart)
+    - [Request cancellation with AbortSignal](#request-cancellation-with-abortsignal)
+- [API](#api)
+    - [fetch(url[, options])](#fetchurl-options)
+    - [Options](#options)
+    - [Class: Request](#class-request)
+    - [Class: Response](#class-response)
+    - [Class: Headers](#class-headers)
+    - [Interface: Body](#interface-body)
+    - [Class: FetchError](#class-fetcherror)
+- [License](#license)
+- [Acknowledgement](#acknowledgement)
+
+<!-- /TOC -->
+
+## Motivation
+
+Instead of implementing `XMLHttpRequest` in Node.js to run browser-specific [Fetch polyfill](https://github.com/github/fetch), why not go from native `http` to `fetch` API directly? Hence `node-fetch`, minimal code for a `window.fetch` compatible API on Node.js runtime.
+
+See Matt Andrews' [isomorphic-fetch](https://github.com/matthew-andrews/isomorphic-fetch) or Leonardo Quixada's [cross-fetch](https://github.com/lquixada/cross-fetch) for isomorphic usage (exports `node-fetch` for server-side, `whatwg-fetch` for client-side).
+
+## Features
+
+- Stay consistent with `window.fetch` API.
+- Make conscious trade-off when following [WHATWG fetch spec][whatwg-fetch] and [stream spec](https://streams.spec.whatwg.org/) implementation details, document known differences.
+- Use native promise, but allow substituting it with [insert your favorite promise library].
+- Use native Node streams for body, on both request and response.
+- Decode content encoding (gzip/deflate) properly, and convert string output (such as `res.text()` and `res.json()`) to UTF-8 automatically.
+- Useful extensions such as timeout, redirect limit, response size limit, [explicit errors](ERROR-HANDLING.md) for troubleshooting.
+
+## Difference from client-side fetch
+
+- See [Known Differences](LIMITS.md) for details.
+- If you happen to use a missing feature that `window.fetch` offers, feel free to open an issue.
+- Pull requests are welcomed too!
+
+## Installation
+
+Current stable release (`2.x`)
+
+```sh
+$ npm install node-fetch --save
+```
+
+## Loading and configuring the module
+We suggest you load the module via `require`, pending the stabalizing of es modules in node:
+```js
+const fetch = require('node-fetch');
+```
+
+If you are using a Promise library other than native, set it through fetch.Promise:
+```js
+const Bluebird = require('bluebird');
+
+fetch.Promise = Bluebird;
+```
+
+## Common Usage
+
+NOTE: The documentation below is up-to-date with `2.x` releases, [see `1.x` readme](https://github.com/bitinn/node-fetch/blob/1.x/README.md), [changelog](https://github.com/bitinn/node-fetch/blob/1.x/CHANGELOG.md) and [2.x upgrade guide](UPGRADE-GUIDE.md) for the differences.
+
+#### Plain text or HTML
+```js
+fetch('https://github.com/')
+    .then(res => res.text())
+    .then(body => console.log(body));
+```
+
+#### JSON
+
+```js
+
+fetch('https://api.github.com/users/github')
+    .then(res => res.json())
+    .then(json => console.log(json));
+```
+
+#### Simple Post
+```js
+fetch('https://httpbin.org/post', { method: 'POST', body: 'a=1' })
+    .then(res => res.json()) // expecting a json response
+    .then(json => console.log(json));
+```
+
+#### Post with JSON
+
+```js
+const body = { a: 1 };
+
+fetch('https://httpbin.org/post', {
+        method: 'post',
+        body:    JSON.stringify(body),
+        headers: { 'Content-Type': 'application/json' },
+    })
+    .then(res => res.json())
+    .then(json => console.log(json));
+```
+
+#### Post with form parameters
+`URLSearchParams` is available in Node.js as of v7.5.0. See [official documentation](https://nodejs.org/api/url.html#url_class_urlsearchparams) for more usage methods.
+
+NOTE: The `Content-Type` header is only set automatically to `x-www-form-urlencoded` when an instance of `URLSearchParams` is given as such:
+
+```js
+const { URLSearchParams } = require('url');
+
+const params = new URLSearchParams();
+params.append('a', 1);
+
+fetch('https://httpbin.org/post', { method: 'POST', body: params })
+    .then(res => res.json())
+    .then(json => console.log(json));
+```
+
+#### Handling exceptions
+NOTE: 3xx-5xx responses are *NOT* exceptions, and should be handled in `then()`, see the next section.
+
+Adding a catch to the fetch promise chain will catch *all* exceptions, such as errors originating from node core libraries, like network errors, and operational errors which are instances of FetchError. See the [error handling document](ERROR-HANDLING.md)  for more details.
+
+```js
+fetch('https://domain.invalid/')
+    .catch(err => console.error(err));
+```
+
+#### Handling client and server errors
+It is common to create a helper function to check that the response contains no client (4xx) or server (5xx) error responses:
+
+```js
+function checkStatus(res) {
+    if (res.ok) { // res.status >= 200 && res.status < 300
+        return res;
+    } else {
+        throw MyCustomError(res.statusText);
+    }
+}
+
+fetch('https://httpbin.org/status/400')
+    .then(checkStatus)
+    .then(res => console.log('will not get here...'))
+```
+
+## Advanced Usage
+
+#### Streams
+The "Node.js way" is to use streams when possible:
+
+```js
+fetch('https://assets-cdn.github.com/images/modules/logos_page/Octocat.png')
+    .then(res => {
+        const dest = fs.createWriteStream('./octocat.png');
+        res.body.pipe(dest);
+    });
+```
+
+#### Buffer
+If you prefer to cache binary data in full, use buffer(). (NOTE: buffer() is a `node-fetch` only API)
+
+```js
+const fileType = require('file-type');
+
+fetch('https://assets-cdn.github.com/images/modules/logos_page/Octocat.png')
+    .then(res => res.buffer())
+    .then(buffer => fileType(buffer))
+    .then(type => { /* ... */ });
+```
+
+#### Accessing Headers and other Meta data
+```js
+fetch('https://github.com/')
+    .then(res => {
+        console.log(res.ok);
+        console.log(res.status);
+        console.log(res.statusText);
+        console.log(res.headers.raw());
+        console.log(res.headers.get('content-type'));
+    });
+```
+
+#### Extract Set-Cookie Header
+
+Unlike browsers, you can access raw `Set-Cookie` headers manually using `Headers.raw()`, this is a `node-fetch` only API.
+
+```js
+fetch(url).then(res => {
+    // returns an array of values, instead of a string of comma-separated values
+    console.log(res.headers.raw()['set-cookie']);
+});
+```
+
+#### Post data using a file stream
+
+```js
+const { createReadStream } = require('fs');
+
+const stream = createReadStream('input.txt');
+
+fetch('https://httpbin.org/post', { method: 'POST', body: stream })
+    .then(res => res.json())
+    .then(json => console.log(json));
+```
+
+#### Post with form-data (detect multipart)
+
+```js
+const FormData = require('form-data');
+
+const form = new FormData();
+form.append('a', 1);
+
+fetch('https://httpbin.org/post', { method: 'POST', body: form })
+    .then(res => res.json())
+    .then(json => console.log(json));
+
+// OR, using custom headers
+// NOTE: getHeaders() is non-standard API
+
+const form = new FormData();
+form.append('a', 1);
+
+const options = {
+    method: 'POST',
+    body: form,
+    headers: form.getHeaders()
+}
+
+fetch('https://httpbin.org/post', options)
+    .then(res => res.json())
+    .then(json => console.log(json));
+```
+
+#### Request cancellation with AbortSignal
+
+> NOTE: You may only cancel streamed requests on Node >= v8.0.0
+
+You may cancel requests with `AbortController`. A suggested implementation is [`abort-controller`](https://www.npmjs.com/package/abort-controller).
+
+An example of timing out a request after 150ms could be achieved as follows:
+
+```js
+import AbortController from 'abort-controller';
+
+const controller = new AbortController();
+const timeout = setTimeout(
+  () => { controller.abort(); },
+  150,
+);
+
+fetch(url, { signal: controller.signal })
+  .then(res => res.json())
+  .then(
+    data => {
+      useData(data)
+    },
+    err => {
+      if (err.name === 'AbortError') {
+        // request was aborted
+      }
+    },
+  )
+  .finally(() => {
+    clearTimeout(timeout);
+  });
+```
+
+See [test cases](https://github.com/bitinn/node-fetch/blob/master/test/test.js) for more examples.
+
+
+## API
+
+### fetch(url[, options])
+
+- `url` A string representing the URL for fetching
+- `options` [Options](#fetch-options) for the HTTP(S) request
+- Returns: <code>Promise&lt;[Response](#class-response)&gt;</code>
+
+Perform an HTTP(S) fetch.
+
+`url` should be an absolute url, such as `https://example.com/`. A path-relative URL (`/file/under/root`) or protocol-relative URL (`//can-be-http-or-https.com/`) will result in a rejected promise.
+
+<a id="fetch-options"></a>
+### Options
+
+The default values are shown after each option key.
+
+```js
+{
+    // These properties are part of the Fetch Standard
+    method: 'GET',
+    headers: {},        // request headers. format is the identical to that accepted by the Headers constructor (see below)
+    body: null,         // request body. can be null, a string, a Buffer, a Blob, or a Node.js Readable stream
+    redirect: 'follow', // set to `manual` to extract redirect headers, `error` to reject redirect
+    signal: null,       // pass an instance of AbortSignal to optionally abort requests
+
+    // The following properties are node-fetch extensions
+    follow: 20,         // maximum redirect count. 0 to not follow redirect
+    timeout: 0,         // req/res timeout in ms, it resets on redirect. 0 to disable (OS limit applies). Signal is recommended instead.
+    compress: true,     // support gzip/deflate content encoding. false to disable
+    size: 0,            // maximum response body size in bytes. 0 to disable
+    agent: null         // http(s).Agent instance or function that returns an instance (see below)
+}
+```
+
+##### Default Headers
+
+If no values are set, the following request headers will be sent automatically:
+
+Header              | Value
+------------------- | --------------------------------------------------------
+`Accept-Encoding`   | `gzip,deflate` _(when `options.compress === true`)_
+`Accept`            | `*/*`
+`Connection`        | `close` _(when no `options.agent` is present)_
+`Content-Length`    | _(automatically calculated, if possible)_
+`Transfer-Encoding` | `chunked` _(when `req.body` is a stream)_
+`User-Agent`        | `node-fetch/1.0 (+https://github.com/bitinn/node-fetch)`
+
+Note: when `body` is a `Stream`, `Content-Length` is not set automatically.
+
+##### Custom Agent
+
+The `agent` option allows you to specify networking related options that's out of the scope of Fetch. Including and not limit to:
+
+- Support self-signed certificate
+- Use only IPv4 or IPv6
+- Custom DNS Lookup
+
+See [`http.Agent`](https://nodejs.org/api/http.html#http_new_agent_options) for more information.
+
+In addition, `agent` option accepts a function that returns http(s).Agent instance given current [URL](https://nodejs.org/api/url.html), this is useful during a redirection chain across HTTP and HTTPS protocol.
+
+```js
+const httpAgent = new http.Agent({
+    keepAlive: true
+});
+const httpsAgent = new https.Agent({
+    keepAlive: true
+});
+
+const options = {
+    agent: function (_parsedURL) {
+        if (_parsedURL.protocol == 'http:') {
+            return httpAgent;
+        } else {
+            return httpsAgent;
+        }
+    }
+}
+```
+
+<a id="class-request"></a>
+### Class: Request
+
+An HTTP(S) request containing information about URL, method, headers, and the body. This class implements the [Body](#iface-body) interface.
+
+Due to the nature of Node.js, the following properties are not implemented at this moment:
+
+- `type`
+- `destination`
+- `referrer`
+- `referrerPolicy`
+- `mode`
+- `credentials`
+- `cache`
+- `integrity`
+- `keepalive`
+
+The following node-fetch extension properties are provided:
+
+- `follow`
+- `compress`
+- `counter`
+- `agent`
+
+See [options](#fetch-options) for exact meaning of these extensions.
+
+#### new Request(input[, options])
+
+<small>*(spec-compliant)*</small>
+
+- `input` A string representing a URL, or another `Request` (which will be cloned)
+- `options` [Options][#fetch-options] for the HTTP(S) request
+
+Constructs a new `Request` object. The constructor is identical to that in the [browser](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request).
+
+In most cases, directly `fetch(url, options)` is simpler than creating a `Request` object.
+
+<a id="class-response"></a>
+### Class: Response
+
+An HTTP(S) response. This class implements the [Body](#iface-body) interface.
+
+The following properties are not implemented in node-fetch at this moment:
+
+- `Response.error()`
+- `Response.redirect()`
+- `type`
+- `trailer`
+
+#### new Response([body[, options]])
+
+<small>*(spec-compliant)*</small>
+
+- `body` A string or [Readable stream][node-readable]
+- `options` A [`ResponseInit`][response-init] options dictionary
+
+Constructs a new `Response` object. The constructor is identical to that in the [browser](https://developer.mozilla.org/en-US/docs/Web/API/Response/Response).
+
+Because Node.js does not implement service workers (for which this class was designed), one rarely has to construct a `Response` directly.
+
+#### response.ok
+
+<small>*(spec-compliant)*</small>
+
+Convenience property representing if the request ended normally. Will evaluate to true if the response status was greater than or equal to 200 but smaller than 300.
+
+#### response.redirected
+
+<small>*(spec-compliant)*</small>
+
+Convenience property representing if the request has been redirected at least once. Will evaluate to true if the internal redirect counter is greater than 0.
+
+<a id="class-headers"></a>
+### Class: Headers
+
+This class allows manipulating and iterating over a set of HTTP headers. All methods specified in the [Fetch Standard][whatwg-fetch] are implemented.
+
+#### new Headers([init])
+
+<small>*(spec-compliant)*</small>
+
+- `init` Optional argument to pre-fill the `Headers` object
+
+Construct a new `Headers` object. `init` can be either `null`, a `Headers` object, an key-value map object, or any iterable object.
+
+```js
+// Example adapted from https://fetch.spec.whatwg.org/#example-headers-class
+
+const meta = {
+  'Content-Type': 'text/xml',
+  'Breaking-Bad': '<3'
+};
+const headers = new Headers(meta);
+
+// The above is equivalent to
+const meta = [
+  [ 'Content-Type', 'text/xml' ],
+  [ 'Breaking-Bad', '<3' ]
+];
+const headers = new Headers(meta);
+
+// You can in fact use any iterable objects, like a Map or even another Headers
+const meta = new Map();
+meta.set('Content-Type', 'text/xml');
+meta.set('Breaking-Bad', '<3');
+const headers = new Headers(meta);
+const copyOfHeaders = new Headers(headers);
+```
+
+<a id="iface-body"></a>
+### Interface: Body
+
+`Body` is an abstract interface with methods that are applicable to both `Request` and `Response` classes.
+
+The following methods are not yet implemented in node-fetch at this moment:
+
+- `formData()`
+
+#### body.body
+
+<small>*(deviation from spec)*</small>
+
+* Node.js [`Readable` stream][node-readable]
+
+The data encapsulated in the `Body` object. Note that while the [Fetch Standard][whatwg-fetch] requires the property to always be a WHATWG `ReadableStream`, in node-fetch it is a Node.js [`Readable` stream][node-readable].
+
+#### body.bodyUsed
+
+<small>*(spec-compliant)*</small>
+
+* `Boolean`
+
+A boolean property for if this body has been consumed. Per spec, a consumed body cannot be used again.
+
+#### body.arrayBuffer()
+#### body.blob()
+#### body.json()
+#### body.text()
+
+<small>*(spec-compliant)*</small>
+
+* Returns: <code>Promise</code>
+
+Consume the body and return a promise that will resolve to one of these formats.
+
+#### body.buffer()
+
+<small>*(node-fetch extension)*</small>
+
+* Returns: <code>Promise&lt;Buffer&gt;</code>
+
+Consume the body and return a promise that will resolve to a Buffer.
+
+#### body.textConverted()
+
+<small>*(node-fetch extension)*</small>
+
+* Returns: <code>Promise&lt;String&gt;</code>
+
+Identical to `body.text()`, except instead of always converting to UTF-8, encoding sniffing will be performed and text converted to UTF-8, if possible.
+
+(This API requires an optional dependency on npm package [encoding](https://www.npmjs.com/package/encoding), which you need to install manually. `webpack` users may see [a warning message](https://github.com/bitinn/node-fetch/issues/412#issuecomment-379007792) due to this optional dependency.)
+
+<a id="class-fetcherror"></a>
+### Class: FetchError
+
+<small>*(node-fetch extension)*</small>
+
+An operational error in the fetching process. See [ERROR-HANDLING.md][] for more info.
+
+<a id="class-aborterror"></a>
+### Class: AbortError
+
+<small>*(node-fetch extension)*</small>
+
+An Error thrown when the request is aborted in response to an `AbortSignal`'s `abort` event. It has a `name` property of `AbortError`. See [ERROR-HANDLING.MD][] for more info.
+
+## Acknowledgement
+
+Thanks to [github/fetch](https://github.com/github/fetch) for providing a solid implementation reference.
+
+`node-fetch` v1 was maintained by [@bitinn](https://github.com/bitinn); v2 was maintained by [@TimothyGu](https://github.com/timothygu), [@bitinn](https://github.com/bitinn) and [@jimmywarting](https://github.com/jimmywarting); v2 readme is written by [@jkantr](https://github.com/jkantr).
+
+## License
+
+MIT
+
+[npm-image]: https://flat.badgen.net/npm/v/node-fetch
+[npm-url]: https://www.npmjs.com/package/node-fetch
+[travis-image]: https://flat.badgen.net/travis/bitinn/node-fetch
+[travis-url]: https://travis-ci.org/bitinn/node-fetch
+[codecov-image]: https://flat.badgen.net/codecov/c/github/bitinn/node-fetch/master
+[codecov-url]: https://codecov.io/gh/bitinn/node-fetch
+[install-size-image]: https://flat.badgen.net/packagephobia/install/node-fetch
+[install-size-url]: https://packagephobia.now.sh/result?p=node-fetch
+[whatwg-fetch]: https://fetch.spec.whatwg.org/
+[response-init]: https://fetch.spec.whatwg.org/#responseinit
+[node-readable]: https://nodejs.org/api/stream.html#stream_readable_streams
+[mdn-headers]: https://developer.mozilla.org/en-US/docs/Web/API/Headers
+[LIMITS.md]: https://github.com/bitinn/node-fetch/blob/master/LIMITS.md
+[ERROR-HANDLING.md]: https://github.com/bitinn/node-fetch/blob/master/ERROR-HANDLING.md
+[UPGRADE-GUIDE.md]: https://github.com/bitinn/node-fetch/blob/master/UPGRADE-GUIDE.md
diff --git a/setup-maven/node_modules/node-fetch/browser.js b/setup-maven/node_modules/node-fetch/browser.js
new file mode 100644
index 0000000..0ad5de0
--- /dev/null
+++ b/setup-maven/node_modules/node-fetch/browser.js
@@ -0,0 +1,23 @@
+"use strict";
+
+// ref: https://github.com/tc39/proposal-global
+var getGlobal = function () {
+	// the only reliable means to get the global object is
+	// `Function('return this')()`
+	// However, this causes CSP violations in Chrome apps.
+	if (typeof self !== 'undefined') { return self; }
+	if (typeof window !== 'undefined') { return window; }
+	if (typeof global !== 'undefined') { return global; }
+	throw new Error('unable to locate global object');
+}
+
+var global = getGlobal();
+
+module.exports = exports = global.fetch;
+
+// Needed for TypeScript and Webpack.
+exports.default = global.fetch.bind(global);
+
+exports.Headers = global.Headers;
+exports.Request = global.Request;
+exports.Response = global.Response;
\ No newline at end of file
diff --git a/setup-maven/node_modules/node-fetch/lib/index.es.js b/setup-maven/node_modules/node-fetch/lib/index.es.js
new file mode 100644
index 0000000..37d022c
--- /dev/null
+++ b/setup-maven/node_modules/node-fetch/lib/index.es.js
@@ -0,0 +1,1633 @@
+process.emitWarning("The .es.js file is deprecated. Use .mjs instead.");
+
+import Stream from 'stream';
+import http from 'http';
+import Url from 'url';
+import https from 'https';
+import zlib from 'zlib';
+
+// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js
+
+// fix for "Readable" isn't a named export issue
+const Readable = Stream.Readable;
+
+const BUFFER = Symbol('buffer');
+const TYPE = Symbol('type');
+
+class Blob {
+	constructor() {
+		this[TYPE] = '';
+
+		const blobParts = arguments[0];
+		const options = arguments[1];
+
+		const buffers = [];
+		let size = 0;
+
+		if (blobParts) {
+			const a = blobParts;
+			const length = Number(a.length);
+			for (let i = 0; i < length; i++) {
+				const element = a[i];
+				let buffer;
+				if (element instanceof Buffer) {
+					buffer = element;
+				} else if (ArrayBuffer.isView(element)) {
+					buffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);
+				} else if (element instanceof ArrayBuffer) {
+					buffer = Buffer.from(element);
+				} else if (element instanceof Blob) {
+					buffer = element[BUFFER];
+				} else {
+					buffer = Buffer.from(typeof element === 'string' ? element : String(element));
+				}
+				size += buffer.length;
+				buffers.push(buffer);
+			}
+		}
+
+		this[BUFFER] = Buffer.concat(buffers);
+
+		let type = options && options.type !== undefined && String(options.type).toLowerCase();
+		if (type && !/[^\u0020-\u007E]/.test(type)) {
+			this[TYPE] = type;
+		}
+	}
+	get size() {
+		return this[BUFFER].length;
+	}
+	get type() {
+		return this[TYPE];
+	}
+	text() {
+		return Promise.resolve(this[BUFFER].toString());
+	}
+	arrayBuffer() {
+		const buf = this[BUFFER];
+		const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
+		return Promise.resolve(ab);
+	}
+	stream() {
+		const readable = new Readable();
+		readable._read = function () {};
+		readable.push(this[BUFFER]);
+		readable.push(null);
+		return readable;
+	}
+	toString() {
+		return '[object Blob]';
+	}
+	slice() {
+		const size = this.size;
+
+		const start = arguments[0];
+		const end = arguments[1];
+		let relativeStart, relativeEnd;
+		if (start === undefined) {
+			relativeStart = 0;
+		} else if (start < 0) {
+			relativeStart = Math.max(size + start, 0);
+		} else {
+			relativeStart = Math.min(start, size);
+		}
+		if (end === undefined) {
+			relativeEnd = size;
+		} else if (end < 0) {
+			relativeEnd = Math.max(size + end, 0);
+		} else {
+			relativeEnd = Math.min(end, size);
+		}
+		const span = Math.max(relativeEnd - relativeStart, 0);
+
+		const buffer = this[BUFFER];
+		const slicedBuffer = buffer.slice(relativeStart, relativeStart + span);
+		const blob = new Blob([], { type: arguments[2] });
+		blob[BUFFER] = slicedBuffer;
+		return blob;
+	}
+}
+
+Object.defineProperties(Blob.prototype, {
+	size: { enumerable: true },
+	type: { enumerable: true },
+	slice: { enumerable: true }
+});
+
+Object.defineProperty(Blob.prototype, Symbol.toStringTag, {
+	value: 'Blob',
+	writable: false,
+	enumerable: false,
+	configurable: true
+});
+
+/**
+ * fetch-error.js
+ *
+ * FetchError interface for operational errors
+ */
+
+/**
+ * Create FetchError instance
+ *
+ * @param   String      message      Error message for human
+ * @param   String      type         Error type for machine
+ * @param   String      systemError  For Node.js system error
+ * @return  FetchError
+ */
+function FetchError(message, type, systemError) {
+  Error.call(this, message);
+
+  this.message = message;
+  this.type = type;
+
+  // when err.type is `system`, err.code contains system error code
+  if (systemError) {
+    this.code = this.errno = systemError.code;
+  }
+
+  // hide custom error implementation details from end-users
+  Error.captureStackTrace(this, this.constructor);
+}
+
+FetchError.prototype = Object.create(Error.prototype);
+FetchError.prototype.constructor = FetchError;
+FetchError.prototype.name = 'FetchError';
+
+let convert;
+try {
+	convert = require('encoding').convert;
+} catch (e) {}
+
+const INTERNALS = Symbol('Body internals');
+
+// fix an issue where "PassThrough" isn't a named export for node <10
+const PassThrough = Stream.PassThrough;
+
+/**
+ * Body mixin
+ *
+ * Ref: https://fetch.spec.whatwg.org/#body
+ *
+ * @param   Stream  body  Readable stream
+ * @param   Object  opts  Response options
+ * @return  Void
+ */
+function Body(body) {
+	var _this = this;
+
+	var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
+	    _ref$size = _ref.size;
+
+	let size = _ref$size === undefined ? 0 : _ref$size;
+	var _ref$timeout = _ref.timeout;
+	let timeout = _ref$timeout === undefined ? 0 : _ref$timeout;
+
+	if (body == null) {
+		// body is undefined or null
+		body = null;
+	} else if (isURLSearchParams(body)) {
+		// body is a URLSearchParams
+		body = Buffer.from(body.toString());
+	} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {
+		// body is ArrayBuffer
+		body = Buffer.from(body);
+	} else if (ArrayBuffer.isView(body)) {
+		// body is ArrayBufferView
+		body = Buffer.from(body.buffer, body.byteOffset, body.byteLength);
+	} else if (body instanceof Stream) ; else {
+		// none of the above
+		// coerce to string then buffer
+		body = Buffer.from(String(body));
+	}
+	this[INTERNALS] = {
+		body,
+		disturbed: false,
+		error: null
+	};
+	this.size = size;
+	this.timeout = timeout;
+
+	if (body instanceof Stream) {
+		body.on('error', function (err) {
+			const error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);
+			_this[INTERNALS].error = error;
+		});
+	}
+}
+
+Body.prototype = {
+	get body() {
+		return this[INTERNALS].body;
+	},
+
+	get bodyUsed() {
+		return this[INTERNALS].disturbed;
+	},
+
+	/**
+  * Decode response as ArrayBuffer
+  *
+  * @return  Promise
+  */
+	arrayBuffer() {
+		return consumeBody.call(this).then(function (buf) {
+			return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
+		});
+	},
+
+	/**
+  * Return raw response as Blob
+  *
+  * @return Promise
+  */
+	blob() {
+		let ct = this.headers && this.headers.get('content-type') || '';
+		return consumeBody.call(this).then(function (buf) {
+			return Object.assign(
+			// Prevent copying
+			new Blob([], {
+				type: ct.toLowerCase()
+			}), {
+				[BUFFER]: buf
+			});
+		});
+	},
+
+	/**
+  * Decode response as json
+  *
+  * @return  Promise
+  */
+	json() {
+		var _this2 = this;
+
+		return consumeBody.call(this).then(function (buffer) {
+			try {
+				return JSON.parse(buffer.toString());
+			} catch (err) {
+				return Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));
+			}
+		});
+	},
+
+	/**
+  * Decode response as text
+  *
+  * @return  Promise
+  */
+	text() {
+		return consumeBody.call(this).then(function (buffer) {
+			return buffer.toString();
+		});
+	},
+
+	/**
+  * Decode response as buffer (non-spec api)
+  *
+  * @return  Promise
+  */
+	buffer() {
+		return consumeBody.call(this);
+	},
+
+	/**
+  * Decode response as text, while automatically detecting the encoding and
+  * trying to decode to UTF-8 (non-spec api)
+  *
+  * @return  Promise
+  */
+	textConverted() {
+		var _this3 = this;
+
+		return consumeBody.call(this).then(function (buffer) {
+			return convertBody(buffer, _this3.headers);
+		});
+	}
+};
+
+// In browsers, all properties are enumerable.
+Object.defineProperties(Body.prototype, {
+	body: { enumerable: true },
+	bodyUsed: { enumerable: true },
+	arrayBuffer: { enumerable: true },
+	blob: { enumerable: true },
+	json: { enumerable: true },
+	text: { enumerable: true }
+});
+
+Body.mixIn = function (proto) {
+	for (const name of Object.getOwnPropertyNames(Body.prototype)) {
+		// istanbul ignore else: future proof
+		if (!(name in proto)) {
+			const desc = Object.getOwnPropertyDescriptor(Body.prototype, name);
+			Object.defineProperty(proto, name, desc);
+		}
+	}
+};
+
+/**
+ * Consume and convert an entire Body to a Buffer.
+ *
+ * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body
+ *
+ * @return  Promise
+ */
+function consumeBody() {
+	var _this4 = this;
+
+	if (this[INTERNALS].disturbed) {
+		return Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));
+	}
+
+	this[INTERNALS].disturbed = true;
+
+	if (this[INTERNALS].error) {
+		return Body.Promise.reject(this[INTERNALS].error);
+	}
+
+	let body = this.body;
+
+	// body is null
+	if (body === null) {
+		return Body.Promise.resolve(Buffer.alloc(0));
+	}
+
+	// body is blob
+	if (isBlob(body)) {
+		body = body.stream();
+	}
+
+	// body is buffer
+	if (Buffer.isBuffer(body)) {
+		return Body.Promise.resolve(body);
+	}
+
+	// istanbul ignore if: should never happen
+	if (!(body instanceof Stream)) {
+		return Body.Promise.resolve(Buffer.alloc(0));
+	}
+
+	// body is stream
+	// get ready to actually consume the body
+	let accum = [];
+	let accumBytes = 0;
+	let abort = false;
+
+	return new Body.Promise(function (resolve, reject) {
+		let resTimeout;
+
+		// allow timeout on slow response body
+		if (_this4.timeout) {
+			resTimeout = setTimeout(function () {
+				abort = true;
+				reject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));
+			}, _this4.timeout);
+		}
+
+		// handle stream errors
+		body.on('error', function (err) {
+			if (err.name === 'AbortError') {
+				// if the request was aborted, reject with this Error
+				abort = true;
+				reject(err);
+			} else {
+				// other errors, such as incorrect content-encoding
+				reject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));
+			}
+		});
+
+		body.on('data', function (chunk) {
+			if (abort || chunk === null) {
+				return;
+			}
+
+			if (_this4.size && accumBytes + chunk.length > _this4.size) {
+				abort = true;
+				reject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));
+				return;
+			}
+
+			accumBytes += chunk.length;
+			accum.push(chunk);
+		});
+
+		body.on('end', function () {
+			if (abort) {
+				return;
+			}
+
+			clearTimeout(resTimeout);
+
+			try {
+				resolve(Buffer.concat(accum, accumBytes));
+			} catch (err) {
+				// handle streams that have accumulated too much data (issue #414)
+				reject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));
+			}
+		});
+	});
+}
+
+/**
+ * Detect buffer encoding and convert to target encoding
+ * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding
+ *
+ * @param   Buffer  buffer    Incoming buffer
+ * @param   String  encoding  Target encoding
+ * @return  String
+ */
+function convertBody(buffer, headers) {
+	if (typeof convert !== 'function') {
+		throw new Error('The package `encoding` must be installed to use the textConverted() function');
+	}
+
+	const ct = headers.get('content-type');
+	let charset = 'utf-8';
+	let res, str;
+
+	// header
+	if (ct) {
+		res = /charset=([^;]*)/i.exec(ct);
+	}
+
+	// no charset in content type, peek at response body for at most 1024 bytes
+	str = buffer.slice(0, 1024).toString();
+
+	// html5
+	if (!res && str) {
+		res = /<meta.+?charset=(['"])(.+?)\1/i.exec(str);
+	}
+
+	// html4
+	if (!res && str) {
+		res = /<meta[\s]+?http-equiv=(['"])content-type\1[\s]+?content=(['"])(.+?)\2/i.exec(str);
+
+		if (res) {
+			res = /charset=(.*)/i.exec(res.pop());
+		}
+	}
+
+	// xml
+	if (!res && str) {
+		res = /<\?xml.+?encoding=(['"])(.+?)\1/i.exec(str);
+	}
+
+	// found charset
+	if (res) {
+		charset = res.pop();
+
+		// prevent decode issues when sites use incorrect encoding
+		// ref: https://hsivonen.fi/encoding-menu/
+		if (charset === 'gb2312' || charset === 'gbk') {
+			charset = 'gb18030';
+		}
+	}
+
+	// turn raw buffers into a single utf-8 buffer
+	return convert(buffer, 'UTF-8', charset).toString();
+}
+
+/**
+ * Detect a URLSearchParams object
+ * ref: https://github.com/bitinn/node-fetch/issues/296#issuecomment-307598143
+ *
+ * @param   Object  obj     Object to detect by type or brand
+ * @return  String
+ */
+function isURLSearchParams(obj) {
+	// Duck-typing as a necessary condition.
+	if (typeof obj !== 'object' || typeof obj.append !== 'function' || typeof obj.delete !== 'function' || typeof obj.get !== 'function' || typeof obj.getAll !== 'function' || typeof obj.has !== 'function' || typeof obj.set !== 'function') {
+		return false;
+	}
+
+	// Brand-checking and more duck-typing as optional condition.
+	return obj.constructor.name === 'URLSearchParams' || Object.prototype.toString.call(obj) === '[object URLSearchParams]' || typeof obj.sort === 'function';
+}
+
+/**
+ * Check if `obj` is a W3C `Blob` object (which `File` inherits from)
+ * @param  {*} obj
+ * @return {boolean}
+ */
+function isBlob(obj) {
+	return typeof obj === 'object' && typeof obj.arrayBuffer === 'function' && typeof obj.type === 'string' && typeof obj.stream === 'function' && typeof obj.constructor === 'function' && typeof obj.constructor.name === 'string' && /^(Blob|File)$/.test(obj.constructor.name) && /^(Blob|File)$/.test(obj[Symbol.toStringTag]);
+}
+
+/**
+ * Clone body given Res/Req instance
+ *
+ * @param   Mixed  instance  Response or Request instance
+ * @return  Mixed
+ */
+function clone(instance) {
+	let p1, p2;
+	let body = instance.body;
+
+	// don't allow cloning a used body
+	if (instance.bodyUsed) {
+		throw new Error('cannot clone body after it is used');
+	}
+
+	// check that body is a stream and not form-data object
+	// note: we can't clone the form-data object without having it as a dependency
+	if (body instanceof Stream && typeof body.getBoundary !== 'function') {
+		// tee instance body
+		p1 = new PassThrough();
+		p2 = new PassThrough();
+		body.pipe(p1);
+		body.pipe(p2);
+		// set instance body to teed body and return the other teed body
+		instance[INTERNALS].body = p1;
+		body = p2;
+	}
+
+	return body;
+}
+
+/**
+ * Performs the operation "extract a `Content-Type` value from |object|" as
+ * specified in the specification:
+ * https://fetch.spec.whatwg.org/#concept-bodyinit-extract
+ *
+ * This function assumes that instance.body is present.
+ *
+ * @param   Mixed  instance  Any options.body input
+ */
+function extractContentType(body) {
+	if (body === null) {
+		// body is null
+		return null;
+	} else if (typeof body === 'string') {
+		// body is string
+		return 'text/plain;charset=UTF-8';
+	} else if (isURLSearchParams(body)) {
+		// body is a URLSearchParams
+		return 'application/x-www-form-urlencoded;charset=UTF-8';
+	} else if (isBlob(body)) {
+		// body is blob
+		return body.type || null;
+	} else if (Buffer.isBuffer(body)) {
+		// body is buffer
+		return null;
+	} else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {
+		// body is ArrayBuffer
+		return null;
+	} else if (ArrayBuffer.isView(body)) {
+		// body is ArrayBufferView
+		return null;
+	} else if (typeof body.getBoundary === 'function') {
+		// detect form data input from form-data module
+		return `multipart/form-data;boundary=${body.getBoundary()}`;
+	} else if (body instanceof Stream) {
+		// body is stream
+		// can't really do much about this
+		return null;
+	} else {
+		// Body constructor defaults other things to string
+		return 'text/plain;charset=UTF-8';
+	}
+}
+
+/**
+ * The Fetch Standard treats this as if "total bytes" is a property on the body.
+ * For us, we have to explicitly get it with a function.
+ *
+ * ref: https://fetch.spec.whatwg.org/#concept-body-total-bytes
+ *
+ * @param   Body    instance   Instance of Body
+ * @return  Number?            Number of bytes, or null if not possible
+ */
+function getTotalBytes(instance) {
+	const body = instance.body;
+
+
+	if (body === null) {
+		// body is null
+		return 0;
+	} else if (isBlob(body)) {
+		return body.size;
+	} else if (Buffer.isBuffer(body)) {
+		// body is buffer
+		return body.length;
+	} else if (body && typeof body.getLengthSync === 'function') {
+		// detect form data input from form-data module
+		if (body._lengthRetrievers && body._lengthRetrievers.length == 0 || // 1.x
+		body.hasKnownLength && body.hasKnownLength()) {
+			// 2.x
+			return body.getLengthSync();
+		}
+		return null;
+	} else {
+		// body is stream
+		return null;
+	}
+}
+
+/**
+ * Write a Body to a Node.js WritableStream (e.g. http.Request) object.
+ *
+ * @param   Body    instance   Instance of Body
+ * @return  Void
+ */
+function writeToStream(dest, instance) {
+	const body = instance.body;
+
+
+	if (body === null) {
+		// body is null
+		dest.end();
+	} else if (isBlob(body)) {
+		body.stream().pipe(dest);
+	} else if (Buffer.isBuffer(body)) {
+		// body is buffer
+		dest.write(body);
+		dest.end();
+	} else {
+		// body is stream
+		body.pipe(dest);
+	}
+}
+
+// expose Promise
+Body.Promise = global.Promise;
+
+/**
+ * headers.js
+ *
+ * Headers class offers convenient helpers
+ */
+
+const invalidTokenRegex = /[^\^_`a-zA-Z\-0-9!#$%&'*+.|~]/;
+const invalidHeaderCharRegex = /[^\t\x20-\x7e\x80-\xff]/;
+
+function validateName(name) {
+	name = `${name}`;
+	if (invalidTokenRegex.test(name) || name === '') {
+		throw new TypeError(`${name} is not a legal HTTP header name`);
+	}
+}
+
+function validateValue(value) {
+	value = `${value}`;
+	if (invalidHeaderCharRegex.test(value)) {
+		throw new TypeError(`${value} is not a legal HTTP header value`);
+	}
+}
+
+/**
+ * Find the key in the map object given a header name.
+ *
+ * Returns undefined if not found.
+ *
+ * @param   String  name  Header name
+ * @return  String|Undefined
+ */
+function find(map, name) {
+	name = name.toLowerCase();
+	for (const key in map) {
+		if (key.toLowerCase() === name) {
+			return key;
+		}
+	}
+	return undefined;
+}
+
+const MAP = Symbol('map');
+class Headers {
+	/**
+  * Headers class
+  *
+  * @param   Object  headers  Response headers
+  * @return  Void
+  */
+	constructor() {
+		let init = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;
+
+		this[MAP] = Object.create(null);
+
+		if (init instanceof Headers) {
+			const rawHeaders = init.raw();
+			const headerNames = Object.keys(rawHeaders);
+
+			for (const headerName of headerNames) {
+				for (const value of rawHeaders[headerName]) {
+					this.append(headerName, value);
+				}
+			}
+
+			return;
+		}
+
+		// We don't worry about converting prop to ByteString here as append()
+		// will handle it.
+		if (init == null) ; else if (typeof init === 'object') {
+			const method = init[Symbol.iterator];
+			if (method != null) {
+				if (typeof method !== 'function') {
+					throw new TypeError('Header pairs must be iterable');
+				}
+
+				// sequence<sequence<ByteString>>
+				// Note: per spec we have to first exhaust the lists then process them
+				const pairs = [];
+				for (const pair of init) {
+					if (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {
+						throw new TypeError('Each header pair must be iterable');
+					}
+					pairs.push(Array.from(pair));
+				}
+
+				for (const pair of pairs) {
+					if (pair.length !== 2) {
+						throw new TypeError('Each header pair must be a name/value tuple');
+					}
+					this.append(pair[0], pair[1]);
+				}
+			} else {
+				// record<ByteString, ByteString>
+				for (const key of Object.keys(init)) {
+					const value = init[key];
+					this.append(key, value);
+				}
+			}
+		} else {
+			throw new TypeError('Provided initializer must be an object');
+		}
+	}
+
+	/**
+  * Return combined header value given name
+  *
+  * @param   String  name  Header name
+  * @return  Mixed
+  */
+	get(name) {
+		name = `${name}`;
+		validateName(name);
+		const key = find(this[MAP], name);
+		if (key === undefined) {
+			return null;
+		}
+
+		return this[MAP][key].join(', ');
+	}
+
+	/**
+  * Iterate over all headers
+  *
+  * @param   Function  callback  Executed for each item with parameters (value, name, thisArg)
+  * @param   Boolean   thisArg   `this` context for callback function
+  * @return  Void
+  */
+	forEach(callback) {
+		let thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
+
+		let pairs = getHeaders(this);
+		let i = 0;
+		while (i < pairs.length) {
+			var _pairs$i = pairs[i];
+			const name = _pairs$i[0],
+			      value = _pairs$i[1];
+
+			callback.call(thisArg, value, name, this);
+			pairs = getHeaders(this);
+			i++;
+		}
+	}
+
+	/**
+  * Overwrite header values given name
+  *
+  * @param   String  name   Header name
+  * @param   String  value  Header value
+  * @return  Void
+  */
+	set(name, value) {
+		name = `${name}`;
+		value = `${value}`;
+		validateName(name);
+		validateValue(value);
+		const key = find(this[MAP], name);
+		this[MAP][key !== undefined ? key : name] = [value];
+	}
+
+	/**
+  * Append a value onto existing header
+  *
+  * @param   String  name   Header name
+  * @param   String  value  Header value
+  * @return  Void
+  */
+	append(name, value) {
+		name = `${name}`;
+		value = `${value}`;
+		validateName(name);
+		validateValue(value);
+		const key = find(this[MAP], name);
+		if (key !== undefined) {
+			this[MAP][key].push(value);
+		} else {
+			this[MAP][name] = [value];
+		}
+	}
+
+	/**
+  * Check for header name existence
+  *
+  * @param   String   name  Header name
+  * @return  Boolean
+  */
+	has(name) {
+		name = `${name}`;
+		validateName(name);
+		return find(this[MAP], name) !== undefined;
+	}
+
+	/**
+  * Delete all header values given name
+  *
+  * @param   String  name  Header name
+  * @return  Void
+  */
+	delete(name) {
+		name = `${name}`;
+		validateName(name);
+		const key = find(this[MAP], name);
+		if (key !== undefined) {
+			delete this[MAP][key];
+		}
+	}
+
+	/**
+  * Return raw headers (non-spec api)
+  *
+  * @return  Object
+  */
+	raw() {
+		return this[MAP];
+	}
+
+	/**
+  * Get an iterator on keys.
+  *
+  * @return  Iterator
+  */
+	keys() {
+		return createHeadersIterator(this, 'key');
+	}
+
+	/**
+  * Get an iterator on values.
+  *
+  * @return  Iterator
+  */
+	values() {
+		return createHeadersIterator(this, 'value');
+	}
+
+	/**
+  * Get an iterator on entries.
+  *
+  * This is the default iterator of the Headers object.
+  *
+  * @return  Iterator
+  */
+	[Symbol.iterator]() {
+		return createHeadersIterator(this, 'key+value');
+	}
+}
+Headers.prototype.entries = Headers.prototype[Symbol.iterator];
+
+Object.defineProperty(Headers.prototype, Symbol.toStringTag, {
+	value: 'Headers',
+	writable: false,
+	enumerable: false,
+	configurable: true
+});
+
+Object.defineProperties(Headers.prototype, {
+	get: { enumerable: true },
+	forEach: { enumerable: true },
+	set: { enumerable: true },
+	append: { enumerable: true },
+	has: { enumerable: true },
+	delete: { enumerable: true },
+	keys: { enumerable: true },
+	values: { enumerable: true },
+	entries: { enumerable: true }
+});
+
+function getHeaders(headers) {
+	let kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';
+
+	const keys = Object.keys(headers[MAP]).sort();
+	return keys.map(kind === 'key' ? function (k) {
+		return k.toLowerCase();
+	} : kind === 'value' ? function (k) {
+		return headers[MAP][k].join(', ');
+	} : function (k) {
+		return [k.toLowerCase(), headers[MAP][k].join(', ')];
+	});
+}
+
+const INTERNAL = Symbol('internal');
+
+function createHeadersIterator(target, kind) {
+	const iterator = Object.create(HeadersIteratorPrototype);
+	iterator[INTERNAL] = {
+		target,
+		kind,
+		index: 0
+	};
+	return iterator;
+}
+
+const HeadersIteratorPrototype = Object.setPrototypeOf({
+	next() {
+		// istanbul ignore if
+		if (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {
+			throw new TypeError('Value of `this` is not a HeadersIterator');
+		}
+
+		var _INTERNAL = this[INTERNAL];
+		const target = _INTERNAL.target,
+		      kind = _INTERNAL.kind,
+		      index = _INTERNAL.index;
+
+		const values = getHeaders(target, kind);
+		const len = values.length;
+		if (index >= len) {
+			return {
+				value: undefined,
+				done: true
+			};
+		}
+
+		this[INTERNAL].index = index + 1;
+
+		return {
+			value: values[index],
+			done: false
+		};
+	}
+}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));
+
+Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {
+	value: 'HeadersIterator',
+	writable: false,
+	enumerable: false,
+	configurable: true
+});
+
+/**
+ * Export the Headers object in a form that Node.js can consume.
+ *
+ * @param   Headers  headers
+ * @return  Object
+ */
+function exportNodeCompatibleHeaders(headers) {
+	const obj = Object.assign({ __proto__: null }, headers[MAP]);
+
+	// http.request() only supports string as Host header. This hack makes
+	// specifying custom Host header possible.
+	const hostHeaderKey = find(headers[MAP], 'Host');
+	if (hostHeaderKey !== undefined) {
+		obj[hostHeaderKey] = obj[hostHeaderKey][0];
+	}
+
+	return obj;
+}
+
+/**
+ * Create a Headers object from an object of headers, ignoring those that do
+ * not conform to HTTP grammar productions.
+ *
+ * @param   Object  obj  Object of headers
+ * @return  Headers
+ */
+function createHeadersLenient(obj) {
+	const headers = new Headers();
+	for (const name of Object.keys(obj)) {
+		if (invalidTokenRegex.test(name)) {
+			continue;
+		}
+		if (Array.isArray(obj[name])) {
+			for (const val of obj[name]) {
+				if (invalidHeaderCharRegex.test(val)) {
+					continue;
+				}
+				if (headers[MAP][name] === undefined) {
+					headers[MAP][name] = [val];
+				} else {
+					headers[MAP][name].push(val);
+				}
+			}
+		} else if (!invalidHeaderCharRegex.test(obj[name])) {
+			headers[MAP][name] = [obj[name]];
+		}
+	}
+	return headers;
+}
+
+const INTERNALS$1 = Symbol('Response internals');
+
+// fix an issue where "STATUS_CODES" aren't a named export for node <10
+const STATUS_CODES = http.STATUS_CODES;
+
+/**
+ * Response class
+ *
+ * @param   Stream  body  Readable stream
+ * @param   Object  opts  Response options
+ * @return  Void
+ */
+class Response {
+	constructor() {
+		let body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
+		let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+		Body.call(this, body, opts);
+
+		const status = opts.status || 200;
+		const headers = new Headers(opts.headers);
+
+		if (body != null && !headers.has('Content-Type')) {
+			const contentType = extractContentType(body);
+			if (contentType) {
+				headers.append('Content-Type', contentType);
+			}
+		}
+
+		this[INTERNALS$1] = {
+			url: opts.url,
+			status,
+			statusText: opts.statusText || STATUS_CODES[status],
+			headers,
+			counter: opts.counter
+		};
+	}
+
+	get url() {
+		return this[INTERNALS$1].url || '';
+	}
+
+	get status() {
+		return this[INTERNALS$1].status;
+	}
+
+	/**
+  * Convenience property representing if the request ended normally
+  */
+	get ok() {
+		return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;
+	}
+
+	get redirected() {
+		return this[INTERNALS$1].counter > 0;
+	}
+
+	get statusText() {
+		return this[INTERNALS$1].statusText;
+	}
+
+	get headers() {
+		return this[INTERNALS$1].headers;
+	}
+
+	/**
+  * Clone this response
+  *
+  * @return  Response
+  */
+	clone() {
+		return new Response(clone(this), {
+			url: this.url,
+			status: this.status,
+			statusText: this.statusText,
+			headers: this.headers,
+			ok: this.ok,
+			redirected: this.redirected
+		});
+	}
+}
+
+Body.mixIn(Response.prototype);
+
+Object.defineProperties(Response.prototype, {
+	url: { enumerable: true },
+	status: { enumerable: true },
+	ok: { enumerable: true },
+	redirected: { enumerable: true },
+	statusText: { enumerable: true },
+	headers: { enumerable: true },
+	clone: { enumerable: true }
+});
+
+Object.defineProperty(Response.prototype, Symbol.toStringTag, {
+	value: 'Response',
+	writable: false,
+	enumerable: false,
+	configurable: true
+});
+
+const INTERNALS$2 = Symbol('Request internals');
+
+// fix an issue where "format", "parse" aren't a named export for node <10
+const parse_url = Url.parse;
+const format_url = Url.format;
+
+const streamDestructionSupported = 'destroy' in Stream.Readable.prototype;
+
+/**
+ * Check if a value is an instance of Request.
+ *
+ * @param   Mixed   input
+ * @return  Boolean
+ */
+function isRequest(input) {
+	return typeof input === 'object' && typeof input[INTERNALS$2] === 'object';
+}
+
+function isAbortSignal(signal) {
+	const proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);
+	return !!(proto && proto.constructor.name === 'AbortSignal');
+}
+
+/**
+ * Request class
+ *
+ * @param   Mixed   input  Url or Request instance
+ * @param   Object  init   Custom options
+ * @return  Void
+ */
+class Request {
+	constructor(input) {
+		let init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+		let parsedURL;
+
+		// normalize input
+		if (!isRequest(input)) {
+			if (input && input.href) {
+				// in order to support Node.js' Url objects; though WHATWG's URL objects
+				// will fall into this branch also (since their `toString()` will return
+				// `href` property anyway)
+				parsedURL = parse_url(input.href);
+			} else {
+				// coerce input to a string before attempting to parse
+				parsedURL = parse_url(`${input}`);
+			}
+			input = {};
+		} else {
+			parsedURL = parse_url(input.url);
+		}
+
+		let method = init.method || input.method || 'GET';
+		method = method.toUpperCase();
+
+		if ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {
+			throw new TypeError('Request with GET/HEAD method cannot have body');
+		}
+
+		let inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;
+
+		Body.call(this, inputBody, {
+			timeout: init.timeout || input.timeout || 0,
+			size: init.size || input.size || 0
+		});
+
+		const headers = new Headers(init.headers || input.headers || {});
+
+		if (inputBody != null && !headers.has('Content-Type')) {
+			const contentType = extractContentType(inputBody);
+			if (contentType) {
+				headers.append('Content-Type', contentType);
+			}
+		}
+
+		let signal = isRequest(input) ? input.signal : null;
+		if ('signal' in init) signal = init.signal;
+
+		if (signal != null && !isAbortSignal(signal)) {
+			throw new TypeError('Expected signal to be an instanceof AbortSignal');
+		}
+
+		this[INTERNALS$2] = {
+			method,
+			redirect: init.redirect || input.redirect || 'follow',
+			headers,
+			parsedURL,
+			signal
+		};
+
+		// node-fetch-only options
+		this.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;
+		this.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;
+		this.counter = init.counter || input.counter || 0;
+		this.agent = init.agent || input.agent;
+	}
+
+	get method() {
+		return this[INTERNALS$2].method;
+	}
+
+	get url() {
+		return format_url(this[INTERNALS$2].parsedURL);
+	}
+
+	get headers() {
+		return this[INTERNALS$2].headers;
+	}
+
+	get redirect() {
+		return this[INTERNALS$2].redirect;
+	}
+
+	get signal() {
+		return this[INTERNALS$2].signal;
+	}
+
+	/**
+  * Clone this request
+  *
+  * @return  Request
+  */
+	clone() {
+		return new Request(this);
+	}
+}
+
+Body.mixIn(Request.prototype);
+
+Object.defineProperty(Request.prototype, Symbol.toStringTag, {
+	value: 'Request',
+	writable: false,
+	enumerable: false,
+	configurable: true
+});
+
+Object.defineProperties(Request.prototype, {
+	method: { enumerable: true },
+	url: { enumerable: true },
+	headers: { enumerable: true },
+	redirect: { enumerable: true },
+	clone: { enumerable: true },
+	signal: { enumerable: true }
+});
+
+/**
+ * Convert a Request to Node.js http request options.
+ *
+ * @param   Request  A Request instance
+ * @return  Object   The options object to be passed to http.request
+ */
+function getNodeRequestOptions(request) {
+	const parsedURL = request[INTERNALS$2].parsedURL;
+	const headers = new Headers(request[INTERNALS$2].headers);
+
+	// fetch step 1.3
+	if (!headers.has('Accept')) {
+		headers.set('Accept', '*/*');
+	}
+
+	// Basic fetch
+	if (!parsedURL.protocol || !parsedURL.hostname) {
+		throw new TypeError('Only absolute URLs are supported');
+	}
+
+	if (!/^https?:$/.test(parsedURL.protocol)) {
+		throw new TypeError('Only HTTP(S) protocols are supported');
+	}
+
+	if (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {
+		throw new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');
+	}
+
+	// HTTP-network-or-cache fetch steps 2.4-2.7
+	let contentLengthValue = null;
+	if (request.body == null && /^(POST|PUT)$/i.test(request.method)) {
+		contentLengthValue = '0';
+	}
+	if (request.body != null) {
+		const totalBytes = getTotalBytes(request);
+		if (typeof totalBytes === 'number') {
+			contentLengthValue = String(totalBytes);
+		}
+	}
+	if (contentLengthValue) {
+		headers.set('Content-Length', contentLengthValue);
+	}
+
+	// HTTP-network-or-cache fetch step 2.11
+	if (!headers.has('User-Agent')) {
+		headers.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');
+	}
+
+	// HTTP-network-or-cache fetch step 2.15
+	if (request.compress && !headers.has('Accept-Encoding')) {
+		headers.set('Accept-Encoding', 'gzip,deflate');
+	}
+
+	let agent = request.agent;
+	if (typeof agent === 'function') {
+		agent = agent(parsedURL);
+	}
+
+	if (!headers.has('Connection') && !agent) {
+		headers.set('Connection', 'close');
+	}
+
+	// HTTP-network fetch step 4.2
+	// chunked encoding is handled by Node.js
+
+	return Object.assign({}, parsedURL, {
+		method: request.method,
+		headers: exportNodeCompatibleHeaders(headers),
+		agent
+	});
+}
+
+/**
+ * abort-error.js
+ *
+ * AbortError interface for cancelled requests
+ */
+
+/**
+ * Create AbortError instance
+ *
+ * @param   String      message      Error message for human
+ * @return  AbortError
+ */
+function AbortError(message) {
+  Error.call(this, message);
+
+  this.type = 'aborted';
+  this.message = message;
+
+  // hide custom error implementation details from end-users
+  Error.captureStackTrace(this, this.constructor);
+}
+
+AbortError.prototype = Object.create(Error.prototype);
+AbortError.prototype.constructor = AbortError;
+AbortError.prototype.name = 'AbortError';
+
+// fix an issue where "PassThrough", "resolve" aren't a named export for node <10
+const PassThrough$1 = Stream.PassThrough;
+const resolve_url = Url.resolve;
+
+/**
+ * Fetch function
+ *
+ * @param   Mixed    url   Absolute url or Request instance
+ * @param   Object   opts  Fetch options
+ * @return  Promise
+ */
+function fetch(url, opts) {
+
+	// allow custom promise
+	if (!fetch.Promise) {
+		throw new Error('native promise missing, set fetch.Promise to your favorite alternative');
+	}
+
+	Body.Promise = fetch.Promise;
+
+	// wrap http.request into fetch
+	return new fetch.Promise(function (resolve, reject) {
+		// build request object
+		const request = new Request(url, opts);
+		const options = getNodeRequestOptions(request);
+
+		const send = (options.protocol === 'https:' ? https : http).request;
+		const signal = request.signal;
+
+		let response = null;
+
+		const abort = function abort() {
+			let error = new AbortError('The user aborted a request.');
+			reject(error);
+			if (request.body && request.body instanceof Stream.Readable) {
+				request.body.destroy(error);
+			}
+			if (!response || !response.body) return;
+			response.body.emit('error', error);
+		};
+
+		if (signal && signal.aborted) {
+			abort();
+			return;
+		}
+
+		const abortAndFinalize = function abortAndFinalize() {
+			abort();
+			finalize();
+		};
+
+		// send request
+		const req = send(options);
+		let reqTimeout;
+
+		if (signal) {
+			signal.addEventListener('abort', abortAndFinalize);
+		}
+
+		function finalize() {
+			req.abort();
+			if (signal) signal.removeEventListener('abort', abortAndFinalize);
+			clearTimeout(reqTimeout);
+		}
+
+		if (request.timeout) {
+			req.once('socket', function (socket) {
+				reqTimeout = setTimeout(function () {
+					reject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));
+					finalize();
+				}, request.timeout);
+			});
+		}
+
+		req.on('error', function (err) {
+			reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));
+			finalize();
+		});
+
+		req.on('response', function (res) {
+			clearTimeout(reqTimeout);
+
+			const headers = createHeadersLenient(res.headers);
+
+			// HTTP fetch step 5
+			if (fetch.isRedirect(res.statusCode)) {
+				// HTTP fetch step 5.2
+				const location = headers.get('Location');
+
+				// HTTP fetch step 5.3
+				const locationURL = location === null ? null : resolve_url(request.url, location);
+
+				// HTTP fetch step 5.5
+				switch (request.redirect) {
+					case 'error':
+						reject(new FetchError(`redirect mode is set to error: ${request.url}`, 'no-redirect'));
+						finalize();
+						return;
+					case 'manual':
+						// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.
+						if (locationURL !== null) {
+							// handle corrupted header
+							try {
+								headers.set('Location', locationURL);
+							} catch (err) {
+								// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request
+								reject(err);
+							}
+						}
+						break;
+					case 'follow':
+						// HTTP-redirect fetch step 2
+						if (locationURL === null) {
+							break;
+						}
+
+						// HTTP-redirect fetch step 5
+						if (request.counter >= request.follow) {
+							reject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));
+							finalize();
+							return;
+						}
+
+						// HTTP-redirect fetch step 6 (counter increment)
+						// Create a new Request object.
+						const requestOpts = {
+							headers: new Headers(request.headers),
+							follow: request.follow,
+							counter: request.counter + 1,
+							agent: request.agent,
+							compress: request.compress,
+							method: request.method,
+							body: request.body,
+							signal: request.signal,
+							timeout: request.timeout
+						};
+
+						// HTTP-redirect fetch step 9
+						if (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {
+							reject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));
+							finalize();
+							return;
+						}
+
+						// HTTP-redirect fetch step 11
+						if (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {
+							requestOpts.method = 'GET';
+							requestOpts.body = undefined;
+							requestOpts.headers.delete('content-length');
+						}
+
+						// HTTP-redirect fetch step 15
+						resolve(fetch(new Request(locationURL, requestOpts)));
+						finalize();
+						return;
+				}
+			}
+
+			// prepare response
+			res.once('end', function () {
+				if (signal) signal.removeEventListener('abort', abortAndFinalize);
+			});
+			let body = res.pipe(new PassThrough$1());
+
+			const response_options = {
+				url: request.url,
+				status: res.statusCode,
+				statusText: res.statusMessage,
+				headers: headers,
+				size: request.size,
+				timeout: request.timeout,
+				counter: request.counter
+			};
+
+			// HTTP-network fetch step 12.1.1.3
+			const codings = headers.get('Content-Encoding');
+
+			// HTTP-network fetch step 12.1.1.4: handle content codings
+
+			// in following scenarios we ignore compression support
+			// 1. compression support is disabled
+			// 2. HEAD request
+			// 3. no Content-Encoding header
+			// 4. no content response (204)
+			// 5. content not modified response (304)
+			if (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {
+				response = new Response(body, response_options);
+				resolve(response);
+				return;
+			}
+
+			// For Node v6+
+			// Be less strict when decoding compressed responses, since sometimes
+			// servers send slightly invalid responses that are still accepted
+			// by common browsers.
+			// Always using Z_SYNC_FLUSH is what cURL does.
+			const zlibOptions = {
+				flush: zlib.Z_SYNC_FLUSH,
+				finishFlush: zlib.Z_SYNC_FLUSH
+			};
+
+			// for gzip
+			if (codings == 'gzip' || codings == 'x-gzip') {
+				body = body.pipe(zlib.createGunzip(zlibOptions));
+				response = new Response(body, response_options);
+				resolve(response);
+				return;
+			}
+
+			// for deflate
+			if (codings == 'deflate' || codings == 'x-deflate') {
+				// handle the infamous raw deflate response from old servers
+				// a hack for old IIS and Apache servers
+				const raw = res.pipe(new PassThrough$1());
+				raw.once('data', function (chunk) {
+					// see http://stackoverflow.com/questions/37519828
+					if ((chunk[0] & 0x0F) === 0x08) {
+						body = body.pipe(zlib.createInflate());
+					} else {
+						body = body.pipe(zlib.createInflateRaw());
+					}
+					response = new Response(body, response_options);
+					resolve(response);
+				});
+				return;
+			}
+
+			// for br
+			if (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {
+				body = body.pipe(zlib.createBrotliDecompress());
+				response = new Response(body, response_options);
+				resolve(response);
+				return;
+			}
+
+			// otherwise, use response as-is
+			response = new Response(body, response_options);
+			resolve(response);
+		});
+
+		writeToStream(req, request);
+	});
+}
+/**
+ * Redirect code matching
+ *
+ * @param   Number   code  Status code
+ * @return  Boolean
+ */
+fetch.isRedirect = function (code) {
+	return code === 301 || code === 302 || code === 303 || code === 307 || code === 308;
+};
+
+// expose Promise
+fetch.Promise = global.Promise;
+
+export default fetch;
+export { Headers, Request, Response, FetchError };
diff --git a/setup-maven/node_modules/node-fetch/lib/index.js b/setup-maven/node_modules/node-fetch/lib/index.js
new file mode 100644
index 0000000..daa44bc
--- /dev/null
+++ b/setup-maven/node_modules/node-fetch/lib/index.js
@@ -0,0 +1,1642 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
+
+var Stream = _interopDefault(require('stream'));
+var http = _interopDefault(require('http'));
+var Url = _interopDefault(require('url'));
+var https = _interopDefault(require('https'));
+var zlib = _interopDefault(require('zlib'));
+
+// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js
+
+// fix for "Readable" isn't a named export issue
+const Readable = Stream.Readable;
+
+const BUFFER = Symbol('buffer');
+const TYPE = Symbol('type');
+
+class Blob {
+	constructor() {
+		this[TYPE] = '';
+
+		const blobParts = arguments[0];
+		const options = arguments[1];
+
+		const buffers = [];
+		let size = 0;
+
+		if (blobParts) {
+			const a = blobParts;
+			const length = Number(a.length);
+			for (let i = 0; i < length; i++) {
+				const element = a[i];
+				let buffer;
+				if (element instanceof Buffer) {
+					buffer = element;
+				} else if (ArrayBuffer.isView(element)) {
+					buffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);
+				} else if (element instanceof ArrayBuffer) {
+					buffer = Buffer.from(element);
+				} else if (element instanceof Blob) {
+					buffer = element[BUFFER];
+				} else {
+					buffer = Buffer.from(typeof element === 'string' ? element : String(element));
+				}
+				size += buffer.length;
+				buffers.push(buffer);
+			}
+		}
+
+		this[BUFFER] = Buffer.concat(buffers);
+
+		let type = options && options.type !== undefined && String(options.type).toLowerCase();
+		if (type && !/[^\u0020-\u007E]/.test(type)) {
+			this[TYPE] = type;
+		}
+	}
+	get size() {
+		return this[BUFFER].length;
+	}
+	get type() {
+		return this[TYPE];
+	}
+	text() {
+		return Promise.resolve(this[BUFFER].toString());
+	}
+	arrayBuffer() {
+		const buf = this[BUFFER];
+		const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
+		return Promise.resolve(ab);
+	}
+	stream() {
+		const readable = new Readable();
+		readable._read = function () {};
+		readable.push(this[BUFFER]);
+		readable.push(null);
+		return readable;
+	}
+	toString() {
+		return '[object Blob]';
+	}
+	slice() {
+		const size = this.size;
+
+		const start = arguments[0];
+		const end = arguments[1];
+		let relativeStart, relativeEnd;
+		if (start === undefined) {
+			relativeStart = 0;
+		} else if (start < 0) {
+			relativeStart = Math.max(size + start, 0);
+		} else {
+			relativeStart = Math.min(start, size);
+		}
+		if (end === undefined) {
+			relativeEnd = size;
+		} else if (end < 0) {
+			relativeEnd = Math.max(size + end, 0);
+		} else {
+			relativeEnd = Math.min(end, size);
+		}
+		const span = Math.max(relativeEnd - relativeStart, 0);
+
+		const buffer = this[BUFFER];
+		const slicedBuffer = buffer.slice(relativeStart, relativeStart + span);
+		const blob = new Blob([], { type: arguments[2] });
+		blob[BUFFER] = slicedBuffer;
+		return blob;
+	}
+}
+
+Object.defineProperties(Blob.prototype, {
+	size: { enumerable: true },
+	type: { enumerable: true },
+	slice: { enumerable: true }
+});
+
+Object.defineProperty(Blob.prototype, Symbol.toStringTag, {
+	value: 'Blob',
+	writable: false,
+	enumerable: false,
+	configurable: true
+});
+
+/**
+ * fetch-error.js
+ *
+ * FetchError interface for operational errors
+ */
+
+/**
+ * Create FetchError instance
+ *
+ * @param   String      message      Error message for human
+ * @param   String      type         Error type for machine
+ * @param   String      systemError  For Node.js system error
+ * @return  FetchError
+ */
+function FetchError(message, type, systemError) {
+  Error.call(this, message);
+
+  this.message = message;
+  this.type = type;
+
+  // when err.type is `system`, err.code contains system error code
+  if (systemError) {
+    this.code = this.errno = systemError.code;
+  }
+
+  // hide custom error implementation details from end-users
+  Error.captureStackTrace(this, this.constructor);
+}
+
+FetchError.prototype = Object.create(Error.prototype);
+FetchError.prototype.constructor = FetchError;
+FetchError.prototype.name = 'FetchError';
+
+let convert;
+try {
+	convert = require('encoding').convert;
+} catch (e) {}
+
+const INTERNALS = Symbol('Body internals');
+
+// fix an issue where "PassThrough" isn't a named export for node <10
+const PassThrough = Stream.PassThrough;
+
+/**
+ * Body mixin
+ *
+ * Ref: https://fetch.spec.whatwg.org/#body
+ *
+ * @param   Stream  body  Readable stream
+ * @param   Object  opts  Response options
+ * @return  Void
+ */
+function Body(body) {
+	var _this = this;
+
+	var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
+	    _ref$size = _ref.size;
+
+	let size = _ref$size === undefined ? 0 : _ref$size;
+	var _ref$timeout = _ref.timeout;
+	let timeout = _ref$timeout === undefined ? 0 : _ref$timeout;
+
+	if (body == null) {
+		// body is undefined or null
+		body = null;
+	} else if (isURLSearchParams(body)) {
+		// body is a URLSearchParams
+		body = Buffer.from(body.toString());
+	} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {
+		// body is ArrayBuffer
+		body = Buffer.from(body);
+	} else if (ArrayBuffer.isView(body)) {
+		// body is ArrayBufferView
+		body = Buffer.from(body.buffer, body.byteOffset, body.byteLength);
+	} else if (body instanceof Stream) ; else {
+		// none of the above
+		// coerce to string then buffer
+		body = Buffer.from(String(body));
+	}
+	this[INTERNALS] = {
+		body,
+		disturbed: false,
+		error: null
+	};
+	this.size = size;
+	this.timeout = timeout;
+
+	if (body instanceof Stream) {
+		body.on('error', function (err) {
+			const error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);
+			_this[INTERNALS].error = error;
+		});
+	}
+}
+
+Body.prototype = {
+	get body() {
+		return this[INTERNALS].body;
+	},
+
+	get bodyUsed() {
+		return this[INTERNALS].disturbed;
+	},
+
+	/**
+  * Decode response as ArrayBuffer
+  *
+  * @return  Promise
+  */
+	arrayBuffer() {
+		return consumeBody.call(this).then(function (buf) {
+			return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
+		});
+	},
+
+	/**
+  * Return raw response as Blob
+  *
+  * @return Promise
+  */
+	blob() {
+		let ct = this.headers && this.headers.get('content-type') || '';
+		return consumeBody.call(this).then(function (buf) {
+			return Object.assign(
+			// Prevent copying
+			new Blob([], {
+				type: ct.toLowerCase()
+			}), {
+				[BUFFER]: buf
+			});
+		});
+	},
+
+	/**
+  * Decode response as json
+  *
+  * @return  Promise
+  */
+	json() {
+		var _this2 = this;
+
+		return consumeBody.call(this).then(function (buffer) {
+			try {
+				return JSON.parse(buffer.toString());
+			} catch (err) {
+				return Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));
+			}
+		});
+	},
+
+	/**
+  * Decode response as text
+  *
+  * @return  Promise
+  */
+	text() {
+		return consumeBody.call(this).then(function (buffer) {
+			return buffer.toString();
+		});
+	},
+
+	/**
+  * Decode response as buffer (non-spec api)
+  *
+  * @return  Promise
+  */
+	buffer() {
+		return consumeBody.call(this);
+	},
+
+	/**
+  * Decode response as text, while automatically detecting the encoding and
+  * trying to decode to UTF-8 (non-spec api)
+  *
+  * @return  Promise
+  */
+	textConverted() {
+		var _this3 = this;
+
+		return consumeBody.call(this).then(function (buffer) {
+			return convertBody(buffer, _this3.headers);
+		});
+	}
+};
+
+// In browsers, all properties are enumerable.
+Object.defineProperties(Body.prototype, {
+	body: { enumerable: true },
+	bodyUsed: { enumerable: true },
+	arrayBuffer: { enumerable: true },
+	blob: { enumerable: true },
+	json: { enumerable: true },
+	text: { enumerable: true }
+});
+
+Body.mixIn = function (proto) {
+	for (const name of Object.getOwnPropertyNames(Body.prototype)) {
+		// istanbul ignore else: future proof
+		if (!(name in proto)) {
+			const desc = Object.getOwnPropertyDescriptor(Body.prototype, name);
+			Object.defineProperty(proto, name, desc);
+		}
+	}
+};
+
+/**
+ * Consume and convert an entire Body to a Buffer.
+ *
+ * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body
+ *
+ * @return  Promise
+ */
+function consumeBody() {
+	var _this4 = this;
+
+	if (this[INTERNALS].disturbed) {
+		return Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));
+	}
+
+	this[INTERNALS].disturbed = true;
+
+	if (this[INTERNALS].error) {
+		return Body.Promise.reject(this[INTERNALS].error);
+	}
+
+	let body = this.body;
+
+	// body is null
+	if (body === null) {
+		return Body.Promise.resolve(Buffer.alloc(0));
+	}
+
+	// body is blob
+	if (isBlob(body)) {
+		body = body.stream();
+	}
+
+	// body is buffer
+	if (Buffer.isBuffer(body)) {
+		return Body.Promise.resolve(body);
+	}
+
+	// istanbul ignore if: should never happen
+	if (!(body instanceof Stream)) {
+		return Body.Promise.resolve(Buffer.alloc(0));
+	}
+
+	// body is stream
+	// get ready to actually consume the body
+	let accum = [];
+	let accumBytes = 0;
+	let abort = false;
+
+	return new Body.Promise(function (resolve, reject) {
+		let resTimeout;
+
+		// allow timeout on slow response body
+		if (_this4.timeout) {
+			resTimeout = setTimeout(function () {
+				abort = true;
+				reject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));
+			}, _this4.timeout);
+		}
+
+		// handle stream errors
+		body.on('error', function (err) {
+			if (err.name === 'AbortError') {
+				// if the request was aborted, reject with this Error
+				abort = true;
+				reject(err);
+			} else {
+				// other errors, such as incorrect content-encoding
+				reject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));
+			}
+		});
+
+		body.on('data', function (chunk) {
+			if (abort || chunk === null) {
+				return;
+			}
+
+			if (_this4.size && accumBytes + chunk.length > _this4.size) {
+				abort = true;
+				reject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));
+				return;
+			}
+
+			accumBytes += chunk.length;
+			accum.push(chunk);
+		});
+
+		body.on('end', function () {
+			if (abort) {
+				return;
+			}
+
+			clearTimeout(resTimeout);
+
+			try {
+				resolve(Buffer.concat(accum, accumBytes));
+			} catch (err) {
+				// handle streams that have accumulated too much data (issue #414)
+				reject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));
+			}
+		});
+	});
+}
+
+/**
+ * Detect buffer encoding and convert to target encoding
+ * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding
+ *
+ * @param   Buffer  buffer    Incoming buffer
+ * @param   String  encoding  Target encoding
+ * @return  String
+ */
+function convertBody(buffer, headers) {
+	if (typeof convert !== 'function') {
+		throw new Error('The package `encoding` must be installed to use the textConverted() function');
+	}
+
+	const ct = headers.get('content-type');
+	let charset = 'utf-8';
+	let res, str;
+
+	// header
+	if (ct) {
+		res = /charset=([^;]*)/i.exec(ct);
+	}
+
+	// no charset in content type, peek at response body for at most 1024 bytes
+	str = buffer.slice(0, 1024).toString();
+
+	// html5
+	if (!res && str) {
+		res = /<meta.+?charset=(['"])(.+?)\1/i.exec(str);
+	}
+
+	// html4
+	if (!res && str) {
+		res = /<meta[\s]+?http-equiv=(['"])content-type\1[\s]+?content=(['"])(.+?)\2/i.exec(str);
+
+		if (res) {
+			res = /charset=(.*)/i.exec(res.pop());
+		}
+	}
+
+	// xml
+	if (!res && str) {
+		res = /<\?xml.+?encoding=(['"])(.+?)\1/i.exec(str);
+	}
+
+	// found charset
+	if (res) {
+		charset = res.pop();
+
+		// prevent decode issues when sites use incorrect encoding
+		// ref: https://hsivonen.fi/encoding-menu/
+		if (charset === 'gb2312' || charset === 'gbk') {
+			charset = 'gb18030';
+		}
+	}
+
+	// turn raw buffers into a single utf-8 buffer
+	return convert(buffer, 'UTF-8', charset).toString();
+}
+
+/**
+ * Detect a URLSearchParams object
+ * ref: https://github.com/bitinn/node-fetch/issues/296#issuecomment-307598143
+ *
+ * @param   Object  obj     Object to detect by type or brand
+ * @return  String
+ */
+function isURLSearchParams(obj) {
+	// Duck-typing as a necessary condition.
+	if (typeof obj !== 'object' || typeof obj.append !== 'function' || typeof obj.delete !== 'function' || typeof obj.get !== 'function' || typeof obj.getAll !== 'function' || typeof obj.has !== 'function' || typeof obj.set !== 'function') {
+		return false;
+	}
+
+	// Brand-checking and more duck-typing as optional condition.
+	return obj.constructor.name === 'URLSearchParams' || Object.prototype.toString.call(obj) === '[object URLSearchParams]' || typeof obj.sort === 'function';
+}
+
+/**
+ * Check if `obj` is a W3C `Blob` object (which `File` inherits from)
+ * @param  {*} obj
+ * @return {boolean}
+ */
+function isBlob(obj) {
+	return typeof obj === 'object' && typeof obj.arrayBuffer === 'function' && typeof obj.type === 'string' && typeof obj.stream === 'function' && typeof obj.constructor === 'function' && typeof obj.constructor.name === 'string' && /^(Blob|File)$/.test(obj.constructor.name) && /^(Blob|File)$/.test(obj[Symbol.toStringTag]);
+}
+
+/**
+ * Clone body given Res/Req instance
+ *
+ * @param   Mixed  instance  Response or Request instance
+ * @return  Mixed
+ */
+function clone(instance) {
+	let p1, p2;
+	let body = instance.body;
+
+	// don't allow cloning a used body
+	if (instance.bodyUsed) {
+		throw new Error('cannot clone body after it is used');
+	}
+
+	// check that body is a stream and not form-data object
+	// note: we can't clone the form-data object without having it as a dependency
+	if (body instanceof Stream && typeof body.getBoundary !== 'function') {
+		// tee instance body
+		p1 = new PassThrough();
+		p2 = new PassThrough();
+		body.pipe(p1);
+		body.pipe(p2);
+		// set instance body to teed body and return the other teed body
+		instance[INTERNALS].body = p1;
+		body = p2;
+	}
+
+	return body;
+}
+
+/**
+ * Performs the operation "extract a `Content-Type` value from |object|" as
+ * specified in the specification:
+ * https://fetch.spec.whatwg.org/#concept-bodyinit-extract
+ *
+ * This function assumes that instance.body is present.
+ *
+ * @param   Mixed  instance  Any options.body input
+ */
+function extractContentType(body) {
+	if (body === null) {
+		// body is null
+		return null;
+	} else if (typeof body === 'string') {
+		// body is string
+		return 'text/plain;charset=UTF-8';
+	} else if (isURLSearchParams(body)) {
+		// body is a URLSearchParams
+		return 'application/x-www-form-urlencoded;charset=UTF-8';
+	} else if (isBlob(body)) {
+		// body is blob
+		return body.type || null;
+	} else if (Buffer.isBuffer(body)) {
+		// body is buffer
+		return null;
+	} else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {
+		// body is ArrayBuffer
+		return null;
+	} else if (ArrayBuffer.isView(body)) {
+		// body is ArrayBufferView
+		return null;
+	} else if (typeof body.getBoundary === 'function') {
+		// detect form data input from form-data module
+		return `multipart/form-data;boundary=${body.getBoundary()}`;
+	} else if (body instanceof Stream) {
+		// body is stream
+		// can't really do much about this
+		return null;
+	} else {
+		// Body constructor defaults other things to string
+		return 'text/plain;charset=UTF-8';
+	}
+}
+
+/**
+ * The Fetch Standard treats this as if "total bytes" is a property on the body.
+ * For us, we have to explicitly get it with a function.
+ *
+ * ref: https://fetch.spec.whatwg.org/#concept-body-total-bytes
+ *
+ * @param   Body    instance   Instance of Body
+ * @return  Number?            Number of bytes, or null if not possible
+ */
+function getTotalBytes(instance) {
+	const body = instance.body;
+
+
+	if (body === null) {
+		// body is null
+		return 0;
+	} else if (isBlob(body)) {
+		return body.size;
+	} else if (Buffer.isBuffer(body)) {
+		// body is buffer
+		return body.length;
+	} else if (body && typeof body.getLengthSync === 'function') {
+		// detect form data input from form-data module
+		if (body._lengthRetrievers && body._lengthRetrievers.length == 0 || // 1.x
+		body.hasKnownLength && body.hasKnownLength()) {
+			// 2.x
+			return body.getLengthSync();
+		}
+		return null;
+	} else {
+		// body is stream
+		return null;
+	}
+}
+
+/**
+ * Write a Body to a Node.js WritableStream (e.g. http.Request) object.
+ *
+ * @param   Body    instance   Instance of Body
+ * @return  Void
+ */
+function writeToStream(dest, instance) {
+	const body = instance.body;
+
+
+	if (body === null) {
+		// body is null
+		dest.end();
+	} else if (isBlob(body)) {
+		body.stream().pipe(dest);
+	} else if (Buffer.isBuffer(body)) {
+		// body is buffer
+		dest.write(body);
+		dest.end();
+	} else {
+		// body is stream
+		body.pipe(dest);
+	}
+}
+
+// expose Promise
+Body.Promise = global.Promise;
+
+/**
+ * headers.js
+ *
+ * Headers class offers convenient helpers
+ */
+
+const invalidTokenRegex = /[^\^_`a-zA-Z\-0-9!#$%&'*+.|~]/;
+const invalidHeaderCharRegex = /[^\t\x20-\x7e\x80-\xff]/;
+
+function validateName(name) {
+	name = `${name}`;
+	if (invalidTokenRegex.test(name) || name === '') {
+		throw new TypeError(`${name} is not a legal HTTP header name`);
+	}
+}
+
+function validateValue(value) {
+	value = `${value}`;
+	if (invalidHeaderCharRegex.test(value)) {
+		throw new TypeError(`${value} is not a legal HTTP header value`);
+	}
+}
+
+/**
+ * Find the key in the map object given a header name.
+ *
+ * Returns undefined if not found.
+ *
+ * @param   String  name  Header name
+ * @return  String|Undefined
+ */
+function find(map, name) {
+	name = name.toLowerCase();
+	for (const key in map) {
+		if (key.toLowerCase() === name) {
+			return key;
+		}
+	}
+	return undefined;
+}
+
+const MAP = Symbol('map');
+class Headers {
+	/**
+  * Headers class
+  *
+  * @param   Object  headers  Response headers
+  * @return  Void
+  */
+	constructor() {
+		let init = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;
+
+		this[MAP] = Object.create(null);
+
+		if (init instanceof Headers) {
+			const rawHeaders = init.raw();
+			const headerNames = Object.keys(rawHeaders);
+
+			for (const headerName of headerNames) {
+				for (const value of rawHeaders[headerName]) {
+					this.append(headerName, value);
+				}
+			}
+
+			return;
+		}
+
+		// We don't worry about converting prop to ByteString here as append()
+		// will handle it.
+		if (init == null) ; else if (typeof init === 'object') {
+			const method = init[Symbol.iterator];
+			if (method != null) {
+				if (typeof method !== 'function') {
+					throw new TypeError('Header pairs must be iterable');
+				}
+
+				// sequence<sequence<ByteString>>
+				// Note: per spec we have to first exhaust the lists then process them
+				const pairs = [];
+				for (const pair of init) {
+					if (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {
+						throw new TypeError('Each header pair must be iterable');
+					}
+					pairs.push(Array.from(pair));
+				}
+
+				for (const pair of pairs) {
+					if (pair.length !== 2) {
+						throw new TypeError('Each header pair must be a name/value tuple');
+					}
+					this.append(pair[0], pair[1]);
+				}
+			} else {
+				// record<ByteString, ByteString>
+				for (const key of Object.keys(init)) {
+					const value = init[key];
+					this.append(key, value);
+				}
+			}
+		} else {
+			throw new TypeError('Provided initializer must be an object');
+		}
+	}
+
+	/**
+  * Return combined header value given name
+  *
+  * @param   String  name  Header name
+  * @return  Mixed
+  */
+	get(name) {
+		name = `${name}`;
+		validateName(name);
+		const key = find(this[MAP], name);
+		if (key === undefined) {
+			return null;
+		}
+
+		return this[MAP][key].join(', ');
+	}
+
+	/**
+  * Iterate over all headers
+  *
+  * @param   Function  callback  Executed for each item with parameters (value, name, thisArg)
+  * @param   Boolean   thisArg   `this` context for callback function
+  * @return  Void
+  */
+	forEach(callback) {
+		let thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
+
+		let pairs = getHeaders(this);
+		let i = 0;
+		while (i < pairs.length) {
+			var _pairs$i = pairs[i];
+			const name = _pairs$i[0],
+			      value = _pairs$i[1];
+
+			callback.call(thisArg, value, name, this);
+			pairs = getHeaders(this);
+			i++;
+		}
+	}
+
+	/**
+  * Overwrite header values given name
+  *
+  * @param   String  name   Header name
+  * @param   String  value  Header value
+  * @return  Void
+  */
+	set(name, value) {
+		name = `${name}`;
+		value = `${value}`;
+		validateName(name);
+		validateValue(value);
+		const key = find(this[MAP], name);
+		this[MAP][key !== undefined ? key : name] = [value];
+	}
+
+	/**
+  * Append a value onto existing header
+  *
+  * @param   String  name   Header name
+  * @param   String  value  Header value
+  * @return  Void
+  */
+	append(name, value) {
+		name = `${name}`;
+		value = `${value}`;
+		validateName(name);
+		validateValue(value);
+		const key = find(this[MAP], name);
+		if (key !== undefined) {
+			this[MAP][key].push(value);
+		} else {
+			this[MAP][name] = [value];
+		}
+	}
+
+	/**
+  * Check for header name existence
+  *
+  * @param   String   name  Header name
+  * @return  Boolean
+  */
+	has(name) {
+		name = `${name}`;
+		validateName(name);
+		return find(this[MAP], name) !== undefined;
+	}
+
+	/**
+  * Delete all header values given name
+  *
+  * @param   String  name  Header name
+  * @return  Void
+  */
+	delete(name) {
+		name = `${name}`;
+		validateName(name);
+		const key = find(this[MAP], name);
+		if (key !== undefined) {
+			delete this[MAP][key];
+		}
+	}
+
+	/**
+  * Return raw headers (non-spec api)
+  *
+  * @return  Object
+  */
+	raw() {
+		return this[MAP];
+	}
+
+	/**
+  * Get an iterator on keys.
+  *
+  * @return  Iterator
+  */
+	keys() {
+		return createHeadersIterator(this, 'key');
+	}
+
+	/**
+  * Get an iterator on values.
+  *
+  * @return  Iterator
+  */
+	values() {
+		return createHeadersIterator(this, 'value');
+	}
+
+	/**
+  * Get an iterator on entries.
+  *
+  * This is the default iterator of the Headers object.
+  *
+  * @return  Iterator
+  */
+	[Symbol.iterator]() {
+		return createHeadersIterator(this, 'key+value');
+	}
+}
+Headers.prototype.entries = Headers.prototype[Symbol.iterator];
+
+Object.defineProperty(Headers.prototype, Symbol.toStringTag, {
+	value: 'Headers',
+	writable: false,
+	enumerable: false,
+	configurable: true
+});
+
+Object.defineProperties(Headers.prototype, {
+	get: { enumerable: true },
+	forEach: { enumerable: true },
+	set: { enumerable: true },
+	append: { enumerable: true },
+	has: { enumerable: true },
+	delete: { enumerable: true },
+	keys: { enumerable: true },
+	values: { enumerable: true },
+	entries: { enumerable: true }
+});
+
+function getHeaders(headers) {
+	let kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';
+
+	const keys = Object.keys(headers[MAP]).sort();
+	return keys.map(kind === 'key' ? function (k) {
+		return k.toLowerCase();
+	} : kind === 'value' ? function (k) {
+		return headers[MAP][k].join(', ');
+	} : function (k) {
+		return [k.toLowerCase(), headers[MAP][k].join(', ')];
+	});
+}
+
+const INTERNAL = Symbol('internal');
+
+function createHeadersIterator(target, kind) {
+	const iterator = Object.create(HeadersIteratorPrototype);
+	iterator[INTERNAL] = {
+		target,
+		kind,
+		index: 0
+	};
+	return iterator;
+}
+
+const HeadersIteratorPrototype = Object.setPrototypeOf({
+	next() {
+		// istanbul ignore if
+		if (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {
+			throw new TypeError('Value of `this` is not a HeadersIterator');
+		}
+
+		var _INTERNAL = this[INTERNAL];
+		const target = _INTERNAL.target,
+		      kind = _INTERNAL.kind,
+		      index = _INTERNAL.index;
+
+		const values = getHeaders(target, kind);
+		const len = values.length;
+		if (index >= len) {
+			return {
+				value: undefined,
+				done: true
+			};
+		}
+
+		this[INTERNAL].index = index + 1;
+
+		return {
+			value: values[index],
+			done: false
+		};
+	}
+}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));
+
+Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {
+	value: 'HeadersIterator',
+	writable: false,
+	enumerable: false,
+	configurable: true
+});
+
+/**
+ * Export the Headers object in a form that Node.js can consume.
+ *
+ * @param   Headers  headers
+ * @return  Object
+ */
+function exportNodeCompatibleHeaders(headers) {
+	const obj = Object.assign({ __proto__: null }, headers[MAP]);
+
+	// http.request() only supports string as Host header. This hack makes
+	// specifying custom Host header possible.
+	const hostHeaderKey = find(headers[MAP], 'Host');
+	if (hostHeaderKey !== undefined) {
+		obj[hostHeaderKey] = obj[hostHeaderKey][0];
+	}
+
+	return obj;
+}
+
+/**
+ * Create a Headers object from an object of headers, ignoring those that do
+ * not conform to HTTP grammar productions.
+ *
+ * @param   Object  obj  Object of headers
+ * @return  Headers
+ */
+function createHeadersLenient(obj) {
+	const headers = new Headers();
+	for (const name of Object.keys(obj)) {
+		if (invalidTokenRegex.test(name)) {
+			continue;
+		}
+		if (Array.isArray(obj[name])) {
+			for (const val of obj[name]) {
+				if (invalidHeaderCharRegex.test(val)) {
+					continue;
+				}
+				if (headers[MAP][name] === undefined) {
+					headers[MAP][name] = [val];
+				} else {
+					headers[MAP][name].push(val);
+				}
+			}
+		} else if (!invalidHeaderCharRegex.test(obj[name])) {
+			headers[MAP][name] = [obj[name]];
+		}
+	}
+	return headers;
+}
+
+const INTERNALS$1 = Symbol('Response internals');
+
+// fix an issue where "STATUS_CODES" aren't a named export for node <10
+const STATUS_CODES = http.STATUS_CODES;
+
+/**
+ * Response class
+ *
+ * @param   Stream  body  Readable stream
+ * @param   Object  opts  Response options
+ * @return  Void
+ */
+class Response {
+	constructor() {
+		let body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
+		let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+		Body.call(this, body, opts);
+
+		const status = opts.status || 200;
+		const headers = new Headers(opts.headers);
+
+		if (body != null && !headers.has('Content-Type')) {
+			const contentType = extractContentType(body);
+			if (contentType) {
+				headers.append('Content-Type', contentType);
+			}
+		}
+
+		this[INTERNALS$1] = {
+			url: opts.url,
+			status,
+			statusText: opts.statusText || STATUS_CODES[status],
+			headers,
+			counter: opts.counter
+		};
+	}
+
+	get url() {
+		return this[INTERNALS$1].url || '';
+	}
+
+	get status() {
+		return this[INTERNALS$1].status;
+	}
+
+	/**
+  * Convenience property representing if the request ended normally
+  */
+	get ok() {
+		return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;
+	}
+
+	get redirected() {
+		return this[INTERNALS$1].counter > 0;
+	}
+
+	get statusText() {
+		return this[INTERNALS$1].statusText;
+	}
+
+	get headers() {
+		return this[INTERNALS$1].headers;
+	}
+
+	/**
+  * Clone this response
+  *
+  * @return  Response
+  */
+	clone() {
+		return new Response(clone(this), {
+			url: this.url,
+			status: this.status,
+			statusText: this.statusText,
+			headers: this.headers,
+			ok: this.ok,
+			redirected: this.redirected
+		});
+	}
+}
+
+Body.mixIn(Response.prototype);
+
+Object.defineProperties(Response.prototype, {
+	url: { enumerable: true },
+	status: { enumerable: true },
+	ok: { enumerable: true },
+	redirected: { enumerable: true },
+	statusText: { enumerable: true },
+	headers: { enumerable: true },
+	clone: { enumerable: true }
+});
+
+Object.defineProperty(Response.prototype, Symbol.toStringTag, {
+	value: 'Response',
+	writable: false,
+	enumerable: false,
+	configurable: true
+});
+
+const INTERNALS$2 = Symbol('Request internals');
+
+// fix an issue where "format", "parse" aren't a named export for node <10
+const parse_url = Url.parse;
+const format_url = Url.format;
+
+const streamDestructionSupported = 'destroy' in Stream.Readable.prototype;
+
+/**
+ * Check if a value is an instance of Request.
+ *
+ * @param   Mixed   input
+ * @return  Boolean
+ */
+function isRequest(input) {
+	return typeof input === 'object' && typeof input[INTERNALS$2] === 'object';
+}
+
+function isAbortSignal(signal) {
+	const proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);
+	return !!(proto && proto.constructor.name === 'AbortSignal');
+}
+
+/**
+ * Request class
+ *
+ * @param   Mixed   input  Url or Request instance
+ * @param   Object  init   Custom options
+ * @return  Void
+ */
+class Request {
+	constructor(input) {
+		let init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+		let parsedURL;
+
+		// normalize input
+		if (!isRequest(input)) {
+			if (input && input.href) {
+				// in order to support Node.js' Url objects; though WHATWG's URL objects
+				// will fall into this branch also (since their `toString()` will return
+				// `href` property anyway)
+				parsedURL = parse_url(input.href);
+			} else {
+				// coerce input to a string before attempting to parse
+				parsedURL = parse_url(`${input}`);
+			}
+			input = {};
+		} else {
+			parsedURL = parse_url(input.url);
+		}
+
+		let method = init.method || input.method || 'GET';
+		method = method.toUpperCase();
+
+		if ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {
+			throw new TypeError('Request with GET/HEAD method cannot have body');
+		}
+
+		let inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;
+
+		Body.call(this, inputBody, {
+			timeout: init.timeout || input.timeout || 0,
+			size: init.size || input.size || 0
+		});
+
+		const headers = new Headers(init.headers || input.headers || {});
+
+		if (inputBody != null && !headers.has('Content-Type')) {
+			const contentType = extractContentType(inputBody);
+			if (contentType) {
+				headers.append('Content-Type', contentType);
+			}
+		}
+
+		let signal = isRequest(input) ? input.signal : null;
+		if ('signal' in init) signal = init.signal;
+
+		if (signal != null && !isAbortSignal(signal)) {
+			throw new TypeError('Expected signal to be an instanceof AbortSignal');
+		}
+
+		this[INTERNALS$2] = {
+			method,
+			redirect: init.redirect || input.redirect || 'follow',
+			headers,
+			parsedURL,
+			signal
+		};
+
+		// node-fetch-only options
+		this.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;
+		this.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;
+		this.counter = init.counter || input.counter || 0;
+		this.agent = init.agent || input.agent;
+	}
+
+	get method() {
+		return this[INTERNALS$2].method;
+	}
+
+	get url() {
+		return format_url(this[INTERNALS$2].parsedURL);
+	}
+
+	get headers() {
+		return this[INTERNALS$2].headers;
+	}
+
+	get redirect() {
+		return this[INTERNALS$2].redirect;
+	}
+
+	get signal() {
+		return this[INTERNALS$2].signal;
+	}
+
+	/**
+  * Clone this request
+  *
+  * @return  Request
+  */
+	clone() {
+		return new Request(this);
+	}
+}
+
+Body.mixIn(Request.prototype);
+
+Object.defineProperty(Request.prototype, Symbol.toStringTag, {
+	value: 'Request',
+	writable: false,
+	enumerable: false,
+	configurable: true
+});
+
+Object.defineProperties(Request.prototype, {
+	method: { enumerable: true },
+	url: { enumerable: true },
+	headers: { enumerable: true },
+	redirect: { enumerable: true },
+	clone: { enumerable: true },
+	signal: { enumerable: true }
+});
+
+/**
+ * Convert a Request to Node.js http request options.
+ *
+ * @param   Request  A Request instance
+ * @return  Object   The options object to be passed to http.request
+ */
+function getNodeRequestOptions(request) {
+	const parsedURL = request[INTERNALS$2].parsedURL;
+	const headers = new Headers(request[INTERNALS$2].headers);
+
+	// fetch step 1.3
+	if (!headers.has('Accept')) {
+		headers.set('Accept', '*/*');
+	}
+
+	// Basic fetch
+	if (!parsedURL.protocol || !parsedURL.hostname) {
+		throw new TypeError('Only absolute URLs are supported');
+	}
+
+	if (!/^https?:$/.test(parsedURL.protocol)) {
+		throw new TypeError('Only HTTP(S) protocols are supported');
+	}
+
+	if (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {
+		throw new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');
+	}
+
+	// HTTP-network-or-cache fetch steps 2.4-2.7
+	let contentLengthValue = null;
+	if (request.body == null && /^(POST|PUT)$/i.test(request.method)) {
+		contentLengthValue = '0';
+	}
+	if (request.body != null) {
+		const totalBytes = getTotalBytes(request);
+		if (typeof totalBytes === 'number') {
+			contentLengthValue = String(totalBytes);
+		}
+	}
+	if (contentLengthValue) {
+		headers.set('Content-Length', contentLengthValue);
+	}
+
+	// HTTP-network-or-cache fetch step 2.11
+	if (!headers.has('User-Agent')) {
+		headers.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');
+	}
+
+	// HTTP-network-or-cache fetch step 2.15
+	if (request.compress && !headers.has('Accept-Encoding')) {
+		headers.set('Accept-Encoding', 'gzip,deflate');
+	}
+
+	let agent = request.agent;
+	if (typeof agent === 'function') {
+		agent = agent(parsedURL);
+	}
+
+	if (!headers.has('Connection') && !agent) {
+		headers.set('Connection', 'close');
+	}
+
+	// HTTP-network fetch step 4.2
+	// chunked encoding is handled by Node.js
+
+	return Object.assign({}, parsedURL, {
+		method: request.method,
+		headers: exportNodeCompatibleHeaders(headers),
+		agent
+	});
+}
+
+/**
+ * abort-error.js
+ *
+ * AbortError interface for cancelled requests
+ */
+
+/**
+ * Create AbortError instance
+ *
+ * @param   String      message      Error message for human
+ * @return  AbortError
+ */
+function AbortError(message) {
+  Error.call(this, message);
+
+  this.type = 'aborted';
+  this.message = message;
+
+  // hide custom error implementation details from end-users
+  Error.captureStackTrace(this, this.constructor);
+}
+
+AbortError.prototype = Object.create(Error.prototype);
+AbortError.prototype.constructor = AbortError;
+AbortError.prototype.name = 'AbortError';
+
+// fix an issue where "PassThrough", "resolve" aren't a named export for node <10
+const PassThrough$1 = Stream.PassThrough;
+const resolve_url = Url.resolve;
+
+/**
+ * Fetch function
+ *
+ * @param   Mixed    url   Absolute url or Request instance
+ * @param   Object   opts  Fetch options
+ * @return  Promise
+ */
+function fetch(url, opts) {
+
+	// allow custom promise
+	if (!fetch.Promise) {
+		throw new Error('native promise missing, set fetch.Promise to your favorite alternative');
+	}
+
+	Body.Promise = fetch.Promise;
+
+	// wrap http.request into fetch
+	return new fetch.Promise(function (resolve, reject) {
+		// build request object
+		const request = new Request(url, opts);
+		const options = getNodeRequestOptions(request);
+
+		const send = (options.protocol === 'https:' ? https : http).request;
+		const signal = request.signal;
+
+		let response = null;
+
+		const abort = function abort() {
+			let error = new AbortError('The user aborted a request.');
+			reject(error);
+			if (request.body && request.body instanceof Stream.Readable) {
+				request.body.destroy(error);
+			}
+			if (!response || !response.body) return;
+			response.body.emit('error', error);
+		};
+
+		if (signal && signal.aborted) {
+			abort();
+			return;
+		}
+
+		const abortAndFinalize = function abortAndFinalize() {
+			abort();
+			finalize();
+		};
+
+		// send request
+		const req = send(options);
+		let reqTimeout;
+
+		if (signal) {
+			signal.addEventListener('abort', abortAndFinalize);
+		}
+
+		function finalize() {
+			req.abort();
+			if (signal) signal.removeEventListener('abort', abortAndFinalize);
+			clearTimeout(reqTimeout);
+		}
+
+		if (request.timeout) {
+			req.once('socket', function (socket) {
+				reqTimeout = setTimeout(function () {
+					reject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));
+					finalize();
+				}, request.timeout);
+			});
+		}
+
+		req.on('error', function (err) {
+			reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));
+			finalize();
+		});
+
+		req.on('response', function (res) {
+			clearTimeout(reqTimeout);
+
+			const headers = createHeadersLenient(res.headers);
+
+			// HTTP fetch step 5
+			if (fetch.isRedirect(res.statusCode)) {
+				// HTTP fetch step 5.2
+				const location = headers.get('Location');
+
+				// HTTP fetch step 5.3
+				const locationURL = location === null ? null : resolve_url(request.url, location);
+
+				// HTTP fetch step 5.5
+				switch (request.redirect) {
+					case 'error':
+						reject(new FetchError(`redirect mode is set to error: ${request.url}`, 'no-redirect'));
+						finalize();
+						return;
+					case 'manual':
+						// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.
+						if (locationURL !== null) {
+							// handle corrupted header
+							try {
+								headers.set('Location', locationURL);
+							} catch (err) {
+								// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request
+								reject(err);
+							}
+						}
+						break;
+					case 'follow':
+						// HTTP-redirect fetch step 2
+						if (locationURL === null) {
+							break;
+						}
+
+						// HTTP-redirect fetch step 5
+						if (request.counter >= request.follow) {
+							reject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));
+							finalize();
+							return;
+						}
+
+						// HTTP-redirect fetch step 6 (counter increment)
+						// Create a new Request object.
+						const requestOpts = {
+							headers: new Headers(request.headers),
+							follow: request.follow,
+							counter: request.counter + 1,
+							agent: request.agent,
+							compress: request.compress,
+							method: request.method,
+							body: request.body,
+							signal: request.signal,
+							timeout: request.timeout
+						};
+
+						// HTTP-redirect fetch step 9
+						if (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {
+							reject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));
+							finalize();
+							return;
+						}
+
+						// HTTP-redirect fetch step 11
+						if (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {
+							requestOpts.method = 'GET';
+							requestOpts.body = undefined;
+							requestOpts.headers.delete('content-length');
+						}
+
+						// HTTP-redirect fetch step 15
+						resolve(fetch(new Request(locationURL, requestOpts)));
+						finalize();
+						return;
+				}
+			}
+
+			// prepare response
+			res.once('end', function () {
+				if (signal) signal.removeEventListener('abort', abortAndFinalize);
+			});
+			let body = res.pipe(new PassThrough$1());
+
+			const response_options = {
+				url: request.url,
+				status: res.statusCode,
+				statusText: res.statusMessage,
+				headers: headers,
+				size: request.size,
+				timeout: request.timeout,
+				counter: request.counter
+			};
+
+			// HTTP-network fetch step 12.1.1.3
+			const codings = headers.get('Content-Encoding');
+
+			// HTTP-network fetch step 12.1.1.4: handle content codings
+
+			// in following scenarios we ignore compression support
+			// 1. compression support is disabled
+			// 2. HEAD request
+			// 3. no Content-Encoding header
+			// 4. no content response (204)
+			// 5. content not modified response (304)
+			if (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {
+				response = new Response(body, response_options);
+				resolve(response);
+				return;
+			}
+
+			// For Node v6+
+			// Be less strict when decoding compressed responses, since sometimes
+			// servers send slightly invalid responses that are still accepted
+			// by common browsers.
+			// Always using Z_SYNC_FLUSH is what cURL does.
+			const zlibOptions = {
+				flush: zlib.Z_SYNC_FLUSH,
+				finishFlush: zlib.Z_SYNC_FLUSH
+			};
+
+			// for gzip
+			if (codings == 'gzip' || codings == 'x-gzip') {
+				body = body.pipe(zlib.createGunzip(zlibOptions));
+				response = new Response(body, response_options);
+				resolve(response);
+				return;
+			}
+
+			// for deflate
+			if (codings == 'deflate' || codings == 'x-deflate') {
+				// handle the infamous raw deflate response from old servers
+				// a hack for old IIS and Apache servers
+				const raw = res.pipe(new PassThrough$1());
+				raw.once('data', function (chunk) {
+					// see http://stackoverflow.com/questions/37519828
+					if ((chunk[0] & 0x0F) === 0x08) {
+						body = body.pipe(zlib.createInflate());
+					} else {
+						body = body.pipe(zlib.createInflateRaw());
+					}
+					response = new Response(body, response_options);
+					resolve(response);
+				});
+				return;
+			}
+
+			// for br
+			if (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {
+				body = body.pipe(zlib.createBrotliDecompress());
+				response = new Response(body, response_options);
+				resolve(response);
+				return;
+			}
+
+			// otherwise, use response as-is
+			response = new Response(body, response_options);
+			resolve(response);
+		});
+
+		writeToStream(req, request);
+	});
+}
+/**
+ * Redirect code matching
+ *
+ * @param   Number   code  Status code
+ * @return  Boolean
+ */
+fetch.isRedirect = function (code) {
+	return code === 301 || code === 302 || code === 303 || code === 307 || code === 308;
+};
+
+// expose Promise
+fetch.Promise = global.Promise;
+
+module.exports = exports = fetch;
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.default = exports;
+exports.Headers = Headers;
+exports.Request = Request;
+exports.Response = Response;
+exports.FetchError = FetchError;
diff --git a/setup-maven/node_modules/node-fetch/lib/index.mjs b/setup-maven/node_modules/node-fetch/lib/index.mjs
new file mode 100644
index 0000000..e571ea6
--- /dev/null
+++ b/setup-maven/node_modules/node-fetch/lib/index.mjs
@@ -0,0 +1,1631 @@
+import Stream from 'stream';
+import http from 'http';
+import Url from 'url';
+import https from 'https';
+import zlib from 'zlib';
+
+// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js
+
+// fix for "Readable" isn't a named export issue
+const Readable = Stream.Readable;
+
+const BUFFER = Symbol('buffer');
+const TYPE = Symbol('type');
+
+class Blob {
+	constructor() {
+		this[TYPE] = '';
+
+		const blobParts = arguments[0];
+		const options = arguments[1];
+
+		const buffers = [];
+		let size = 0;
+
+		if (blobParts) {
+			const a = blobParts;
+			const length = Number(a.length);
+			for (let i = 0; i < length; i++) {
+				const element = a[i];
+				let buffer;
+				if (element instanceof Buffer) {
+					buffer = element;
+				} else if (ArrayBuffer.isView(element)) {
+					buffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);
+				} else if (element instanceof ArrayBuffer) {
+					buffer = Buffer.from(element);
+				} else if (element instanceof Blob) {
+					buffer = element[BUFFER];
+				} else {
+					buffer = Buffer.from(typeof element === 'string' ? element : String(element));
+				}
+				size += buffer.length;
+				buffers.push(buffer);
+			}
+		}
+
+		this[BUFFER] = Buffer.concat(buffers);
+
+		let type = options && options.type !== undefined && String(options.type).toLowerCase();
+		if (type && !/[^\u0020-\u007E]/.test(type)) {
+			this[TYPE] = type;
+		}
+	}
+	get size() {
+		return this[BUFFER].length;
+	}
+	get type() {
+		return this[TYPE];
+	}
+	text() {
+		return Promise.resolve(this[BUFFER].toString());
+	}
+	arrayBuffer() {
+		const buf = this[BUFFER];
+		const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
+		return Promise.resolve(ab);
+	}
+	stream() {
+		const readable = new Readable();
+		readable._read = function () {};
+		readable.push(this[BUFFER]);
+		readable.push(null);
+		return readable;
+	}
+	toString() {
+		return '[object Blob]';
+	}
+	slice() {
+		const size = this.size;
+
+		const start = arguments[0];
+		const end = arguments[1];
+		let relativeStart, relativeEnd;
+		if (start === undefined) {
+			relativeStart = 0;
+		} else if (start < 0) {
+			relativeStart = Math.max(size + start, 0);
+		} else {
+			relativeStart = Math.min(start, size);
+		}
+		if (end === undefined) {
+			relativeEnd = size;
+		} else if (end < 0) {
+			relativeEnd = Math.max(size + end, 0);
+		} else {
+			relativeEnd = Math.min(end, size);
+		}
+		const span = Math.max(relativeEnd - relativeStart, 0);
+
+		const buffer = this[BUFFER];
+		const slicedBuffer = buffer.slice(relativeStart, relativeStart + span);
+		const blob = new Blob([], { type: arguments[2] });
+		blob[BUFFER] = slicedBuffer;
+		return blob;
+	}
+}
+
+Object.defineProperties(Blob.prototype, {
+	size: { enumerable: true },
+	type: { enumerable: true },
+	slice: { enumerable: true }
+});
+
+Object.defineProperty(Blob.prototype, Symbol.toStringTag, {
+	value: 'Blob',
+	writable: false,
+	enumerable: false,
+	configurable: true
+});
+
+/**
+ * fetch-error.js
+ *
+ * FetchError interface for operational errors
+ */
+
+/**
+ * Create FetchError instance
+ *
+ * @param   String      message      Error message for human
+ * @param   String      type         Error type for machine
+ * @param   String      systemError  For Node.js system error
+ * @return  FetchError
+ */
+function FetchError(message, type, systemError) {
+  Error.call(this, message);
+
+  this.message = message;
+  this.type = type;
+
+  // when err.type is `system`, err.code contains system error code
+  if (systemError) {
+    this.code = this.errno = systemError.code;
+  }
+
+  // hide custom error implementation details from end-users
+  Error.captureStackTrace(this, this.constructor);
+}
+
+FetchError.prototype = Object.create(Error.prototype);
+FetchError.prototype.constructor = FetchError;
+FetchError.prototype.name = 'FetchError';
+
+let convert;
+try {
+	convert = require('encoding').convert;
+} catch (e) {}
+
+const INTERNALS = Symbol('Body internals');
+
+// fix an issue where "PassThrough" isn't a named export for node <10
+const PassThrough = Stream.PassThrough;
+
+/**
+ * Body mixin
+ *
+ * Ref: https://fetch.spec.whatwg.org/#body
+ *
+ * @param   Stream  body  Readable stream
+ * @param   Object  opts  Response options
+ * @return  Void
+ */
+function Body(body) {
+	var _this = this;
+
+	var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
+	    _ref$size = _ref.size;
+
+	let size = _ref$size === undefined ? 0 : _ref$size;
+	var _ref$timeout = _ref.timeout;
+	let timeout = _ref$timeout === undefined ? 0 : _ref$timeout;
+
+	if (body == null) {
+		// body is undefined or null
+		body = null;
+	} else if (isURLSearchParams(body)) {
+		// body is a URLSearchParams
+		body = Buffer.from(body.toString());
+	} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {
+		// body is ArrayBuffer
+		body = Buffer.from(body);
+	} else if (ArrayBuffer.isView(body)) {
+		// body is ArrayBufferView
+		body = Buffer.from(body.buffer, body.byteOffset, body.byteLength);
+	} else if (body instanceof Stream) ; else {
+		// none of the above
+		// coerce to string then buffer
+		body = Buffer.from(String(body));
+	}
+	this[INTERNALS] = {
+		body,
+		disturbed: false,
+		error: null
+	};
+	this.size = size;
+	this.timeout = timeout;
+
+	if (body instanceof Stream) {
+		body.on('error', function (err) {
+			const error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);
+			_this[INTERNALS].error = error;
+		});
+	}
+}
+
+Body.prototype = {
+	get body() {
+		return this[INTERNALS].body;
+	},
+
+	get bodyUsed() {
+		return this[INTERNALS].disturbed;
+	},
+
+	/**
+  * Decode response as ArrayBuffer
+  *
+  * @return  Promise
+  */
+	arrayBuffer() {
+		return consumeBody.call(this).then(function (buf) {
+			return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
+		});
+	},
+
+	/**
+  * Return raw response as Blob
+  *
+  * @return Promise
+  */
+	blob() {
+		let ct = this.headers && this.headers.get('content-type') || '';
+		return consumeBody.call(this).then(function (buf) {
+			return Object.assign(
+			// Prevent copying
+			new Blob([], {
+				type: ct.toLowerCase()
+			}), {
+				[BUFFER]: buf
+			});
+		});
+	},
+
+	/**
+  * Decode response as json
+  *
+  * @return  Promise
+  */
+	json() {
+		var _this2 = this;
+
+		return consumeBody.call(this).then(function (buffer) {
+			try {
+				return JSON.parse(buffer.toString());
+			} catch (err) {
+				return Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));
+			}
+		});
+	},
+
+	/**
+  * Decode response as text
+  *
+  * @return  Promise
+  */
+	text() {
+		return consumeBody.call(this).then(function (buffer) {
+			return buffer.toString();
+		});
+	},
+
+	/**
+  * Decode response as buffer (non-spec api)
+  *
+  * @return  Promise
+  */
+	buffer() {
+		return consumeBody.call(this);
+	},
+
+	/**
+  * Decode response as text, while automatically detecting the encoding and
+  * trying to decode to UTF-8 (non-spec api)
+  *
+  * @return  Promise
+  */
+	textConverted() {
+		var _this3 = this;
+
+		return consumeBody.call(this).then(function (buffer) {
+			return convertBody(buffer, _this3.headers);
+		});
+	}
+};
+
+// In browsers, all properties are enumerable.
+Object.defineProperties(Body.prototype, {
+	body: { enumerable: true },
+	bodyUsed: { enumerable: true },
+	arrayBuffer: { enumerable: true },
+	blob: { enumerable: true },
+	json: { enumerable: true },
+	text: { enumerable: true }
+});
+
+Body.mixIn = function (proto) {
+	for (const name of Object.getOwnPropertyNames(Body.prototype)) {
+		// istanbul ignore else: future proof
+		if (!(name in proto)) {
+			const desc = Object.getOwnPropertyDescriptor(Body.prototype, name);
+			Object.defineProperty(proto, name, desc);
+		}
+	}
+};
+
+/**
+ * Consume and convert an entire Body to a Buffer.
+ *
+ * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body
+ *
+ * @return  Promise
+ */
+function consumeBody() {
+	var _this4 = this;
+
+	if (this[INTERNALS].disturbed) {
+		return Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));
+	}
+
+	this[INTERNALS].disturbed = true;
+
+	if (this[INTERNALS].error) {
+		return Body.Promise.reject(this[INTERNALS].error);
+	}
+
+	let body = this.body;
+
+	// body is null
+	if (body === null) {
+		return Body.Promise.resolve(Buffer.alloc(0));
+	}
+
+	// body is blob
+	if (isBlob(body)) {
+		body = body.stream();
+	}
+
+	// body is buffer
+	if (Buffer.isBuffer(body)) {
+		return Body.Promise.resolve(body);
+	}
+
+	// istanbul ignore if: should never happen
+	if (!(body instanceof Stream)) {
+		return Body.Promise.resolve(Buffer.alloc(0));
+	}
+
+	// body is stream
+	// get ready to actually consume the body
+	let accum = [];
+	let accumBytes = 0;
+	let abort = false;
+
+	return new Body.Promise(function (resolve, reject) {
+		let resTimeout;
+
+		// allow timeout on slow response body
+		if (_this4.timeout) {
+			resTimeout = setTimeout(function () {
+				abort = true;
+				reject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));
+			}, _this4.timeout);
+		}
+
+		// handle stream errors
+		body.on('error', function (err) {
+			if (err.name === 'AbortError') {
+				// if the request was aborted, reject with this Error
+				abort = true;
+				reject(err);
+			} else {
+				// other errors, such as incorrect content-encoding
+				reject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));
+			}
+		});
+
+		body.on('data', function (chunk) {
+			if (abort || chunk === null) {
+				return;
+			}
+
+			if (_this4.size && accumBytes + chunk.length > _this4.size) {
+				abort = true;
+				reject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));
+				return;
+			}
+
+			accumBytes += chunk.length;
+			accum.push(chunk);
+		});
+
+		body.on('end', function () {
+			if (abort) {
+				return;
+			}
+
+			clearTimeout(resTimeout);
+
+			try {
+				resolve(Buffer.concat(accum, accumBytes));
+			} catch (err) {
+				// handle streams that have accumulated too much data (issue #414)
+				reject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));
+			}
+		});
+	});
+}
+
+/**
+ * Detect buffer encoding and convert to target encoding
+ * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding
+ *
+ * @param   Buffer  buffer    Incoming buffer
+ * @param   String  encoding  Target encoding
+ * @return  String
+ */
+function convertBody(buffer, headers) {
+	if (typeof convert !== 'function') {
+		throw new Error('The package `encoding` must be installed to use the textConverted() function');
+	}
+
+	const ct = headers.get('content-type');
+	let charset = 'utf-8';
+	let res, str;
+
+	// header
+	if (ct) {
+		res = /charset=([^;]*)/i.exec(ct);
+	}
+
+	// no charset in content type, peek at response body for at most 1024 bytes
+	str = buffer.slice(0, 1024).toString();
+
+	// html5
+	if (!res && str) {
+		res = /<meta.+?charset=(['"])(.+?)\1/i.exec(str);
+	}
+
+	// html4
+	if (!res && str) {
+		res = /<meta[\s]+?http-equiv=(['"])content-type\1[\s]+?content=(['"])(.+?)\2/i.exec(str);
+
+		if (res) {
+			res = /charset=(.*)/i.exec(res.pop());
+		}
+	}
+
+	// xml
+	if (!res && str) {
+		res = /<\?xml.+?encoding=(['"])(.+?)\1/i.exec(str);
+	}
+
+	// found charset
+	if (res) {
+		charset = res.pop();
+
+		// prevent decode issues when sites use incorrect encoding
+		// ref: https://hsivonen.fi/encoding-menu/
+		if (charset === 'gb2312' || charset === 'gbk') {
+			charset = 'gb18030';
+		}
+	}
+
+	// turn raw buffers into a single utf-8 buffer
+	return convert(buffer, 'UTF-8', charset).toString();
+}
+
+/**
+ * Detect a URLSearchParams object
+ * ref: https://github.com/bitinn/node-fetch/issues/296#issuecomment-307598143
+ *
+ * @param   Object  obj     Object to detect by type or brand
+ * @return  String
+ */
+function isURLSearchParams(obj) {
+	// Duck-typing as a necessary condition.
+	if (typeof obj !== 'object' || typeof obj.append !== 'function' || typeof obj.delete !== 'function' || typeof obj.get !== 'function' || typeof obj.getAll !== 'function' || typeof obj.has !== 'function' || typeof obj.set !== 'function') {
+		return false;
+	}
+
+	// Brand-checking and more duck-typing as optional condition.
+	return obj.constructor.name === 'URLSearchParams' || Object.prototype.toString.call(obj) === '[object URLSearchParams]' || typeof obj.sort === 'function';
+}
+
+/**
+ * Check if `obj` is a W3C `Blob` object (which `File` inherits from)
+ * @param  {*} obj
+ * @return {boolean}
+ */
+function isBlob(obj) {
+	return typeof obj === 'object' && typeof obj.arrayBuffer === 'function' && typeof obj.type === 'string' && typeof obj.stream === 'function' && typeof obj.constructor === 'function' && typeof obj.constructor.name === 'string' && /^(Blob|File)$/.test(obj.constructor.name) && /^(Blob|File)$/.test(obj[Symbol.toStringTag]);
+}
+
+/**
+ * Clone body given Res/Req instance
+ *
+ * @param   Mixed  instance  Response or Request instance
+ * @return  Mixed
+ */
+function clone(instance) {
+	let p1, p2;
+	let body = instance.body;
+
+	// don't allow cloning a used body
+	if (instance.bodyUsed) {
+		throw new Error('cannot clone body after it is used');
+	}
+
+	// check that body is a stream and not form-data object
+	// note: we can't clone the form-data object without having it as a dependency
+	if (body instanceof Stream && typeof body.getBoundary !== 'function') {
+		// tee instance body
+		p1 = new PassThrough();
+		p2 = new PassThrough();
+		body.pipe(p1);
+		body.pipe(p2);
+		// set instance body to teed body and return the other teed body
+		instance[INTERNALS].body = p1;
+		body = p2;
+	}
+
+	return body;
+}
+
+/**
+ * Performs the operation "extract a `Content-Type` value from |object|" as
+ * specified in the specification:
+ * https://fetch.spec.whatwg.org/#concept-bodyinit-extract
+ *
+ * This function assumes that instance.body is present.
+ *
+ * @param   Mixed  instance  Any options.body input
+ */
+function extractContentType(body) {
+	if (body === null) {
+		// body is null
+		return null;
+	} else if (typeof body === 'string') {
+		// body is string
+		return 'text/plain;charset=UTF-8';
+	} else if (isURLSearchParams(body)) {
+		// body is a URLSearchParams
+		return 'application/x-www-form-urlencoded;charset=UTF-8';
+	} else if (isBlob(body)) {
+		// body is blob
+		return body.type || null;
+	} else if (Buffer.isBuffer(body)) {
+		// body is buffer
+		return null;
+	} else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {
+		// body is ArrayBuffer
+		return null;
+	} else if (ArrayBuffer.isView(body)) {
+		// body is ArrayBufferView
+		return null;
+	} else if (typeof body.getBoundary === 'function') {
+		// detect form data input from form-data module
+		return `multipart/form-data;boundary=${body.getBoundary()}`;
+	} else if (body instanceof Stream) {
+		// body is stream
+		// can't really do much about this
+		return null;
+	} else {
+		// Body constructor defaults other things to string
+		return 'text/plain;charset=UTF-8';
+	}
+}
+
+/**
+ * The Fetch Standard treats this as if "total bytes" is a property on the body.
+ * For us, we have to explicitly get it with a function.
+ *
+ * ref: https://fetch.spec.whatwg.org/#concept-body-total-bytes
+ *
+ * @param   Body    instance   Instance of Body
+ * @return  Number?            Number of bytes, or null if not possible
+ */
+function getTotalBytes(instance) {
+	const body = instance.body;
+
+
+	if (body === null) {
+		// body is null
+		return 0;
+	} else if (isBlob(body)) {
+		return body.size;
+	} else if (Buffer.isBuffer(body)) {
+		// body is buffer
+		return body.length;
+	} else if (body && typeof body.getLengthSync === 'function') {
+		// detect form data input from form-data module
+		if (body._lengthRetrievers && body._lengthRetrievers.length == 0 || // 1.x
+		body.hasKnownLength && body.hasKnownLength()) {
+			// 2.x
+			return body.getLengthSync();
+		}
+		return null;
+	} else {
+		// body is stream
+		return null;
+	}
+}
+
+/**
+ * Write a Body to a Node.js WritableStream (e.g. http.Request) object.
+ *
+ * @param   Body    instance   Instance of Body
+ * @return  Void
+ */
+function writeToStream(dest, instance) {
+	const body = instance.body;
+
+
+	if (body === null) {
+		// body is null
+		dest.end();
+	} else if (isBlob(body)) {
+		body.stream().pipe(dest);
+	} else if (Buffer.isBuffer(body)) {
+		// body is buffer
+		dest.write(body);
+		dest.end();
+	} else {
+		// body is stream
+		body.pipe(dest);
+	}
+}
+
+// expose Promise
+Body.Promise = global.Promise;
+
+/**
+ * headers.js
+ *
+ * Headers class offers convenient helpers
+ */
+
+const invalidTokenRegex = /[^\^_`a-zA-Z\-0-9!#$%&'*+.|~]/;
+const invalidHeaderCharRegex = /[^\t\x20-\x7e\x80-\xff]/;
+
+function validateName(name) {
+	name = `${name}`;
+	if (invalidTokenRegex.test(name) || name === '') {
+		throw new TypeError(`${name} is not a legal HTTP header name`);
+	}
+}
+
+function validateValue(value) {
+	value = `${value}`;
+	if (invalidHeaderCharRegex.test(value)) {
+		throw new TypeError(`${value} is not a legal HTTP header value`);
+	}
+}
+
+/**
+ * Find the key in the map object given a header name.
+ *
+ * Returns undefined if not found.
+ *
+ * @param   String  name  Header name
+ * @return  String|Undefined
+ */
+function find(map, name) {
+	name = name.toLowerCase();
+	for (const key in map) {
+		if (key.toLowerCase() === name) {
+			return key;
+		}
+	}
+	return undefined;
+}
+
+const MAP = Symbol('map');
+class Headers {
+	/**
+  * Headers class
+  *
+  * @param   Object  headers  Response headers
+  * @return  Void
+  */
+	constructor() {
+		let init = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;
+
+		this[MAP] = Object.create(null);
+
+		if (init instanceof Headers) {
+			const rawHeaders = init.raw();
+			const headerNames = Object.keys(rawHeaders);
+
+			for (const headerName of headerNames) {
+				for (const value of rawHeaders[headerName]) {
+					this.append(headerName, value);
+				}
+			}
+
+			return;
+		}
+
+		// We don't worry about converting prop to ByteString here as append()
+		// will handle it.
+		if (init == null) ; else if (typeof init === 'object') {
+			const method = init[Symbol.iterator];
+			if (method != null) {
+				if (typeof method !== 'function') {
+					throw new TypeError('Header pairs must be iterable');
+				}
+
+				// sequence<sequence<ByteString>>
+				// Note: per spec we have to first exhaust the lists then process them
+				const pairs = [];
+				for (const pair of init) {
+					if (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {
+						throw new TypeError('Each header pair must be iterable');
+					}
+					pairs.push(Array.from(pair));
+				}
+
+				for (const pair of pairs) {
+					if (pair.length !== 2) {
+						throw new TypeError('Each header pair must be a name/value tuple');
+					}
+					this.append(pair[0], pair[1]);
+				}
+			} else {
+				// record<ByteString, ByteString>
+				for (const key of Object.keys(init)) {
+					const value = init[key];
+					this.append(key, value);
+				}
+			}
+		} else {
+			throw new TypeError('Provided initializer must be an object');
+		}
+	}
+
+	/**
+  * Return combined header value given name
+  *
+  * @param   String  name  Header name
+  * @return  Mixed
+  */
+	get(name) {
+		name = `${name}`;
+		validateName(name);
+		const key = find(this[MAP], name);
+		if (key === undefined) {
+			return null;
+		}
+
+		return this[MAP][key].join(', ');
+	}
+
+	/**
+  * Iterate over all headers
+  *
+  * @param   Function  callback  Executed for each item with parameters (value, name, thisArg)
+  * @param   Boolean   thisArg   `this` context for callback function
+  * @return  Void
+  */
+	forEach(callback) {
+		let thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
+
+		let pairs = getHeaders(this);
+		let i = 0;
+		while (i < pairs.length) {
+			var _pairs$i = pairs[i];
+			const name = _pairs$i[0],
+			      value = _pairs$i[1];
+
+			callback.call(thisArg, value, name, this);
+			pairs = getHeaders(this);
+			i++;
+		}
+	}
+
+	/**
+  * Overwrite header values given name
+  *
+  * @param   String  name   Header name
+  * @param   String  value  Header value
+  * @return  Void
+  */
+	set(name, value) {
+		name = `${name}`;
+		value = `${value}`;
+		validateName(name);
+		validateValue(value);
+		const key = find(this[MAP], name);
+		this[MAP][key !== undefined ? key : name] = [value];
+	}
+
+	/**
+  * Append a value onto existing header
+  *
+  * @param   String  name   Header name
+  * @param   String  value  Header value
+  * @return  Void
+  */
+	append(name, value) {
+		name = `${name}`;
+		value = `${value}`;
+		validateName(name);
+		validateValue(value);
+		const key = find(this[MAP], name);
+		if (key !== undefined) {
+			this[MAP][key].push(value);
+		} else {
+			this[MAP][name] = [value];
+		}
+	}
+
+	/**
+  * Check for header name existence
+  *
+  * @param   String   name  Header name
+  * @return  Boolean
+  */
+	has(name) {
+		name = `${name}`;
+		validateName(name);
+		return find(this[MAP], name) !== undefined;
+	}
+
+	/**
+  * Delete all header values given name
+  *
+  * @param   String  name  Header name
+  * @return  Void
+  */
+	delete(name) {
+		name = `${name}`;
+		validateName(name);
+		const key = find(this[MAP], name);
+		if (key !== undefined) {
+			delete this[MAP][key];
+		}
+	}
+
+	/**
+  * Return raw headers (non-spec api)
+  *
+  * @return  Object
+  */
+	raw() {
+		return this[MAP];
+	}
+
+	/**
+  * Get an iterator on keys.
+  *
+  * @return  Iterator
+  */
+	keys() {
+		return createHeadersIterator(this, 'key');
+	}
+
+	/**
+  * Get an iterator on values.
+  *
+  * @return  Iterator
+  */
+	values() {
+		return createHeadersIterator(this, 'value');
+	}
+
+	/**
+  * Get an iterator on entries.
+  *
+  * This is the default iterator of the Headers object.
+  *
+  * @return  Iterator
+  */
+	[Symbol.iterator]() {
+		return createHeadersIterator(this, 'key+value');
+	}
+}
+Headers.prototype.entries = Headers.prototype[Symbol.iterator];
+
+Object.defineProperty(Headers.prototype, Symbol.toStringTag, {
+	value: 'Headers',
+	writable: false,
+	enumerable: false,
+	configurable: true
+});
+
+Object.defineProperties(Headers.prototype, {
+	get: { enumerable: true },
+	forEach: { enumerable: true },
+	set: { enumerable: true },
+	append: { enumerable: true },
+	has: { enumerable: true },
+	delete: { enumerable: true },
+	keys: { enumerable: true },
+	values: { enumerable: true },
+	entries: { enumerable: true }
+});
+
+function getHeaders(headers) {
+	let kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';
+
+	const keys = Object.keys(headers[MAP]).sort();
+	return keys.map(kind === 'key' ? function (k) {
+		return k.toLowerCase();
+	} : kind === 'value' ? function (k) {
+		return headers[MAP][k].join(', ');
+	} : function (k) {
+		return [k.toLowerCase(), headers[MAP][k].join(', ')];
+	});
+}
+
+const INTERNAL = Symbol('internal');
+
+function createHeadersIterator(target, kind) {
+	const iterator = Object.create(HeadersIteratorPrototype);
+	iterator[INTERNAL] = {
+		target,
+		kind,
+		index: 0
+	};
+	return iterator;
+}
+
+const HeadersIteratorPrototype = Object.setPrototypeOf({
+	next() {
+		// istanbul ignore if
+		if (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {
+			throw new TypeError('Value of `this` is not a HeadersIterator');
+		}
+
+		var _INTERNAL = this[INTERNAL];
+		const target = _INTERNAL.target,
+		      kind = _INTERNAL.kind,
+		      index = _INTERNAL.index;
+
+		const values = getHeaders(target, kind);
+		const len = values.length;
+		if (index >= len) {
+			return {
+				value: undefined,
+				done: true
+			};
+		}
+
+		this[INTERNAL].index = index + 1;
+
+		return {
+			value: values[index],
+			done: false
+		};
+	}
+}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));
+
+Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {
+	value: 'HeadersIterator',
+	writable: false,
+	enumerable: false,
+	configurable: true
+});
+
+/**
+ * Export the Headers object in a form that Node.js can consume.
+ *
+ * @param   Headers  headers
+ * @return  Object
+ */
+function exportNodeCompatibleHeaders(headers) {
+	const obj = Object.assign({ __proto__: null }, headers[MAP]);
+
+	// http.request() only supports string as Host header. This hack makes
+	// specifying custom Host header possible.
+	const hostHeaderKey = find(headers[MAP], 'Host');
+	if (hostHeaderKey !== undefined) {
+		obj[hostHeaderKey] = obj[hostHeaderKey][0];
+	}
+
+	return obj;
+}
+
+/**
+ * Create a Headers object from an object of headers, ignoring those that do
+ * not conform to HTTP grammar productions.
+ *
+ * @param   Object  obj  Object of headers
+ * @return  Headers
+ */
+function createHeadersLenient(obj) {
+	const headers = new Headers();
+	for (const name of Object.keys(obj)) {
+		if (invalidTokenRegex.test(name)) {
+			continue;
+		}
+		if (Array.isArray(obj[name])) {
+			for (const val of obj[name]) {
+				if (invalidHeaderCharRegex.test(val)) {
+					continue;
+				}
+				if (headers[MAP][name] === undefined) {
+					headers[MAP][name] = [val];
+				} else {
+					headers[MAP][name].push(val);
+				}
+			}
+		} else if (!invalidHeaderCharRegex.test(obj[name])) {
+			headers[MAP][name] = [obj[name]];
+		}
+	}
+	return headers;
+}
+
+const INTERNALS$1 = Symbol('Response internals');
+
+// fix an issue where "STATUS_CODES" aren't a named export for node <10
+const STATUS_CODES = http.STATUS_CODES;
+
+/**
+ * Response class
+ *
+ * @param   Stream  body  Readable stream
+ * @param   Object  opts  Response options
+ * @return  Void
+ */
+class Response {
+	constructor() {
+		let body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
+		let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+		Body.call(this, body, opts);
+
+		const status = opts.status || 200;
+		const headers = new Headers(opts.headers);
+
+		if (body != null && !headers.has('Content-Type')) {
+			const contentType = extractContentType(body);
+			if (contentType) {
+				headers.append('Content-Type', contentType);
+			}
+		}
+
+		this[INTERNALS$1] = {
+			url: opts.url,
+			status,
+			statusText: opts.statusText || STATUS_CODES[status],
+			headers,
+			counter: opts.counter
+		};
+	}
+
+	get url() {
+		return this[INTERNALS$1].url || '';
+	}
+
+	get status() {
+		return this[INTERNALS$1].status;
+	}
+
+	/**
+  * Convenience property representing if the request ended normally
+  */
+	get ok() {
+		return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;
+	}
+
+	get redirected() {
+		return this[INTERNALS$1].counter > 0;
+	}
+
+	get statusText() {
+		return this[INTERNALS$1].statusText;
+	}
+
+	get headers() {
+		return this[INTERNALS$1].headers;
+	}
+
+	/**
+  * Clone this response
+  *
+  * @return  Response
+  */
+	clone() {
+		return new Response(clone(this), {
+			url: this.url,
+			status: this.status,
+			statusText: this.statusText,
+			headers: this.headers,
+			ok: this.ok,
+			redirected: this.redirected
+		});
+	}
+}
+
+Body.mixIn(Response.prototype);
+
+Object.defineProperties(Response.prototype, {
+	url: { enumerable: true },
+	status: { enumerable: true },
+	ok: { enumerable: true },
+	redirected: { enumerable: true },
+	statusText: { enumerable: true },
+	headers: { enumerable: true },
+	clone: { enumerable: true }
+});
+
+Object.defineProperty(Response.prototype, Symbol.toStringTag, {
+	value: 'Response',
+	writable: false,
+	enumerable: false,
+	configurable: true
+});
+
+const INTERNALS$2 = Symbol('Request internals');
+
+// fix an issue where "format", "parse" aren't a named export for node <10
+const parse_url = Url.parse;
+const format_url = Url.format;
+
+const streamDestructionSupported = 'destroy' in Stream.Readable.prototype;
+
+/**
+ * Check if a value is an instance of Request.
+ *
+ * @param   Mixed   input
+ * @return  Boolean
+ */
+function isRequest(input) {
+	return typeof input === 'object' && typeof input[INTERNALS$2] === 'object';
+}
+
+function isAbortSignal(signal) {
+	const proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);
+	return !!(proto && proto.constructor.name === 'AbortSignal');
+}
+
+/**
+ * Request class
+ *
+ * @param   Mixed   input  Url or Request instance
+ * @param   Object  init   Custom options
+ * @return  Void
+ */
+class Request {
+	constructor(input) {
+		let init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+		let parsedURL;
+
+		// normalize input
+		if (!isRequest(input)) {
+			if (input && input.href) {
+				// in order to support Node.js' Url objects; though WHATWG's URL objects
+				// will fall into this branch also (since their `toString()` will return
+				// `href` property anyway)
+				parsedURL = parse_url(input.href);
+			} else {
+				// coerce input to a string before attempting to parse
+				parsedURL = parse_url(`${input}`);
+			}
+			input = {};
+		} else {
+			parsedURL = parse_url(input.url);
+		}
+
+		let method = init.method || input.method || 'GET';
+		method = method.toUpperCase();
+
+		if ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {
+			throw new TypeError('Request with GET/HEAD method cannot have body');
+		}
+
+		let inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;
+
+		Body.call(this, inputBody, {
+			timeout: init.timeout || input.timeout || 0,
+			size: init.size || input.size || 0
+		});
+
+		const headers = new Headers(init.headers || input.headers || {});
+
+		if (inputBody != null && !headers.has('Content-Type')) {
+			const contentType = extractContentType(inputBody);
+			if (contentType) {
+				headers.append('Content-Type', contentType);
+			}
+		}
+
+		let signal = isRequest(input) ? input.signal : null;
+		if ('signal' in init) signal = init.signal;
+
+		if (signal != null && !isAbortSignal(signal)) {
+			throw new TypeError('Expected signal to be an instanceof AbortSignal');
+		}
+
+		this[INTERNALS$2] = {
+			method,
+			redirect: init.redirect || input.redirect || 'follow',
+			headers,
+			parsedURL,
+			signal
+		};
+
+		// node-fetch-only options
+		this.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;
+		this.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;
+		this.counter = init.counter || input.counter || 0;
+		this.agent = init.agent || input.agent;
+	}
+
+	get method() {
+		return this[INTERNALS$2].method;
+	}
+
+	get url() {
+		return format_url(this[INTERNALS$2].parsedURL);
+	}
+
+	get headers() {
+		return this[INTERNALS$2].headers;
+	}
+
+	get redirect() {
+		return this[INTERNALS$2].redirect;
+	}
+
+	get signal() {
+		return this[INTERNALS$2].signal;
+	}
+
+	/**
+  * Clone this request
+  *
+  * @return  Request
+  */
+	clone() {
+		return new Request(this);
+	}
+}
+
+Body.mixIn(Request.prototype);
+
+Object.defineProperty(Request.prototype, Symbol.toStringTag, {
+	value: 'Request',
+	writable: false,
+	enumerable: false,
+	configurable: true
+});
+
+Object.defineProperties(Request.prototype, {
+	method: { enumerable: true },
+	url: { enumerable: true },
+	headers: { enumerable: true },
+	redirect: { enumerable: true },
+	clone: { enumerable: true },
+	signal: { enumerable: true }
+});
+
+/**
+ * Convert a Request to Node.js http request options.
+ *
+ * @param   Request  A Request instance
+ * @return  Object   The options object to be passed to http.request
+ */
+function getNodeRequestOptions(request) {
+	const parsedURL = request[INTERNALS$2].parsedURL;
+	const headers = new Headers(request[INTERNALS$2].headers);
+
+	// fetch step 1.3
+	if (!headers.has('Accept')) {
+		headers.set('Accept', '*/*');
+	}
+
+	// Basic fetch
+	if (!parsedURL.protocol || !parsedURL.hostname) {
+		throw new TypeError('Only absolute URLs are supported');
+	}
+
+	if (!/^https?:$/.test(parsedURL.protocol)) {
+		throw new TypeError('Only HTTP(S) protocols are supported');
+	}
+
+	if (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {
+		throw new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');
+	}
+
+	// HTTP-network-or-cache fetch steps 2.4-2.7
+	let contentLengthValue = null;
+	if (request.body == null && /^(POST|PUT)$/i.test(request.method)) {
+		contentLengthValue = '0';
+	}
+	if (request.body != null) {
+		const totalBytes = getTotalBytes(request);
+		if (typeof totalBytes === 'number') {
+			contentLengthValue = String(totalBytes);
+		}
+	}
+	if (contentLengthValue) {
+		headers.set('Content-Length', contentLengthValue);
+	}
+
+	// HTTP-network-or-cache fetch step 2.11
+	if (!headers.has('User-Agent')) {
+		headers.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');
+	}
+
+	// HTTP-network-or-cache fetch step 2.15
+	if (request.compress && !headers.has('Accept-Encoding')) {
+		headers.set('Accept-Encoding', 'gzip,deflate');
+	}
+
+	let agent = request.agent;
+	if (typeof agent === 'function') {
+		agent = agent(parsedURL);
+	}
+
+	if (!headers.has('Connection') && !agent) {
+		headers.set('Connection', 'close');
+	}
+
+	// HTTP-network fetch step 4.2
+	// chunked encoding is handled by Node.js
+
+	return Object.assign({}, parsedURL, {
+		method: request.method,
+		headers: exportNodeCompatibleHeaders(headers),
+		agent
+	});
+}
+
+/**
+ * abort-error.js
+ *
+ * AbortError interface for cancelled requests
+ */
+
+/**
+ * Create AbortError instance
+ *
+ * @param   String      message      Error message for human
+ * @return  AbortError
+ */
+function AbortError(message) {
+  Error.call(this, message);
+
+  this.type = 'aborted';
+  this.message = message;
+
+  // hide custom error implementation details from end-users
+  Error.captureStackTrace(this, this.constructor);
+}
+
+AbortError.prototype = Object.create(Error.prototype);
+AbortError.prototype.constructor = AbortError;
+AbortError.prototype.name = 'AbortError';
+
+// fix an issue where "PassThrough", "resolve" aren't a named export for node <10
+const PassThrough$1 = Stream.PassThrough;
+const resolve_url = Url.resolve;
+
+/**
+ * Fetch function
+ *
+ * @param   Mixed    url   Absolute url or Request instance
+ * @param   Object   opts  Fetch options
+ * @return  Promise
+ */
+function fetch(url, opts) {
+
+	// allow custom promise
+	if (!fetch.Promise) {
+		throw new Error('native promise missing, set fetch.Promise to your favorite alternative');
+	}
+
+	Body.Promise = fetch.Promise;
+
+	// wrap http.request into fetch
+	return new fetch.Promise(function (resolve, reject) {
+		// build request object
+		const request = new Request(url, opts);
+		const options = getNodeRequestOptions(request);
+
+		const send = (options.protocol === 'https:' ? https : http).request;
+		const signal = request.signal;
+
+		let response = null;
+
+		const abort = function abort() {
+			let error = new AbortError('The user aborted a request.');
+			reject(error);
+			if (request.body && request.body instanceof Stream.Readable) {
+				request.body.destroy(error);
+			}
+			if (!response || !response.body) return;
+			response.body.emit('error', error);
+		};
+
+		if (signal && signal.aborted) {
+			abort();
+			return;
+		}
+
+		const abortAndFinalize = function abortAndFinalize() {
+			abort();
+			finalize();
+		};
+
+		// send request
+		const req = send(options);
+		let reqTimeout;
+
+		if (signal) {
+			signal.addEventListener('abort', abortAndFinalize);
+		}
+
+		function finalize() {
+			req.abort();
+			if (signal) signal.removeEventListener('abort', abortAndFinalize);
+			clearTimeout(reqTimeout);
+		}
+
+		if (request.timeout) {
+			req.once('socket', function (socket) {
+				reqTimeout = setTimeout(function () {
+					reject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));
+					finalize();
+				}, request.timeout);
+			});
+		}
+
+		req.on('error', function (err) {
+			reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));
+			finalize();
+		});
+
+		req.on('response', function (res) {
+			clearTimeout(reqTimeout);
+
+			const headers = createHeadersLenient(res.headers);
+
+			// HTTP fetch step 5
+			if (fetch.isRedirect(res.statusCode)) {
+				// HTTP fetch step 5.2
+				const location = headers.get('Location');
+
+				// HTTP fetch step 5.3
+				const locationURL = location === null ? null : resolve_url(request.url, location);
+
+				// HTTP fetch step 5.5
+				switch (request.redirect) {
+					case 'error':
+						reject(new FetchError(`redirect mode is set to error: ${request.url}`, 'no-redirect'));
+						finalize();
+						return;
+					case 'manual':
+						// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.
+						if (locationURL !== null) {
+							// handle corrupted header
+							try {
+								headers.set('Location', locationURL);
+							} catch (err) {
+								// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request
+								reject(err);
+							}
+						}
+						break;
+					case 'follow':
+						// HTTP-redirect fetch step 2
+						if (locationURL === null) {
+							break;
+						}
+
+						// HTTP-redirect fetch step 5
+						if (request.counter >= request.follow) {
+							reject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));
+							finalize();
+							return;
+						}
+
+						// HTTP-redirect fetch step 6 (counter increment)
+						// Create a new Request object.
+						const requestOpts = {
+							headers: new Headers(request.headers),
+							follow: request.follow,
+							counter: request.counter + 1,
+							agent: request.agent,
+							compress: request.compress,
+							method: request.method,
+							body: request.body,
+							signal: request.signal,
+							timeout: request.timeout
+						};
+
+						// HTTP-redirect fetch step 9
+						if (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {
+							reject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));
+							finalize();
+							return;
+						}
+
+						// HTTP-redirect fetch step 11
+						if (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {
+							requestOpts.method = 'GET';
+							requestOpts.body = undefined;
+							requestOpts.headers.delete('content-length');
+						}
+
+						// HTTP-redirect fetch step 15
+						resolve(fetch(new Request(locationURL, requestOpts)));
+						finalize();
+						return;
+				}
+			}
+
+			// prepare response
+			res.once('end', function () {
+				if (signal) signal.removeEventListener('abort', abortAndFinalize);
+			});
+			let body = res.pipe(new PassThrough$1());
+
+			const response_options = {
+				url: request.url,
+				status: res.statusCode,
+				statusText: res.statusMessage,
+				headers: headers,
+				size: request.size,
+				timeout: request.timeout,
+				counter: request.counter
+			};
+
+			// HTTP-network fetch step 12.1.1.3
+			const codings = headers.get('Content-Encoding');
+
+			// HTTP-network fetch step 12.1.1.4: handle content codings
+
+			// in following scenarios we ignore compression support
+			// 1. compression support is disabled
+			// 2. HEAD request
+			// 3. no Content-Encoding header
+			// 4. no content response (204)
+			// 5. content not modified response (304)
+			if (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {
+				response = new Response(body, response_options);
+				resolve(response);
+				return;
+			}
+
+			// For Node v6+
+			// Be less strict when decoding compressed responses, since sometimes
+			// servers send slightly invalid responses that are still accepted
+			// by common browsers.
+			// Always using Z_SYNC_FLUSH is what cURL does.
+			const zlibOptions = {
+				flush: zlib.Z_SYNC_FLUSH,
+				finishFlush: zlib.Z_SYNC_FLUSH
+			};
+
+			// for gzip
+			if (codings == 'gzip' || codings == 'x-gzip') {
+				body = body.pipe(zlib.createGunzip(zlibOptions));
+				response = new Response(body, response_options);
+				resolve(response);
+				return;
+			}
+
+			// for deflate
+			if (codings == 'deflate' || codings == 'x-deflate') {
+				// handle the infamous raw deflate response from old servers
+				// a hack for old IIS and Apache servers
+				const raw = res.pipe(new PassThrough$1());
+				raw.once('data', function (chunk) {
+					// see http://stackoverflow.com/questions/37519828
+					if ((chunk[0] & 0x0F) === 0x08) {
+						body = body.pipe(zlib.createInflate());
+					} else {
+						body = body.pipe(zlib.createInflateRaw());
+					}
+					response = new Response(body, response_options);
+					resolve(response);
+				});
+				return;
+			}
+
+			// for br
+			if (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {
+				body = body.pipe(zlib.createBrotliDecompress());
+				response = new Response(body, response_options);
+				resolve(response);
+				return;
+			}
+
+			// otherwise, use response as-is
+			response = new Response(body, response_options);
+			resolve(response);
+		});
+
+		writeToStream(req, request);
+	});
+}
+/**
+ * Redirect code matching
+ *
+ * @param   Number   code  Status code
+ * @return  Boolean
+ */
+fetch.isRedirect = function (code) {
+	return code === 301 || code === 302 || code === 303 || code === 307 || code === 308;
+};
+
+// expose Promise
+fetch.Promise = global.Promise;
+
+export default fetch;
+export { Headers, Request, Response, FetchError };
diff --git a/setup-maven/node_modules/node-fetch/package.json b/setup-maven/node_modules/node-fetch/package.json
new file mode 100644
index 0000000..e573fdc
--- /dev/null
+++ b/setup-maven/node_modules/node-fetch/package.json
@@ -0,0 +1,93 @@
+{
+  "_from": "node-fetch@^2.3.0",
+  "_id": "node-fetch@2.6.0",
+  "_inBundle": false,
+  "_integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==",
+  "_location": "/node-fetch",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "node-fetch@^2.3.0",
+    "name": "node-fetch",
+    "escapedName": "node-fetch",
+    "rawSpec": "^2.3.0",
+    "saveSpec": null,
+    "fetchSpec": "^2.3.0"
+  },
+  "_requiredBy": [
+    "/@octokit/request"
+  ],
+  "_resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
+  "_shasum": "e633456386d4aa55863f676a7ab0daa8fdecb0fd",
+  "_spec": "node-fetch@^2.3.0",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/@octokit/request",
+  "author": {
+    "name": "David Frank"
+  },
+  "browser": "./browser.js",
+  "bugs": {
+    "url": "https://github.com/bitinn/node-fetch/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {},
+  "deprecated": false,
+  "description": "A light-weight module that brings window.fetch to node.js",
+  "devDependencies": {
+    "@ungap/url-search-params": "^0.1.2",
+    "abort-controller": "^1.1.0",
+    "abortcontroller-polyfill": "^1.3.0",
+    "babel-core": "^6.26.3",
+    "babel-plugin-istanbul": "^4.1.6",
+    "babel-preset-env": "^1.6.1",
+    "babel-register": "^6.16.3",
+    "chai": "^3.5.0",
+    "chai-as-promised": "^7.1.1",
+    "chai-iterator": "^1.1.1",
+    "chai-string": "~1.3.0",
+    "codecov": "^3.3.0",
+    "cross-env": "^5.2.0",
+    "form-data": "^2.3.3",
+    "is-builtin-module": "^1.0.0",
+    "mocha": "^5.0.0",
+    "nyc": "11.9.0",
+    "parted": "^0.1.1",
+    "promise": "^8.0.3",
+    "resumer": "0.0.0",
+    "rollup": "^0.63.4",
+    "rollup-plugin-babel": "^3.0.7",
+    "string-to-arraybuffer": "^1.0.2",
+    "whatwg-url": "^5.0.0"
+  },
+  "engines": {
+    "node": "4.x || >=6.0.0"
+  },
+  "files": [
+    "lib/index.js",
+    "lib/index.mjs",
+    "lib/index.es.js",
+    "browser.js"
+  ],
+  "homepage": "https://github.com/bitinn/node-fetch",
+  "keywords": [
+    "fetch",
+    "http",
+    "promise"
+  ],
+  "license": "MIT",
+  "main": "lib/index",
+  "module": "lib/index.mjs",
+  "name": "node-fetch",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/bitinn/node-fetch.git"
+  },
+  "scripts": {
+    "build": "cross-env BABEL_ENV=rollup rollup -c",
+    "coverage": "cross-env BABEL_ENV=coverage nyc --reporter json --reporter text mocha -R spec test/test.js && codecov -f coverage/coverage-final.json",
+    "prepare": "npm run build",
+    "report": "cross-env BABEL_ENV=coverage nyc --reporter lcov --reporter text mocha -R spec test/test.js",
+    "test": "cross-env BABEL_ENV=test mocha --require babel-register --throw-deprecation test/test.js"
+  },
+  "version": "2.6.0"
+}
diff --git a/setup-maven/node_modules/npm-run-path/index.js b/setup-maven/node_modules/npm-run-path/index.js
new file mode 100644
index 0000000..56f31e4
--- /dev/null
+++ b/setup-maven/node_modules/npm-run-path/index.js
@@ -0,0 +1,39 @@
+'use strict';
+const path = require('path');
+const pathKey = require('path-key');
+
+module.exports = opts => {
+	opts = Object.assign({
+		cwd: process.cwd(),
+		path: process.env[pathKey()]
+	}, opts);
+
+	let prev;
+	let pth = path.resolve(opts.cwd);
+	const ret = [];
+
+	while (prev !== pth) {
+		ret.push(path.join(pth, 'node_modules/.bin'));
+		prev = pth;
+		pth = path.resolve(pth, '..');
+	}
+
+	// ensure the running `node` binary is used
+	ret.push(path.dirname(process.execPath));
+
+	return ret.concat(opts.path).join(path.delimiter);
+};
+
+module.exports.env = opts => {
+	opts = Object.assign({
+		env: process.env
+	}, opts);
+
+	const env = Object.assign({}, opts.env);
+	const path = pathKey({env});
+
+	opts.path = env[path];
+	env[path] = module.exports(opts);
+
+	return env;
+};
diff --git a/setup-maven/node_modules/npm-run-path/license b/setup-maven/node_modules/npm-run-path/license
new file mode 100644
index 0000000..654d0bf
--- /dev/null
+++ b/setup-maven/node_modules/npm-run-path/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/setup-maven/node_modules/npm-run-path/package.json b/setup-maven/node_modules/npm-run-path/package.json
new file mode 100644
index 0000000..0d64a95
--- /dev/null
+++ b/setup-maven/node_modules/npm-run-path/package.json
@@ -0,0 +1,77 @@
+{
+  "_from": "npm-run-path@^2.0.0",
+  "_id": "npm-run-path@2.0.2",
+  "_inBundle": false,
+  "_integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+  "_location": "/npm-run-path",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "npm-run-path@^2.0.0",
+    "name": "npm-run-path",
+    "escapedName": "npm-run-path",
+    "rawSpec": "^2.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^2.0.0"
+  },
+  "_requiredBy": [
+    "/execa"
+  ],
+  "_resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+  "_shasum": "35a9232dfa35d7067b4cb2ddf2357b1871536c5f",
+  "_spec": "npm-run-path@^2.0.0",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/execa",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/npm-run-path/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "path-key": "^2.0.0"
+  },
+  "deprecated": false,
+  "description": "Get your PATH prepended with locally installed binaries",
+  "devDependencies": {
+    "ava": "*",
+    "xo": "*"
+  },
+  "engines": {
+    "node": ">=4"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/sindresorhus/npm-run-path#readme",
+  "keywords": [
+    "npm",
+    "run",
+    "path",
+    "package",
+    "bin",
+    "binary",
+    "binaries",
+    "script",
+    "cli",
+    "command-line",
+    "execute",
+    "executable"
+  ],
+  "license": "MIT",
+  "name": "npm-run-path",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/npm-run-path.git"
+  },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "2.0.2",
+  "xo": {
+    "esnext": true
+  }
+}
diff --git a/setup-maven/node_modules/npm-run-path/readme.md b/setup-maven/node_modules/npm-run-path/readme.md
new file mode 100644
index 0000000..4ff4722
--- /dev/null
+++ b/setup-maven/node_modules/npm-run-path/readme.md
@@ -0,0 +1,81 @@
+# npm-run-path [![Build Status](https://travis-ci.org/sindresorhus/npm-run-path.svg?branch=master)](https://travis-ci.org/sindresorhus/npm-run-path)
+
+> Get your [PATH](https://en.wikipedia.org/wiki/PATH_(variable)) prepended with locally installed binaries
+
+In [npm run scripts](https://docs.npmjs.com/cli/run-script) you can execute locally installed binaries by name. This enables the same outside npm.
+
+
+## Install
+
+```
+$ npm install --save npm-run-path
+```
+
+
+## Usage
+
+```js
+const childProcess = require('child_process');
+const npmRunPath = require('npm-run-path');
+
+console.log(process.env.PATH);
+//=> '/usr/local/bin'
+
+console.log(npmRunPath());
+//=> '/Users/sindresorhus/dev/foo/node_modules/.bin:/Users/sindresorhus/dev/node_modules/.bin:/Users/sindresorhus/node_modules/.bin:/Users/node_modules/.bin:/node_modules/.bin:/usr/local/bin'
+
+// `foo` is a locally installed binary
+childProcess.execFileSync('foo', {
+	env: npmRunPath.env()
+});
+```
+
+
+## API
+
+### npmRunPath([options])
+
+#### options
+
+##### cwd
+
+Type: `string`<br>
+Default: `process.cwd()`
+
+Working directory.
+
+##### path
+
+Type: `string`<br>
+Default: [`PATH`](https://github.com/sindresorhus/path-key)
+
+PATH to be appended.<br>
+Set it to an empty string to exclude the default PATH.
+
+### npmRunPath.env([options])
+
+#### options
+
+##### cwd
+
+Type: `string`<br>
+Default: `process.cwd()`
+
+Working directory.
+
+##### env
+
+Type: `Object`
+
+Accepts an object of environment variables, like `process.env`, and modifies the PATH using the correct [PATH key](https://github.com/sindresorhus/path-key). Use this if you're modifying the PATH for use in the `child_process` options.
+
+
+## Related
+
+- [npm-run-path-cli](https://github.com/sindresorhus/npm-run-path-cli) - CLI for this module
+- [execa](https://github.com/sindresorhus/execa) - Execute a locally installed binary
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/setup-maven/node_modules/octokit-pagination-methods/.travis.yml b/setup-maven/node_modules/octokit-pagination-methods/.travis.yml
new file mode 100644
index 0000000..7241e46
--- /dev/null
+++ b/setup-maven/node_modules/octokit-pagination-methods/.travis.yml
@@ -0,0 +1,36 @@
+language: node_js
+cache:
+  directories:
+    - ~/.npm
+
+# Trigger a push build on master and greenkeeper branches + PRs build on every branches
+# Avoid double build on PRs (See https://github.com/travis-ci/travis-ci/issues/1147)
+branches:
+  only:
+    - master
+    - /^greenkeeper.*$/
+
+branches:
+  except:
+    - /^v\d+\.\d+\.\d+$/
+
+jobs:
+  include:
+    - stage: test
+      node_js: 6
+    - node_js: 8
+      install: npm ci
+    - node_js: 10
+      install: npm ci
+    - node_js: lts/*
+      script: npm run coverage:upload
+    - stage: release
+      env: semantic-release
+      node_js: lts/*
+      install: npm ci
+      script: npm run semantic-release
+
+stages:
+  - test
+  - name: release
+    if: branch = master AND type IN (push)
diff --git a/setup-maven/node_modules/octokit-pagination-methods/CODE_OF_CONDUCT.md b/setup-maven/node_modules/octokit-pagination-methods/CODE_OF_CONDUCT.md
new file mode 100644
index 0000000..8124607
--- /dev/null
+++ b/setup-maven/node_modules/octokit-pagination-methods/CODE_OF_CONDUCT.md
@@ -0,0 +1,46 @@
+# Contributor Covenant Code of Conduct
+
+## Our Pledge
+
+In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
+
+## Our Standards
+
+Examples of behavior that contributes to creating a positive environment include:
+
+* Using welcoming and inclusive language
+* Being respectful of differing viewpoints and experiences
+* Gracefully accepting constructive criticism
+* Focusing on what is best for the community
+* Showing empathy towards other community members
+
+Examples of unacceptable behavior by participants include:
+
+* The use of sexualized language or imagery and unwelcome sexual attention or advances
+* Trolling, insulting/derogatory comments, and personal or political attacks
+* Public or private harassment
+* Publishing others' private information, such as a physical or electronic address, without explicit permission
+* Other conduct which could reasonably be considered inappropriate in a professional setting
+
+## Our Responsibilities
+
+Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
+
+Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
+
+## Scope
+
+This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at opensource+octokit@github.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
+
+Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
+
+## Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
+
+[homepage]: http://contributor-covenant.org
+[version]: http://contributor-covenant.org/version/1/4/
diff --git a/setup-maven/node_modules/octokit-pagination-methods/LICENSE b/setup-maven/node_modules/octokit-pagination-methods/LICENSE
new file mode 100644
index 0000000..4c0d268
--- /dev/null
+++ b/setup-maven/node_modules/octokit-pagination-methods/LICENSE
@@ -0,0 +1,22 @@
+The MIT License
+
+Copyright (c) 2012 Cloud9 IDE, Inc. (Mike de Boer)
+Copyright (c) 2017-2018 Octokit contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/setup-maven/node_modules/octokit-pagination-methods/README.md b/setup-maven/node_modules/octokit-pagination-methods/README.md
new file mode 100644
index 0000000..0dd6341
--- /dev/null
+++ b/setup-maven/node_modules/octokit-pagination-methods/README.md
@@ -0,0 +1,42 @@
+# octokit-pagination-methods
+
+> Legacy Octokit pagination methods from v15
+
+[![Build Status](https://travis-ci.com/gr2m/octokit-pagination-methods.svg?branch=master)](https://travis-ci.com/gr2m/octokit-pagination-methods)
+[![Coverage Status](https://coveralls.io/repos/gr2m/octokit-pagination-methods/badge.svg?branch=master)](https://coveralls.io/github/gr2m/octokit-pagination-methods?branch=master)
+[![Greenkeeper badge](https://badges.greenkeeper.io/gr2m/octokit-pagination-methods.svg)](https://greenkeeper.io/)
+
+Several pagination methods such as `octokit.hasNextPage()` and `octokit.getNextPage()` have been removed from `@octokit/request` in v16.0.0 in favor of `octokit.paginate()`. This plugin brings back the methods to ease the upgrade to v16.
+
+## Usage
+
+```js
+const Octokit = require('@octokit/rest')
+  .plugin('octokit-pagination-methods')
+const octokit = new Octokit()
+
+octokit.issues.getForRepo()
+
+  .then(async response => {
+    // returns true/false
+    octokit.hasNextPage(response)
+    octokit.hasPreviousPage(response)
+    octokit.hasFirstPage(response)
+    octokit.hasLastPage(response)
+
+    // fetch other pages
+    const nextPage = await octokit.getNextPage(response)
+    const previousPage = await octokit.getPreviousPage(response)
+    const firstPage = await octokit.getFirstPage(response)
+    const lastPage = await octokit.getLastPage(response)
+  })
+```
+
+## Credit
+
+These methods have originally been created for `node-github` by [@mikedeboer](https://github.com/mikedeboer)
+while working at Cloud9 IDE, Inc. It was adopted and renamed by GitHub in 2017.
+
+## LICENSE
+
+[MIT](LICENSE)
diff --git a/setup-maven/node_modules/octokit-pagination-methods/index.js b/setup-maven/node_modules/octokit-pagination-methods/index.js
new file mode 100644
index 0000000..f7474a7
--- /dev/null
+++ b/setup-maven/node_modules/octokit-pagination-methods/index.js
@@ -0,0 +1,12 @@
+module.exports = paginationMethodsPlugin
+
+function paginationMethodsPlugin (octokit) {
+  octokit.getFirstPage = require('./lib/get-first-page').bind(null, octokit)
+  octokit.getLastPage = require('./lib/get-last-page').bind(null, octokit)
+  octokit.getNextPage = require('./lib/get-next-page').bind(null, octokit)
+  octokit.getPreviousPage = require('./lib/get-previous-page').bind(null, octokit)
+  octokit.hasFirstPage = require('./lib/has-first-page')
+  octokit.hasLastPage = require('./lib/has-last-page')
+  octokit.hasNextPage = require('./lib/has-next-page')
+  octokit.hasPreviousPage = require('./lib/has-previous-page')
+}
diff --git a/setup-maven/node_modules/octokit-pagination-methods/lib/deprecate.js b/setup-maven/node_modules/octokit-pagination-methods/lib/deprecate.js
new file mode 100644
index 0000000..c56f7ab
--- /dev/null
+++ b/setup-maven/node_modules/octokit-pagination-methods/lib/deprecate.js
@@ -0,0 +1,12 @@
+module.exports = deprecate
+
+const loggedMessages = {}
+
+function deprecate (message) {
+  if (loggedMessages[message]) {
+    return
+  }
+
+  console.warn(`DEPRECATED (@octokit/rest): ${message}`)
+  loggedMessages[message] = 1
+}
diff --git a/setup-maven/node_modules/octokit-pagination-methods/lib/get-first-page.js b/setup-maven/node_modules/octokit-pagination-methods/lib/get-first-page.js
new file mode 100644
index 0000000..5f2dff9
--- /dev/null
+++ b/setup-maven/node_modules/octokit-pagination-methods/lib/get-first-page.js
@@ -0,0 +1,7 @@
+module.exports = getFirstPage
+
+const getPage = require('./get-page')
+
+function getFirstPage (octokit, link, headers) {
+  return getPage(octokit, link, 'first', headers)
+}
diff --git a/setup-maven/node_modules/octokit-pagination-methods/lib/get-last-page.js b/setup-maven/node_modules/octokit-pagination-methods/lib/get-last-page.js
new file mode 100644
index 0000000..9f86246
--- /dev/null
+++ b/setup-maven/node_modules/octokit-pagination-methods/lib/get-last-page.js
@@ -0,0 +1,7 @@
+module.exports = getLastPage
+
+const getPage = require('./get-page')
+
+function getLastPage (octokit, link, headers) {
+  return getPage(octokit, link, 'last', headers)
+}
diff --git a/setup-maven/node_modules/octokit-pagination-methods/lib/get-next-page.js b/setup-maven/node_modules/octokit-pagination-methods/lib/get-next-page.js
new file mode 100644
index 0000000..fbd5e94
--- /dev/null
+++ b/setup-maven/node_modules/octokit-pagination-methods/lib/get-next-page.js
@@ -0,0 +1,7 @@
+module.exports = getNextPage
+
+const getPage = require('./get-page')
+
+function getNextPage (octokit, link, headers) {
+  return getPage(octokit, link, 'next', headers)
+}
diff --git a/setup-maven/node_modules/octokit-pagination-methods/lib/get-page-links.js b/setup-maven/node_modules/octokit-pagination-methods/lib/get-page-links.js
new file mode 100644
index 0000000..585eadb
--- /dev/null
+++ b/setup-maven/node_modules/octokit-pagination-methods/lib/get-page-links.js
@@ -0,0 +1,15 @@
+module.exports = getPageLinks
+
+function getPageLinks (link) {
+  link = link.link || link.headers.link || ''
+
+  const links = {}
+
+  // link format:
+  // '<https://api.github.com/users/aseemk/followers?page=2>; rel="next", <https://api.github.com/users/aseemk/followers?page=2>; rel="last"'
+  link.replace(/<([^>]*)>;\s*rel="([\w]*)"/g, (m, uri, type) => {
+    links[type] = uri
+  })
+
+  return links
+}
diff --git a/setup-maven/node_modules/octokit-pagination-methods/lib/get-page.js b/setup-maven/node_modules/octokit-pagination-methods/lib/get-page.js
new file mode 100644
index 0000000..d60fe73
--- /dev/null
+++ b/setup-maven/node_modules/octokit-pagination-methods/lib/get-page.js
@@ -0,0 +1,38 @@
+module.exports = getPage
+
+const deprecate = require('./deprecate')
+const getPageLinks = require('./get-page-links')
+const HttpError = require('./http-error')
+
+function getPage (octokit, link, which, headers) {
+  deprecate(`octokit.get${which.charAt(0).toUpperCase() + which.slice(1)}Page() – You can use octokit.paginate or async iterators instead: https://github.com/octokit/rest.js#pagination.`)
+  const url = getPageLinks(link)[which]
+
+  if (!url) {
+    const urlError = new HttpError(`No ${which} page found`, 404)
+    return Promise.reject(urlError)
+  }
+
+  const requestOptions = {
+    url,
+    headers: applyAcceptHeader(link, headers)
+  }
+
+  const promise = octokit.request(requestOptions)
+
+  return promise
+}
+
+function applyAcceptHeader (res, headers) {
+  const previous = res.headers && res.headers['x-github-media-type']
+
+  if (!previous || (headers && headers.accept)) {
+    return headers
+  }
+  headers = headers || {}
+  headers.accept = 'application/vnd.' + previous
+    .replace('; param=', '.')
+    .replace('; format=', '+')
+
+  return headers
+}
diff --git a/setup-maven/node_modules/octokit-pagination-methods/lib/get-previous-page.js b/setup-maven/node_modules/octokit-pagination-methods/lib/get-previous-page.js
new file mode 100644
index 0000000..0477eeb
--- /dev/null
+++ b/setup-maven/node_modules/octokit-pagination-methods/lib/get-previous-page.js
@@ -0,0 +1,7 @@
+module.exports = getPreviousPage
+
+const getPage = require('./get-page')
+
+function getPreviousPage (octokit, link, headers) {
+  return getPage(octokit, link, 'prev', headers)
+}
diff --git a/setup-maven/node_modules/octokit-pagination-methods/lib/has-first-page.js b/setup-maven/node_modules/octokit-pagination-methods/lib/has-first-page.js
new file mode 100644
index 0000000..3814b1f
--- /dev/null
+++ b/setup-maven/node_modules/octokit-pagination-methods/lib/has-first-page.js
@@ -0,0 +1,9 @@
+module.exports = hasFirstPage
+
+const deprecate = require('./deprecate')
+const getPageLinks = require('./get-page-links')
+
+function hasFirstPage (link) {
+  deprecate(`octokit.hasFirstPage() – You can use octokit.paginate or async iterators instead: https://github.com/octokit/rest.js#pagination.`)
+  return getPageLinks(link).first
+}
diff --git a/setup-maven/node_modules/octokit-pagination-methods/lib/has-last-page.js b/setup-maven/node_modules/octokit-pagination-methods/lib/has-last-page.js
new file mode 100644
index 0000000..10c12e3
--- /dev/null
+++ b/setup-maven/node_modules/octokit-pagination-methods/lib/has-last-page.js
@@ -0,0 +1,9 @@
+module.exports = hasLastPage
+
+const deprecate = require('./deprecate')
+const getPageLinks = require('./get-page-links')
+
+function hasLastPage (link) {
+  deprecate(`octokit.hasLastPage() – You can use octokit.paginate or async iterators instead: https://github.com/octokit/rest.js#pagination.`)
+  return getPageLinks(link).last
+}
diff --git a/setup-maven/node_modules/octokit-pagination-methods/lib/has-next-page.js b/setup-maven/node_modules/octokit-pagination-methods/lib/has-next-page.js
new file mode 100644
index 0000000..1015ccd
--- /dev/null
+++ b/setup-maven/node_modules/octokit-pagination-methods/lib/has-next-page.js
@@ -0,0 +1,9 @@
+module.exports = hasNextPage
+
+const deprecate = require('./deprecate')
+const getPageLinks = require('./get-page-links')
+
+function hasNextPage (link) {
+  deprecate(`octokit.hasNextPage() – You can use octokit.paginate or async iterators instead: https://github.com/octokit/rest.js#pagination.`)
+  return getPageLinks(link).next
+}
diff --git a/setup-maven/node_modules/octokit-pagination-methods/lib/has-previous-page.js b/setup-maven/node_modules/octokit-pagination-methods/lib/has-previous-page.js
new file mode 100644
index 0000000..49e0926
--- /dev/null
+++ b/setup-maven/node_modules/octokit-pagination-methods/lib/has-previous-page.js
@@ -0,0 +1,9 @@
+module.exports = hasPreviousPage
+
+const deprecate = require('./deprecate')
+const getPageLinks = require('./get-page-links')
+
+function hasPreviousPage (link) {
+  deprecate(`octokit.hasPreviousPage() – You can use octokit.paginate or async iterators instead: https://github.com/octokit/rest.js#pagination.`)
+  return getPageLinks(link).prev
+}
diff --git a/setup-maven/node_modules/octokit-pagination-methods/lib/http-error.js b/setup-maven/node_modules/octokit-pagination-methods/lib/http-error.js
new file mode 100644
index 0000000..8eb9f2f
--- /dev/null
+++ b/setup-maven/node_modules/octokit-pagination-methods/lib/http-error.js
@@ -0,0 +1,15 @@
+module.exports = class HttpError extends Error {
+  constructor (message, code, headers) {
+    super(message)
+
+    // Maintains proper stack trace (only available on V8)
+    /* istanbul ignore next */
+    if (Error.captureStackTrace) {
+      Error.captureStackTrace(this, this.constructor)
+    }
+
+    this.name = 'HttpError'
+    this.code = code
+    this.headers = headers
+  }
+}
diff --git a/setup-maven/node_modules/octokit-pagination-methods/package.json b/setup-maven/node_modules/octokit-pagination-methods/package.json
new file mode 100644
index 0000000..ce81d5c
--- /dev/null
+++ b/setup-maven/node_modules/octokit-pagination-methods/package.json
@@ -0,0 +1,76 @@
+{
+  "_from": "octokit-pagination-methods@^1.1.0",
+  "_id": "octokit-pagination-methods@1.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==",
+  "_location": "/octokit-pagination-methods",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "octokit-pagination-methods@^1.1.0",
+    "name": "octokit-pagination-methods",
+    "escapedName": "octokit-pagination-methods",
+    "rawSpec": "^1.1.0",
+    "saveSpec": null,
+    "fetchSpec": "^1.1.0"
+  },
+  "_requiredBy": [
+    "/@octokit/rest"
+  ],
+  "_resolved": "https://registry.npmjs.org/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz",
+  "_shasum": "cf472edc9d551055f9ef73f6e42b4dbb4c80bea4",
+  "_spec": "octokit-pagination-methods@^1.1.0",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/@octokit/rest",
+  "author": {
+    "name": "Gregor Martynus",
+    "url": "https://github.com/gr2m"
+  },
+  "bugs": {
+    "url": "https://github.com/gr2m/octokit-pagination-methods/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {},
+  "deprecated": false,
+  "description": "Legacy Octokit pagination methods from v15",
+  "devDependencies": {
+    "@octokit/rest": "github:octokit/rest.js#next",
+    "coveralls": "^3.0.2",
+    "nock": "^10.0.2",
+    "semantic-release": "^15.10.8",
+    "simple-mock": "^0.8.0",
+    "standard": "^12.0.1",
+    "standard-markdown": "^5.0.1",
+    "tap": "^12.0.1"
+  },
+  "directories": {
+    "test": "test"
+  },
+  "homepage": "https://github.com/gr2m/octokit-pagination-methods#readme",
+  "keywords": [
+    "octokit",
+    "github",
+    "api",
+    "rest",
+    "plugin"
+  ],
+  "license": "MIT",
+  "main": "index.js",
+  "name": "octokit-pagination-methods",
+  "publishConfig": {
+    "access": "public",
+    "tag": "latest"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/gr2m/octokit-pagination-methods.git"
+  },
+  "scripts": {
+    "coverage": "tap --coverage-report=html",
+    "coverage:upload": "npm run test && tap --coverage-report=text-lcov | coveralls",
+    "pretest": "standard && standard-markdown *.md",
+    "semantic-release": "semantic-release",
+    "test": "tap --coverage test.js"
+  },
+  "version": "1.1.0"
+}
diff --git a/setup-maven/node_modules/octokit-pagination-methods/test.js b/setup-maven/node_modules/octokit-pagination-methods/test.js
new file mode 100644
index 0000000..d16f4a2
--- /dev/null
+++ b/setup-maven/node_modules/octokit-pagination-methods/test.js
@@ -0,0 +1,93 @@
+const test = require('tap').test
+const nock = require('nock')
+
+const Octokit = require('@octokit/rest')
+  .plugin(require('.'))
+
+test('@octokit/pagination-methods', (t) => {
+  nock('https://api.github.com', {
+    reqheaders: {
+      authorization: 'token secrettoken123'
+    }
+  })
+    .get('/organizations')
+    .query({ page: 3, per_page: 1 })
+    .reply(200, [{}], {
+      'Link': '<https://api.github.com/organizations?page=4&per_page=1>; rel="next", <https://api.github.com/organizations?page=1&per_page=1>; rel="first", <https://api.github.com/organizations?page=2&per_page=1>; rel="prev"',
+      'X-GitHub-Media-Type': 'octokit.v3; format=json'
+    })
+    .get('/organizations')
+    .query({ page: 1, per_page: 1 })
+    .reply(200, [{}])
+    .get('/organizations')
+    .query({ page: 2, per_page: 1 })
+    .reply(200, [{}])
+    .get('/organizations')
+    .query({ page: 4, per_page: 1 })
+    .reply(404, {})
+
+  const octokit = new Octokit()
+
+  octokit.authenticate({
+    type: 'token',
+    token: 'secrettoken123'
+  })
+
+  return octokit.orgs.getAll({
+    page: 3,
+    per_page: 1
+  })
+
+    .then((response) => {
+      t.ok(octokit.hasNextPage(response))
+      t.ok(octokit.hasPreviousPage(response))
+      t.ok(octokit.hasFirstPage(response))
+      t.notOk(octokit.hasLastPage(response))
+
+      const noop = () => {}
+
+      return Promise.all([
+        octokit.getFirstPage(response)
+          .then(response => {
+            t.doesNotThrow(() => {
+              octokit.hasPreviousPage(response)
+            })
+            t.notOk(octokit.hasPreviousPage(response))
+          }),
+        octokit.getPreviousPage(response, { foo: 'bar', accept: 'application/vnd.octokit.v3+json' }),
+        octokit.getNextPage(response).catch(noop),
+        octokit.getLastPage(response, { foo: 'bar' })
+          .catch(error => {
+            t.equals(error.code, 404)
+          }),
+        // test error with promise
+        octokit.getLastPage(response).catch(noop)
+      ])
+    })
+
+    .catch(t.error)
+})
+
+test('carries accept header correctly', () => {
+  nock('https://api.github.com', {
+    reqheaders: {
+      accept: 'application/vnd.github.hellcat-preview+json'
+    }
+  })
+    .get('/user/teams')
+    .query({ per_page: 1 })
+    .reply(200, [{}], {
+      'Link': '<https://api.github.com/user/teams?page=2&per_page=1>; rel="next"',
+      'X-GitHub-Media-Type': 'github; param=hellcat-preview; format=json'
+    })
+    .get('/user/teams')
+    .query({ page: 2, per_page: 1 })
+    .reply(200, [])
+
+  const octokit = new Octokit()
+
+  return octokit.users.getTeams({ per_page: 1 })
+    .then(response => {
+      return octokit.getNextPage(response)
+    })
+})
diff --git a/setup-maven/node_modules/once/LICENSE b/setup-maven/node_modules/once/LICENSE
new file mode 100644
index 0000000..19129e3
--- /dev/null
+++ b/setup-maven/node_modules/once/LICENSE
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/setup-maven/node_modules/once/README.md b/setup-maven/node_modules/once/README.md
new file mode 100644
index 0000000..1f1ffca
--- /dev/null
+++ b/setup-maven/node_modules/once/README.md
@@ -0,0 +1,79 @@
+# once
+
+Only call a function once.
+
+## usage
+
+```javascript
+var once = require('once')
+
+function load (file, cb) {
+  cb = once(cb)
+  loader.load('file')
+  loader.once('load', cb)
+  loader.once('error', cb)
+}
+```
+
+Or add to the Function.prototype in a responsible way:
+
+```javascript
+// only has to be done once
+require('once').proto()
+
+function load (file, cb) {
+  cb = cb.once()
+  loader.load('file')
+  loader.once('load', cb)
+  loader.once('error', cb)
+}
+```
+
+Ironically, the prototype feature makes this module twice as
+complicated as necessary.
+
+To check whether you function has been called, use `fn.called`. Once the
+function is called for the first time the return value of the original
+function is saved in `fn.value` and subsequent calls will continue to
+return this value.
+
+```javascript
+var once = require('once')
+
+function load (cb) {
+  cb = once(cb)
+  var stream = createStream()
+  stream.once('data', cb)
+  stream.once('end', function () {
+    if (!cb.called) cb(new Error('not found'))
+  })
+}
+```
+
+## `once.strict(func)`
+
+Throw an error if the function is called twice.
+
+Some functions are expected to be called only once. Using `once` for them would
+potentially hide logical errors.
+
+In the example below, the `greet` function has to call the callback only once:
+
+```javascript
+function greet (name, cb) {
+  // return is missing from the if statement
+  // when no name is passed, the callback is called twice
+  if (!name) cb('Hello anonymous')
+  cb('Hello ' + name)
+}
+
+function log (msg) {
+  console.log(msg)
+}
+
+// this will print 'Hello anonymous' but the logical error will be missed
+greet(null, once(msg))
+
+// once.strict will print 'Hello anonymous' and throw an error when the callback will be called the second time
+greet(null, once.strict(msg))
+```
diff --git a/setup-maven/node_modules/once/once.js b/setup-maven/node_modules/once/once.js
new file mode 100644
index 0000000..2354067
--- /dev/null
+++ b/setup-maven/node_modules/once/once.js
@@ -0,0 +1,42 @@
+var wrappy = require('wrappy')
+module.exports = wrappy(once)
+module.exports.strict = wrappy(onceStrict)
+
+once.proto = once(function () {
+  Object.defineProperty(Function.prototype, 'once', {
+    value: function () {
+      return once(this)
+    },
+    configurable: true
+  })
+
+  Object.defineProperty(Function.prototype, 'onceStrict', {
+    value: function () {
+      return onceStrict(this)
+    },
+    configurable: true
+  })
+})
+
+function once (fn) {
+  var f = function () {
+    if (f.called) return f.value
+    f.called = true
+    return f.value = fn.apply(this, arguments)
+  }
+  f.called = false
+  return f
+}
+
+function onceStrict (fn) {
+  var f = function () {
+    if (f.called)
+      throw new Error(f.onceError)
+    f.called = true
+    return f.value = fn.apply(this, arguments)
+  }
+  var name = fn.name || 'Function wrapped with `once`'
+  f.onceError = name + " shouldn't be called more than once"
+  f.called = false
+  return f
+}
diff --git a/setup-maven/node_modules/once/package.json b/setup-maven/node_modules/once/package.json
new file mode 100644
index 0000000..634a1c0
--- /dev/null
+++ b/setup-maven/node_modules/once/package.json
@@ -0,0 +1,70 @@
+{
+  "_from": "once@^1.4.0",
+  "_id": "once@1.4.0",
+  "_inBundle": false,
+  "_integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+  "_location": "/once",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "once@^1.4.0",
+    "name": "once",
+    "escapedName": "once",
+    "rawSpec": "^1.4.0",
+    "saveSpec": null,
+    "fetchSpec": "^1.4.0"
+  },
+  "_requiredBy": [
+    "/@octokit/request",
+    "/@octokit/request-error",
+    "/@octokit/rest",
+    "/end-of-stream",
+    "/pump"
+  ],
+  "_resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+  "_shasum": "583b1aa775961d4b113ac17d9c50baef9dd76bd1",
+  "_spec": "once@^1.4.0",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/@octokit/request",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "http://blog.izs.me/"
+  },
+  "bugs": {
+    "url": "https://github.com/isaacs/once/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "wrappy": "1"
+  },
+  "deprecated": false,
+  "description": "Run a function exactly one time",
+  "devDependencies": {
+    "tap": "^7.0.1"
+  },
+  "directories": {
+    "test": "test"
+  },
+  "files": [
+    "once.js"
+  ],
+  "homepage": "https://github.com/isaacs/once#readme",
+  "keywords": [
+    "once",
+    "function",
+    "one",
+    "single"
+  ],
+  "license": "ISC",
+  "main": "once.js",
+  "name": "once",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/isaacs/once.git"
+  },
+  "scripts": {
+    "test": "tap test/*.js"
+  },
+  "version": "1.4.0"
+}
diff --git a/setup-maven/node_modules/os-name/index.d.ts b/setup-maven/node_modules/os-name/index.d.ts
new file mode 100644
index 0000000..b1246ac
--- /dev/null
+++ b/setup-maven/node_modules/os-name/index.d.ts
@@ -0,0 +1,37 @@
+/// <reference types="node"/>
+
+/**
+Get the name of the current operating system.
+
+By default, the name of the current operating system is returned.
+
+@param platform - Custom platform name.
+@param release - Custom release name.
+
+@example
+```
+import * as os fron 'os';
+import osName = require('os-name');
+
+// On a macOS Sierra system
+
+osName();
+//=> 'macOS Sierra'
+
+osName(os.platform(), os.release());
+//=> 'macOS Sierra'
+
+osName('darwin', '14.0.0');
+//=> 'OS X Yosemite'
+
+osName('linux', '3.13.0-24-generic');
+//=> 'Linux 3.13'
+
+osName('win32', '6.3.9600');
+//=> 'Windows 8.1'
+```
+*/
+declare function osName(): string;
+declare function osName(platform: NodeJS.Platform, release: string): string;
+
+export = osName;
diff --git a/setup-maven/node_modules/os-name/index.js b/setup-maven/node_modules/os-name/index.js
new file mode 100644
index 0000000..f1287d5
--- /dev/null
+++ b/setup-maven/node_modules/os-name/index.js
@@ -0,0 +1,46 @@
+'use strict';
+const os = require('os');
+const macosRelease = require('macos-release');
+const winRelease = require('windows-release');
+
+const osName = (platform, release) => {
+	if (!platform && release) {
+		throw new Error('You can\'t specify a `release` without specifying `platform`');
+	}
+
+	platform = platform || os.platform();
+
+	let id;
+
+	if (platform === 'darwin') {
+		if (!release && os.platform() === 'darwin') {
+			release = os.release();
+		}
+
+		const prefix = release ? (Number(release.split('.')[0]) > 15 ? 'macOS' : 'OS X') : 'macOS';
+		id = release ? macosRelease(release).name : '';
+		return prefix + (id ? ' ' + id : '');
+	}
+
+	if (platform === 'linux') {
+		if (!release && os.platform() === 'linux') {
+			release = os.release();
+		}
+
+		id = release ? release.replace(/^(\d+\.\d+).*/, '$1') : '';
+		return 'Linux' + (id ? ' ' + id : '');
+	}
+
+	if (platform === 'win32') {
+		if (!release && os.platform() === 'win32') {
+			release = os.release();
+		}
+
+		id = release ? winRelease(release) : '';
+		return 'Windows' + (id ? ' ' + id : '');
+	}
+
+	return platform;
+};
+
+module.exports = osName;
diff --git a/setup-maven/node_modules/os-name/license b/setup-maven/node_modules/os-name/license
new file mode 100644
index 0000000..e7af2f7
--- /dev/null
+++ b/setup-maven/node_modules/os-name/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/setup-maven/node_modules/os-name/package.json b/setup-maven/node_modules/os-name/package.json
new file mode 100644
index 0000000..a402a61
--- /dev/null
+++ b/setup-maven/node_modules/os-name/package.json
@@ -0,0 +1,80 @@
+{
+  "_from": "os-name@^3.1.0",
+  "_id": "os-name@3.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==",
+  "_location": "/os-name",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "os-name@^3.1.0",
+    "name": "os-name",
+    "escapedName": "os-name",
+    "rawSpec": "^3.1.0",
+    "saveSpec": null,
+    "fetchSpec": "^3.1.0"
+  },
+  "_requiredBy": [
+    "/@octokit/endpoint/universal-user-agent",
+    "/@octokit/request/universal-user-agent",
+    "/@octokit/rest/universal-user-agent",
+    "/universal-user-agent"
+  ],
+  "_resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz",
+  "_shasum": "dec19d966296e1cd62d701a5a66ee1ddeae70801",
+  "_spec": "os-name@^3.1.0",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/@octokit/endpoint/node_modules/universal-user-agent",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/os-name/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "macos-release": "^2.2.0",
+    "windows-release": "^3.1.0"
+  },
+  "deprecated": false,
+  "description": "Get the name of the current operating system. Example: macOS Sierra",
+  "devDependencies": {
+    "@types/node": "^11.13.0",
+    "ava": "^1.4.1",
+    "tsd": "^0.7.2",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/sindresorhus/os-name#readme",
+  "keywords": [
+    "os",
+    "operating",
+    "system",
+    "platform",
+    "name",
+    "title",
+    "release",
+    "version",
+    "macos",
+    "windows",
+    "linux"
+  ],
+  "license": "MIT",
+  "name": "os-name",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/os-name.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "3.1.0"
+}
diff --git a/setup-maven/node_modules/os-name/readme.md b/setup-maven/node_modules/os-name/readme.md
new file mode 100644
index 0000000..35812b2
--- /dev/null
+++ b/setup-maven/node_modules/os-name/readme.md
@@ -0,0 +1,64 @@
+# os-name [![Build Status](https://travis-ci.org/sindresorhus/os-name.svg?branch=master)](https://travis-ci.org/sindresorhus/os-name)
+
+> Get the name of the current operating system<br>
+> Example: `macOS Sierra`
+
+Useful for analytics and debugging.
+
+
+## Install
+
+```
+$ npm install os-name
+```
+
+
+## Usage
+
+```js
+const os = require('os');
+const osName = require('os-name');
+
+// On a macOS Sierra system
+
+osName();
+//=> 'macOS Sierra'
+
+osName(os.platform(), os.release());
+//=> 'macOS Sierra'
+
+osName('darwin', '14.0.0');
+//=> 'OS X Yosemite'
+
+osName('linux', '3.13.0-24-generic');
+//=> 'Linux 3.13'
+
+osName('win32', '6.3.9600');
+//=> 'Windows 8.1'
+```
+
+
+## API
+
+### osName([platform, release])
+
+By default, the name of the current operating system is returned.
+
+You can optionally supply a custom [`os.platform()`](https://nodejs.org/api/os.html#os_os_platform) and [`os.release()`](https://nodejs.org/api/os.html#os_os_release).
+
+Check out [`getos`](https://github.com/wblankenship/getos) if you need the Linux distribution name.
+
+
+## Contributing
+
+Production systems depend on this package for logging / tracking. Please be careful when introducing new output, and adhere to existing output format (whitespace, capitalization, etc.).
+
+
+## Related
+
+- [os-name-cli](https://github.com/sindresorhus/os-name-cli) - CLI for this module
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/setup-maven/node_modules/p-finally/index.js b/setup-maven/node_modules/p-finally/index.js
new file mode 100644
index 0000000..52b7b49
--- /dev/null
+++ b/setup-maven/node_modules/p-finally/index.js
@@ -0,0 +1,15 @@
+'use strict';
+module.exports = (promise, onFinally) => {
+	onFinally = onFinally || (() => {});
+
+	return promise.then(
+		val => new Promise(resolve => {
+			resolve(onFinally());
+		}).then(() => val),
+		err => new Promise(resolve => {
+			resolve(onFinally());
+		}).then(() => {
+			throw err;
+		})
+	);
+};
diff --git a/setup-maven/node_modules/p-finally/license b/setup-maven/node_modules/p-finally/license
new file mode 100644
index 0000000..654d0bf
--- /dev/null
+++ b/setup-maven/node_modules/p-finally/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/setup-maven/node_modules/p-finally/package.json b/setup-maven/node_modules/p-finally/package.json
new file mode 100644
index 0000000..81b5a8a
--- /dev/null
+++ b/setup-maven/node_modules/p-finally/package.json
@@ -0,0 +1,74 @@
+{
+  "_from": "p-finally@^1.0.0",
+  "_id": "p-finally@1.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
+  "_location": "/p-finally",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "p-finally@^1.0.0",
+    "name": "p-finally",
+    "escapedName": "p-finally",
+    "rawSpec": "^1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^1.0.0"
+  },
+  "_requiredBy": [
+    "/execa"
+  ],
+  "_resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+  "_shasum": "3fbcfb15b899a44123b34b6dcc18b724336a2cae",
+  "_spec": "p-finally@^1.0.0",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/execa",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/p-finally/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "`Promise#finally()` ponyfill - Invoked when the promise is settled regardless of outcome",
+  "devDependencies": {
+    "ava": "*",
+    "xo": "*"
+  },
+  "engines": {
+    "node": ">=4"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/sindresorhus/p-finally#readme",
+  "keywords": [
+    "promise",
+    "finally",
+    "handler",
+    "function",
+    "async",
+    "await",
+    "promises",
+    "settled",
+    "ponyfill",
+    "polyfill",
+    "shim",
+    "bluebird"
+  ],
+  "license": "MIT",
+  "name": "p-finally",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/p-finally.git"
+  },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "1.0.0",
+  "xo": {
+    "esnext": true
+  }
+}
diff --git a/setup-maven/node_modules/p-finally/readme.md b/setup-maven/node_modules/p-finally/readme.md
new file mode 100644
index 0000000..09ef364
--- /dev/null
+++ b/setup-maven/node_modules/p-finally/readme.md
@@ -0,0 +1,47 @@
+# p-finally [![Build Status](https://travis-ci.org/sindresorhus/p-finally.svg?branch=master)](https://travis-ci.org/sindresorhus/p-finally)
+
+> [`Promise#finally()`](https://github.com/tc39/proposal-promise-finally) [ponyfill](https://ponyfill.com) - Invoked when the promise is settled regardless of outcome
+
+Useful for cleanup.
+
+
+## Install
+
+```
+$ npm install --save p-finally
+```
+
+
+## Usage
+
+```js
+const pFinally = require('p-finally');
+
+const dir = createTempDir();
+
+pFinally(write(dir), () => cleanup(dir));
+```
+
+
+## API
+
+### pFinally(promise, [onFinally])
+
+Returns a `Promise`.
+
+#### onFinally
+
+Type: `Function`
+
+Note: Throwing or returning a rejected promise will reject `promise` with the rejection reason.
+
+
+## Related
+
+- [p-try](https://github.com/sindresorhus/p-try) - `Promise#try()` ponyfill - Starts a promise chain
+- [More…](https://github.com/sindresorhus/promise-fun)
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/setup-maven/node_modules/path-key/index.js b/setup-maven/node_modules/path-key/index.js
new file mode 100644
index 0000000..62c8250
--- /dev/null
+++ b/setup-maven/node_modules/path-key/index.js
@@ -0,0 +1,13 @@
+'use strict';
+module.exports = opts => {
+	opts = opts || {};
+
+	const env = opts.env || process.env;
+	const platform = opts.platform || process.platform;
+
+	if (platform !== 'win32') {
+		return 'PATH';
+	}
+
+	return Object.keys(env).find(x => x.toUpperCase() === 'PATH') || 'Path';
+};
diff --git a/setup-maven/node_modules/path-key/license b/setup-maven/node_modules/path-key/license
new file mode 100644
index 0000000..654d0bf
--- /dev/null
+++ b/setup-maven/node_modules/path-key/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/setup-maven/node_modules/path-key/package.json b/setup-maven/node_modules/path-key/package.json
new file mode 100644
index 0000000..c6dbe9f
--- /dev/null
+++ b/setup-maven/node_modules/path-key/package.json
@@ -0,0 +1,72 @@
+{
+  "_from": "path-key@^2.0.1",
+  "_id": "path-key@2.0.1",
+  "_inBundle": false,
+  "_integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+  "_location": "/path-key",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "path-key@^2.0.1",
+    "name": "path-key",
+    "escapedName": "path-key",
+    "rawSpec": "^2.0.1",
+    "saveSpec": null,
+    "fetchSpec": "^2.0.1"
+  },
+  "_requiredBy": [
+    "/cross-spawn",
+    "/npm-run-path"
+  ],
+  "_resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+  "_shasum": "411cadb574c5a140d3a4b1910d40d80cc9f40b40",
+  "_spec": "path-key@^2.0.1",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/cross-spawn",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/path-key/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "Get the PATH environment variable key cross-platform",
+  "devDependencies": {
+    "ava": "*",
+    "xo": "*"
+  },
+  "engines": {
+    "node": ">=4"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/sindresorhus/path-key#readme",
+  "keywords": [
+    "path",
+    "key",
+    "environment",
+    "env",
+    "variable",
+    "var",
+    "get",
+    "cross-platform",
+    "windows"
+  ],
+  "license": "MIT",
+  "name": "path-key",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/path-key.git"
+  },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "2.0.1",
+  "xo": {
+    "esnext": true
+  }
+}
diff --git a/setup-maven/node_modules/path-key/readme.md b/setup-maven/node_modules/path-key/readme.md
new file mode 100644
index 0000000..cb5710a
--- /dev/null
+++ b/setup-maven/node_modules/path-key/readme.md
@@ -0,0 +1,51 @@
+# path-key [![Build Status](https://travis-ci.org/sindresorhus/path-key.svg?branch=master)](https://travis-ci.org/sindresorhus/path-key)
+
+> Get the [PATH](https://en.wikipedia.org/wiki/PATH_(variable)) environment variable key cross-platform
+
+It's usually `PATH`, but on Windows it can be any casing like `Path`...
+
+
+## Install
+
+```
+$ npm install --save path-key
+```
+
+
+## Usage
+
+```js
+const pathKey = require('path-key');
+
+const key = pathKey();
+//=> 'PATH'
+
+const PATH = process.env[key];
+//=> '/usr/local/bin:/usr/bin:/bin'
+```
+
+
+## API
+
+### pathKey([options])
+
+#### options
+
+##### env
+
+Type: `Object`<br>
+Default: [`process.env`](https://nodejs.org/api/process.html#process_process_env)
+
+Use a custom environment variables object.
+
+#### platform
+
+Type: `string`<br>
+Default: [`process.platform`](https://nodejs.org/api/process.html#process_process_platform)
+
+Get the PATH key for a specific platform.
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/setup-maven/node_modules/pump/.travis.yml b/setup-maven/node_modules/pump/.travis.yml
new file mode 100644
index 0000000..17f9433
--- /dev/null
+++ b/setup-maven/node_modules/pump/.travis.yml
@@ -0,0 +1,5 @@
+language: node_js
+node_js:
+  - "0.10"
+
+script: "npm test"
diff --git a/setup-maven/node_modules/pump/LICENSE b/setup-maven/node_modules/pump/LICENSE
new file mode 100644
index 0000000..757562e
--- /dev/null
+++ b/setup-maven/node_modules/pump/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014 Mathias Buus
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
\ No newline at end of file
diff --git a/setup-maven/node_modules/pump/README.md b/setup-maven/node_modules/pump/README.md
new file mode 100644
index 0000000..4c81471
--- /dev/null
+++ b/setup-maven/node_modules/pump/README.md
@@ -0,0 +1,65 @@
+# pump
+
+pump is a small node module that pipes streams together and destroys all of them if one of them closes.
+
+```
+npm install pump
+```
+
+[![build status](http://img.shields.io/travis/mafintosh/pump.svg?style=flat)](http://travis-ci.org/mafintosh/pump)
+
+## What problem does it solve?
+
+When using standard `source.pipe(dest)` source will _not_ be destroyed if dest emits close or an error.
+You are also not able to provide a callback to tell when then pipe has finished.
+
+pump does these two things for you
+
+## Usage
+
+Simply pass the streams you want to pipe together to pump and add an optional callback
+
+``` js
+var pump = require('pump')
+var fs = require('fs')
+
+var source = fs.createReadStream('/dev/random')
+var dest = fs.createWriteStream('/dev/null')
+
+pump(source, dest, function(err) {
+  console.log('pipe finished', err)
+})
+
+setTimeout(function() {
+  dest.destroy() // when dest is closed pump will destroy source
+}, 1000)
+```
+
+You can use pump to pipe more than two streams together as well
+
+``` js
+var transform = someTransformStream()
+
+pump(source, transform, anotherTransform, dest, function(err) {
+  console.log('pipe finished', err)
+})
+```
+
+If `source`, `transform`, `anotherTransform` or `dest` closes all of them will be destroyed.
+
+Similarly to `stream.pipe()`, `pump()` returns the last stream passed in, so you can do:
+
+```
+return pump(s1, s2) // returns s2
+```
+
+If you want to return a stream that combines *both* s1 and s2 to a single stream use
+[pumpify](https://github.com/mafintosh/pumpify) instead.
+
+## License
+
+MIT
+
+## Related
+
+`pump` is part of the [mississippi stream utility collection](https://github.com/maxogden/mississippi) which includes more useful stream modules similar to this one.
diff --git a/setup-maven/node_modules/pump/index.js b/setup-maven/node_modules/pump/index.js
new file mode 100644
index 0000000..c15059f
--- /dev/null
+++ b/setup-maven/node_modules/pump/index.js
@@ -0,0 +1,82 @@
+var once = require('once')
+var eos = require('end-of-stream')
+var fs = require('fs') // we only need fs to get the ReadStream and WriteStream prototypes
+
+var noop = function () {}
+var ancient = /^v?\.0/.test(process.version)
+
+var isFn = function (fn) {
+  return typeof fn === 'function'
+}
+
+var isFS = function (stream) {
+  if (!ancient) return false // newer node version do not need to care about fs is a special way
+  if (!fs) return false // browser
+  return (stream instanceof (fs.ReadStream || noop) || stream instanceof (fs.WriteStream || noop)) && isFn(stream.close)
+}
+
+var isRequest = function (stream) {
+  return stream.setHeader && isFn(stream.abort)
+}
+
+var destroyer = function (stream, reading, writing, callback) {
+  callback = once(callback)
+
+  var closed = false
+  stream.on('close', function () {
+    closed = true
+  })
+
+  eos(stream, {readable: reading, writable: writing}, function (err) {
+    if (err) return callback(err)
+    closed = true
+    callback()
+  })
+
+  var destroyed = false
+  return function (err) {
+    if (closed) return
+    if (destroyed) return
+    destroyed = true
+
+    if (isFS(stream)) return stream.close(noop) // use close for fs streams to avoid fd leaks
+    if (isRequest(stream)) return stream.abort() // request.destroy just do .end - .abort is what we want
+
+    if (isFn(stream.destroy)) return stream.destroy()
+
+    callback(err || new Error('stream was destroyed'))
+  }
+}
+
+var call = function (fn) {
+  fn()
+}
+
+var pipe = function (from, to) {
+  return from.pipe(to)
+}
+
+var pump = function () {
+  var streams = Array.prototype.slice.call(arguments)
+  var callback = isFn(streams[streams.length - 1] || noop) && streams.pop() || noop
+
+  if (Array.isArray(streams[0])) streams = streams[0]
+  if (streams.length < 2) throw new Error('pump requires two streams per minimum')
+
+  var error
+  var destroys = streams.map(function (stream, i) {
+    var reading = i < streams.length - 1
+    var writing = i > 0
+    return destroyer(stream, reading, writing, function (err) {
+      if (!error) error = err
+      if (err) destroys.forEach(call)
+      if (reading) return
+      destroys.forEach(call)
+      callback(error)
+    })
+  })
+
+  return streams.reduce(pipe)
+}
+
+module.exports = pump
diff --git a/setup-maven/node_modules/pump/package.json b/setup-maven/node_modules/pump/package.json
new file mode 100644
index 0000000..fd5f24d
--- /dev/null
+++ b/setup-maven/node_modules/pump/package.json
@@ -0,0 +1,59 @@
+{
+  "_from": "pump@^3.0.0",
+  "_id": "pump@3.0.0",
+  "_inBundle": false,
+  "_integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+  "_location": "/pump",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "pump@^3.0.0",
+    "name": "pump",
+    "escapedName": "pump",
+    "rawSpec": "^3.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^3.0.0"
+  },
+  "_requiredBy": [
+    "/get-stream"
+  ],
+  "_resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+  "_shasum": "b4a2116815bde2f4e1ea602354e8c75565107a64",
+  "_spec": "pump@^3.0.0",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/get-stream",
+  "author": {
+    "name": "Mathias Buus Madsen",
+    "email": "mathiasbuus@gmail.com"
+  },
+  "browser": {
+    "fs": false
+  },
+  "bugs": {
+    "url": "https://github.com/mafintosh/pump/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "end-of-stream": "^1.1.0",
+    "once": "^1.3.1"
+  },
+  "deprecated": false,
+  "description": "pipe streams together and close all of them if one of them closes",
+  "homepage": "https://github.com/mafintosh/pump#readme",
+  "keywords": [
+    "streams",
+    "pipe",
+    "destroy",
+    "callback"
+  ],
+  "license": "MIT",
+  "name": "pump",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/mafintosh/pump.git"
+  },
+  "scripts": {
+    "test": "node test-browser.js && node test-node.js"
+  },
+  "version": "3.0.0"
+}
diff --git a/setup-maven/node_modules/pump/test-browser.js b/setup-maven/node_modules/pump/test-browser.js
new file mode 100644
index 0000000..9a06c8a
--- /dev/null
+++ b/setup-maven/node_modules/pump/test-browser.js
@@ -0,0 +1,66 @@
+var stream = require('stream')
+var pump = require('./index')
+
+var rs = new stream.Readable()
+var ws = new stream.Writable()
+
+rs._read = function (size) {
+  this.push(Buffer(size).fill('abc'))
+}
+
+ws._write = function (chunk, encoding, cb) {
+  setTimeout(function () {
+    cb()
+  }, 100)
+}
+
+var toHex = function () {
+  var reverse = new (require('stream').Transform)()
+
+  reverse._transform = function (chunk, enc, callback) {
+    reverse.push(chunk.toString('hex'))
+    callback()
+  }
+
+  return reverse
+}
+
+var wsClosed = false
+var rsClosed = false
+var callbackCalled = false
+
+var check = function () {
+  if (wsClosed && rsClosed && callbackCalled) {
+    console.log('test-browser.js passes')
+    clearTimeout(timeout)
+  }
+}
+
+ws.on('finish', function () {
+  wsClosed = true
+  check()
+})
+
+rs.on('end', function () {
+  rsClosed = true
+  check()
+})
+
+var res = pump(rs, toHex(), toHex(), toHex(), ws, function () {
+  callbackCalled = true
+  check()
+})
+
+if (res !== ws) {
+  throw new Error('should return last stream')
+}
+
+setTimeout(function () {
+  rs.push(null)
+  rs.emit('close')
+}, 1000)
+
+var timeout = setTimeout(function () {
+  check()
+  throw new Error('timeout')
+}, 5000)
diff --git a/setup-maven/node_modules/pump/test-node.js b/setup-maven/node_modules/pump/test-node.js
new file mode 100644
index 0000000..561251a
--- /dev/null
+++ b/setup-maven/node_modules/pump/test-node.js
@@ -0,0 +1,53 @@
+var pump = require('./index')
+
+var rs = require('fs').createReadStream('/dev/random')
+var ws = require('fs').createWriteStream('/dev/null')
+
+var toHex = function () {
+  var reverse = new (require('stream').Transform)()
+
+  reverse._transform = function (chunk, enc, callback) {
+    reverse.push(chunk.toString('hex'))
+    callback()
+  }
+
+  return reverse
+}
+
+var wsClosed = false
+var rsClosed = false
+var callbackCalled = false
+
+var check = function () {
+  if (wsClosed && rsClosed && callbackCalled) {
+    console.log('test-node.js passes')
+    clearTimeout(timeout)
+  }
+}
+
+ws.on('close', function () {
+  wsClosed = true
+  check()
+})
+
+rs.on('close', function () {
+  rsClosed = true
+  check()
+})
+
+var res = pump(rs, toHex(), toHex(), toHex(), ws, function () {
+  callbackCalled = true
+  check()
+})
+
+if (res !== ws) {
+  throw new Error('should return last stream')
+}
+
+setTimeout(function () {
+  rs.destroy()
+}, 1000)
+
+var timeout = setTimeout(function () {
+  throw new Error('timeout')
+}, 5000)
diff --git a/setup-maven/node_modules/semver/CHANGELOG.md b/setup-maven/node_modules/semver/CHANGELOG.md
new file mode 100644
index 0000000..f567dd3
--- /dev/null
+++ b/setup-maven/node_modules/semver/CHANGELOG.md
@@ -0,0 +1,70 @@
+# changes log
+
+## 6.2.0
+
+* Coerce numbers to strings when passed to semver.coerce()
+* Add `rtl` option to coerce from right to left
+
+## 6.1.3
+
+* Handle X-ranges properly in includePrerelease mode
+
+## 6.1.2
+
+* Do not throw when testing invalid version strings
+
+## 6.1.1
+
+* Add options support for semver.coerce()
+* Handle undefined version passed to Range.test
+
+## 6.1.0
+
+* Add semver.compareBuild function
+* Support `*` in semver.intersects
+
+## 6.0
+
+* Fix `intersects` logic.
+
+    This is technically a bug fix, but since it is also a change to behavior
+    that may require users updating their code, it is marked as a major
+    version increment.
+
+## 5.7
+
+* Add `minVersion` method
+
+## 5.6
+
+* Move boolean `loose` param to an options object, with
+  backwards-compatibility protection.
+* Add ability to opt out of special prerelease version handling with
+  the `includePrerelease` option flag.
+
+## 5.5
+
+* Add version coercion capabilities
+
+## 5.4
+
+* Add intersection checking
+
+## 5.3
+
+* Add `minSatisfying` method
+
+## 5.2
+
+* Add `prerelease(v)` that returns prerelease components
+
+## 5.1
+
+* Add Backus-Naur for ranges
+* Remove excessively cute inspection methods
+
+## 5.0
+
+* Remove AMD/Browserified build artifacts
+* Fix ltr and gtr when using the `*` range
+* Fix for range `*` with a prerelease identifier
diff --git a/setup-maven/node_modules/semver/LICENSE b/setup-maven/node_modules/semver/LICENSE
new file mode 100644
index 0000000..19129e3
--- /dev/null
+++ b/setup-maven/node_modules/semver/LICENSE
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/setup-maven/node_modules/semver/README.md b/setup-maven/node_modules/semver/README.md
new file mode 100644
index 0000000..2293a14
--- /dev/null
+++ b/setup-maven/node_modules/semver/README.md
@@ -0,0 +1,443 @@
+semver(1) -- The semantic versioner for npm
+===========================================
+
+## Install
+
+```bash
+npm install semver
+````
+
+## Usage
+
+As a node module:
+
+```js
+const semver = require('semver')
+
+semver.valid('1.2.3') // '1.2.3'
+semver.valid('a.b.c') // null
+semver.clean('  =v1.2.3   ') // '1.2.3'
+semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true
+semver.gt('1.2.3', '9.8.7') // false
+semver.lt('1.2.3', '9.8.7') // true
+semver.minVersion('>=1.0.0') // '1.0.0'
+semver.valid(semver.coerce('v2')) // '2.0.0'
+semver.valid(semver.coerce('42.6.7.9.3-alpha')) // '42.6.7'
+```
+
+As a command-line utility:
+
+```
+$ semver -h
+
+A JavaScript implementation of the https://semver.org/ specification
+Copyright Isaac Z. Schlueter
+
+Usage: semver [options] <version> [<version> [...]]
+Prints valid versions sorted by SemVer precedence
+
+Options:
+-r --range <range>
+        Print versions that match the specified range.
+
+-i --increment [<level>]
+        Increment a version by the specified level.  Level can
+        be one of: major, minor, patch, premajor, preminor,
+        prepatch, or prerelease.  Default level is 'patch'.
+        Only one version may be specified.
+
+--preid <identifier>
+        Identifier to be used to prefix premajor, preminor,
+        prepatch or prerelease version increments.
+
+-l --loose
+        Interpret versions and ranges loosely
+
+-p --include-prerelease
+        Always include prerelease versions in range matching
+
+-c --coerce
+        Coerce a string into SemVer if possible
+        (does not imply --loose)
+
+--rtl
+        Coerce version strings right to left
+
+--ltr
+        Coerce version strings left to right (default)
+
+Program exits successfully if any valid version satisfies
+all supplied ranges, and prints all satisfying versions.
+
+If no satisfying versions are found, then exits failure.
+
+Versions are printed in ascending order, so supplying
+multiple versions to the utility will just sort them.
+```
+
+## Versions
+
+A "version" is described by the `v2.0.0` specification found at
+<https://semver.org/>.
+
+A leading `"="` or `"v"` character is stripped off and ignored.
+
+## Ranges
+
+A `version range` is a set of `comparators` which specify versions
+that satisfy the range.
+
+A `comparator` is composed of an `operator` and a `version`.  The set
+of primitive `operators` is:
+
+* `<` Less than
+* `<=` Less than or equal to
+* `>` Greater than
+* `>=` Greater than or equal to
+* `=` Equal.  If no operator is specified, then equality is assumed,
+  so this operator is optional, but MAY be included.
+
+For example, the comparator `>=1.2.7` would match the versions
+`1.2.7`, `1.2.8`, `2.5.3`, and `1.3.9`, but not the versions `1.2.6`
+or `1.1.0`.
+
+Comparators can be joined by whitespace to form a `comparator set`,
+which is satisfied by the **intersection** of all of the comparators
+it includes.
+
+A range is composed of one or more comparator sets, joined by `||`.  A
+version matches a range if and only if every comparator in at least
+one of the `||`-separated comparator sets is satisfied by the version.
+
+For example, the range `>=1.2.7 <1.3.0` would match the versions
+`1.2.7`, `1.2.8`, and `1.2.99`, but not the versions `1.2.6`, `1.3.0`,
+or `1.1.0`.
+
+The range `1.2.7 || >=1.2.9 <2.0.0` would match the versions `1.2.7`,
+`1.2.9`, and `1.4.6`, but not the versions `1.2.8` or `2.0.0`.
+
+### Prerelease Tags
+
+If a version has a prerelease tag (for example, `1.2.3-alpha.3`) then
+it will only be allowed to satisfy comparator sets if at least one
+comparator with the same `[major, minor, patch]` tuple also has a
+prerelease tag.
+
+For example, the range `>1.2.3-alpha.3` would be allowed to match the
+version `1.2.3-alpha.7`, but it would *not* be satisfied by
+`3.4.5-alpha.9`, even though `3.4.5-alpha.9` is technically "greater
+than" `1.2.3-alpha.3` according to the SemVer sort rules.  The version
+range only accepts prerelease tags on the `1.2.3` version.  The
+version `3.4.5` *would* satisfy the range, because it does not have a
+prerelease flag, and `3.4.5` is greater than `1.2.3-alpha.7`.
+
+The purpose for this behavior is twofold.  First, prerelease versions
+frequently are updated very quickly, and contain many breaking changes
+that are (by the author's design) not yet fit for public consumption.
+Therefore, by default, they are excluded from range matching
+semantics.
+
+Second, a user who has opted into using a prerelease version has
+clearly indicated the intent to use *that specific* set of
+alpha/beta/rc versions.  By including a prerelease tag in the range,
+the user is indicating that they are aware of the risk.  However, it
+is still not appropriate to assume that they have opted into taking a
+similar risk on the *next* set of prerelease versions.
+
+Note that this behavior can be suppressed (treating all prerelease
+versions as if they were normal versions, for the purpose of range
+matching) by setting the `includePrerelease` flag on the options
+object to any
+[functions](https://github.com/npm/node-semver#functions) that do
+range matching.
+
+#### Prerelease Identifiers
+
+The method `.inc` takes an additional `identifier` string argument that
+will append the value of the string as a prerelease identifier:
+
+```javascript
+semver.inc('1.2.3', 'prerelease', 'beta')
+// '1.2.4-beta.0'
+```
+
+command-line example:
+
+```bash
+$ semver 1.2.3 -i prerelease --preid beta
+1.2.4-beta.0
+```
+
+Which then can be used to increment further:
+
+```bash
+$ semver 1.2.4-beta.0 -i prerelease
+1.2.4-beta.1
+```
+
+### Advanced Range Syntax
+
+Advanced range syntax desugars to primitive comparators in
+deterministic ways.
+
+Advanced ranges may be combined in the same way as primitive
+comparators using white space or `||`.
+
+#### Hyphen Ranges `X.Y.Z - A.B.C`
+
+Specifies an inclusive set.
+
+* `1.2.3 - 2.3.4` := `>=1.2.3 <=2.3.4`
+
+If a partial version is provided as the first version in the inclusive
+range, then the missing pieces are replaced with zeroes.
+
+* `1.2 - 2.3.4` := `>=1.2.0 <=2.3.4`
+
+If a partial version is provided as the second version in the
+inclusive range, then all versions that start with the supplied parts
+of the tuple are accepted, but nothing that would be greater than the
+provided tuple parts.
+
+* `1.2.3 - 2.3` := `>=1.2.3 <2.4.0`
+* `1.2.3 - 2` := `>=1.2.3 <3.0.0`
+
+#### X-Ranges `1.2.x` `1.X` `1.2.*` `*`
+
+Any of `X`, `x`, or `*` may be used to "stand in" for one of the
+numeric values in the `[major, minor, patch]` tuple.
+
+* `*` := `>=0.0.0` (Any version satisfies)
+* `1.x` := `>=1.0.0 <2.0.0` (Matching major version)
+* `1.2.x` := `>=1.2.0 <1.3.0` (Matching major and minor versions)
+
+A partial version range is treated as an X-Range, so the special
+character is in fact optional.
+
+* `""` (empty string) := `*` := `>=0.0.0`
+* `1` := `1.x.x` := `>=1.0.0 <2.0.0`
+* `1.2` := `1.2.x` := `>=1.2.0 <1.3.0`
+
+#### Tilde Ranges `~1.2.3` `~1.2` `~1`
+
+Allows patch-level changes if a minor version is specified on the
+comparator.  Allows minor-level changes if not.
+
+* `~1.2.3` := `>=1.2.3 <1.(2+1).0` := `>=1.2.3 <1.3.0`
+* `~1.2` := `>=1.2.0 <1.(2+1).0` := `>=1.2.0 <1.3.0` (Same as `1.2.x`)
+* `~1` := `>=1.0.0 <(1+1).0.0` := `>=1.0.0 <2.0.0` (Same as `1.x`)
+* `~0.2.3` := `>=0.2.3 <0.(2+1).0` := `>=0.2.3 <0.3.0`
+* `~0.2` := `>=0.2.0 <0.(2+1).0` := `>=0.2.0 <0.3.0` (Same as `0.2.x`)
+* `~0` := `>=0.0.0 <(0+1).0.0` := `>=0.0.0 <1.0.0` (Same as `0.x`)
+* `~1.2.3-beta.2` := `>=1.2.3-beta.2 <1.3.0` Note that prereleases in
+  the `1.2.3` version will be allowed, if they are greater than or
+  equal to `beta.2`.  So, `1.2.3-beta.4` would be allowed, but
+  `1.2.4-beta.2` would not, because it is a prerelease of a
+  different `[major, minor, patch]` tuple.
+
+#### Caret Ranges `^1.2.3` `^0.2.5` `^0.0.4`
+
+Allows changes that do not modify the left-most non-zero element in the
+`[major, minor, patch]` tuple.  In other words, this allows patch and
+minor updates for versions `1.0.0` and above, patch updates for
+versions `0.X >=0.1.0`, and *no* updates for versions `0.0.X`.
+
+Many authors treat a `0.x` version as if the `x` were the major
+"breaking-change" indicator.
+
+Caret ranges are ideal when an author may make breaking changes
+between `0.2.4` and `0.3.0` releases, which is a common practice.
+However, it presumes that there will *not* be breaking changes between
+`0.2.4` and `0.2.5`.  It allows for changes that are presumed to be
+additive (but non-breaking), according to commonly observed practices.
+
+* `^1.2.3` := `>=1.2.3 <2.0.0`
+* `^0.2.3` := `>=0.2.3 <0.3.0`
+* `^0.0.3` := `>=0.0.3 <0.0.4`
+* `^1.2.3-beta.2` := `>=1.2.3-beta.2 <2.0.0` Note that prereleases in
+  the `1.2.3` version will be allowed, if they are greater than or
+  equal to `beta.2`.  So, `1.2.3-beta.4` would be allowed, but
+  `1.2.4-beta.2` would not, because it is a prerelease of a
+  different `[major, minor, patch]` tuple.
+* `^0.0.3-beta` := `>=0.0.3-beta <0.0.4`  Note that prereleases in the
+  `0.0.3` version *only* will be allowed, if they are greater than or
+  equal to `beta`.  So, `0.0.3-pr.2` would be allowed.
+
+When parsing caret ranges, a missing `patch` value desugars to the
+number `0`, but will allow flexibility within that value, even if the
+major and minor versions are both `0`.
+
+* `^1.2.x` := `>=1.2.0 <2.0.0`
+* `^0.0.x` := `>=0.0.0 <0.1.0`
+* `^0.0` := `>=0.0.0 <0.1.0`
+
+A missing `minor` and `patch` values will desugar to zero, but also
+allow flexibility within those values, even if the major version is
+zero.
+
+* `^1.x` := `>=1.0.0 <2.0.0`
+* `^0.x` := `>=0.0.0 <1.0.0`
+
+### Range Grammar
+
+Putting all this together, here is a Backus-Naur grammar for ranges,
+for the benefit of parser authors:
+
+```bnf
+range-set  ::= range ( logical-or range ) *
+logical-or ::= ( ' ' ) * '||' ( ' ' ) *
+range      ::= hyphen | simple ( ' ' simple ) * | ''
+hyphen     ::= partial ' - ' partial
+simple     ::= primitive | partial | tilde | caret
+primitive  ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial
+partial    ::= xr ( '.' xr ( '.' xr qualifier ? )? )?
+xr         ::= 'x' | 'X' | '*' | nr
+nr         ::= '0' | ['1'-'9'] ( ['0'-'9'] ) *
+tilde      ::= '~' partial
+caret      ::= '^' partial
+qualifier  ::= ( '-' pre )? ( '+' build )?
+pre        ::= parts
+build      ::= parts
+parts      ::= part ( '.' part ) *
+part       ::= nr | [-0-9A-Za-z]+
+```
+
+## Functions
+
+All methods and classes take a final `options` object argument.  All
+options in this object are `false` by default.  The options supported
+are:
+
+- `loose`  Be more forgiving about not-quite-valid semver strings.
+  (Any resulting output will always be 100% strict compliant, of
+  course.)  For backwards compatibility reasons, if the `options`
+  argument is a boolean value instead of an object, it is interpreted
+  to be the `loose` param.
+- `includePrerelease`  Set to suppress the [default
+  behavior](https://github.com/npm/node-semver#prerelease-tags) of
+  excluding prerelease tagged versions from ranges unless they are
+  explicitly opted into.
+
+Strict-mode Comparators and Ranges will be strict about the SemVer
+strings that they parse.
+
+* `valid(v)`: Return the parsed version, or null if it's not valid.
+* `inc(v, release)`: Return the version incremented by the release
+  type (`major`,   `premajor`, `minor`, `preminor`, `patch`,
+  `prepatch`, or `prerelease`), or null if it's not valid
+  * `premajor` in one call will bump the version up to the next major
+    version and down to a prerelease of that major version.
+    `preminor`, and `prepatch` work the same way.
+  * If called from a non-prerelease version, the `prerelease` will work the
+    same as `prepatch`. It increments the patch version, then makes a
+    prerelease. If the input version is already a prerelease it simply
+    increments it.
+* `prerelease(v)`: Returns an array of prerelease components, or null
+  if none exist. Example: `prerelease('1.2.3-alpha.1') -> ['alpha', 1]`
+* `major(v)`: Return the major version number.
+* `minor(v)`: Return the minor version number.
+* `patch(v)`: Return the patch version number.
+* `intersects(r1, r2, loose)`: Return true if the two supplied ranges
+  or comparators intersect.
+* `parse(v)`: Attempt to parse a string as a semantic version, returning either
+  a `SemVer` object or `null`.
+
+### Comparison
+
+* `gt(v1, v2)`: `v1 > v2`
+* `gte(v1, v2)`: `v1 >= v2`
+* `lt(v1, v2)`: `v1 < v2`
+* `lte(v1, v2)`: `v1 <= v2`
+* `eq(v1, v2)`: `v1 == v2` This is true if they're logically equivalent,
+  even if they're not the exact same string.  You already know how to
+  compare strings.
+* `neq(v1, v2)`: `v1 != v2` The opposite of `eq`.
+* `cmp(v1, comparator, v2)`: Pass in a comparison string, and it'll call
+  the corresponding function above.  `"==="` and `"!=="` do simple
+  string comparison, but are included for completeness.  Throws if an
+  invalid comparison string is provided.
+* `compare(v1, v2)`: Return `0` if `v1 == v2`, or `1` if `v1` is greater, or `-1` if
+  `v2` is greater.  Sorts in ascending order if passed to `Array.sort()`.
+* `rcompare(v1, v2)`: The reverse of compare.  Sorts an array of versions
+  in descending order when passed to `Array.sort()`.
+* `compareBuild(v1, v2)`: The same as `compare` but considers `build` when two versions
+  are equal.  Sorts in ascending order if passed to `Array.sort()`.
+  `v2` is greater.  Sorts in ascending order if passed to `Array.sort()`.
+* `diff(v1, v2)`: Returns difference between two versions by the release type
+  (`major`, `premajor`, `minor`, `preminor`, `patch`, `prepatch`, or `prerelease`),
+  or null if the versions are the same.
+
+### Comparators
+
+* `intersects(comparator)`: Return true if the comparators intersect
+
+### Ranges
+
+* `validRange(range)`: Return the valid range or null if it's not valid
+* `satisfies(version, range)`: Return true if the version satisfies the
+  range.
+* `maxSatisfying(versions, range)`: Return the highest version in the list
+  that satisfies the range, or `null` if none of them do.
+* `minSatisfying(versions, range)`: Return the lowest version in the list
+  that satisfies the range, or `null` if none of them do.
+* `minVersion(range)`: Return the lowest version that can possibly match
+  the given range.
+* `gtr(version, range)`: Return `true` if version is greater than all the
+  versions possible in the range.
+* `ltr(version, range)`: Return `true` if version is less than all the
+  versions possible in the range.
+* `outside(version, range, hilo)`: Return true if the version is outside
+  the bounds of the range in either the high or low direction.  The
+  `hilo` argument must be either the string `'>'` or `'<'`.  (This is
+  the function called by `gtr` and `ltr`.)
+* `intersects(range)`: Return true if any of the ranges comparators intersect
+
+Note that, since ranges may be non-contiguous, a version might not be
+greater than a range, less than a range, *or* satisfy a range!  For
+example, the range `1.2 <1.2.9 || >2.0.0` would have a hole from `1.2.9`
+until `2.0.0`, so the version `1.2.10` would not be greater than the
+range (because `2.0.1` satisfies, which is higher), nor less than the
+range (since `1.2.8` satisfies, which is lower), and it also does not
+satisfy the range.
+
+If you want to know if a version satisfies or does not satisfy a
+range, use the `satisfies(version, range)` function.
+
+### Coercion
+
+* `coerce(version, options)`: Coerces a string to semver if possible
+
+This aims to provide a very forgiving translation of a non-semver string to
+semver. It looks for the first digit in a string, and consumes all
+remaining characters which satisfy at least a partial semver (e.g., `1`,
+`1.2`, `1.2.3`) up to the max permitted length (256 characters).  Longer
+versions are simply truncated (`4.6.3.9.2-alpha2` becomes `4.6.3`).  All
+surrounding text is simply ignored (`v3.4 replaces v3.3.1` becomes
+`3.4.0`).  Only text which lacks digits will fail coercion (`version one`
+is not valid).  The maximum  length for any semver component considered for
+coercion is 16 characters; longer components will be ignored
+(`10000000000000000.4.7.4` becomes `4.7.4`).  The maximum value for any
+semver component is `Integer.MAX_SAFE_INTEGER || (2**53 - 1)`; higher value
+components are invalid (`9999999999999999.4.7.4` is likely invalid).
+
+If the `options.rtl` flag is set, then `coerce` will return the right-most
+coercible tuple that does not share an ending index with a longer coercible
+tuple.  For example, `1.2.3.4` will return `2.3.4` in rtl mode, not
+`4.0.0`.  `1.2.3/4` will return `4.0.0`, because the `4` is not a part of
+any other overlapping SemVer tuple.
+
+### Clean
+
+* `clean(version)`: Clean a string to be a valid semver if possible
+
+This will return a cleaned and trimmed semver version. If the provided version is not valid a null will be returned. This does not work for ranges. 
+
+ex.
+* `s.clean(' = v 2.1.5foo')`: `null`
+* `s.clean(' = v 2.1.5foo', { loose: true })`: `'2.1.5-foo'`
+* `s.clean(' = v 2.1.5-foo')`: `null`
+* `s.clean(' = v 2.1.5-foo', { loose: true })`: `'2.1.5-foo'`
+* `s.clean('=v2.1.5')`: `'2.1.5'`
+* `s.clean('  =v2.1.5')`: `2.1.5`
+* `s.clean('      2.1.5   ')`: `'2.1.5'`
+* `s.clean('~1.0.0')`: `null`
diff --git a/setup-maven/node_modules/semver/bin/semver.js b/setup-maven/node_modules/semver/bin/semver.js
new file mode 100755
index 0000000..666034a
--- /dev/null
+++ b/setup-maven/node_modules/semver/bin/semver.js
@@ -0,0 +1,174 @@
+#!/usr/bin/env node
+// Standalone semver comparison program.
+// Exits successfully and prints matching version(s) if
+// any supplied version is valid and passes all tests.
+
+var argv = process.argv.slice(2)
+
+var versions = []
+
+var range = []
+
+var inc = null
+
+var version = require('../package.json').version
+
+var loose = false
+
+var includePrerelease = false
+
+var coerce = false
+
+var rtl = false
+
+var identifier
+
+var semver = require('../semver')
+
+var reverse = false
+
+var options = {}
+
+main()
+
+function main () {
+  if (!argv.length) return help()
+  while (argv.length) {
+    var a = argv.shift()
+    var indexOfEqualSign = a.indexOf('=')
+    if (indexOfEqualSign !== -1) {
+      a = a.slice(0, indexOfEqualSign)
+      argv.unshift(a.slice(indexOfEqualSign + 1))
+    }
+    switch (a) {
+      case '-rv': case '-rev': case '--rev': case '--reverse':
+        reverse = true
+        break
+      case '-l': case '--loose':
+        loose = true
+        break
+      case '-p': case '--include-prerelease':
+        includePrerelease = true
+        break
+      case '-v': case '--version':
+        versions.push(argv.shift())
+        break
+      case '-i': case '--inc': case '--increment':
+        switch (argv[0]) {
+          case 'major': case 'minor': case 'patch': case 'prerelease':
+          case 'premajor': case 'preminor': case 'prepatch':
+            inc = argv.shift()
+            break
+          default:
+            inc = 'patch'
+            break
+        }
+        break
+      case '--preid':
+        identifier = argv.shift()
+        break
+      case '-r': case '--range':
+        range.push(argv.shift())
+        break
+      case '-c': case '--coerce':
+        coerce = true
+        break
+      case '--rtl':
+        rtl = true
+        break
+      case '--ltr':
+        rtl = false
+        break
+      case '-h': case '--help': case '-?':
+        return help()
+      default:
+        versions.push(a)
+        break
+    }
+  }
+
+  var options = { loose: loose, includePrerelease: includePrerelease, rtl: rtl }
+
+  versions = versions.map(function (v) {
+    return coerce ? (semver.coerce(v, options) || { version: v }).version : v
+  }).filter(function (v) {
+    return semver.valid(v)
+  })
+  if (!versions.length) return fail()
+  if (inc && (versions.length !== 1 || range.length)) { return failInc() }
+
+  for (var i = 0, l = range.length; i < l; i++) {
+    versions = versions.filter(function (v) {
+      return semver.satisfies(v, range[i], options)
+    })
+    if (!versions.length) return fail()
+  }
+  return success(versions)
+}
+
+function failInc () {
+  console.error('--inc can only be used on a single version with no range')
+  fail()
+}
+
+function fail () { process.exit(1) }
+
+function success () {
+  var compare = reverse ? 'rcompare' : 'compare'
+  versions.sort(function (a, b) {
+    return semver[compare](a, b, options)
+  }).map(function (v) {
+    return semver.clean(v, options)
+  }).map(function (v) {
+    return inc ? semver.inc(v, inc, options, identifier) : v
+  }).forEach(function (v, i, _) { console.log(v) })
+}
+
+function help () {
+  console.log(['SemVer ' + version,
+    '',
+    'A JavaScript implementation of the https://semver.org/ specification',
+    'Copyright Isaac Z. Schlueter',
+    '',
+    'Usage: semver [options] <version> [<version> [...]]',
+    'Prints valid versions sorted by SemVer precedence',
+    '',
+    'Options:',
+    '-r --range <range>',
+    '        Print versions that match the specified range.',
+    '',
+    '-i --increment [<level>]',
+    '        Increment a version by the specified level.  Level can',
+    '        be one of: major, minor, patch, premajor, preminor,',
+    "        prepatch, or prerelease.  Default level is 'patch'.",
+    '        Only one version may be specified.',
+    '',
+    '--preid <identifier>',
+    '        Identifier to be used to prefix premajor, preminor,',
+    '        prepatch or prerelease version increments.',
+    '',
+    '-l --loose',
+    '        Interpret versions and ranges loosely',
+    '',
+    '-p --include-prerelease',
+    '        Always include prerelease versions in range matching',
+    '',
+    '-c --coerce',
+    '        Coerce a string into SemVer if possible',
+    '        (does not imply --loose)',
+    '',
+    '--rtl',
+    '        Coerce version strings right to left',
+    '',
+    '--ltr',
+    '        Coerce version strings left to right (default)',
+    '',
+    'Program exits successfully if any valid version satisfies',
+    'all supplied ranges, and prints all satisfying versions.',
+    '',
+    'If no satisfying versions are found, then exits failure.',
+    '',
+    'Versions are printed in ascending order, so supplying',
+    'multiple versions to the utility will just sort them.'
+  ].join('\n'))
+}
diff --git a/setup-maven/node_modules/semver/package.json b/setup-maven/node_modules/semver/package.json
new file mode 100644
index 0000000..a7fda0a
--- /dev/null
+++ b/setup-maven/node_modules/semver/package.json
@@ -0,0 +1,61 @@
+{
+  "_from": "semver@^6.1.1",
+  "_id": "semver@6.3.0",
+  "_inBundle": false,
+  "_integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+  "_location": "/semver",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "semver@^6.1.1",
+    "name": "semver",
+    "escapedName": "semver",
+    "rawSpec": "^6.1.1",
+    "saveSpec": null,
+    "fetchSpec": "^6.1.1"
+  },
+  "_requiredBy": [
+    "/",
+    "/@actions/tool-cache"
+  ],
+  "_resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+  "_shasum": "ee0a64c8af5e8ceea67687b133761e1becbd1d3d",
+  "_spec": "semver@^6.1.1",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven",
+  "bin": {
+    "semver": "./bin/semver.js"
+  },
+  "bugs": {
+    "url": "https://github.com/npm/node-semver/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "The semantic version parser used by npm.",
+  "devDependencies": {
+    "tap": "^14.3.1"
+  },
+  "files": [
+    "bin",
+    "range.bnf",
+    "semver.js"
+  ],
+  "homepage": "https://github.com/npm/node-semver#readme",
+  "license": "ISC",
+  "main": "semver.js",
+  "name": "semver",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/npm/node-semver.git"
+  },
+  "scripts": {
+    "postpublish": "git push origin --follow-tags",
+    "postversion": "npm publish",
+    "preversion": "npm test",
+    "test": "tap"
+  },
+  "tap": {
+    "check-coverage": true
+  },
+  "version": "6.3.0"
+}
diff --git a/setup-maven/node_modules/semver/range.bnf b/setup-maven/node_modules/semver/range.bnf
new file mode 100644
index 0000000..d4c6ae0
--- /dev/null
+++ b/setup-maven/node_modules/semver/range.bnf
@@ -0,0 +1,16 @@
+range-set  ::= range ( logical-or range ) *
+logical-or ::= ( ' ' ) * '||' ( ' ' ) *
+range      ::= hyphen | simple ( ' ' simple ) * | ''
+hyphen     ::= partial ' - ' partial
+simple     ::= primitive | partial | tilde | caret
+primitive  ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial
+partial    ::= xr ( '.' xr ( '.' xr qualifier ? )? )?
+xr         ::= 'x' | 'X' | '*' | nr
+nr         ::= '0' | [1-9] ( [0-9] ) *
+tilde      ::= '~' partial
+caret      ::= '^' partial
+qualifier  ::= ( '-' pre )? ( '+' build )?
+pre        ::= parts
+build      ::= parts
+parts      ::= part ( '.' part ) *
+part       ::= nr | [-0-9A-Za-z]+
diff --git a/setup-maven/node_modules/semver/semver.js b/setup-maven/node_modules/semver/semver.js
new file mode 100644
index 0000000..636fa43
--- /dev/null
+++ b/setup-maven/node_modules/semver/semver.js
@@ -0,0 +1,1596 @@
+exports = module.exports = SemVer
+
+var debug
+/* istanbul ignore next */
+if (typeof process === 'object' &&
+    process.env &&
+    process.env.NODE_DEBUG &&
+    /\bsemver\b/i.test(process.env.NODE_DEBUG)) {
+  debug = function () {
+    var args = Array.prototype.slice.call(arguments, 0)
+    args.unshift('SEMVER')
+    console.log.apply(console, args)
+  }
+} else {
+  debug = function () {}
+}
+
+// Note: this is the semver.org version of the spec that it implements
+// Not necessarily the package version of this code.
+exports.SEMVER_SPEC_VERSION = '2.0.0'
+
+var MAX_LENGTH = 256
+var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||
+  /* istanbul ignore next */ 9007199254740991
+
+// Max safe segment length for coercion.
+var MAX_SAFE_COMPONENT_LENGTH = 16
+
+// The actual regexps go on exports.re
+var re = exports.re = []
+var src = exports.src = []
+var t = exports.tokens = {}
+var R = 0
+
+function tok (n) {
+  t[n] = R++
+}
+
+// The following Regular Expressions can be used for tokenizing,
+// validating, and parsing SemVer version strings.
+
+// ## Numeric Identifier
+// A single `0`, or a non-zero digit followed by zero or more digits.
+
+tok('NUMERICIDENTIFIER')
+src[t.NUMERICIDENTIFIER] = '0|[1-9]\\d*'
+tok('NUMERICIDENTIFIERLOOSE')
+src[t.NUMERICIDENTIFIERLOOSE] = '[0-9]+'
+
+// ## Non-numeric Identifier
+// Zero or more digits, followed by a letter or hyphen, and then zero or
+// more letters, digits, or hyphens.
+
+tok('NONNUMERICIDENTIFIER')
+src[t.NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*'
+
+// ## Main Version
+// Three dot-separated numeric identifiers.
+
+tok('MAINVERSION')
+src[t.MAINVERSION] = '(' + src[t.NUMERICIDENTIFIER] + ')\\.' +
+                   '(' + src[t.NUMERICIDENTIFIER] + ')\\.' +
+                   '(' + src[t.NUMERICIDENTIFIER] + ')'
+
+tok('MAINVERSIONLOOSE')
+src[t.MAINVERSIONLOOSE] = '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' +
+                        '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' +
+                        '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')'
+
+// ## Pre-release Version Identifier
+// A numeric identifier, or a non-numeric identifier.
+
+tok('PRERELEASEIDENTIFIER')
+src[t.PRERELEASEIDENTIFIER] = '(?:' + src[t.NUMERICIDENTIFIER] +
+                            '|' + src[t.NONNUMERICIDENTIFIER] + ')'
+
+tok('PRERELEASEIDENTIFIERLOOSE')
+src[t.PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[t.NUMERICIDENTIFIERLOOSE] +
+                                 '|' + src[t.NONNUMERICIDENTIFIER] + ')'
+
+// ## Pre-release Version
+// Hyphen, followed by one or more dot-separated pre-release version
+// identifiers.
+
+tok('PRERELEASE')
+src[t.PRERELEASE] = '(?:-(' + src[t.PRERELEASEIDENTIFIER] +
+                  '(?:\\.' + src[t.PRERELEASEIDENTIFIER] + ')*))'
+
+tok('PRERELEASELOOSE')
+src[t.PRERELEASELOOSE] = '(?:-?(' + src[t.PRERELEASEIDENTIFIERLOOSE] +
+                       '(?:\\.' + src[t.PRERELEASEIDENTIFIERLOOSE] + ')*))'
+
+// ## Build Metadata Identifier
+// Any combination of digits, letters, or hyphens.
+
+tok('BUILDIDENTIFIER')
+src[t.BUILDIDENTIFIER] = '[0-9A-Za-z-]+'
+
+// ## Build Metadata
+// Plus sign, followed by one or more period-separated build metadata
+// identifiers.
+
+tok('BUILD')
+src[t.BUILD] = '(?:\\+(' + src[t.BUILDIDENTIFIER] +
+             '(?:\\.' + src[t.BUILDIDENTIFIER] + ')*))'
+
+// ## Full Version String
+// A main version, followed optionally by a pre-release version and
+// build metadata.
+
+// Note that the only major, minor, patch, and pre-release sections of
+// the version string are capturing groups.  The build metadata is not a
+// capturing group, because it should not ever be used in version
+// comparison.
+
+tok('FULL')
+tok('FULLPLAIN')
+src[t.FULLPLAIN] = 'v?' + src[t.MAINVERSION] +
+                  src[t.PRERELEASE] + '?' +
+                  src[t.BUILD] + '?'
+
+src[t.FULL] = '^' + src[t.FULLPLAIN] + '$'
+
+// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.
+// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty
+// common in the npm registry.
+tok('LOOSEPLAIN')
+src[t.LOOSEPLAIN] = '[v=\\s]*' + src[t.MAINVERSIONLOOSE] +
+                  src[t.PRERELEASELOOSE] + '?' +
+                  src[t.BUILD] + '?'
+
+tok('LOOSE')
+src[t.LOOSE] = '^' + src[t.LOOSEPLAIN] + '$'
+
+tok('GTLT')
+src[t.GTLT] = '((?:<|>)?=?)'
+
+// Something like "2.*" or "1.2.x".
+// Note that "x.x" is a valid xRange identifer, meaning "any version"
+// Only the first item is strictly required.
+tok('XRANGEIDENTIFIERLOOSE')
+src[t.XRANGEIDENTIFIERLOOSE] = src[t.NUMERICIDENTIFIERLOOSE] + '|x|X|\\*'
+tok('XRANGEIDENTIFIER')
+src[t.XRANGEIDENTIFIER] = src[t.NUMERICIDENTIFIER] + '|x|X|\\*'
+
+tok('XRANGEPLAIN')
+src[t.XRANGEPLAIN] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIER] + ')' +
+                   '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' +
+                   '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' +
+                   '(?:' + src[t.PRERELEASE] + ')?' +
+                   src[t.BUILD] + '?' +
+                   ')?)?'
+
+tok('XRANGEPLAINLOOSE')
+src[t.XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +
+                        '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +
+                        '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +
+                        '(?:' + src[t.PRERELEASELOOSE] + ')?' +
+                        src[t.BUILD] + '?' +
+                        ')?)?'
+
+tok('XRANGE')
+src[t.XRANGE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAIN] + '$'
+tok('XRANGELOOSE')
+src[t.XRANGELOOSE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAINLOOSE] + '$'
+
+// Coercion.
+// Extract anything that could conceivably be a part of a valid semver
+tok('COERCE')
+src[t.COERCE] = '(^|[^\\d])' +
+              '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' +
+              '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +
+              '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +
+              '(?:$|[^\\d])'
+tok('COERCERTL')
+re[t.COERCERTL] = new RegExp(src[t.COERCE], 'g')
+
+// Tilde ranges.
+// Meaning is "reasonably at or greater than"
+tok('LONETILDE')
+src[t.LONETILDE] = '(?:~>?)'
+
+tok('TILDETRIM')
+src[t.TILDETRIM] = '(\\s*)' + src[t.LONETILDE] + '\\s+'
+re[t.TILDETRIM] = new RegExp(src[t.TILDETRIM], 'g')
+var tildeTrimReplace = '$1~'
+
+tok('TILDE')
+src[t.TILDE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAIN] + '$'
+tok('TILDELOOSE')
+src[t.TILDELOOSE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAINLOOSE] + '$'
+
+// Caret ranges.
+// Meaning is "at least and backwards compatible with"
+tok('LONECARET')
+src[t.LONECARET] = '(?:\\^)'
+
+tok('CARETTRIM')
+src[t.CARETTRIM] = '(\\s*)' + src[t.LONECARET] + '\\s+'
+re[t.CARETTRIM] = new RegExp(src[t.CARETTRIM], 'g')
+var caretTrimReplace = '$1^'
+
+tok('CARET')
+src[t.CARET] = '^' + src[t.LONECARET] + src[t.XRANGEPLAIN] + '$'
+tok('CARETLOOSE')
+src[t.CARETLOOSE] = '^' + src[t.LONECARET] + src[t.XRANGEPLAINLOOSE] + '$'
+
+// A simple gt/lt/eq thing, or just "" to indicate "any version"
+tok('COMPARATORLOOSE')
+src[t.COMPARATORLOOSE] = '^' + src[t.GTLT] + '\\s*(' + src[t.LOOSEPLAIN] + ')$|^$'
+tok('COMPARATOR')
+src[t.COMPARATOR] = '^' + src[t.GTLT] + '\\s*(' + src[t.FULLPLAIN] + ')$|^$'
+
+// An expression to strip any whitespace between the gtlt and the thing
+// it modifies, so that `> 1.2.3` ==> `>1.2.3`
+tok('COMPARATORTRIM')
+src[t.COMPARATORTRIM] = '(\\s*)' + src[t.GTLT] +
+                      '\\s*(' + src[t.LOOSEPLAIN] + '|' + src[t.XRANGEPLAIN] + ')'
+
+// this one has to use the /g flag
+re[t.COMPARATORTRIM] = new RegExp(src[t.COMPARATORTRIM], 'g')
+var comparatorTrimReplace = '$1$2$3'
+
+// Something like `1.2.3 - 1.2.4`
+// Note that these all use the loose form, because they'll be
+// checked against either the strict or loose comparator form
+// later.
+tok('HYPHENRANGE')
+src[t.HYPHENRANGE] = '^\\s*(' + src[t.XRANGEPLAIN] + ')' +
+                   '\\s+-\\s+' +
+                   '(' + src[t.XRANGEPLAIN] + ')' +
+                   '\\s*$'
+
+tok('HYPHENRANGELOOSE')
+src[t.HYPHENRANGELOOSE] = '^\\s*(' + src[t.XRANGEPLAINLOOSE] + ')' +
+                        '\\s+-\\s+' +
+                        '(' + src[t.XRANGEPLAINLOOSE] + ')' +
+                        '\\s*$'
+
+// Star ranges basically just allow anything at all.
+tok('STAR')
+src[t.STAR] = '(<|>)?=?\\s*\\*'
+
+// Compile to actual regexp objects.
+// All are flag-free, unless they were created above with a flag.
+for (var i = 0; i < R; i++) {
+  debug(i, src[i])
+  if (!re[i]) {
+    re[i] = new RegExp(src[i])
+  }
+}
+
+exports.parse = parse
+function parse (version, options) {
+  if (!options || typeof options !== 'object') {
+    options = {
+      loose: !!options,
+      includePrerelease: false
+    }
+  }
+
+  if (version instanceof SemVer) {
+    return version
+  }
+
+  if (typeof version !== 'string') {
+    return null
+  }
+
+  if (version.length > MAX_LENGTH) {
+    return null
+  }
+
+  var r = options.loose ? re[t.LOOSE] : re[t.FULL]
+  if (!r.test(version)) {
+    return null
+  }
+
+  try {
+    return new SemVer(version, options)
+  } catch (er) {
+    return null
+  }
+}
+
+exports.valid = valid
+function valid (version, options) {
+  var v = parse(version, options)
+  return v ? v.version : null
+}
+
+exports.clean = clean
+function clean (version, options) {
+  var s = parse(version.trim().replace(/^[=v]+/, ''), options)
+  return s ? s.version : null
+}
+
+exports.SemVer = SemVer
+
+function SemVer (version, options) {
+  if (!options || typeof options !== 'object') {
+    options = {
+      loose: !!options,
+      includePrerelease: false
+    }
+  }
+  if (version instanceof SemVer) {
+    if (version.loose === options.loose) {
+      return version
+    } else {
+      version = version.version
+    }
+  } else if (typeof version !== 'string') {
+    throw new TypeError('Invalid Version: ' + version)
+  }
+
+  if (version.length > MAX_LENGTH) {
+    throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')
+  }
+
+  if (!(this instanceof SemVer)) {
+    return new SemVer(version, options)
+  }
+
+  debug('SemVer', version, options)
+  this.options = options
+  this.loose = !!options.loose
+
+  var m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])
+
+  if (!m) {
+    throw new TypeError('Invalid Version: ' + version)
+  }
+
+  this.raw = version
+
+  // these are actually numbers
+  this.major = +m[1]
+  this.minor = +m[2]
+  this.patch = +m[3]
+
+  if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
+    throw new TypeError('Invalid major version')
+  }
+
+  if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
+    throw new TypeError('Invalid minor version')
+  }
+
+  if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
+    throw new TypeError('Invalid patch version')
+  }
+
+  // numberify any prerelease numeric ids
+  if (!m[4]) {
+    this.prerelease = []
+  } else {
+    this.prerelease = m[4].split('.').map(function (id) {
+      if (/^[0-9]+$/.test(id)) {
+        var num = +id
+        if (num >= 0 && num < MAX_SAFE_INTEGER) {
+          return num
+        }
+      }
+      return id
+    })
+  }
+
+  this.build = m[5] ? m[5].split('.') : []
+  this.format()
+}
+
+SemVer.prototype.format = function () {
+  this.version = this.major + '.' + this.minor + '.' + this.patch
+  if (this.prerelease.length) {
+    this.version += '-' + this.prerelease.join('.')
+  }
+  return this.version
+}
+
+SemVer.prototype.toString = function () {
+  return this.version
+}
+
+SemVer.prototype.compare = function (other) {
+  debug('SemVer.compare', this.version, this.options, other)
+  if (!(other instanceof SemVer)) {
+    other = new SemVer(other, this.options)
+  }
+
+  return this.compareMain(other) || this.comparePre(other)
+}
+
+SemVer.prototype.compareMain = function (other) {
+  if (!(other instanceof SemVer)) {
+    other = new SemVer(other, this.options)
+  }
+
+  return compareIdentifiers(this.major, other.major) ||
+         compareIdentifiers(this.minor, other.minor) ||
+         compareIdentifiers(this.patch, other.patch)
+}
+
+SemVer.prototype.comparePre = function (other) {
+  if (!(other instanceof SemVer)) {
+    other = new SemVer(other, this.options)
+  }
+
+  // NOT having a prerelease is > having one
+  if (this.prerelease.length && !other.prerelease.length) {
+    return -1
+  } else if (!this.prerelease.length && other.prerelease.length) {
+    return 1
+  } else if (!this.prerelease.length && !other.prerelease.length) {
+    return 0
+  }
+
+  var i = 0
+  do {
+    var a = this.prerelease[i]
+    var b = other.prerelease[i]
+    debug('prerelease compare', i, a, b)
+    if (a === undefined && b === undefined) {
+      return 0
+    } else if (b === undefined) {
+      return 1
+    } else if (a === undefined) {
+      return -1
+    } else if (a === b) {
+      continue
+    } else {
+      return compareIdentifiers(a, b)
+    }
+  } while (++i)
+}
+
+SemVer.prototype.compareBuild = function (other) {
+  if (!(other instanceof SemVer)) {
+    other = new SemVer(other, this.options)
+  }
+
+  var i = 0
+  do {
+    var a = this.build[i]
+    var b = other.build[i]
+    debug('prerelease compare', i, a, b)
+    if (a === undefined && b === undefined) {
+      return 0
+    } else if (b === undefined) {
+      return 1
+    } else if (a === undefined) {
+      return -1
+    } else if (a === b) {
+      continue
+    } else {
+      return compareIdentifiers(a, b)
+    }
+  } while (++i)
+}
+
+// preminor will bump the version up to the next minor release, and immediately
+// down to pre-release. premajor and prepatch work the same way.
+SemVer.prototype.inc = function (release, identifier) {
+  switch (release) {
+    case 'premajor':
+      this.prerelease.length = 0
+      this.patch = 0
+      this.minor = 0
+      this.major++
+      this.inc('pre', identifier)
+      break
+    case 'preminor':
+      this.prerelease.length = 0
+      this.patch = 0
+      this.minor++
+      this.inc('pre', identifier)
+      break
+    case 'prepatch':
+      // If this is already a prerelease, it will bump to the next version
+      // drop any prereleases that might already exist, since they are not
+      // relevant at this point.
+      this.prerelease.length = 0
+      this.inc('patch', identifier)
+      this.inc('pre', identifier)
+      break
+    // If the input is a non-prerelease version, this acts the same as
+    // prepatch.
+    case 'prerelease':
+      if (this.prerelease.length === 0) {
+        this.inc('patch', identifier)
+      }
+      this.inc('pre', identifier)
+      break
+
+    case 'major':
+      // If this is a pre-major version, bump up to the same major version.
+      // Otherwise increment major.
+      // 1.0.0-5 bumps to 1.0.0
+      // 1.1.0 bumps to 2.0.0
+      if (this.minor !== 0 ||
+          this.patch !== 0 ||
+          this.prerelease.length === 0) {
+        this.major++
+      }
+      this.minor = 0
+      this.patch = 0
+      this.prerelease = []
+      break
+    case 'minor':
+      // If this is a pre-minor version, bump up to the same minor version.
+      // Otherwise increment minor.
+      // 1.2.0-5 bumps to 1.2.0
+      // 1.2.1 bumps to 1.3.0
+      if (this.patch !== 0 || this.prerelease.length === 0) {
+        this.minor++
+      }
+      this.patch = 0
+      this.prerelease = []
+      break
+    case 'patch':
+      // If this is not a pre-release version, it will increment the patch.
+      // If it is a pre-release it will bump up to the same patch version.
+      // 1.2.0-5 patches to 1.2.0
+      // 1.2.0 patches to 1.2.1
+      if (this.prerelease.length === 0) {
+        this.patch++
+      }
+      this.prerelease = []
+      break
+    // This probably shouldn't be used publicly.
+    // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction.
+    case 'pre':
+      if (this.prerelease.length === 0) {
+        this.prerelease = [0]
+      } else {
+        var i = this.prerelease.length
+        while (--i >= 0) {
+          if (typeof this.prerelease[i] === 'number') {
+            this.prerelease[i]++
+            i = -2
+          }
+        }
+        if (i === -1) {
+          // didn't increment anything
+          this.prerelease.push(0)
+        }
+      }
+      if (identifier) {
+        // 1.2.0-beta.1 bumps to 1.2.0-beta.2,
+        // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
+        if (this.prerelease[0] === identifier) {
+          if (isNaN(this.prerelease[1])) {
+            this.prerelease = [identifier, 0]
+          }
+        } else {
+          this.prerelease = [identifier, 0]
+        }
+      }
+      break
+
+    default:
+      throw new Error('invalid increment argument: ' + release)
+  }
+  this.format()
+  this.raw = this.version
+  return this
+}
+
+exports.inc = inc
+function inc (version, release, loose, identifier) {
+  if (typeof (loose) === 'string') {
+    identifier = loose
+    loose = undefined
+  }
+
+  try {
+    return new SemVer(version, loose).inc(release, identifier).version
+  } catch (er) {
+    return null
+  }
+}
+
+exports.diff = diff
+function diff (version1, version2) {
+  if (eq(version1, version2)) {
+    return null
+  } else {
+    var v1 = parse(version1)
+    var v2 = parse(version2)
+    var prefix = ''
+    if (v1.prerelease.length || v2.prerelease.length) {
+      prefix = 'pre'
+      var defaultResult = 'prerelease'
+    }
+    for (var key in v1) {
+      if (key === 'major' || key === 'minor' || key === 'patch') {
+        if (v1[key] !== v2[key]) {
+          return prefix + key
+        }
+      }
+    }
+    return defaultResult // may be undefined
+  }
+}
+
+exports.compareIdentifiers = compareIdentifiers
+
+var numeric = /^[0-9]+$/
+function compareIdentifiers (a, b) {
+  var anum = numeric.test(a)
+  var bnum = numeric.test(b)
+
+  if (anum && bnum) {
+    a = +a
+    b = +b
+  }
+
+  return a === b ? 0
+    : (anum && !bnum) ? -1
+    : (bnum && !anum) ? 1
+    : a < b ? -1
+    : 1
+}
+
+exports.rcompareIdentifiers = rcompareIdentifiers
+function rcompareIdentifiers (a, b) {
+  return compareIdentifiers(b, a)
+}
+
+exports.major = major
+function major (a, loose) {
+  return new SemVer(a, loose).major
+}
+
+exports.minor = minor
+function minor (a, loose) {
+  return new SemVer(a, loose).minor
+}
+
+exports.patch = patch
+function patch (a, loose) {
+  return new SemVer(a, loose).patch
+}
+
+exports.compare = compare
+function compare (a, b, loose) {
+  return new SemVer(a, loose).compare(new SemVer(b, loose))
+}
+
+exports.compareLoose = compareLoose
+function compareLoose (a, b) {
+  return compare(a, b, true)
+}
+
+exports.compareBuild = compareBuild
+function compareBuild (a, b, loose) {
+  var versionA = new SemVer(a, loose)
+  var versionB = new SemVer(b, loose)
+  return versionA.compare(versionB) || versionA.compareBuild(versionB)
+}
+
+exports.rcompare = rcompare
+function rcompare (a, b, loose) {
+  return compare(b, a, loose)
+}
+
+exports.sort = sort
+function sort (list, loose) {
+  return list.sort(function (a, b) {
+    return exports.compareBuild(a, b, loose)
+  })
+}
+
+exports.rsort = rsort
+function rsort (list, loose) {
+  return list.sort(function (a, b) {
+    return exports.compareBuild(b, a, loose)
+  })
+}
+
+exports.gt = gt
+function gt (a, b, loose) {
+  return compare(a, b, loose) > 0
+}
+
+exports.lt = lt
+function lt (a, b, loose) {
+  return compare(a, b, loose) < 0
+}
+
+exports.eq = eq
+function eq (a, b, loose) {
+  return compare(a, b, loose) === 0
+}
+
+exports.neq = neq
+function neq (a, b, loose) {
+  return compare(a, b, loose) !== 0
+}
+
+exports.gte = gte
+function gte (a, b, loose) {
+  return compare(a, b, loose) >= 0
+}
+
+exports.lte = lte
+function lte (a, b, loose) {
+  return compare(a, b, loose) <= 0
+}
+
+exports.cmp = cmp
+function cmp (a, op, b, loose) {
+  switch (op) {
+    case '===':
+      if (typeof a === 'object')
+        a = a.version
+      if (typeof b === 'object')
+        b = b.version
+      return a === b
+
+    case '!==':
+      if (typeof a === 'object')
+        a = a.version
+      if (typeof b === 'object')
+        b = b.version
+      return a !== b
+
+    case '':
+    case '=':
+    case '==':
+      return eq(a, b, loose)
+
+    case '!=':
+      return neq(a, b, loose)
+
+    case '>':
+      return gt(a, b, loose)
+
+    case '>=':
+      return gte(a, b, loose)
+
+    case '<':
+      return lt(a, b, loose)
+
+    case '<=':
+      return lte(a, b, loose)
+
+    default:
+      throw new TypeError('Invalid operator: ' + op)
+  }
+}
+
+exports.Comparator = Comparator
+function Comparator (comp, options) {
+  if (!options || typeof options !== 'object') {
+    options = {
+      loose: !!options,
+      includePrerelease: false
+    }
+  }
+
+  if (comp instanceof Comparator) {
+    if (comp.loose === !!options.loose) {
+      return comp
+    } else {
+      comp = comp.value
+    }
+  }
+
+  if (!(this instanceof Comparator)) {
+    return new Comparator(comp, options)
+  }
+
+  debug('comparator', comp, options)
+  this.options = options
+  this.loose = !!options.loose
+  this.parse(comp)
+
+  if (this.semver === ANY) {
+    this.value = ''
+  } else {
+    this.value = this.operator + this.semver.version
+  }
+
+  debug('comp', this)
+}
+
+var ANY = {}
+Comparator.prototype.parse = function (comp) {
+  var r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]
+  var m = comp.match(r)
+
+  if (!m) {
+    throw new TypeError('Invalid comparator: ' + comp)
+  }
+
+  this.operator = m[1] !== undefined ? m[1] : ''
+  if (this.operator === '=') {
+    this.operator = ''
+  }
+
+  // if it literally is just '>' or '' then allow anything.
+  if (!m[2]) {
+    this.semver = ANY
+  } else {
+    this.semver = new SemVer(m[2], this.options.loose)
+  }
+}
+
+Comparator.prototype.toString = function () {
+  return this.value
+}
+
+Comparator.prototype.test = function (version) {
+  debug('Comparator.test', version, this.options.loose)
+
+  if (this.semver === ANY || version === ANY) {
+    return true
+  }
+
+  if (typeof version === 'string') {
+    try {
+      version = new SemVer(version, this.options)
+    } catch (er) {
+      return false
+    }
+  }
+
+  return cmp(version, this.operator, this.semver, this.options)
+}
+
+Comparator.prototype.intersects = function (comp, options) {
+  if (!(comp instanceof Comparator)) {
+    throw new TypeError('a Comparator is required')
+  }
+
+  if (!options || typeof options !== 'object') {
+    options = {
+      loose: !!options,
+      includePrerelease: false
+    }
+  }
+
+  var rangeTmp
+
+  if (this.operator === '') {
+    if (this.value === '') {
+      return true
+    }
+    rangeTmp = new Range(comp.value, options)
+    return satisfies(this.value, rangeTmp, options)
+  } else if (comp.operator === '') {
+    if (comp.value === '') {
+      return true
+    }
+    rangeTmp = new Range(this.value, options)
+    return satisfies(comp.semver, rangeTmp, options)
+  }
+
+  var sameDirectionIncreasing =
+    (this.operator === '>=' || this.operator === '>') &&
+    (comp.operator === '>=' || comp.operator === '>')
+  var sameDirectionDecreasing =
+    (this.operator === '<=' || this.operator === '<') &&
+    (comp.operator === '<=' || comp.operator === '<')
+  var sameSemVer = this.semver.version === comp.semver.version
+  var differentDirectionsInclusive =
+    (this.operator === '>=' || this.operator === '<=') &&
+    (comp.operator === '>=' || comp.operator === '<=')
+  var oppositeDirectionsLessThan =
+    cmp(this.semver, '<', comp.semver, options) &&
+    ((this.operator === '>=' || this.operator === '>') &&
+    (comp.operator === '<=' || comp.operator === '<'))
+  var oppositeDirectionsGreaterThan =
+    cmp(this.semver, '>', comp.semver, options) &&
+    ((this.operator === '<=' || this.operator === '<') &&
+    (comp.operator === '>=' || comp.operator === '>'))
+
+  return sameDirectionIncreasing || sameDirectionDecreasing ||
+    (sameSemVer && differentDirectionsInclusive) ||
+    oppositeDirectionsLessThan || oppositeDirectionsGreaterThan
+}
+
+exports.Range = Range
+function Range (range, options) {
+  if (!options || typeof options !== 'object') {
+    options = {
+      loose: !!options,
+      includePrerelease: false
+    }
+  }
+
+  if (range instanceof Range) {
+    if (range.loose === !!options.loose &&
+        range.includePrerelease === !!options.includePrerelease) {
+      return range
+    } else {
+      return new Range(range.raw, options)
+    }
+  }
+
+  if (range instanceof Comparator) {
+    return new Range(range.value, options)
+  }
+
+  if (!(this instanceof Range)) {
+    return new Range(range, options)
+  }
+
+  this.options = options
+  this.loose = !!options.loose
+  this.includePrerelease = !!options.includePrerelease
+
+  // First, split based on boolean or ||
+  this.raw = range
+  this.set = range.split(/\s*\|\|\s*/).map(function (range) {
+    return this.parseRange(range.trim())
+  }, this).filter(function (c) {
+    // throw out any that are not relevant for whatever reason
+    return c.length
+  })
+
+  if (!this.set.length) {
+    throw new TypeError('Invalid SemVer Range: ' + range)
+  }
+
+  this.format()
+}
+
+Range.prototype.format = function () {
+  this.range = this.set.map(function (comps) {
+    return comps.join(' ').trim()
+  }).join('||').trim()
+  return this.range
+}
+
+Range.prototype.toString = function () {
+  return this.range
+}
+
+Range.prototype.parseRange = function (range) {
+  var loose = this.options.loose
+  range = range.trim()
+  // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`
+  var hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]
+  range = range.replace(hr, hyphenReplace)
+  debug('hyphen replace', range)
+  // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`
+  range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)
+  debug('comparator trim', range, re[t.COMPARATORTRIM])
+
+  // `~ 1.2.3` => `~1.2.3`
+  range = range.replace(re[t.TILDETRIM], tildeTrimReplace)
+
+  // `^ 1.2.3` => `^1.2.3`
+  range = range.replace(re[t.CARETTRIM], caretTrimReplace)
+
+  // normalize spaces
+  range = range.split(/\s+/).join(' ')
+
+  // At this point, the range is completely trimmed and
+  // ready to be split into comparators.
+
+  var compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]
+  var set = range.split(' ').map(function (comp) {
+    return parseComparator(comp, this.options)
+  }, this).join(' ').split(/\s+/)
+  if (this.options.loose) {
+    // in loose mode, throw out any that are not valid comparators
+    set = set.filter(function (comp) {
+      return !!comp.match(compRe)
+    })
+  }
+  set = set.map(function (comp) {
+    return new Comparator(comp, this.options)
+  }, this)
+
+  return set
+}
+
+Range.prototype.intersects = function (range, options) {
+  if (!(range instanceof Range)) {
+    throw new TypeError('a Range is required')
+  }
+
+  return this.set.some(function (thisComparators) {
+    return (
+      isSatisfiable(thisComparators, options) &&
+      range.set.some(function (rangeComparators) {
+        return (
+          isSatisfiable(rangeComparators, options) &&
+          thisComparators.every(function (thisComparator) {
+            return rangeComparators.every(function (rangeComparator) {
+              return thisComparator.intersects(rangeComparator, options)
+            })
+          })
+        )
+      })
+    )
+  })
+}
+
+// take a set of comparators and determine whether there
+// exists a version which can satisfy it
+function isSatisfiable (comparators, options) {
+  var result = true
+  var remainingComparators = comparators.slice()
+  var testComparator = remainingComparators.pop()
+
+  while (result && remainingComparators.length) {
+    result = remainingComparators.every(function (otherComparator) {
+      return testComparator.intersects(otherComparator, options)
+    })
+
+    testComparator = remainingComparators.pop()
+  }
+
+  return result
+}
+
+// Mostly just for testing and legacy API reasons
+exports.toComparators = toComparators
+function toComparators (range, options) {
+  return new Range(range, options).set.map(function (comp) {
+    return comp.map(function (c) {
+      return c.value
+    }).join(' ').trim().split(' ')
+  })
+}
+
+// comprised of xranges, tildes, stars, and gtlt's at this point.
+// already replaced the hyphen ranges
+// turn into a set of JUST comparators.
+function parseComparator (comp, options) {
+  debug('comp', comp, options)
+  comp = replaceCarets(comp, options)
+  debug('caret', comp)
+  comp = replaceTildes(comp, options)
+  debug('tildes', comp)
+  comp = replaceXRanges(comp, options)
+  debug('xrange', comp)
+  comp = replaceStars(comp, options)
+  debug('stars', comp)
+  return comp
+}
+
+function isX (id) {
+  return !id || id.toLowerCase() === 'x' || id === '*'
+}
+
+// ~, ~> --> * (any, kinda silly)
+// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0
+// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0
+// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0
+// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0
+// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0
+function replaceTildes (comp, options) {
+  return comp.trim().split(/\s+/).map(function (comp) {
+    return replaceTilde(comp, options)
+  }).join(' ')
+}
+
+function replaceTilde (comp, options) {
+  var r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]
+  return comp.replace(r, function (_, M, m, p, pr) {
+    debug('tilde', comp, _, M, m, p, pr)
+    var ret
+
+    if (isX(M)) {
+      ret = ''
+    } else if (isX(m)) {
+      ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
+    } else if (isX(p)) {
+      // ~1.2 == >=1.2.0 <1.3.0
+      ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
+    } else if (pr) {
+      debug('replaceTilde pr', pr)
+      ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
+            ' <' + M + '.' + (+m + 1) + '.0'
+    } else {
+      // ~1.2.3 == >=1.2.3 <1.3.0
+      ret = '>=' + M + '.' + m + '.' + p +
+            ' <' + M + '.' + (+m + 1) + '.0'
+    }
+
+    debug('tilde return', ret)
+    return ret
+  })
+}
+
+// ^ --> * (any, kinda silly)
+// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0
+// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0
+// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0
+// ^1.2.3 --> >=1.2.3 <2.0.0
+// ^1.2.0 --> >=1.2.0 <2.0.0
+function replaceCarets (comp, options) {
+  return comp.trim().split(/\s+/).map(function (comp) {
+    return replaceCaret(comp, options)
+  }).join(' ')
+}
+
+function replaceCaret (comp, options) {
+  debug('caret', comp, options)
+  var r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]
+  return comp.replace(r, function (_, M, m, p, pr) {
+    debug('caret', comp, _, M, m, p, pr)
+    var ret
+
+    if (isX(M)) {
+      ret = ''
+    } else if (isX(m)) {
+      ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
+    } else if (isX(p)) {
+      if (M === '0') {
+        ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
+      } else {
+        ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'
+      }
+    } else if (pr) {
+      debug('replaceCaret pr', pr)
+      if (M === '0') {
+        if (m === '0') {
+          ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
+                ' <' + M + '.' + m + '.' + (+p + 1)
+        } else {
+          ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
+                ' <' + M + '.' + (+m + 1) + '.0'
+        }
+      } else {
+        ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
+              ' <' + (+M + 1) + '.0.0'
+      }
+    } else {
+      debug('no pr')
+      if (M === '0') {
+        if (m === '0') {
+          ret = '>=' + M + '.' + m + '.' + p +
+                ' <' + M + '.' + m + '.' + (+p + 1)
+        } else {
+          ret = '>=' + M + '.' + m + '.' + p +
+                ' <' + M + '.' + (+m + 1) + '.0'
+        }
+      } else {
+        ret = '>=' + M + '.' + m + '.' + p +
+              ' <' + (+M + 1) + '.0.0'
+      }
+    }
+
+    debug('caret return', ret)
+    return ret
+  })
+}
+
+function replaceXRanges (comp, options) {
+  debug('replaceXRanges', comp, options)
+  return comp.split(/\s+/).map(function (comp) {
+    return replaceXRange(comp, options)
+  }).join(' ')
+}
+
+function replaceXRange (comp, options) {
+  comp = comp.trim()
+  var r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]
+  return comp.replace(r, function (ret, gtlt, M, m, p, pr) {
+    debug('xRange', comp, ret, gtlt, M, m, p, pr)
+    var xM = isX(M)
+    var xm = xM || isX(m)
+    var xp = xm || isX(p)
+    var anyX = xp
+
+    if (gtlt === '=' && anyX) {
+      gtlt = ''
+    }
+
+    // if we're including prereleases in the match, then we need
+    // to fix this to -0, the lowest possible prerelease value
+    pr = options.includePrerelease ? '-0' : ''
+
+    if (xM) {
+      if (gtlt === '>' || gtlt === '<') {
+        // nothing is allowed
+        ret = '<0.0.0-0'
+      } else {
+        // nothing is forbidden
+        ret = '*'
+      }
+    } else if (gtlt && anyX) {
+      // we know patch is an x, because we have any x at all.
+      // replace X with 0
+      if (xm) {
+        m = 0
+      }
+      p = 0
+
+      if (gtlt === '>') {
+        // >1 => >=2.0.0
+        // >1.2 => >=1.3.0
+        // >1.2.3 => >= 1.2.4
+        gtlt = '>='
+        if (xm) {
+          M = +M + 1
+          m = 0
+          p = 0
+        } else {
+          m = +m + 1
+          p = 0
+        }
+      } else if (gtlt === '<=') {
+        // <=0.7.x is actually <0.8.0, since any 0.7.x should
+        // pass.  Similarly, <=7.x is actually <8.0.0, etc.
+        gtlt = '<'
+        if (xm) {
+          M = +M + 1
+        } else {
+          m = +m + 1
+        }
+      }
+
+      ret = gtlt + M + '.' + m + '.' + p + pr
+    } else if (xm) {
+      ret = '>=' + M + '.0.0' + pr + ' <' + (+M + 1) + '.0.0' + pr
+    } else if (xp) {
+      ret = '>=' + M + '.' + m + '.0' + pr +
+        ' <' + M + '.' + (+m + 1) + '.0' + pr
+    }
+
+    debug('xRange return', ret)
+
+    return ret
+  })
+}
+
+// Because * is AND-ed with everything else in the comparator,
+// and '' means "any version", just remove the *s entirely.
+function replaceStars (comp, options) {
+  debug('replaceStars', comp, options)
+  // Looseness is ignored here.  star is always as loose as it gets!
+  return comp.trim().replace(re[t.STAR], '')
+}
+
+// This function is passed to string.replace(re[t.HYPHENRANGE])
+// M, m, patch, prerelease, build
+// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5
+// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do
+// 1.2 - 3.4 => >=1.2.0 <3.5.0
+function hyphenReplace ($0,
+  from, fM, fm, fp, fpr, fb,
+  to, tM, tm, tp, tpr, tb) {
+  if (isX(fM)) {
+    from = ''
+  } else if (isX(fm)) {
+    from = '>=' + fM + '.0.0'
+  } else if (isX(fp)) {
+    from = '>=' + fM + '.' + fm + '.0'
+  } else {
+    from = '>=' + from
+  }
+
+  if (isX(tM)) {
+    to = ''
+  } else if (isX(tm)) {
+    to = '<' + (+tM + 1) + '.0.0'
+  } else if (isX(tp)) {
+    to = '<' + tM + '.' + (+tm + 1) + '.0'
+  } else if (tpr) {
+    to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr
+  } else {
+    to = '<=' + to
+  }
+
+  return (from + ' ' + to).trim()
+}
+
+// if ANY of the sets match ALL of its comparators, then pass
+Range.prototype.test = function (version) {
+  if (!version) {
+    return false
+  }
+
+  if (typeof version === 'string') {
+    try {
+      version = new SemVer(version, this.options)
+    } catch (er) {
+      return false
+    }
+  }
+
+  for (var i = 0; i < this.set.length; i++) {
+    if (testSet(this.set[i], version, this.options)) {
+      return true
+    }
+  }
+  return false
+}
+
+function testSet (set, version, options) {
+  for (var i = 0; i < set.length; i++) {
+    if (!set[i].test(version)) {
+      return false
+    }
+  }
+
+  if (version.prerelease.length && !options.includePrerelease) {
+    // Find the set of versions that are allowed to have prereleases
+    // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0
+    // That should allow `1.2.3-pr.2` to pass.
+    // However, `1.2.4-alpha.notready` should NOT be allowed,
+    // even though it's within the range set by the comparators.
+    for (i = 0; i < set.length; i++) {
+      debug(set[i].semver)
+      if (set[i].semver === ANY) {
+        continue
+      }
+
+      if (set[i].semver.prerelease.length > 0) {
+        var allowed = set[i].semver
+        if (allowed.major === version.major &&
+            allowed.minor === version.minor &&
+            allowed.patch === version.patch) {
+          return true
+        }
+      }
+    }
+
+    // Version has a -pre, but it's not one of the ones we like.
+    return false
+  }
+
+  return true
+}
+
+exports.satisfies = satisfies
+function satisfies (version, range, options) {
+  try {
+    range = new Range(range, options)
+  } catch (er) {
+    return false
+  }
+  return range.test(version)
+}
+
+exports.maxSatisfying = maxSatisfying
+function maxSatisfying (versions, range, options) {
+  var max = null
+  var maxSV = null
+  try {
+    var rangeObj = new Range(range, options)
+  } catch (er) {
+    return null
+  }
+  versions.forEach(function (v) {
+    if (rangeObj.test(v)) {
+      // satisfies(v, range, options)
+      if (!max || maxSV.compare(v) === -1) {
+        // compare(max, v, true)
+        max = v
+        maxSV = new SemVer(max, options)
+      }
+    }
+  })
+  return max
+}
+
+exports.minSatisfying = minSatisfying
+function minSatisfying (versions, range, options) {
+  var min = null
+  var minSV = null
+  try {
+    var rangeObj = new Range(range, options)
+  } catch (er) {
+    return null
+  }
+  versions.forEach(function (v) {
+    if (rangeObj.test(v)) {
+      // satisfies(v, range, options)
+      if (!min || minSV.compare(v) === 1) {
+        // compare(min, v, true)
+        min = v
+        minSV = new SemVer(min, options)
+      }
+    }
+  })
+  return min
+}
+
+exports.minVersion = minVersion
+function minVersion (range, loose) {
+  range = new Range(range, loose)
+
+  var minver = new SemVer('0.0.0')
+  if (range.test(minver)) {
+    return minver
+  }
+
+  minver = new SemVer('0.0.0-0')
+  if (range.test(minver)) {
+    return minver
+  }
+
+  minver = null
+  for (var i = 0; i < range.set.length; ++i) {
+    var comparators = range.set[i]
+
+    comparators.forEach(function (comparator) {
+      // Clone to avoid manipulating the comparator's semver object.
+      var compver = new SemVer(comparator.semver.version)
+      switch (comparator.operator) {
+        case '>':
+          if (compver.prerelease.length === 0) {
+            compver.patch++
+          } else {
+            compver.prerelease.push(0)
+          }
+          compver.raw = compver.format()
+          /* fallthrough */
+        case '':
+        case '>=':
+          if (!minver || gt(minver, compver)) {
+            minver = compver
+          }
+          break
+        case '<':
+        case '<=':
+          /* Ignore maximum versions */
+          break
+        /* istanbul ignore next */
+        default:
+          throw new Error('Unexpected operation: ' + comparator.operator)
+      }
+    })
+  }
+
+  if (minver && range.test(minver)) {
+    return minver
+  }
+
+  return null
+}
+
+exports.validRange = validRange
+function validRange (range, options) {
+  try {
+    // Return '*' instead of '' so that truthiness works.
+    // This will throw if it's invalid anyway
+    return new Range(range, options).range || '*'
+  } catch (er) {
+    return null
+  }
+}
+
+// Determine if version is less than all the versions possible in the range
+exports.ltr = ltr
+function ltr (version, range, options) {
+  return outside(version, range, '<', options)
+}
+
+// Determine if version is greater than all the versions possible in the range.
+exports.gtr = gtr
+function gtr (version, range, options) {
+  return outside(version, range, '>', options)
+}
+
+exports.outside = outside
+function outside (version, range, hilo, options) {
+  version = new SemVer(version, options)
+  range = new Range(range, options)
+
+  var gtfn, ltefn, ltfn, comp, ecomp
+  switch (hilo) {
+    case '>':
+      gtfn = gt
+      ltefn = lte
+      ltfn = lt
+      comp = '>'
+      ecomp = '>='
+      break
+    case '<':
+      gtfn = lt
+      ltefn = gte
+      ltfn = gt
+      comp = '<'
+      ecomp = '<='
+      break
+    default:
+      throw new TypeError('Must provide a hilo val of "<" or ">"')
+  }
+
+  // If it satisifes the range it is not outside
+  if (satisfies(version, range, options)) {
+    return false
+  }
+
+  // From now on, variable terms are as if we're in "gtr" mode.
+  // but note that everything is flipped for the "ltr" function.
+
+  for (var i = 0; i < range.set.length; ++i) {
+    var comparators = range.set[i]
+
+    var high = null
+    var low = null
+
+    comparators.forEach(function (comparator) {
+      if (comparator.semver === ANY) {
+        comparator = new Comparator('>=0.0.0')
+      }
+      high = high || comparator
+      low = low || comparator
+      if (gtfn(comparator.semver, high.semver, options)) {
+        high = comparator
+      } else if (ltfn(comparator.semver, low.semver, options)) {
+        low = comparator
+      }
+    })
+
+    // If the edge version comparator has a operator then our version
+    // isn't outside it
+    if (high.operator === comp || high.operator === ecomp) {
+      return false
+    }
+
+    // If the lowest version comparator has an operator and our version
+    // is less than it then it isn't higher than the range
+    if ((!low.operator || low.operator === comp) &&
+        ltefn(version, low.semver)) {
+      return false
+    } else if (low.operator === ecomp && ltfn(version, low.semver)) {
+      return false
+    }
+  }
+  return true
+}
+
+exports.prerelease = prerelease
+function prerelease (version, options) {
+  var parsed = parse(version, options)
+  return (parsed && parsed.prerelease.length) ? parsed.prerelease : null
+}
+
+exports.intersects = intersects
+function intersects (r1, r2, options) {
+  r1 = new Range(r1, options)
+  r2 = new Range(r2, options)
+  return r1.intersects(r2)
+}
+
+exports.coerce = coerce
+function coerce (version, options) {
+  if (version instanceof SemVer) {
+    return version
+  }
+
+  if (typeof version === 'number') {
+    version = String(version)
+  }
+
+  if (typeof version !== 'string') {
+    return null
+  }
+
+  options = options || {}
+
+  var match = null
+  if (!options.rtl) {
+    match = version.match(re[t.COERCE])
+  } else {
+    // Find the right-most coercible string that does not share
+    // a terminus with a more left-ward coercible string.
+    // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'
+    //
+    // Walk through the string checking with a /g regexp
+    // Manually set the index so as to pick up overlapping matches.
+    // Stop when we get a match that ends at the string end, since no
+    // coercible string can be more right-ward without the same terminus.
+    var next
+    while ((next = re[t.COERCERTL].exec(version)) &&
+      (!match || match.index + match[0].length !== version.length)
+    ) {
+      if (!match ||
+          next.index + next[0].length !== match.index + match[0].length) {
+        match = next
+      }
+      re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length
+    }
+    // leave it in a clean state
+    re[t.COERCERTL].lastIndex = -1
+  }
+
+  if (match === null) {
+    return null
+  }
+
+  return parse(match[2] +
+    '.' + (match[3] || '0') +
+    '.' + (match[4] || '0'), options)
+}
diff --git a/setup-maven/node_modules/shebang-command/index.js b/setup-maven/node_modules/shebang-command/index.js
new file mode 100644
index 0000000..2de70b0
--- /dev/null
+++ b/setup-maven/node_modules/shebang-command/index.js
@@ -0,0 +1,19 @@
+'use strict';
+var shebangRegex = require('shebang-regex');
+
+module.exports = function (str) {
+	var match = str.match(shebangRegex);
+
+	if (!match) {
+		return null;
+	}
+
+	var arr = match[0].replace(/#! ?/, '').split(' ');
+	var bin = arr[0].split('/').pop();
+	var arg = arr[1];
+
+	return (bin === 'env' ?
+		arg :
+		bin + (arg ? ' ' + arg : '')
+	);
+};
diff --git a/setup-maven/node_modules/shebang-command/license b/setup-maven/node_modules/shebang-command/license
new file mode 100644
index 0000000..0f8cf79
--- /dev/null
+++ b/setup-maven/node_modules/shebang-command/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Kevin Martensson <kevinmartensson@gmail.com> (github.com/kevva)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/setup-maven/node_modules/shebang-command/package.json b/setup-maven/node_modules/shebang-command/package.json
new file mode 100644
index 0000000..1ce1add
--- /dev/null
+++ b/setup-maven/node_modules/shebang-command/package.json
@@ -0,0 +1,71 @@
+{
+  "_from": "shebang-command@^1.2.0",
+  "_id": "shebang-command@1.2.0",
+  "_inBundle": false,
+  "_integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+  "_location": "/shebang-command",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "shebang-command@^1.2.0",
+    "name": "shebang-command",
+    "escapedName": "shebang-command",
+    "rawSpec": "^1.2.0",
+    "saveSpec": null,
+    "fetchSpec": "^1.2.0"
+  },
+  "_requiredBy": [
+    "/cross-spawn"
+  ],
+  "_resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+  "_shasum": "44aac65b695b03398968c39f363fee5deafdf1ea",
+  "_spec": "shebang-command@^1.2.0",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/cross-spawn",
+  "author": {
+    "name": "Kevin Martensson",
+    "email": "kevinmartensson@gmail.com",
+    "url": "github.com/kevva"
+  },
+  "bugs": {
+    "url": "https://github.com/kevva/shebang-command/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "shebang-regex": "^1.0.0"
+  },
+  "deprecated": false,
+  "description": "Get the command from a shebang",
+  "devDependencies": {
+    "ava": "*",
+    "xo": "*"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/kevva/shebang-command#readme",
+  "keywords": [
+    "cmd",
+    "command",
+    "parse",
+    "shebang"
+  ],
+  "license": "MIT",
+  "name": "shebang-command",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/kevva/shebang-command.git"
+  },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "1.2.0",
+  "xo": {
+    "ignores": [
+      "test.js"
+    ]
+  }
+}
diff --git a/setup-maven/node_modules/shebang-command/readme.md b/setup-maven/node_modules/shebang-command/readme.md
new file mode 100644
index 0000000..16b0be4
--- /dev/null
+++ b/setup-maven/node_modules/shebang-command/readme.md
@@ -0,0 +1,39 @@
+# shebang-command [![Build Status](https://travis-ci.org/kevva/shebang-command.svg?branch=master)](https://travis-ci.org/kevva/shebang-command)
+
+> Get the command from a shebang
+
+
+## Install
+
+```
+$ npm install --save shebang-command
+```
+
+
+## Usage
+
+```js
+const shebangCommand = require('shebang-command');
+
+shebangCommand('#!/usr/bin/env node');
+//=> 'node'
+
+shebangCommand('#!/bin/bash');
+//=> 'bash'
+```
+
+
+## API
+
+### shebangCommand(string)
+
+#### string
+
+Type: `string`
+
+String containing a shebang.
+
+
+## License
+
+MIT © [Kevin Martensson](http://github.com/kevva)
diff --git a/setup-maven/node_modules/shebang-regex/index.js b/setup-maven/node_modules/shebang-regex/index.js
new file mode 100644
index 0000000..d052d2e
--- /dev/null
+++ b/setup-maven/node_modules/shebang-regex/index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = /^#!.*/;
diff --git a/setup-maven/node_modules/shebang-regex/license b/setup-maven/node_modules/shebang-regex/license
new file mode 100644
index 0000000..654d0bf
--- /dev/null
+++ b/setup-maven/node_modules/shebang-regex/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/setup-maven/node_modules/shebang-regex/package.json b/setup-maven/node_modules/shebang-regex/package.json
new file mode 100644
index 0000000..68f5726
--- /dev/null
+++ b/setup-maven/node_modules/shebang-regex/package.json
@@ -0,0 +1,64 @@
+{
+  "_from": "shebang-regex@^1.0.0",
+  "_id": "shebang-regex@1.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+  "_location": "/shebang-regex",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "shebang-regex@^1.0.0",
+    "name": "shebang-regex",
+    "escapedName": "shebang-regex",
+    "rawSpec": "^1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^1.0.0"
+  },
+  "_requiredBy": [
+    "/shebang-command"
+  ],
+  "_resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+  "_shasum": "da42f49740c0b42db2ca9728571cb190c98efea3",
+  "_spec": "shebang-regex@^1.0.0",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/shebang-command",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/shebang-regex/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "Regular expression for matching a shebang",
+  "devDependencies": {
+    "ava": "0.0.4"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/sindresorhus/shebang-regex#readme",
+  "keywords": [
+    "re",
+    "regex",
+    "regexp",
+    "shebang",
+    "match",
+    "test"
+  ],
+  "license": "MIT",
+  "name": "shebang-regex",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/shebang-regex.git"
+  },
+  "scripts": {
+    "test": "node test.js"
+  },
+  "version": "1.0.0"
+}
diff --git a/setup-maven/node_modules/shebang-regex/readme.md b/setup-maven/node_modules/shebang-regex/readme.md
new file mode 100644
index 0000000..ef75e51
--- /dev/null
+++ b/setup-maven/node_modules/shebang-regex/readme.md
@@ -0,0 +1,29 @@
+# shebang-regex [![Build Status](https://travis-ci.org/sindresorhus/shebang-regex.svg?branch=master)](https://travis-ci.org/sindresorhus/shebang-regex)
+
+> Regular expression for matching a [shebang](https://en.wikipedia.org/wiki/Shebang_(Unix))
+
+
+## Install
+
+```
+$ npm install --save shebang-regex
+```
+
+
+## Usage
+
+```js
+var shebangRegex = require('shebang-regex');
+var str = '#!/usr/bin/env node\nconsole.log("unicorns");';
+
+shebangRegex.test(str);
+//=> true
+
+shebangRegex.exec(str)[0];
+//=> '#!/usr/bin/env node'
+```
+
+
+## License
+
+MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/setup-maven/node_modules/signal-exit/CHANGELOG.md b/setup-maven/node_modules/signal-exit/CHANGELOG.md
new file mode 100644
index 0000000..e2f70d2
--- /dev/null
+++ b/setup-maven/node_modules/signal-exit/CHANGELOG.md
@@ -0,0 +1,27 @@
+# Change Log
+
+All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
+
+<a name="3.0.1"></a>
+## [3.0.1](https://github.com/tapjs/signal-exit/compare/v3.0.0...v3.0.1) (2016-09-08)
+
+
+### Bug Fixes
+
+* do not listen on SIGBUS, SIGFPE, SIGSEGV and SIGILL ([#40](https://github.com/tapjs/signal-exit/issues/40)) ([5b105fb](https://github.com/tapjs/signal-exit/commit/5b105fb))
+
+
+
+<a name="3.0.0"></a>
+# [3.0.0](https://github.com/tapjs/signal-exit/compare/v2.1.2...v3.0.0) (2016-06-13)
+
+
+### Bug Fixes
+
+* get our test suite running on Windows ([#23](https://github.com/tapjs/signal-exit/issues/23)) ([6f3eda8](https://github.com/tapjs/signal-exit/commit/6f3eda8))
+* hooking SIGPROF was interfering with profilers see [#21](https://github.com/tapjs/signal-exit/issues/21) ([#24](https://github.com/tapjs/signal-exit/issues/24)) ([1248a4c](https://github.com/tapjs/signal-exit/commit/1248a4c))
+
+
+### BREAKING CHANGES
+
+* signal-exit no longer wires into SIGPROF
diff --git a/setup-maven/node_modules/signal-exit/LICENSE.txt b/setup-maven/node_modules/signal-exit/LICENSE.txt
new file mode 100644
index 0000000..eead04a
--- /dev/null
+++ b/setup-maven/node_modules/signal-exit/LICENSE.txt
@@ -0,0 +1,16 @@
+The ISC License
+
+Copyright (c) 2015, Contributors
+
+Permission to use, copy, modify, and/or distribute this software
+for any purpose with or without fee is hereby granted, provided
+that the above copyright notice and this permission notice
+appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE
+LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
+OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/setup-maven/node_modules/signal-exit/README.md b/setup-maven/node_modules/signal-exit/README.md
new file mode 100644
index 0000000..8ebccab
--- /dev/null
+++ b/setup-maven/node_modules/signal-exit/README.md
@@ -0,0 +1,40 @@
+# signal-exit
+
+[![Build Status](https://travis-ci.org/tapjs/signal-exit.png)](https://travis-ci.org/tapjs/signal-exit)
+[![Coverage](https://coveralls.io/repos/tapjs/signal-exit/badge.svg?branch=master)](https://coveralls.io/r/tapjs/signal-exit?branch=master)
+[![NPM version](https://img.shields.io/npm/v/signal-exit.svg)](https://www.npmjs.com/package/signal-exit)
+[![Windows Tests](https://img.shields.io/appveyor/ci/bcoe/signal-exit/master.svg?label=Windows%20Tests)](https://ci.appveyor.com/project/bcoe/signal-exit)
+[![Standard Version](https://img.shields.io/badge/release-standard%20version-brightgreen.svg)](https://github.com/conventional-changelog/standard-version)
+
+When you want to fire an event no matter how a process exits:
+
+* reaching the end of execution.
+* explicitly having `process.exit(code)` called.
+* having `process.kill(pid, sig)` called.
+* receiving a fatal signal from outside the process
+
+Use `signal-exit`.
+
+```js
+var onExit = require('signal-exit')
+
+onExit(function (code, signal) {
+  console.log('process exited!')
+})
+```
+
+## API
+
+`var remove = onExit(function (code, signal) {}, options)`
+
+The return value of the function is a function that will remove the
+handler.
+
+Note that the function *only* fires for signals if the signal would
+cause the proces to exit.  That is, there are no other listeners, and
+it is a fatal signal.
+
+## Options
+
+* `alwaysLast`: Run this handler after any other signal or exit
+  handlers.  This causes `process.emit` to be monkeypatched.
diff --git a/setup-maven/node_modules/signal-exit/index.js b/setup-maven/node_modules/signal-exit/index.js
new file mode 100644
index 0000000..337f691
--- /dev/null
+++ b/setup-maven/node_modules/signal-exit/index.js
@@ -0,0 +1,157 @@
+// Note: since nyc uses this module to output coverage, any lines
+// that are in the direct sync flow of nyc's outputCoverage are
+// ignored, since we can never get coverage for them.
+var assert = require('assert')
+var signals = require('./signals.js')
+
+var EE = require('events')
+/* istanbul ignore if */
+if (typeof EE !== 'function') {
+  EE = EE.EventEmitter
+}
+
+var emitter
+if (process.__signal_exit_emitter__) {
+  emitter = process.__signal_exit_emitter__
+} else {
+  emitter = process.__signal_exit_emitter__ = new EE()
+  emitter.count = 0
+  emitter.emitted = {}
+}
+
+// Because this emitter is a global, we have to check to see if a
+// previous version of this library failed to enable infinite listeners.
+// I know what you're about to say.  But literally everything about
+// signal-exit is a compromise with evil.  Get used to it.
+if (!emitter.infinite) {
+  emitter.setMaxListeners(Infinity)
+  emitter.infinite = true
+}
+
+module.exports = function (cb, opts) {
+  assert.equal(typeof cb, 'function', 'a callback must be provided for exit handler')
+
+  if (loaded === false) {
+    load()
+  }
+
+  var ev = 'exit'
+  if (opts && opts.alwaysLast) {
+    ev = 'afterexit'
+  }
+
+  var remove = function () {
+    emitter.removeListener(ev, cb)
+    if (emitter.listeners('exit').length === 0 &&
+        emitter.listeners('afterexit').length === 0) {
+      unload()
+    }
+  }
+  emitter.on(ev, cb)
+
+  return remove
+}
+
+module.exports.unload = unload
+function unload () {
+  if (!loaded) {
+    return
+  }
+  loaded = false
+
+  signals.forEach(function (sig) {
+    try {
+      process.removeListener(sig, sigListeners[sig])
+    } catch (er) {}
+  })
+  process.emit = originalProcessEmit
+  process.reallyExit = originalProcessReallyExit
+  emitter.count -= 1
+}
+
+function emit (event, code, signal) {
+  if (emitter.emitted[event]) {
+    return
+  }
+  emitter.emitted[event] = true
+  emitter.emit(event, code, signal)
+}
+
+// { <signal>: <listener fn>, ... }
+var sigListeners = {}
+signals.forEach(function (sig) {
+  sigListeners[sig] = function listener () {
+    // If there are no other listeners, an exit is coming!
+    // Simplest way: remove us and then re-send the signal.
+    // We know that this will kill the process, so we can
+    // safely emit now.
+    var listeners = process.listeners(sig)
+    if (listeners.length === emitter.count) {
+      unload()
+      emit('exit', null, sig)
+      /* istanbul ignore next */
+      emit('afterexit', null, sig)
+      /* istanbul ignore next */
+      process.kill(process.pid, sig)
+    }
+  }
+})
+
+module.exports.signals = function () {
+  return signals
+}
+
+module.exports.load = load
+
+var loaded = false
+
+function load () {
+  if (loaded) {
+    return
+  }
+  loaded = true
+
+  // This is the number of onSignalExit's that are in play.
+  // It's important so that we can count the correct number of
+  // listeners on signals, and don't wait for the other one to
+  // handle it instead of us.
+  emitter.count += 1
+
+  signals = signals.filter(function (sig) {
+    try {
+      process.on(sig, sigListeners[sig])
+      return true
+    } catch (er) {
+      return false
+    }
+  })
+
+  process.emit = processEmit
+  process.reallyExit = processReallyExit
+}
+
+var originalProcessReallyExit = process.reallyExit
+function processReallyExit (code) {
+  process.exitCode = code || 0
+  emit('exit', process.exitCode, null)
+  /* istanbul ignore next */
+  emit('afterexit', process.exitCode, null)
+  /* istanbul ignore next */
+  originalProcessReallyExit.call(process, process.exitCode)
+}
+
+var originalProcessEmit = process.emit
+function processEmit (ev, arg) {
+  if (ev === 'exit') {
+    if (arg !== undefined) {
+      process.exitCode = arg
+    }
+    var ret = originalProcessEmit.apply(this, arguments)
+    emit('exit', process.exitCode, null)
+    /* istanbul ignore next */
+    emit('afterexit', process.exitCode, null)
+    return ret
+  } else {
+    return originalProcessEmit.apply(this, arguments)
+  }
+}
diff --git a/setup-maven/node_modules/signal-exit/package.json b/setup-maven/node_modules/signal-exit/package.json
new file mode 100644
index 0000000..a031f53
--- /dev/null
+++ b/setup-maven/node_modules/signal-exit/package.json
@@ -0,0 +1,66 @@
+{
+  "_from": "signal-exit@^3.0.0",
+  "_id": "signal-exit@3.0.2",
+  "_inBundle": false,
+  "_integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
+  "_location": "/signal-exit",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "signal-exit@^3.0.0",
+    "name": "signal-exit",
+    "escapedName": "signal-exit",
+    "rawSpec": "^3.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^3.0.0"
+  },
+  "_requiredBy": [
+    "/execa"
+  ],
+  "_resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+  "_shasum": "b5fdc08f1287ea1178628e415e25132b73646c6d",
+  "_spec": "signal-exit@^3.0.0",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/execa",
+  "author": {
+    "name": "Ben Coe",
+    "email": "ben@npmjs.com"
+  },
+  "bugs": {
+    "url": "https://github.com/tapjs/signal-exit/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "when you want to fire an event no matter how a process exits.",
+  "devDependencies": {
+    "chai": "^3.5.0",
+    "coveralls": "^2.11.10",
+    "nyc": "^8.1.0",
+    "standard": "^7.1.2",
+    "standard-version": "^2.3.0",
+    "tap": "^8.0.1"
+  },
+  "files": [
+    "index.js",
+    "signals.js"
+  ],
+  "homepage": "https://github.com/tapjs/signal-exit",
+  "keywords": [
+    "signal",
+    "exit"
+  ],
+  "license": "ISC",
+  "main": "index.js",
+  "name": "signal-exit",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/tapjs/signal-exit.git"
+  },
+  "scripts": {
+    "coverage": "nyc report --reporter=text-lcov | coveralls",
+    "pretest": "standard",
+    "release": "standard-version",
+    "test": "tap --timeout=240 ./test/*.js --cov"
+  },
+  "version": "3.0.2"
+}
diff --git a/setup-maven/node_modules/signal-exit/signals.js b/setup-maven/node_modules/signal-exit/signals.js
new file mode 100644
index 0000000..3bd67a8
--- /dev/null
+++ b/setup-maven/node_modules/signal-exit/signals.js
@@ -0,0 +1,53 @@
+// This is not the set of all possible signals.
+//
+// It IS, however, the set of all signals that trigger
+// an exit on either Linux or BSD systems.  Linux is a
+// superset of the signal names supported on BSD, and
+// the unknown signals just fail to register, so we can
+// catch that easily enough.
+//
+// Don't bother with SIGKILL.  It's uncatchable, which
+// means that we can't fire any callbacks anyway.
+//
+// If a user does happen to register a handler on a non-
+// fatal signal like SIGWINCH or something, and then
+// exit, it'll end up firing `process.emit('exit')`, so
+// the handler will be fired anyway.
+//
+// SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised
+// artificially, inherently leave the process in a
+// state from which it is not safe to try and enter JS
+// listeners.
+module.exports = [
+  'SIGABRT',
+  'SIGALRM',
+  'SIGHUP',
+  'SIGINT',
+  'SIGTERM'
+]
+
+if (process.platform !== 'win32') {
+  module.exports.push(
+    'SIGVTALRM',
+    'SIGXCPU',
+    'SIGXFSZ',
+    'SIGUSR2',
+    'SIGTRAP',
+    'SIGSYS',
+    'SIGQUIT',
+    'SIGIOT'
+    // should detect profiler and enable/disable accordingly.
+    // see #21
+    // 'SIGPROF'
+  )
+}
+
+if (process.platform === 'linux') {
+  module.exports.push(
+    'SIGIO',
+    'SIGPOLL',
+    'SIGPWR',
+    'SIGSTKFLT',
+    'SIGUNUSED'
+  )
+}
diff --git a/setup-maven/node_modules/strip-eof/index.js b/setup-maven/node_modules/strip-eof/index.js
new file mode 100644
index 0000000..a17d0af
--- /dev/null
+++ b/setup-maven/node_modules/strip-eof/index.js
@@ -0,0 +1,15 @@
+'use strict';
+module.exports = function (x) {
+	var lf = typeof x === 'string' ? '\n' : '\n'.charCodeAt();
+	var cr = typeof x === 'string' ? '\r' : '\r'.charCodeAt();
+
+	if (x[x.length - 1] === lf) {
+		x = x.slice(0, x.length - 1);
+	}
+
+	if (x[x.length - 1] === cr) {
+		x = x.slice(0, x.length - 1);
+	}
+
+	return x;
+};
diff --git a/setup-maven/node_modules/strip-eof/license b/setup-maven/node_modules/strip-eof/license
new file mode 100644
index 0000000..654d0bf
--- /dev/null
+++ b/setup-maven/node_modules/strip-eof/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/setup-maven/node_modules/strip-eof/package.json b/setup-maven/node_modules/strip-eof/package.json
new file mode 100644
index 0000000..794f5df
--- /dev/null
+++ b/setup-maven/node_modules/strip-eof/package.json
@@ -0,0 +1,71 @@
+{
+  "_from": "strip-eof@^1.0.0",
+  "_id": "strip-eof@1.0.0",
+  "_inBundle": false,
+  "_integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
+  "_location": "/strip-eof",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "strip-eof@^1.0.0",
+    "name": "strip-eof",
+    "escapedName": "strip-eof",
+    "rawSpec": "^1.0.0",
+    "saveSpec": null,
+    "fetchSpec": "^1.0.0"
+  },
+  "_requiredBy": [
+    "/execa"
+  ],
+  "_resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+  "_shasum": "bb43ff5598a6eb05d89b59fcd129c983313606bf",
+  "_spec": "strip-eof@^1.0.0",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/execa",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/strip-eof/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "Strip the End-Of-File (EOF) character from a string/buffer",
+  "devDependencies": {
+    "ava": "*",
+    "xo": "*"
+  },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/sindresorhus/strip-eof#readme",
+  "keywords": [
+    "strip",
+    "trim",
+    "remove",
+    "delete",
+    "eof",
+    "end",
+    "file",
+    "newline",
+    "linebreak",
+    "character",
+    "string",
+    "buffer"
+  ],
+  "license": "MIT",
+  "name": "strip-eof",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/strip-eof.git"
+  },
+  "scripts": {
+    "test": "xo && ava"
+  },
+  "version": "1.0.0"
+}
diff --git a/setup-maven/node_modules/strip-eof/readme.md b/setup-maven/node_modules/strip-eof/readme.md
new file mode 100644
index 0000000..45ffe04
--- /dev/null
+++ b/setup-maven/node_modules/strip-eof/readme.md
@@ -0,0 +1,28 @@
+# strip-eof [![Build Status](https://travis-ci.org/sindresorhus/strip-eof.svg?branch=master)](https://travis-ci.org/sindresorhus/strip-eof)
+
+> Strip the [End-Of-File](https://en.wikipedia.org/wiki/End-of-file) (EOF) character from a string/buffer
+
+
+## Install
+
+```
+$ npm install --save strip-eof
+```
+
+
+## Usage
+
+```js
+const stripEof = require('strip-eof');
+
+stripEof('foo\nbar\n\n');
+//=> 'foo\nbar\n'
+
+stripEof(new Buffer('foo\nbar\n\n')).toString();
+//=> 'foo\nbar\n'
+```
+
+
+## License
+
+MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/setup-maven/node_modules/tunnel/.npmignore b/setup-maven/node_modules/tunnel/.npmignore
new file mode 100644
index 0000000..6684c76
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/.npmignore
@@ -0,0 +1,2 @@
+/.idea
+/node_modules
diff --git a/setup-maven/node_modules/tunnel/CHANGELOG.md b/setup-maven/node_modules/tunnel/CHANGELOG.md
new file mode 100644
index 0000000..70bdbd7
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/CHANGELOG.md
@@ -0,0 +1,13 @@
+# Changelog
+
+ - 0.0.4 (2016/01/23)
+   - supported Node v0.12 or later.
+
+ - 0.0.3 (2014/01/20)
+   - fixed package.json
+
+ - 0.0.1 (2012/02/18)
+   - supported Node v0.6.x (0.6.11 or later).
+
+ - 0.0.0 (2012/02/11)
+   - first release.
diff --git a/setup-maven/node_modules/tunnel/LICENSE b/setup-maven/node_modules/tunnel/LICENSE
new file mode 100644
index 0000000..8b8a895
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2012 Koichi Kobayashi
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/setup-maven/node_modules/tunnel/README.md b/setup-maven/node_modules/tunnel/README.md
new file mode 100644
index 0000000..b196162
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/README.md
@@ -0,0 +1,179 @@
+# node-tunnel - HTTP/HTTPS Agents for tunneling proxies
+
+## Example
+
+```javascript
+var tunnel = require('tunnel');
+
+var tunnelingAgent = tunnel.httpsOverHttp({
+  proxy: {
+    host: 'localhost',
+    port: 3128
+  }
+});
+
+var req = https.request({
+  host: 'example.com',
+  port: 443,
+  agent: tunnelingAgent
+});
+```
+
+## Installation
+
+    $ npm install tunnel
+
+## Usages
+
+### HTTP over HTTP tunneling
+
+```javascript
+var tunnelingAgent = tunnel.httpOverHttp({
+  maxSockets: poolSize, // Defaults to 5
+
+  proxy: { // Proxy settings
+    host: proxyHost, // Defaults to 'localhost'
+    port: proxyPort, // Defaults to 80
+    localAddress: localAddress, // Local interface if necessary
+
+    // Basic authorization for proxy server if necessary
+    proxyAuth: 'user:password',
+
+    // Header fields for proxy server if necessary
+    headers: {
+      'User-Agent': 'Node'
+    }
+  }
+});
+
+var req = http.request({
+  host: 'example.com',
+  port: 80,
+  agent: tunnelingAgent
+});
+```
+
+### HTTPS over HTTP tunneling
+
+```javascript
+var tunnelingAgent = tunnel.httpsOverHttp({
+  maxSockets: poolSize, // Defaults to 5
+
+  // CA for origin server if necessary
+  ca: [ fs.readFileSync('origin-server-ca.pem')],
+
+  // Client certification for origin server if necessary
+  key: fs.readFileSync('origin-server-key.pem'),
+  cert: fs.readFileSync('origin-server-cert.pem'),
+
+  proxy: { // Proxy settings
+    host: proxyHost, // Defaults to 'localhost'
+    port: proxyPort, // Defaults to 80
+    localAddress: localAddress, // Local interface if necessary
+
+    // Basic authorization for proxy server if necessary
+    proxyAuth: 'user:password',
+
+    // Header fields for proxy server if necessary
+    headers: {
+      'User-Agent': 'Node'
+    },
+  }
+});
+
+var req = https.request({
+  host: 'example.com',
+  port: 443,
+  agent: tunnelingAgent
+});
+```
+
+### HTTP over HTTPS tunneling
+
+```javascript
+var tunnelingAgent = tunnel.httpOverHttps({
+  maxSockets: poolSize, // Defaults to 5
+
+  proxy: { // Proxy settings
+    host: proxyHost, // Defaults to 'localhost'
+    port: proxyPort, // Defaults to 443
+    localAddress: localAddress, // Local interface if necessary
+
+    // Basic authorization for proxy server if necessary
+    proxyAuth: 'user:password',
+
+    // Header fields for proxy server if necessary
+    headers: {
+      'User-Agent': 'Node'
+    },
+
+    // CA for proxy server if necessary
+    ca: [ fs.readFileSync('origin-server-ca.pem')],
+
+    // Server name for verification if necessary
+    servername: 'example.com',
+
+    // Client certification for proxy server if necessary
+    key: fs.readFileSync('origin-server-key.pem'),
+    cert: fs.readFileSync('origin-server-cert.pem'),
+  }
+});
+
+var req = http.request({
+  host: 'example.com',
+  port: 80,
+  agent: tunnelingAgent
+});
+```
+
+### HTTPS over HTTPS tunneling
+
+```javascript
+var tunnelingAgent = tunnel.httpsOverHttps({
+  maxSockets: poolSize, // Defaults to 5
+
+  // CA for origin server if necessary
+  ca: [ fs.readFileSync('origin-server-ca.pem')],
+
+  // Client certification for origin server if necessary
+  key: fs.readFileSync('origin-server-key.pem'),
+  cert: fs.readFileSync('origin-server-cert.pem'),
+
+  proxy: { // Proxy settings
+    host: proxyHost, // Defaults to 'localhost'
+    port: proxyPort, // Defaults to 443
+    localAddress: localAddress, // Local interface if necessary
+
+    // Basic authorization for proxy server if necessary
+    proxyAuth: 'user:password',
+
+    // Header fields for proxy server if necessary
+    headers: {
+      'User-Agent': 'Node'
+    }
+
+    // CA for proxy server if necessary
+    ca: [ fs.readFileSync('origin-server-ca.pem')],
+
+    // Server name for verification if necessary
+    servername: 'example.com',
+
+    // Client certification for proxy server if necessary
+    key: fs.readFileSync('origin-server-key.pem'),
+    cert: fs.readFileSync('origin-server-cert.pem'),
+  }
+});
+
+var req = https.request({
+  host: 'example.com',
+  port: 443,
+  agent: tunnelingAgent
+});
+```
+
+## CONTRIBUTORS
+* [Aleksis Brezas (abresas)](https://github.com/abresas)
+
+## License
+
+Licensed under the [MIT](https://github.com/koichik/node-tunnel/blob/master/LICENSE) license.
diff --git a/setup-maven/node_modules/tunnel/index.js b/setup-maven/node_modules/tunnel/index.js
new file mode 100644
index 0000000..2947757
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/index.js
@@ -0,0 +1 @@
+module.exports = require('./lib/tunnel');
diff --git a/setup-maven/node_modules/tunnel/lib/tunnel.js b/setup-maven/node_modules/tunnel/lib/tunnel.js
new file mode 100644
index 0000000..c42b039
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/lib/tunnel.js
@@ -0,0 +1,247 @@
+'use strict';
+
+var net = require('net');
+var tls = require('tls');
+var http = require('http');
+var https = require('https');
+var events = require('events');
+var assert = require('assert');
+var util = require('util');
+
+
+exports.httpOverHttp = httpOverHttp;
+exports.httpsOverHttp = httpsOverHttp;
+exports.httpOverHttps = httpOverHttps;
+exports.httpsOverHttps = httpsOverHttps;
+
+
+function httpOverHttp(options) {
+  var agent = new TunnelingAgent(options);
+  agent.request = http.request;
+  return agent;
+}
+
+function httpsOverHttp(options) {
+  var agent = new TunnelingAgent(options);
+  agent.request = http.request;
+  agent.createSocket = createSecureSocket;
+  return agent;
+}
+
+function httpOverHttps(options) {
+  var agent = new TunnelingAgent(options);
+  agent.request = https.request;
+  return agent;
+}
+
+function httpsOverHttps(options) {
+  var agent = new TunnelingAgent(options);
+  agent.request = https.request;
+  agent.createSocket = createSecureSocket;
+  return agent;
+}
+
+
+function TunnelingAgent(options) {
+  var self = this;
+  self.options = options || {};
+  self.proxyOptions = self.options.proxy || {};
+  self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets;
+  self.requests = [];
+  self.sockets = [];
+
+  self.on('free', function onFree(socket, host, port, localAddress) {
+    var options = toOptions(host, port, localAddress);
+    for (var i = 0, len = self.requests.length; i < len; ++i) {
+      var pending = self.requests[i];
+      if (pending.host === options.host && pending.port === options.port) {
+        // Detect the request to connect same origin server,
+        // reuse the connection.
+        self.requests.splice(i, 1);
+        pending.request.onSocket(socket);
+        return;
+      }
+    }
+    socket.destroy();
+    self.removeSocket(socket);
+  });
+}
+util.inherits(TunnelingAgent, events.EventEmitter);
+
+TunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) {
+  var self = this;
+  var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress));
+
+  if (self.sockets.length >= this.maxSockets) {
+    // We are over limit so we'll add it to the queue.
+    self.requests.push(options);
+    return;
+  }
+
+  // If we are under maxSockets create a new one.
+  self.createSocket(options, function(socket) {
+    socket.on('free', onFree);
+    socket.on('close', onCloseOrRemove);
+    socket.on('agentRemove', onCloseOrRemove);
+    req.onSocket(socket);
+
+    function onFree() {
+      self.emit('free', socket, options);
+    }
+
+    function onCloseOrRemove(err) {
+      self.removeSocket(socket);
+      socket.removeListener('free', onFree);
+      socket.removeListener('close', onCloseOrRemove);
+      socket.removeListener('agentRemove', onCloseOrRemove);
+    }
+  });
+};
+
+TunnelingAgent.prototype.createSocket = function createSocket(options, cb) {
+  var self = this;
+  var placeholder = {};
+  self.sockets.push(placeholder);
+
+  var connectOptions = mergeOptions({}, self.proxyOptions, {
+    method: 'CONNECT',
+    path: options.host + ':' + options.port,
+    agent: false
+  });
+  if (connectOptions.proxyAuth) {
+    connectOptions.headers = connectOptions.headers || {};
+    connectOptions.headers['Proxy-Authorization'] = 'Basic ' +
+        new Buffer(connectOptions.proxyAuth).toString('base64');
+  }
+
+  debug('making CONNECT request');
+  var connectReq = self.request(connectOptions);
+  connectReq.useChunkedEncodingByDefault = false; // for v0.6
+  connectReq.once('response', onResponse); // for v0.6
+  connectReq.once('upgrade', onUpgrade);   // for v0.6
+  connectReq.once('connect', onConnect);   // for v0.7 or later
+  connectReq.once('error', onError);
+  connectReq.end();
+
+  function onResponse(res) {
+    // Very hacky. This is necessary to avoid http-parser leaks.
+    res.upgrade = true;
+  }
+
+  function onUpgrade(res, socket, head) {
+    // Hacky.
+    process.nextTick(function() {
+      onConnect(res, socket, head);
+    });
+  }
+
+  function onConnect(res, socket, head) {
+    connectReq.removeAllListeners();
+    socket.removeAllListeners();
+
+    if (res.statusCode === 200) {
+      assert.equal(head.length, 0);
+      debug('tunneling connection has established');
+      self.sockets[self.sockets.indexOf(placeholder)] = socket;
+      cb(socket);
+    } else {
+      debug('tunneling socket could not be established, statusCode=%d',
+            res.statusCode);
+      var error = new Error('tunneling socket could not be established, ' +
+                            'statusCode=' + res.statusCode);
+      error.code = 'ECONNRESET';
+      options.request.emit('error', error);
+      self.removeSocket(placeholder);
+    }
+  }
+
+  function onError(cause) {
+    connectReq.removeAllListeners();
+
+    debug('tunneling socket could not be established, cause=%s\n',
+          cause.message, cause.stack);
+    var error = new Error('tunneling socket could not be established, ' +
+                          'cause=' + cause.message);
+    error.code = 'ECONNRESET';
+    options.request.emit('error', error);
+    self.removeSocket(placeholder);
+  }
+};
+
+TunnelingAgent.prototype.removeSocket = function removeSocket(socket) {
+  var pos = this.sockets.indexOf(socket)
+  if (pos === -1) {
+    return;
+  }
+  this.sockets.splice(pos, 1);
+
+  var pending = this.requests.shift();
+  if (pending) {
+    // If we have pending requests and a socket gets closed a new one
+    // needs to be created to take over in the pool for the one that closed.
+    this.createSocket(pending, function(socket) {
+      pending.request.onSocket(socket);
+    });
+  }
+};
+
+function createSecureSocket(options, cb) {
+  var self = this;
+  TunnelingAgent.prototype.createSocket.call(self, options, function(socket) {
+    var hostHeader = options.request.getHeader('host');
+    var tlsOptions = mergeOptions({}, self.options, {
+      socket: socket,
+      servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host
+    });
+
+    // 0 is dummy port for v0.6
+    var secureSocket = tls.connect(0, tlsOptions);
+    self.sockets[self.sockets.indexOf(socket)] = secureSocket;
+    cb(secureSocket);
+  });
+}
+
+
+function toOptions(host, port, localAddress) {
+  if (typeof host === 'string') { // since v0.10
+    return {
+      host: host,
+      port: port,
+      localAddress: localAddress
+    };
+  }
+  return host; // for v0.11 or later
+}
+
+function mergeOptions(target) {
+  for (var i = 1, len = arguments.length; i < len; ++i) {
+    var overrides = arguments[i];
+    if (typeof overrides === 'object') {
+      var keys = Object.keys(overrides);
+      for (var j = 0, keyLen = keys.length; j < keyLen; ++j) {
+        var k = keys[j];
+        if (overrides[k] !== undefined) {
+          target[k] = overrides[k];
+        }
+      }
+    }
+  }
+  return target;
+}
+
+
+var debug;
+if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) {
+  debug = function() {
+    var args = Array.prototype.slice.call(arguments);
+    if (typeof args[0] === 'string') {
+      args[0] = 'TUNNEL: ' + args[0];
+    } else {
+      args.unshift('TUNNEL:');
+    }
+    console.error.apply(console, args);
+  }
+} else {
+  debug = function() {};
+}
+exports.debug = debug; // for test
diff --git a/setup-maven/node_modules/tunnel/package.json b/setup-maven/node_modules/tunnel/package.json
new file mode 100644
index 0000000..edccd05
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/package.json
@@ -0,0 +1,64 @@
+{
+  "_from": "tunnel@0.0.4",
+  "_id": "tunnel@0.0.4",
+  "_inBundle": false,
+  "_integrity": "sha1-LTeFoVjBdMmhbcLARuxfxfF0IhM=",
+  "_location": "/tunnel",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "tunnel@0.0.4",
+    "name": "tunnel",
+    "escapedName": "tunnel",
+    "rawSpec": "0.0.4",
+    "saveSpec": null,
+    "fetchSpec": "0.0.4"
+  },
+  "_requiredBy": [
+    "/typed-rest-client"
+  ],
+  "_resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.4.tgz",
+  "_shasum": "2d3785a158c174c9a16dc2c046ec5fc5f1742213",
+  "_spec": "tunnel@0.0.4",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/typed-rest-client",
+  "author": {
+    "name": "Koichi Kobayashi",
+    "email": "koichik@improvement.jp"
+  },
+  "bugs": {
+    "url": "https://github.com/koichik/node-tunnel/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "Node HTTP/HTTPS Agents for tunneling proxies",
+  "devDependencies": {
+    "mocha": "*",
+    "should": "*"
+  },
+  "directories": {
+    "lib": "./lib"
+  },
+  "engines": {
+    "node": ">=0.6.11 <=0.7.0 || >=0.7.3"
+  },
+  "homepage": "https://github.com/koichik/node-tunnel/",
+  "keywords": [
+    "http",
+    "https",
+    "agent",
+    "proxy",
+    "tunnel"
+  ],
+  "license": "MIT",
+  "main": "./index.js",
+  "name": "tunnel",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/koichik/node-tunnel.git"
+  },
+  "scripts": {
+    "test": "./node_modules/mocha/bin/mocha"
+  },
+  "version": "0.0.4"
+}
diff --git a/setup-maven/node_modules/tunnel/test/http-over-http.js b/setup-maven/node_modules/tunnel/test/http-over-http.js
new file mode 100644
index 0000000..73d17a2
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/http-over-http.js
@@ -0,0 +1,108 @@
+var http = require('http');
+var net = require('net');
+var should = require('should');
+var tunnel = require('../index');
+
+describe('HTTP over HTTP', function() {
+  it('should finish without error', function(done) {
+    var serverPort = 3000;
+    var proxyPort = 3001;
+    var poolSize = 3;
+    var N = 10;
+    var serverConnect = 0;
+    var proxyConnect = 0;
+    var clientConnect = 0;
+    var server;
+    var proxy;
+    var agent;
+    
+    server = http.createServer(function(req, res) {
+      tunnel.debug('SERVER: got request');
+      ++serverConnect;
+      res.writeHead(200);
+      res.end('Hello' + req.url);
+      tunnel.debug('SERVER: sending response');
+    });
+    server.listen(serverPort, setupProxy);
+
+    function setupProxy() {
+      proxy = http.createServer(function(req, res) {
+        should.fail();
+      });
+      proxy.on('upgrade', onConnect); // for v0.6
+      proxy.on('connect', onConnect); // for v0.7 or later
+
+      function onConnect(req, clientSocket, head) {
+        tunnel.debug('PROXY: got CONNECT request');
+
+        req.method.should.equal('CONNECT');
+        req.url.should.equal('localhost:' + serverPort);
+        req.headers.should.not.have.property('transfer-encoding');
+        req.headers.should.have.property('proxy-authorization',
+            'Basic ' + new Buffer('user:password').toString('base64'));
+        ++proxyConnect;
+    
+        tunnel.debug('PROXY: creating a tunnel');
+        var serverSocket = net.connect(serverPort, function() {
+          tunnel.debug('PROXY: replying to client CONNECT request');
+          clientSocket.write('HTTP/1.1 200 Connection established\r\n\r\n');
+          clientSocket.pipe(serverSocket);
+          serverSocket.write(head);
+          serverSocket.pipe(clientSocket);
+          // workaround, see joyent/node#2524
+          serverSocket.on('end', function() {
+            clientSocket.end();
+          });
+        });
+      }
+      proxy.listen(proxyPort, setupClient);
+    }
+
+    function setupClient() {
+      agent = tunnel.httpOverHttp({
+        maxSockets: poolSize,
+        proxy: {
+          port: proxyPort,
+          proxyAuth: 'user:password'
+        }
+      });
+
+      for (var i = 0; i < N; ++i) {
+        doClientRequest(i);
+      }
+
+      function doClientRequest(i) {
+        tunnel.debug('CLIENT: Making HTTP request (%d)', i);
+        var req = http.get({
+          port: serverPort,
+          path: '/' + i,
+          agent: agent
+        }, function(res) {
+          tunnel.debug('CLIENT: got HTTP response (%d)', i);
+          res.setEncoding('utf8');
+          res.on('data', function(data) {
+            data.should.equal('Hello/' + i);
+          });
+          res.on('end', function() {
+            ++clientConnect;
+            if (clientConnect === N) {
+              proxy.close();
+              server.close();
+            }
+          });
+        });
+      }
+    }
+
+    server.on('close', function() {
+      serverConnect.should.equal(N);
+      proxyConnect.should.equal(poolSize);
+      clientConnect.should.equal(N);
+    
+      agent.sockets.should.be.empty;
+      agent.requests.should.be.empty;
+  
+      done();
+    });
+  });
+});
diff --git a/setup-maven/node_modules/tunnel/test/http-over-https.js b/setup-maven/node_modules/tunnel/test/http-over-https.js
new file mode 100644
index 0000000..c3a92fd
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/http-over-https.js
@@ -0,0 +1,130 @@
+var http = require('http');
+var https = require('https');
+var net = require('net');
+var fs = require('fs');
+var path = require('path');
+var should = require('should');
+var tunnel = require('../index');
+
+function readPem(file) {
+  return fs.readFileSync(path.join('test/keys', file + '.pem'));
+}
+
+var proxyKey = readPem('proxy1-key');
+var proxyCert = readPem('proxy1-cert');
+var proxyCA = readPem('ca2-cert');
+var clientKey = readPem('client1-key');
+var clientCert = readPem('client1-cert');
+var clientCA = readPem('ca3-cert');
+
+describe('HTTP over HTTPS', function() {
+  it('should finish without error', function(done) {
+    var serverPort = 3004;
+    var proxyPort = 3005;
+    var poolSize = 3;
+    var N = 10;
+    var serverConnect = 0;
+    var proxyConnect = 0;
+    var clientConnect = 0;
+    var server;
+    var proxy;
+    var agent;
+
+    server = http.createServer(function(req, res) {
+      tunnel.debug('SERVER: got request');
+      ++serverConnect;
+      res.writeHead(200);
+      res.end('Hello' + req.url);
+      tunnel.debug('SERVER: sending response');
+    });
+    server.listen(serverPort, setupProxy);
+
+    function setupProxy() {
+      proxy = https.createServer({
+        key: proxyKey,
+        cert: proxyCert,
+        ca: [clientCA],
+        requestCert: true,
+        rejectUnauthorized: true
+      }, function(req, res) {
+        should.fail();
+      });
+      proxy.on('upgrade', onConnect); // for v0.6
+      proxy.on('connect', onConnect); // for v0.7 or later
+
+      function onConnect(req, clientSocket, head) {
+        tunnel.debug('PROXY: got CONNECT request');
+
+        req.method.should.equal('CONNECT');
+        req.url.should.equal('localhost:' + serverPort);
+        req.headers.should.not.have.property('transfer-encoding');
+        ++proxyConnect;
+
+        tunnel.debug('PROXY: creating a tunnel');
+        var serverSocket = net.connect(serverPort, function() {
+          tunnel.debug('PROXY: replying to client CONNECT request');
+          clientSocket.write('HTTP/1.1 200 Connection established\r\n\r\n');
+          clientSocket.pipe(serverSocket);
+          serverSocket.write(head);
+          serverSocket.pipe(clientSocket);
+          // workaround, see joyent/node#2524
+          serverSocket.on('end', function() {
+            clientSocket.end();
+          });
+        });
+      }
+      proxy.listen(proxyPort, setupClient);
+    }
+
+    function setupClient() {
+      agent = tunnel.httpOverHttps({
+        maxSockets: poolSize,
+        proxy: {
+          port: proxyPort,
+          key: clientKey,
+          cert: clientCert,
+          ca: [proxyCA],
+          rejectUnauthorized: true
+        }
+      });
+
+      for (var i = 0; i < N; ++i) {
+        doClientRequest(i);
+      }
+
+      function doClientRequest(i) {
+        tunnel.debug('CLIENT: Making HTTP request (%d)', i);
+        var req = http.get({
+          port: serverPort,
+          path: '/' + i,
+          agent: agent
+        }, function(res) {
+          tunnel.debug('CLIENT: got HTTP response (%d)', i);
+          res.setEncoding('utf8');
+          res.on('data', function(data) {
+            data.should.equal('Hello/' + i);
+          });
+          res.on('end', function() {
+            ++clientConnect;
+            if (clientConnect === N) {
+              proxy.close();
+              server.close();
+            }
+          });
+        });
+      }
+    }
+
+    server.on('close', function() {
+      serverConnect.should.equal(N);
+      proxyConnect.should.equal(poolSize);
+      clientConnect.should.equal(N);
+
+      var name = 'localhost:' + serverPort;
+      agent.sockets.should.be.empty;
+      agent.requests.should.be.empty;
+
+      done();
+    });
+  });
+});
diff --git a/setup-maven/node_modules/tunnel/test/https-over-http.js b/setup-maven/node_modules/tunnel/test/https-over-http.js
new file mode 100644
index 0000000..82c4772
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/https-over-http.js
@@ -0,0 +1,130 @@
+var http = require('http');
+var https = require('https');
+var net = require('net');
+var fs = require('fs');
+var path = require('path');
+var should = require('should');
+var tunnel = require('../index');
+
+function readPem(file) {
+  return fs.readFileSync(path.join('test/keys', file + '.pem'));
+}
+
+var serverKey = readPem('server1-key');
+var serverCert = readPem('server1-cert');
+var serverCA = readPem('ca1-cert');
+var clientKey = readPem('client1-key');
+var clientCert = readPem('client1-cert');
+var clientCA = readPem('ca3-cert');
+
+
+describe('HTTPS over HTTP', function() {
+  it('should finish without error', function(done) {
+    var serverPort = 3002;
+    var proxyPort = 3003;
+    var poolSize = 3;
+    var N = 10;
+    var serverConnect = 0;
+    var proxyConnect = 0;
+    var clientConnect = 0;
+    var server;
+    var proxy;
+    var agent;
+
+    server = https.createServer({
+      key: serverKey,
+      cert: serverCert,
+      ca: [clientCA],
+      requestCert: true,
+      rejectUnauthorized: true
+    }, function(req, res) {
+      tunnel.debug('SERVER: got request');
+      ++serverConnect;
+      res.writeHead(200);
+      res.end('Hello' + req.url);
+      tunnel.debug('SERVER: sending response');
+    });
+    server.listen(serverPort, setupProxy);
+
+    function setupProxy() {
+      proxy = http.createServer(function(req, res) {
+        should.fail();
+      });
+      proxy.on('upgrade', onConnect); // for v0.6
+      proxy.on('connect', onConnect); // for v0.7 or later
+
+      function onConnect(req, clientSocket, head) {
+        tunnel.debug('PROXY: got CONNECT request');
+
+        req.method.should.equal('CONNECT');
+        req.url.should.equal('localhost:' + serverPort);
+        req.headers.should.not.have.property('transfer-encoding');
+        ++proxyConnect;
+
+        var serverSocket = net.connect(serverPort, function() {
+          tunnel.debug('PROXY: replying to client CONNECT request');
+          clientSocket.write('HTTP/1.1 200 Connection established\r\n\r\n');
+          clientSocket.pipe(serverSocket);
+          serverSocket.write(head);
+          serverSocket.pipe(clientSocket);
+          // workaround, see joyent/node#2524
+          serverSocket.on('end', function() {
+            clientSocket.end();
+          });
+        });
+      }
+      proxy.listen(proxyPort, setupClient);
+    }
+
+    function setupClient() {
+      agent = tunnel.httpsOverHttp({
+        maxSockets: poolSize,
+        key: clientKey,
+        cert: clientCert,
+        ca: [serverCA],
+        rejectUnauthorized: true,
+        proxy: {
+          port: proxyPort
+        }
+      });
+
+      for (var i = 0; i < N; ++i) {
+        doClientRequest(i);
+      }
+
+      function doClientRequest(i) {
+        tunnel.debug('CLIENT: Making HTTPS request (%d)', i);
+        var req = https.get({
+          port: serverPort,
+          path: '/' + i,
+          agent: agent
+        }, function(res) {
+          tunnel.debug('CLIENT: got HTTPS response (%d)', i);
+          res.setEncoding('utf8');
+          res.on('data', function(data) {
+            data.should.equal('Hello/' + i);
+          });
+          res.on('end', function() {
+            ++clientConnect;
+            if (clientConnect === N) {
+              proxy.close();
+              server.close();
+            }
+          });
+        });
+      }
+    }
+
+    server.on('close', function() {
+      serverConnect.should.equal(N);
+      proxyConnect.should.equal(poolSize);
+      clientConnect.should.equal(N);
+
+      var name = 'localhost:' + serverPort;
+      agent.sockets.should.be.empty;
+      agent.requests.should.be.empty;
+
+      done();
+    });
+  });
+});
diff --git a/setup-maven/node_modules/tunnel/test/https-over-https-error.js b/setup-maven/node_modules/tunnel/test/https-over-https-error.js
new file mode 100644
index 0000000..c74094d
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/https-over-https-error.js
@@ -0,0 +1,261 @@
+var http = require('http');
+var https = require('https');
+var net = require('net');
+var fs = require('fs');
+var path = require('path');
+var should = require('should');
+var tunnel = require('../index');
+
+function readPem(file) {
+  return fs.readFileSync(path.join('test/keys', file + '.pem'));
+}
+
+var serverKey = readPem('server2-key');
+var serverCert = readPem('server2-cert');
+var serverCA = readPem('ca1-cert');
+var proxyKey = readPem('proxy2-key');
+var proxyCert = readPem('proxy2-cert');
+var proxyCA = readPem('ca2-cert');
+var client1Key = readPem('client1-key');
+var client1Cert = readPem('client1-cert');
+var client1CA = readPem('ca3-cert');
+var client2Key = readPem('client2-key');
+var client2Cert = readPem('client2-cert');
+var client2CA = readPem('ca4-cert');
+
+describe('HTTPS over HTTPS authentication failed', function() {
+  it('should finish without error', function(done) {
+    var serverPort = 3008;
+    var proxyPort = 3009;
+    var serverConnect = 0;
+    var proxyConnect = 0;
+    var clientRequest = 0;
+    var clientConnect = 0;
+    var clientError = 0;
+    var server;
+    var proxy;
+
+    server = https.createServer({
+      key: serverKey,
+      cert: serverCert,
+      ca: [client1CA],
+      requestCert: true,
+      rejectUnauthorized: true
+    }, function(req, res) {
+      tunnel.debug('SERVER: got request', req.url);
+      ++serverConnect;
+      req.on('data', function(data) {
+      });
+      req.on('end', function() {
+        res.writeHead(200);
+        res.end('Hello, ' + serverConnect);
+        tunnel.debug('SERVER: sending response');
+      });
+      req.resume();
+    });
+    //server.addContext('server2', {
+    //  key: serverKey,
+    //  cert: serverCert,
+    //  ca: [client1CA],
+    //});
+    server.listen(serverPort, setupProxy);
+
+    function setupProxy() {
+      proxy = https.createServer({
+        key: proxyKey,
+        cert: proxyCert,
+        ca: [client2CA],
+        requestCert: true,
+        rejectUnauthorized: true
+      }, function(req, res) {
+        should.fail();
+      });
+      //proxy.addContext('proxy2', {
+      //  key: proxyKey,
+      //  cert: proxyCert,
+      //  ca: [client2CA],
+      //});
+      proxy.on('upgrade', onConnect); // for v0.6
+      proxy.on('connect', onConnect); // for v0.7 or later
+
+      function onConnect(req, clientSocket, head) {
+        req.method.should.equal('CONNECT');
+        req.url.should.equal('localhost:' + serverPort);
+        req.headers.should.not.have.property('transfer-encoding');
+        ++proxyConnect;
+
+        var serverSocket = net.connect(serverPort, function() {
+          tunnel.debug('PROXY: replying to client CONNECT request');
+          clientSocket.write('HTTP/1.1 200 Connection established\r\n\r\n');
+          clientSocket.pipe(serverSocket);
+          serverSocket.write(head);
+          serverSocket.pipe(clientSocket);
+          // workaround, see #2524
+          serverSocket.on('end', function() {
+            clientSocket.end();
+          });
+        });
+      }
+      proxy.listen(proxyPort, setupClient);
+    }
+
+    function setupClient() {
+      function doRequest(name, options, host) {
+        tunnel.debug('CLIENT: Making HTTPS request (%s)', name);
+        ++clientRequest;
+        var agent = tunnel.httpsOverHttps(options);
+        var req = https.get({
+          host: 'localhost',
+          port: serverPort,
+          path: '/' + encodeURIComponent(name),
+          headers: {
+            host: host ? host : 'localhost',
+          },
+          rejectUnauthorized: true,
+          agent: agent
+        }, function(res) {
+          tunnel.debug('CLIENT: got HTTPS response (%s)', name);
+          ++clientConnect;
+          res.on('data', function(data) {
+          });
+          res.on('end', function() {
+            req.emit('finish');
+          });
+          res.resume();
+        });
+        req.on('error', function(err) {
+          tunnel.debug('CLIENT: failed HTTP response (%s)', name, err);
+          ++clientError;
+          req.emit('finish');
+        });
+        req.on('finish', function() {
+          if (clientConnect + clientError === clientRequest) {
+            proxy.close();
+            server.close();
+          }
+        });
+      }
+
+      doRequest('no cert origin nor proxy', { // invalid
+        maxSockets: 1,
+        ca: [serverCA],
+        rejectUnauthorized: true,
+        // no certificate for origin server
+        proxy: {
+          port: proxyPort,
+          ca: [proxyCA],
+          rejectUnauthorized: true,
+          headers: {
+            host: 'proxy2'
+          }
+          // no certificate for proxy
+        }
+      }, 'server2');
+
+      doRequest('no cert proxy', { // invalid
+        maxSockets: 1,
+        ca: [serverCA],
+        rejectUnauthorized: true,
+        // client certification for origin server
+        key: client1Key,
+        cert: client1Cert,
+        proxy: {
+          port: proxyPort,
+          ca: [proxyCA],
+          rejectUnauthorized: true,
+          headers: {
+            host: 'proxy2'
+          }
+          // no certificate for proxy
+        }
+      }, 'server2');
+
+      doRequest('no cert origin', { // invalid
+        maxSockets: 1,
+        ca: [serverCA],
+        rejectUnauthorized: true,
+        // no certificate for origin server
+        proxy: {
+          port: proxyPort,
+          servername: 'proxy2',
+          ca: [proxyCA],
+          rejectUnauthorized: true,
+          headers: {
+            host: 'proxy2'
+          },
+          // client certification for proxy
+          key: client2Key,
+          cert: client2Cert
+        }
+      }, 'server2');
+
+      doRequest('invalid proxy server name', { // invalid
+        maxSockets: 1,
+        ca: [serverCA],
+        rejectUnauthorized: true,
+        // client certification for origin server
+        key: client1Key,
+        cert: client1Cert,
+        proxy: {
+          port: proxyPort,
+          ca: [proxyCA],
+          rejectUnauthorized: true,
+          // client certification for proxy
+          key: client2Key,
+          cert: client2Cert,
+        }
+      }, 'server2');
+
+      doRequest('invalid origin server name', { // invalid
+        maxSockets: 1,
+        ca: [serverCA],
+        rejectUnauthorized: true,
+        // client certification for origin server
+        key: client1Key,
+        cert: client1Cert,
+        proxy: {
+          port: proxyPort,
+          servername: 'proxy2',
+          ca: [proxyCA],
+          rejectUnauthorized: true,
+          headers: {
+            host: 'proxy2'
+          },
+          // client certification for proxy
+          key: client2Key,
+          cert: client2Cert
+        }
+      });
+
+      doRequest('valid', { // valid
+        maxSockets: 1,
+        ca: [serverCA],
+        rejectUnauthorized: true,
+        // client certification for origin server
+        key: client1Key,
+        cert: client1Cert,
+        proxy: {
+          port: proxyPort,
+          servername: 'proxy2',
+          ca: [proxyCA],
+          rejectUnauthorized: true,
+          headers: {
+            host: 'proxy2'
+          },
+          // client certification for proxy
+          key: client2Key,
+          cert: client2Cert
+        }
+      }, 'server2');
+    }
+
+    server.on('close', function() {
+      serverConnect.should.equal(1);
+      proxyConnect.should.equal(3);
+      clientConnect.should.equal(1);
+      clientError.should.equal(5);
+
+      done();
+    });
+  });
+});
diff --git a/setup-maven/node_modules/tunnel/test/https-over-https.js b/setup-maven/node_modules/tunnel/test/https-over-https.js
new file mode 100644
index 0000000..a9f81c8
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/https-over-https.js
@@ -0,0 +1,146 @@
+var http = require('http');
+var https = require('https');
+var net = require('net');
+var fs = require('fs');
+var path = require('path');
+var should = require('should');
+var tunnel = require('../index.js');
+
+function readPem(file) {
+  return fs.readFileSync(path.join('test/keys', file + '.pem'));
+}
+
+var serverKey = readPem('server1-key');
+var serverCert = readPem('server1-cert');
+var serverCA = readPem('ca1-cert');
+var proxyKey = readPem('proxy1-key');
+var proxyCert = readPem('proxy1-cert');
+var proxyCA = readPem('ca2-cert');
+var client1Key = readPem('client1-key');
+var client1Cert = readPem('client1-cert');
+var client1CA = readPem('ca3-cert');
+var client2Key = readPem('client2-key');
+var client2Cert = readPem('client2-cert');
+var client2CA = readPem('ca4-cert');
+
+describe('HTTPS over HTTPS', function() {
+  it('should finish without error', function(done) {
+    var serverPort = 3006;
+    var proxyPort = 3007;
+    var poolSize = 3;
+    var N = 5;
+    var serverConnect = 0;
+    var proxyConnect = 0;
+    var clientConnect = 0;
+    var server;
+    var proxy;
+    var agent;
+
+    server = https.createServer({
+      key: serverKey,
+      cert: serverCert,
+      ca: [client1CA],
+      requestCert: true,
+      rejectUnauthorized: true
+    }, function(req, res) {
+      tunnel.debug('SERVER: got request');
+      ++serverConnect;
+      res.writeHead(200);
+      res.end('Hello' + req.url);
+      tunnel.debug('SERVER: sending response');
+    });
+    server.listen(serverPort, setupProxy);
+
+    function setupProxy() {
+      proxy = https.createServer({
+        key: proxyKey,
+        cert: proxyCert,
+        ca: [client2CA],
+        requestCert: true,
+        rejectUnauthorized: true
+      }, function(req, res) {
+        should.fail();
+      });
+      proxy.on('upgrade', onConnect); // for v0.6
+      proxy.on('connect', onConnect); // for v0.7 or later
+
+      function onConnect(req, clientSocket, head) {
+        tunnel.debug('PROXY: got CONNECT request');
+        req.method.should.equal('CONNECT');
+        req.url.should.equal('localhost:' + serverPort);
+        req.headers.should.not.have.property('transfer-encoding');
+        ++proxyConnect;
+
+        var serverSocket = net.connect(serverPort, function() {
+          tunnel.debug('PROXY: replying to client CONNECT request');
+          clientSocket.write('HTTP/1.1 200 Connection established\r\n\r\n');
+          clientSocket.pipe(serverSocket);
+          serverSocket.write(head);
+          serverSocket.pipe(clientSocket);
+          // workaround, see joyent/node#2524
+          serverSocket.on('end', function() {
+            clientSocket.end();
+          });
+        });
+      }
+      proxy.listen(proxyPort, setupClient);
+    }
+
+    function setupClient() {
+      agent = tunnel.httpsOverHttps({
+        maxSockets: poolSize,
+        // client certification for origin server
+        key: client1Key,
+        cert: client1Cert,
+        ca: [serverCA],
+        rejectUnauthroized: true,
+        proxy: {
+          port: proxyPort,
+          // client certification for proxy
+          key: client2Key,
+          cert: client2Cert,
+          ca: [proxyCA],
+          rejectUnauthroized: true
+        }
+      });
+
+      for (var i = 0; i < N; ++i) {
+        doClientRequest(i);
+      }
+
+      function doClientRequest(i) {
+        tunnel.debug('CLIENT: Making HTTPS request (%d)', i);
+        var req = https.get({
+          port: serverPort,
+          path: '/' + i,
+          agent: agent
+        }, function(res) {
+          tunnel.debug('CLIENT: got HTTPS response (%d)', i);
+          res.setEncoding('utf8');
+          res.on('data', function(data) {
+            data.should.equal('Hello/' + i);
+          });
+          res.on('end', function() {
+            ++clientConnect;
+            if (clientConnect === N) {
+              proxy.close();
+              server.close();
+            }
+          });
+        });
+      }
+    }
+
+    server.on('close', function() {
+      serverConnect.should.equal(N);
+      proxyConnect.should.equal(poolSize);
+      clientConnect.should.equal(N);
+
+      var name = 'localhost:' + serverPort;
+      agent.sockets.should.be.empty;
+      agent.requests.should.be.empty;
+  
+      done();
+    });
+  });
+});
diff --git a/setup-maven/node_modules/tunnel/test/keys/Makefile b/setup-maven/node_modules/tunnel/test/keys/Makefile
new file mode 100644
index 0000000..6b4745b
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/Makefile
@@ -0,0 +1,157 @@
+all: server1-cert.pem server2-cert.pem proxy1-cert.pem proxy2-cert.pem client1-cert.pem client2-cert.pem
+
+
+#
+# Create Certificate Authority: ca1
+# ('password' is used for the CA password.)
+#
+ca1-cert.pem: ca1.cnf
+	openssl req -new -x509 -days 9999 -config ca1.cnf -keyout ca1-key.pem -out ca1-cert.pem
+
+#
+# Create Certificate Authority: ca2
+# ('password' is used for the CA password.)
+#
+ca2-cert.pem: ca2.cnf
+	openssl req -new -x509 -days 9999 -config ca2.cnf -keyout ca2-key.pem -out ca2-cert.pem
+
+#
+# Create Certificate Authority: ca3
+# ('password' is used for the CA password.)
+#
+ca3-cert.pem: ca3.cnf
+	openssl req -new -x509 -days 9999 -config ca3.cnf -keyout ca3-key.pem -out ca3-cert.pem
+
+#
+# Create Certificate Authority: ca4
+# ('password' is used for the CA password.)
+#
+ca4-cert.pem: ca4.cnf
+	openssl req -new -x509 -days 9999 -config ca4.cnf -keyout ca4-key.pem -out ca4-cert.pem
+
+
+#
+# server1 is signed by ca1.
+#
+server1-key.pem:
+	openssl genrsa -out server1-key.pem 1024
+
+server1-csr.pem: server1.cnf server1-key.pem
+	openssl req -new -config server1.cnf -key server1-key.pem -out server1-csr.pem
+
+server1-cert.pem: server1-csr.pem ca1-cert.pem ca1-key.pem
+	openssl x509 -req \
+		-days 9999 \
+		-passin "pass:password" \
+		-in server1-csr.pem \
+		-CA ca1-cert.pem \
+		-CAkey ca1-key.pem \
+		-CAcreateserial \
+		-out server1-cert.pem
+
+#
+# server2 is signed by ca1.
+#
+server2-key.pem:
+	openssl genrsa -out server2-key.pem 1024
+
+server2-csr.pem: server2.cnf server2-key.pem
+	openssl req -new -config server2.cnf -key server2-key.pem -out server2-csr.pem
+
+server2-cert.pem: server2-csr.pem ca1-cert.pem ca1-key.pem
+	openssl x509 -req \
+		-days 9999 \
+		-passin "pass:password" \
+		-in server2-csr.pem \
+		-CA ca1-cert.pem \
+		-CAkey ca1-key.pem \
+		-CAcreateserial \
+		-out server2-cert.pem
+
+server2-verify: server2-cert.pem ca1-cert.pem
+	openssl verify -CAfile ca1-cert.pem server2-cert.pem
+
+#
+# proxy1 is signed by ca2.
+#
+proxy1-key.pem:
+	openssl genrsa -out proxy1-key.pem 1024
+
+proxy1-csr.pem: proxy1.cnf proxy1-key.pem
+	openssl req -new -config proxy1.cnf -key proxy1-key.pem -out proxy1-csr.pem
+
+proxy1-cert.pem: proxy1-csr.pem ca2-cert.pem ca2-key.pem
+	openssl x509 -req \
+		-days 9999 \
+		-passin "pass:password" \
+		-in proxy1-csr.pem \
+		-CA ca2-cert.pem \
+		-CAkey ca2-key.pem \
+		-CAcreateserial \
+		-out proxy1-cert.pem
+
+#
+# proxy2 is signed by ca2.
+#
+proxy2-key.pem:
+	openssl genrsa -out proxy2-key.pem 1024
+
+proxy2-csr.pem: proxy2.cnf proxy2-key.pem
+	openssl req -new -config proxy2.cnf -key proxy2-key.pem -out proxy2-csr.pem
+
+proxy2-cert.pem: proxy2-csr.pem ca2-cert.pem ca2-key.pem
+	openssl x509 -req \
+		-days 9999 \
+		-passin "pass:password" \
+		-in proxy2-csr.pem \
+		-CA ca2-cert.pem \
+		-CAkey ca2-key.pem \
+		-CAcreateserial \
+		-out proxy2-cert.pem
+
+proxy2-verify: proxy2-cert.pem ca2-cert.pem
+	openssl verify -CAfile ca2-cert.pem proxy2-cert.pem
+
+#
+# client1 is signed by ca3.
+#
+client1-key.pem:
+	openssl genrsa -out client1-key.pem 1024
+
+client1-csr.pem: client1.cnf client1-key.pem
+	openssl req -new -config client1.cnf -key client1-key.pem -out client1-csr.pem
+
+client1-cert.pem: client1-csr.pem ca3-cert.pem ca3-key.pem
+	openssl x509 -req \
+		-days 9999 \
+		-passin "pass:password" \
+		-in client1-csr.pem \
+		-CA ca3-cert.pem \
+		-CAkey ca3-key.pem \
+		-CAcreateserial \
+		-out client1-cert.pem
+
+#
+# client2 is signed by ca4.
+#
+client2-key.pem:
+	openssl genrsa -out client2-key.pem 1024
+
+client2-csr.pem: client2.cnf client2-key.pem
+	openssl req -new -config client2.cnf -key client2-key.pem -out client2-csr.pem
+
+client2-cert.pem: client2-csr.pem ca4-cert.pem ca4-key.pem
+	openssl x509 -req \
+		-days 9999 \
+		-passin "pass:password" \
+		-in client2-csr.pem \
+		-CA ca4-cert.pem \
+		-CAkey ca4-key.pem \
+		-CAcreateserial \
+		-out client2-cert.pem
+
+
+clean:
+	rm -f *.pem *.srl
+
+test: client-verify server2-verify proxy1-verify proxy2-verify client-verify
diff --git a/setup-maven/node_modules/tunnel/test/keys/agent1-cert.pem b/setup-maven/node_modules/tunnel/test/keys/agent1-cert.pem
new file mode 100644
index 0000000..816f6fb
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/agent1-cert.pem
@@ -0,0 +1,14 @@
+-----BEGIN CERTIFICATE-----
+MIICKjCCAZMCCQDQ8o4kHKdCPDANBgkqhkiG9w0BAQUFADB6MQswCQYDVQQGEwJV
+UzELMAkGA1UECBMCQ0ExCzAJBgNVBAcTAlNGMQ8wDQYDVQQKEwZKb3llbnQxEDAO
+BgNVBAsTB05vZGUuanMxDDAKBgNVBAMTA2NhMTEgMB4GCSqGSIb3DQEJARYRcnlA
+dGlueWNsb3Vkcy5vcmcwHhcNMTEwMzE0MTgyOTEyWhcNMzgwNzI5MTgyOTEyWjB9
+MQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExCzAJBgNVBAcTAlNGMQ8wDQYDVQQK
+EwZKb3llbnQxEDAOBgNVBAsTB05vZGUuanMxDzANBgNVBAMTBmFnZW50MTEgMB4G
+CSqGSIb3DQEJARYRcnlAdGlueWNsb3Vkcy5vcmcwXDANBgkqhkiG9w0BAQEFAANL
+ADBIAkEAnzpAqcoXZxWJz/WFK7BXwD23jlREyG11x7gkydteHvn6PrVBbB5yfu6c
+bk8w3/Ar608AcyMQ9vHjkLQKH7cjEQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAKha
+HqjCfTIut+m/idKy3AoFh48tBHo3p9Nl5uBjQJmahKdZAaiksL24Pl+NzPQ8LIU+
+FyDHFp6OeJKN6HzZ72Bh9wpBVu6Uj1hwhZhincyTXT80wtSI/BoUAW8Ls2kwPdus
+64LsJhhxqj2m4vPKNRbHB2QxnNrGi30CUf3kt3Ia
+-----END CERTIFICATE-----
diff --git a/setup-maven/node_modules/tunnel/test/keys/agent1-csr.pem b/setup-maven/node_modules/tunnel/test/keys/agent1-csr.pem
new file mode 100644
index 0000000..748fd00
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/agent1-csr.pem
@@ -0,0 +1,10 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIIBXTCCAQcCAQAwfTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMQswCQYDVQQH
+EwJTRjEPMA0GA1UEChMGSm95ZW50MRAwDgYDVQQLEwdOb2RlLmpzMQ8wDQYDVQQD
+EwZhZ2VudDExIDAeBgkqhkiG9w0BCQEWEXJ5QHRpbnljbG91ZHMub3JnMFwwDQYJ
+KoZIhvcNAQEBBQADSwAwSAJBAJ86QKnKF2cVic/1hSuwV8A9t45URMhtdce4JMnb
+Xh75+j61QWwecn7unG5PMN/wK+tPAHMjEPbx45C0Ch+3IxECAwEAAaAlMCMGCSqG
+SIb3DQEJBzEWExRBIGNoYWxsZW5nZSBwYXNzd29yZDANBgkqhkiG9w0BAQUFAANB
+AF+AfG64hNyYHum46m6i7RgnUBrJSOynGjs23TekV4he3QdMSAAPPqbll8W14+y3
+vOo7/yQ2v2uTqxCjakUNPPs=
+-----END CERTIFICATE REQUEST-----
diff --git a/setup-maven/node_modules/tunnel/test/keys/agent1-key.pem b/setup-maven/node_modules/tunnel/test/keys/agent1-key.pem
new file mode 100644
index 0000000..5dae7eb
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/agent1-key.pem
@@ -0,0 +1,9 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIBOwIBAAJBAJ86QKnKF2cVic/1hSuwV8A9t45URMhtdce4JMnbXh75+j61QWwe
+cn7unG5PMN/wK+tPAHMjEPbx45C0Ch+3IxECAwEAAQJBAI2cU1IuR+4IO87WPyAB
+76kruoo87AeNQkjjvuQ/00+b/6IS45mcEP5Kw0NukbqBhIw2di9uQ9J51DJ/ZfQr
++YECIQDUHaN3ZjIdJ7/w8Yq9Zzz+3kY2F/xEz6e4ftOFW8bY2QIhAMAref+WYckC
+oECgOLAvAxB1lI4j7oCbAaawfxKdnPj5AiEAi95rXx09aGpAsBGmSdScrPdG1v6j
+83/2ebrvoZ1uFqkCIB0AssnrRVjUB6GZTNTyU3ERfdkx/RX1zvr8WkFR/lXpAiB7
+cUZ1i8ZkZrPrdVgw2cb28UJM7qZHQnXcMHTXFFvxeQ==
+-----END RSA PRIVATE KEY-----
diff --git a/setup-maven/node_modules/tunnel/test/keys/agent1.cnf b/setup-maven/node_modules/tunnel/test/keys/agent1.cnf
new file mode 100644
index 0000000..81d2f09
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/agent1.cnf
@@ -0,0 +1,19 @@
+[ req ]
+default_bits           = 1024
+days                   = 999
+distinguished_name     = req_distinguished_name
+attributes             = req_attributes
+prompt                 = no
+
+[ req_distinguished_name ]
+C                      = US
+ST                     = CA
+L                      = SF
+O                      = Joyent
+OU                     = Node.js
+CN                     = agent1
+emailAddress           = ry@tinyclouds.org
+
+[ req_attributes ]
+challengePassword              = A challenge password
+
diff --git a/setup-maven/node_modules/tunnel/test/keys/agent2-cert.pem b/setup-maven/node_modules/tunnel/test/keys/agent2-cert.pem
new file mode 100644
index 0000000..8e4354d
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/agent2-cert.pem
@@ -0,0 +1,13 @@
+-----BEGIN CERTIFICATE-----
+MIIB7DCCAZYCCQC7gs0MDNn6MTANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJV
+UzELMAkGA1UECBMCQ0ExCzAJBgNVBAcTAlNGMQ8wDQYDVQQKEwZKb3llbnQxEDAO
+BgNVBAsTB05vZGUuanMxDzANBgNVBAMTBmFnZW50MjEgMB4GCSqGSIb3DQEJARYR
+cnlAdGlueWNsb3Vkcy5vcmcwHhcNMTEwMzE0MTgyOTEyWhcNMzgwNzI5MTgyOTEy
+WjB9MQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExCzAJBgNVBAcTAlNGMQ8wDQYD
+VQQKEwZKb3llbnQxEDAOBgNVBAsTB05vZGUuanMxDzANBgNVBAMTBmFnZW50MjEg
+MB4GCSqGSIb3DQEJARYRcnlAdGlueWNsb3Vkcy5vcmcwXDANBgkqhkiG9w0BAQEF
+AANLADBIAkEAyXb8FrRdKbhrKLgLSsn61i1C7w7fVVVd7OQsmV/7p9WB2lWFiDlC
+WKGU9SiIz/A6wNZDUAuc2E+VwtpCT561AQIDAQABMA0GCSqGSIb3DQEBBQUAA0EA
+C8HzpuNhFLCI3A5KkBS5zHAQax6TFUOhbpBCR0aTDbJ6F1liDTK1lmU/BjvPoj+9
+1LHwrmh29rK8kBPEjmymCQ==
+-----END CERTIFICATE-----
diff --git a/setup-maven/node_modules/tunnel/test/keys/agent2-csr.pem b/setup-maven/node_modules/tunnel/test/keys/agent2-csr.pem
new file mode 100644
index 0000000..a670c4c
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/agent2-csr.pem
@@ -0,0 +1,10 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIIBXTCCAQcCAQAwfTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMQswCQYDVQQH
+EwJTRjEPMA0GA1UEChMGSm95ZW50MRAwDgYDVQQLEwdOb2RlLmpzMQ8wDQYDVQQD
+EwZhZ2VudDIxIDAeBgkqhkiG9w0BCQEWEXJ5QHRpbnljbG91ZHMub3JnMFwwDQYJ
+KoZIhvcNAQEBBQADSwAwSAJBAMl2/Ba0XSm4ayi4C0rJ+tYtQu8O31VVXezkLJlf
++6fVgdpVhYg5QlihlPUoiM/wOsDWQ1ALnNhPlcLaQk+etQECAwEAAaAlMCMGCSqG
+SIb3DQEJBzEWExRBIGNoYWxsZW5nZSBwYXNzd29yZDANBgkqhkiG9w0BAQUFAANB
+AJnll2pt5l0pzskQSpjjLVTlFDFmJr/AZ3UK8v0WxBjYjCe5Jx4YehkChpxIyDUm
+U3J9q9MDUf0+Y2+EGkssFfk=
+-----END CERTIFICATE REQUEST-----
diff --git a/setup-maven/node_modules/tunnel/test/keys/agent2-key.pem b/setup-maven/node_modules/tunnel/test/keys/agent2-key.pem
new file mode 100644
index 0000000..522903c
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/agent2-key.pem
@@ -0,0 +1,9 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIBOgIBAAJBAMl2/Ba0XSm4ayi4C0rJ+tYtQu8O31VVXezkLJlf+6fVgdpVhYg5
+QlihlPUoiM/wOsDWQ1ALnNhPlcLaQk+etQECAwEAAQJBAMT6Bf34+UHKY1ObpsbH
+9u2jsVblFq1rWvs8GPMY6oertzvwm3DpuSUp7PTgOB1nLTLYtCERbQ4ovtN8tn3p
+OHUCIQDzIEGsoCr5vlxXvy2zJwu+fxYuhTZWMVuo1397L0VyhwIhANQh+yzqUgaf
+WRtSB4T2W7ADtJI35ET61jKBty3CqJY3AiAIwju7dVW3A5WeD6Qc1SZGKZvp9yCb
+AFI2BfVwwaY11wIgXF3PeGcvACMyMWsuSv7aPXHfliswAbkWuzcwA4TW01ECIGWa
+cgsDvVFxmfM5NPSuT/UDTa6R5BFISB5ea0N0AR3I
+-----END RSA PRIVATE KEY-----
diff --git a/setup-maven/node_modules/tunnel/test/keys/agent2.cnf b/setup-maven/node_modules/tunnel/test/keys/agent2.cnf
new file mode 100644
index 0000000..0a9f2c7
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/agent2.cnf
@@ -0,0 +1,19 @@
+[ req ]
+default_bits           = 1024
+days                   = 999
+distinguished_name     = req_distinguished_name
+attributes             = req_attributes
+prompt                 = no
+
+[ req_distinguished_name ]
+C                      = US
+ST                     = CA
+L                      = SF
+O                      = Joyent
+OU                     = Node.js
+CN                     = agent2
+emailAddress           = ry@tinyclouds.org
+
+[ req_attributes ]
+challengePassword              = A challenge password
+
diff --git a/setup-maven/node_modules/tunnel/test/keys/agent3-cert.pem b/setup-maven/node_modules/tunnel/test/keys/agent3-cert.pem
new file mode 100644
index 0000000..e4a2350
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/agent3-cert.pem
@@ -0,0 +1,14 @@
+-----BEGIN CERTIFICATE-----
+MIICKjCCAZMCCQCDBr594bsJmTANBgkqhkiG9w0BAQUFADB6MQswCQYDVQQGEwJV
+UzELMAkGA1UECBMCQ0ExCzAJBgNVBAcTAlNGMQ8wDQYDVQQKEwZKb3llbnQxEDAO
+BgNVBAsTB05vZGUuanMxDDAKBgNVBAMTA2NhMjEgMB4GCSqGSIb3DQEJARYRcnlA
+dGlueWNsb3Vkcy5vcmcwHhcNMTEwMzE0MTgyOTEyWhcNMzgwNzI5MTgyOTEyWjB9
+MQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExCzAJBgNVBAcTAlNGMQ8wDQYDVQQK
+EwZKb3llbnQxEDAOBgNVBAsTB05vZGUuanMxDzANBgNVBAMTBmFnZW50MzEgMB4G
+CSqGSIb3DQEJARYRcnlAdGlueWNsb3Vkcy5vcmcwXDANBgkqhkiG9w0BAQEFAANL
+ADBIAkEAtlNDZ+bHeBI0B2gD/IWqA7Aq1hwsnS4+XpnLesjTQcL2JwFFpkR0oWrw
+yjrYhCogi7c5gjKrLZF1d2JD5JgHgQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAJoK
+bXwsImk7vJz9649yrmsXwnuGbEKVYMvqcGyjaZNP9lYEG41y5CeRzxhWy2rlYdhE
+f2nqE2lg75oJP7LQqfQY7aCqwahM3q/GQbsfKVCGjF7TVyq9TQzd8iW+FEJIQzSE
+3aN85hR67+3VAXeSzmkGSVBO2m1SJIug4qftIkc2
+-----END CERTIFICATE-----
diff --git a/setup-maven/node_modules/tunnel/test/keys/agent3-csr.pem b/setup-maven/node_modules/tunnel/test/keys/agent3-csr.pem
new file mode 100644
index 0000000..e6c0c74
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/agent3-csr.pem
@@ -0,0 +1,10 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIIBXTCCAQcCAQAwfTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMQswCQYDVQQH
+EwJTRjEPMA0GA1UEChMGSm95ZW50MRAwDgYDVQQLEwdOb2RlLmpzMQ8wDQYDVQQD
+EwZhZ2VudDMxIDAeBgkqhkiG9w0BCQEWEXJ5QHRpbnljbG91ZHMub3JnMFwwDQYJ
+KoZIhvcNAQEBBQADSwAwSAJBALZTQ2fmx3gSNAdoA/yFqgOwKtYcLJ0uPl6Zy3rI
+00HC9icBRaZEdKFq8Mo62IQqIIu3OYIyqy2RdXdiQ+SYB4ECAwEAAaAlMCMGCSqG
+SIb3DQEJBzEWExRBIGNoYWxsZW5nZSBwYXNzd29yZDANBgkqhkiG9w0BAQUFAANB
+AEGo76iH+a8pnE+RWQT+wg9/BL+iIuqrcFXLs0rbGonqderrwXAe15ODwql/Bfu3
+zgMt8ooTsgMPcMX9EgmubEM=
+-----END CERTIFICATE REQUEST-----
diff --git a/setup-maven/node_modules/tunnel/test/keys/agent3-key.pem b/setup-maven/node_modules/tunnel/test/keys/agent3-key.pem
new file mode 100644
index 0000000..d72f071
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/agent3-key.pem
@@ -0,0 +1,9 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIBOwIBAAJBALZTQ2fmx3gSNAdoA/yFqgOwKtYcLJ0uPl6Zy3rI00HC9icBRaZE
+dKFq8Mo62IQqIIu3OYIyqy2RdXdiQ+SYB4ECAwEAAQJAIk+G9s2SKgFa8y3a2jGZ
+LfqABSzmJGooaIsOpLuYLd6eCC31XUDlT4rPVGRhysKQCQ4+NMjgdnj9ZqNnvXY/
+RQIhAOgbdltr3Ey2hy7RuDW5rmOeJTuVqCrZ7QI8ifyCEbYTAiEAyRfvWSvvASeP
+kZTMUhATRUpuyDQW+058NE0oJSinTpsCIQCR/FPhBGI3TcaQyA9Ym0T4GwvIAkUX
+TqInefRAAX8qSQIgZVJPAdIWGbHSL9sWW97HpukLCorcbYEtKbkamiZyrjMCIQCX
+lX76ttkeId5OsJGQcF67eFMMr2UGZ1WMf6M39lCYHQ==
+-----END RSA PRIVATE KEY-----
diff --git a/setup-maven/node_modules/tunnel/test/keys/agent3.cnf b/setup-maven/node_modules/tunnel/test/keys/agent3.cnf
new file mode 100644
index 0000000..26db5ba
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/agent3.cnf
@@ -0,0 +1,19 @@
+[ req ]
+default_bits           = 1024
+days                   = 999
+distinguished_name     = req_distinguished_name
+attributes             = req_attributes
+prompt                 = no
+
+[ req_distinguished_name ]
+C                      = US
+ST                     = CA
+L                      = SF
+O                      = Joyent
+OU                     = Node.js
+CN                     = agent3
+emailAddress           = ry@tinyclouds.org
+
+[ req_attributes ]
+challengePassword              = A challenge password
+
diff --git a/setup-maven/node_modules/tunnel/test/keys/agent4-cert.pem b/setup-maven/node_modules/tunnel/test/keys/agent4-cert.pem
new file mode 100644
index 0000000..07157b9
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/agent4-cert.pem
@@ -0,0 +1,15 @@
+-----BEGIN CERTIFICATE-----
+MIICSDCCAbGgAwIBAgIJAIMGvn3huwmaMA0GCSqGSIb3DQEBBQUAMHoxCzAJBgNV
+BAYTAlVTMQswCQYDVQQIEwJDQTELMAkGA1UEBxMCU0YxDzANBgNVBAoTBkpveWVu
+dDEQMA4GA1UECxMHTm9kZS5qczEMMAoGA1UEAxMDY2EyMSAwHgYJKoZIhvcNAQkB
+FhFyeUB0aW55Y2xvdWRzLm9yZzAeFw0xMTAzMTQxODI5MTJaFw0zODA3MjkxODI5
+MTJaMH0xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTELMAkGA1UEBxMCU0YxDzAN
+BgNVBAoTBkpveWVudDEQMA4GA1UECxMHTm9kZS5qczEPMA0GA1UEAxMGYWdlbnQ0
+MSAwHgYJKoZIhvcNAQkBFhFyeUB0aW55Y2xvdWRzLm9yZzBcMA0GCSqGSIb3DQEB
+AQUAA0sAMEgCQQDN/yMfmQ8zdvmjlGk7b3Mn6wY2FjaMb4c5ENJX15vyYhKS1zhx
+6n0kQIn2vf6yqG7tO5Okz2IJiD9Sa06mK6GrAgMBAAGjFzAVMBMGA1UdJQQMMAoG
+CCsGAQUFBwMCMA0GCSqGSIb3DQEBBQUAA4GBAA8FXpRmdrHBdlofNvxa14zLvv0N
+WnUGUmxVklFLKXvpVWTanOhVgI2TDCMrT5WvCRTD25iT1EUKWxjDhFJrklQJ+IfC
+KC6fsgO7AynuxWSfSkc8/acGiAH+20vW9QxR53HYiIDMXEV/wnE0KVcr3t/d70lr
+ImanTrunagV+3O4O
+-----END CERTIFICATE-----
diff --git a/setup-maven/node_modules/tunnel/test/keys/agent4-csr.pem b/setup-maven/node_modules/tunnel/test/keys/agent4-csr.pem
new file mode 100644
index 0000000..97e115d
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/agent4-csr.pem
@@ -0,0 +1,10 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIIBXTCCAQcCAQAwfTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMQswCQYDVQQH
+EwJTRjEPMA0GA1UEChMGSm95ZW50MRAwDgYDVQQLEwdOb2RlLmpzMQ8wDQYDVQQD
+EwZhZ2VudDQxIDAeBgkqhkiG9w0BCQEWEXJ5QHRpbnljbG91ZHMub3JnMFwwDQYJ
+KoZIhvcNAQEBBQADSwAwSAJBAM3/Ix+ZDzN2+aOUaTtvcyfrBjYWNoxvhzkQ0lfX
+m/JiEpLXOHHqfSRAifa9/rKobu07k6TPYgmIP1JrTqYroasCAwEAAaAlMCMGCSqG
+SIb3DQEJBzEWExRBIGNoYWxsZW5nZSBwYXNzd29yZDANBgkqhkiG9w0BAQUFAANB
+AMzo7GUOBtGm5MSck1rrEE2C1bU3qoVvXVuiN3A/57zXeNeq24FZMLnkDeL9U+/b
+Kj646XFou04gla982Xp74p0=
+-----END CERTIFICATE REQUEST-----
diff --git a/setup-maven/node_modules/tunnel/test/keys/agent4-key.pem b/setup-maven/node_modules/tunnel/test/keys/agent4-key.pem
new file mode 100644
index 0000000..b770b01
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/agent4-key.pem
@@ -0,0 +1,9 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIBOQIBAAJBAM3/Ix+ZDzN2+aOUaTtvcyfrBjYWNoxvhzkQ0lfXm/JiEpLXOHHq
+fSRAifa9/rKobu07k6TPYgmIP1JrTqYroasCAwEAAQJAN8RQb+dx1A7rejtdWbfM
+Rww7PD07Oz2eL/a72wgFsdIabRuVypIoHunqV0sAegYtNJt9yu+VhREw0R5tx/qz
+EQIhAPY+nmzp0b4iFRk7mtGUmCTr9iwwzoqzITwphE7FpQnFAiEA1ihUHFT9YPHO
+f85skM6qZv77NEgXHO8NJmQZ5GX1ZK8CICzle+Mluo0tD6W7HV4q9pZ8wzSJbY8S
+W/PpKetm09F1AiAWTw8sAGKAtc/IGo3Oq+iuYAN1F8lolzJsfGMCGujsOwIgAJKP
+t3eXilwX3ZlsDWSklWNZ7iYcfYrvAc3JqU6gFCE=
+-----END RSA PRIVATE KEY-----
diff --git a/setup-maven/node_modules/tunnel/test/keys/agent4.cnf b/setup-maven/node_modules/tunnel/test/keys/agent4.cnf
new file mode 100644
index 0000000..5e583eb
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/agent4.cnf
@@ -0,0 +1,21 @@
+[ req ]
+default_bits           = 1024
+days                   = 999
+distinguished_name     = req_distinguished_name
+attributes             = req_attributes
+prompt                 = no
+
+[ req_distinguished_name ]
+C                      = US
+ST                     = CA
+L                      = SF
+O                      = Joyent
+OU                     = Node.js
+CN                     = agent4
+emailAddress           = ry@tinyclouds.org
+
+[ req_attributes ]
+challengePassword              = A challenge password
+
+[ ext_key_usage ]
+extendedKeyUsage       = clientAuth
diff --git a/setup-maven/node_modules/tunnel/test/keys/ca1-cert.pem b/setup-maven/node_modules/tunnel/test/keys/ca1-cert.pem
new file mode 100644
index 0000000..640c084
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/ca1-cert.pem
@@ -0,0 +1,14 @@
+-----BEGIN CERTIFICATE-----
+MIICIzCCAYwCCQC4ONZJx5BOwjANBgkqhkiG9w0BAQUFADBWMQswCQYDVQQGEwJK
+UDESMBAGA1UECxQJbm9kZWpzX2pwMQwwCgYDVQQDEwNjYTExJTAjBgkqhkiG9w0B
+CQEWFmtvaWNoaWtAaW1wcm92ZW1lbnQuanAwHhcNMTMxMjI0MTEyMzIxWhcNNDEw
+NTEwMTEyMzIxWjBWMQswCQYDVQQGEwJKUDESMBAGA1UECxQJbm9kZWpzX2pwMQww
+CgYDVQQDEwNjYTExJTAjBgkqhkiG9w0BCQEWFmtvaWNoaWtAaW1wcm92ZW1lbnQu
+anAwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOJMS1ug8jUu0wwEfD4h9/Mg
+w0fvs7JbpMxtwpdcFpg/6ECd8YzGUvljLzeHPe2AhF26MiWIUN3YTxZRiQQ2tv93
+afRVWchdPypytmuxv2aYGjhZ66Tv4vNRizM71OE+66+KS30gEQW2k4MTr0ZVlRPR
+OVey+zRSLdVaKciB/XaBAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEApfbly4b+Ry1q
+bGIgGrlTvNFvF+j2RuHqSpuTB4nKyw1tbNreKmEEb6SBEfkjcTONx5rKECZ5RRPX
+z4R/o1G6Dn21ouf1pWQO0BC/HnLN30KvvsoZRoxBn/fqBlJA+j/Kpj3RQgFj6l2I
+AKI5fD+ucPqRGhjmmTsNyc+Ln4UfAq8=
+-----END CERTIFICATE-----
diff --git a/setup-maven/node_modules/tunnel/test/keys/ca1-cert.srl b/setup-maven/node_modules/tunnel/test/keys/ca1-cert.srl
new file mode 100644
index 0000000..d7f4b79
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/ca1-cert.srl
@@ -0,0 +1 @@
+B111C9CEF0257692
diff --git a/setup-maven/node_modules/tunnel/test/keys/ca1-key.pem b/setup-maven/node_modules/tunnel/test/keys/ca1-key.pem
new file mode 100644
index 0000000..aaa58ae
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/ca1-key.pem
@@ -0,0 +1,17 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIICxjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIbo5wvG42IY0CAggA
+MBQGCCqGSIb3DQMHBAgf8SPuz4biYASCAoAR4r8MVikusOAEt4Xp6nB7whrMX4iG
+G792Qpf21nHZPMV73w3cdkfimbAfUn8F50tSJwdrAa8U9BjjpL9Kt0loIyXt/r8c
+6PWAQ4WZuLPgTFUTJUNAXrunBHI0iFWYEN4YzJYmT1qN3J4u0diy0MkKz6eJPfZ3
+3v97+nF7dR2H86ZgLKsuE4pO5IRb60XW85d7CYaY6rU6l6mXMF0g9sIccHTlFoet
+Xm6cA7NAm1XSI1ciYcoc8oaVE9dXoOALaTnBEZ2MJGpsYQ0Hr7kB4VKAO9wsOta5
+L9nXPv79Nzo1MZMChkrORFnwOzH4ffsUwVQ70jUzkt5DEyzCM1oSxFNRQESxnFrr
+7c1jLg2gxAVwnqYo8njsKJ23BZqZUxHsBgB2Mg1L/iPT6zhclD0u3RZx9MR4ezB2
+IqoCF19Z5bblkReAeVRAE9Ol4hKVaCEIIPUspcw7eGVGONalHDCSXpIFnJoZLeXJ
+OZjLmYlA6KkJw52eNE5IwIb8l/tha2fwNpRvlMoXp65yH9wKyJk8zPSM6WAk4dKD
+nLrTCK4KtM6aIbG14Mff6WEf3uaLPM0cLwxmuypfieCZfkIzgytNdFZoBgaYUpon
+zazvUMoy3gqDBorcU08SaosdRoL+s+QVkRhA29shf42lqOM4zbh0dTul4QDlLG0U
+VBNeMJ3HnrqATfBU28j3bUqtuF2RffgcN/3ivlBjcyzF/iPt0TWmm6Zz5v4K8+b6
+lOm6gofIz+ffg2cXfPzrqZ2/xhFkcerRuN0Xp5eAhlI2vGJVGuEc4X+tT7VtQgLV
+iovqzlLhp+ph/gsfCcsYZ9iso3ozw+Cx1HfJ8XT7yWUgXxblkt4uszEo
+-----END ENCRYPTED PRIVATE KEY-----
diff --git a/setup-maven/node_modules/tunnel/test/keys/ca1.cnf b/setup-maven/node_modules/tunnel/test/keys/ca1.cnf
new file mode 100644
index 0000000..dcb0637
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/ca1.cnf
@@ -0,0 +1,17 @@
+[ req ]
+default_bits           = 1024
+days                   = 9999
+distinguished_name     = req_distinguished_name
+attributes             = req_attributes
+prompt                 = no
+output_password        = password
+
+[ req_distinguished_name ]
+C                      = JP
+OU                     = nodejs_jp
+CN                     = ca1
+emailAddress           = koichik@improvement.jp
+
+[ req_attributes ]
+challengePassword              = A challenge password
+
diff --git a/setup-maven/node_modules/tunnel/test/keys/ca2-cert.pem b/setup-maven/node_modules/tunnel/test/keys/ca2-cert.pem
new file mode 100644
index 0000000..4c29c87
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/ca2-cert.pem
@@ -0,0 +1,14 @@
+-----BEGIN CERTIFICATE-----
+MIICIzCCAYwCCQCxIhZSDET+8DANBgkqhkiG9w0BAQUFADBWMQswCQYDVQQGEwJK
+UDESMBAGA1UECxQJbm9kZWpzX2pwMQwwCgYDVQQDEwNjYTIxJTAjBgkqhkiG9w0B
+CQEWFmtvaWNoaWtAaW1wcm92ZW1lbnQuanAwHhcNMTMxMjI0MTEyMzIxWhcNNDEw
+NTEwMTEyMzIxWjBWMQswCQYDVQQGEwJKUDESMBAGA1UECxQJbm9kZWpzX2pwMQww
+CgYDVQQDEwNjYTIxJTAjBgkqhkiG9w0BCQEWFmtvaWNoaWtAaW1wcm92ZW1lbnQu
+anAwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaaLMMe7K5eYABH3NnJoimG
+LvY4S5tdGF6YRwfkn1bgGa+kEw1zNqa/Y0jSzs4h7bApt3+bKTalR4+Zk+0UmWgZ
+Gvlq8+mdqDXtBKoWE3vYDPBmeNyKsgxf9UIhFOpsxVUeYP8t66qJyUk/FlFJcDqc
+WPawikl1bUFSZXBKu4PxAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAwh3sXPIkA5kn
+fpg7fV5haS4EpFr9ia61dzWbhXDZtasAx+nWdWqgG4T+HIYSLlMNZbGJ998uhFZf
+DEHlbY/WuSBukZ0w+xqKBtPyjLIQKVvNiaTx5YMzQes62R1iklOXzBzyHbYIxFOG
+dqLfIjEe/mVVoR23LN2tr8Wa6+rmd+w=
+-----END CERTIFICATE-----
diff --git a/setup-maven/node_modules/tunnel/test/keys/ca2-cert.srl b/setup-maven/node_modules/tunnel/test/keys/ca2-cert.srl
new file mode 100644
index 0000000..2749952
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/ca2-cert.srl
@@ -0,0 +1 @@
+9BF2D4B2E00EDF16
diff --git a/setup-maven/node_modules/tunnel/test/keys/ca2-crl.pem b/setup-maven/node_modules/tunnel/test/keys/ca2-crl.pem
new file mode 100644
index 0000000..166df74
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/ca2-crl.pem
@@ -0,0 +1,10 @@
+-----BEGIN X509 CRL-----
+MIIBXTCBxzANBgkqhkiG9w0BAQQFADB6MQswCQYDVQQGEwJVUzELMAkGA1UECBMC
+Q0ExCzAJBgNVBAcTAlNGMQ8wDQYDVQQKEwZKb3llbnQxEDAOBgNVBAsTB05vZGUu
+anMxDDAKBgNVBAMTA2NhMjEgMB4GCSqGSIb3DQEJARYRcnlAdGlueWNsb3Vkcy5v
+cmcXDTExMDMxNDE4MjkxNloXDTEzMTIwNzE4MjkxNlowHDAaAgkAgwa+feG7CZoX
+DTExMDMxNDE4MjkxNFowDQYJKoZIhvcNAQEEBQADgYEArRKuEkOla61fm4zlZtHe
+LTXFV0Hgo21PScHAp6JqPol4rN5R9+EmUkv7gPCVVBJ9VjIgxSosHiLsDiz3zR+u
+txHemhzbdIVANAIiChnFct8sEqH2eL4N6XNUIlMIR06NjNl7NbN8w8haqiearnuT
+wmnaL4TThPmpbpKAF7N7JqQ=
+-----END X509 CRL-----
diff --git a/setup-maven/node_modules/tunnel/test/keys/ca2-database.txt b/setup-maven/node_modules/tunnel/test/keys/ca2-database.txt
new file mode 100644
index 0000000..a0966d2
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/ca2-database.txt
@@ -0,0 +1 @@
+R	380729182912Z	110314182914Z	8306BE7DE1BB099A	unknown	/C=US/ST=CA/L=SF/O=Joyent/OU=Node.js/CN=agent4/emailAddress=ry@tinyclouds.org
diff --git a/setup-maven/node_modules/tunnel/test/keys/ca2-key.pem b/setup-maven/node_modules/tunnel/test/keys/ca2-key.pem
new file mode 100644
index 0000000..9cea659
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/ca2-key.pem
@@ -0,0 +1,17 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIICxjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQI3aq9fKZIOF0CAggA
+MBQGCCqGSIb3DQMHBAjyunMfVve0OwSCAoAdMsrRFlQUSILw+bq3cSVIIbFjwcs0
+B1Uz2rc9SB+1qjsazjv4zvPQSXTrsx2EOSJf9PSPz7r+c0NzO9vfWLorpXof/lwL
+C1tRN7/1OqEW/mTK+1wlv0M5C4cmf44BBXmI+y+RWrQ/qc+CWEMvfHwv9zWr2K+i
+cLlZv55727GvZYCMMVLiqYd/Ejj98loBsE5dhN4JJ5MPaN3UHhFTCpD453GIIzCi
+FRuYhOOtX4qYoEuP2db4S2qu26723ZJnYBEHkK2YZiRrgvoZHugyGIr4f/RRoSUI
+fPgycgQfL3Ow+Y1G533PiZ+CYgh9cViUzhZImEPiZpSuUntAD1loOYkJuV9Ai9XZ
++t6+7tfkM3aAo1bkaU8KcfINxxNWfAhCbUQw+tGJl2A+73OM5AGjGSfzjQQL/FOa
+5omfEvdfEX2XyRRlqnQ2VucvSTL9ZdzbIJGg/euJTpM44Fwc7yAZv2aprbPoPixu
+yyf0LoTjlGGSBZvHkunpWx82lYEXvHhcnCxV5MDFw8wehvDrvcSuzb8//HzLOiOB
+gzUr3DOQk4U1UD6xixZjAKC+NUwTVZoHg68KtmQfkq+eGUWf5oJP4xUigi3ui/Wy
+OCBDdlRBkFtgLGL51KJqtq1ixx3Q9HMl0y6edr5Ls0unDIo0LtUWUUcAtr6wl+kK
+zSztxFMi2zTtbhbkwoVpucNstFQNfV1k22vtnlcux2FV2DdZiJQwYpIbr8Gj6gpK
+gtV5l9RFe21oZBcKPt/chrF8ayiClfGMpF3D2p2GqGCe0HuH5uM/JAFf60rbnriA
+Nu1bWiXsXLRUXcLIQ/uEPR3Mvvo9k1h4Q6it1Rp67eQiXCX6h2uFq+sB
+-----END ENCRYPTED PRIVATE KEY-----
diff --git a/setup-maven/node_modules/tunnel/test/keys/ca2-serial b/setup-maven/node_modules/tunnel/test/keys/ca2-serial
new file mode 100644
index 0000000..8a0f05e
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/ca2-serial
@@ -0,0 +1 @@
+01
diff --git a/setup-maven/node_modules/tunnel/test/keys/ca2.cnf b/setup-maven/node_modules/tunnel/test/keys/ca2.cnf
new file mode 100644
index 0000000..46e8274
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/ca2.cnf
@@ -0,0 +1,17 @@
+[ req ]
+default_bits           = 1024
+days                   = 9999
+distinguished_name     = req_distinguished_name
+attributes             = req_attributes
+prompt                 = no
+output_password        = password
+
+[ req_distinguished_name ]
+C                      = JP
+OU                     = nodejs_jp
+CN                     = ca2
+emailAddress           = koichik@improvement.jp
+
+[ req_attributes ]
+challengePassword              = A challenge password
+
diff --git a/setup-maven/node_modules/tunnel/test/keys/ca3-cert.pem b/setup-maven/node_modules/tunnel/test/keys/ca3-cert.pem
new file mode 100644
index 0000000..02b3f7a
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/ca3-cert.pem
@@ -0,0 +1,14 @@
+-----BEGIN CERTIFICATE-----
+MIICIzCCAYwCCQCudHFhEWiUHDANBgkqhkiG9w0BAQUFADBWMQswCQYDVQQGEwJK
+UDESMBAGA1UECxQJbm9kZWpzX2pwMQwwCgYDVQQDEwNjYTMxJTAjBgkqhkiG9w0B
+CQEWFmtvaWNoaWtAaW1wcm92ZW1lbnQuanAwHhcNMTMxMjI0MTEyMzIxWhcNNDEw
+NTEwMTEyMzIxWjBWMQswCQYDVQQGEwJKUDESMBAGA1UECxQJbm9kZWpzX2pwMQww
+CgYDVQQDEwNjYTMxJTAjBgkqhkiG9w0BCQEWFmtvaWNoaWtAaW1wcm92ZW1lbnQu
+anAwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJPRJMhCNtxX6dQ3rLdrzVCl
+XJMSRIICpbsc7arOzSJcrsIYeYC4d29dGwxYNLnAkKSmHujFT9SmFgh88CoYETLp
+gE9zCk9hVCwUlWelM/UaIrzeLT4SC3VBptnLmMtk2mqFniLcaFdMycAcX8OIhAgG
+fbqyT5Wxwz7UMegip2ZjAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEADpu8a/W+NPnS
+mhyIOxXn8O//2oH9ELlBYFLIgTid0xmS05x/MgkXtWqiBEEZFoOfoJBJxM3vTFs0
+PiZvcVjv0IIjDF4s54yRVH+4WI2p7cil1fgzAVRTuOIuR+VyN7ct8s26a/7GFDq6
+NJMByyjsJHyxwwri5hVv+jbLCxmnDjI=
+-----END CERTIFICATE-----
diff --git a/setup-maven/node_modules/tunnel/test/keys/ca3-cert.srl b/setup-maven/node_modules/tunnel/test/keys/ca3-cert.srl
new file mode 100644
index 0000000..cfd39e1
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/ca3-cert.srl
@@ -0,0 +1 @@
+EF7B2CF0FA61DF41
diff --git a/setup-maven/node_modules/tunnel/test/keys/ca3-key.pem b/setup-maven/node_modules/tunnel/test/keys/ca3-key.pem
new file mode 100644
index 0000000..8931132
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/ca3-key.pem
@@ -0,0 +1,17 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIICxjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIwAta+L4c9soCAggA
+MBQGCCqGSIb3DQMHBAgqRud2p3SvogSCAoDXoDJOJDkvgFpQ6rxeV5r0fLX4SrGJ
+quv4yt02QxSDUPN2ZLtBt6bLzg4Zv2pIggufYJcZ2IOUnX82T7FlvBP8hbW1q3Bs
+jAso7z8kJlFrZjNudjuP2l/X8tjrVyr3I0PoRoomtcHnCcSDdyne8Dqqj1enuikF
+8b7FZUqocNLfu8LmNGxMmMwjw3UqhtpP5DjqV60B8ytQFPoz/gFh6aNGvsrD/avU
+Dj8EJkQZP6Q32vmCzAvSiLjk7FA7RFmBtaurE9hJYNlc5v1eo69EUwPkeVlTpglJ
+5sZAHxlhQCgc72ST6uFQKiMO3ng/JJA5N9EvacYSHQvI1TQIo43V2A//zUh/5hGL
+sDv4pRuFq9miX8iiQpwo1LDfRzdwg7+tiLm8/mDyeLUSzDNc6GIX/tC9R4Ukq4ge
+1Cfq0gtKSRxZhM8HqpGBC9rDs5mpdUqTRsoHLFn5T6/gMiAtrLCJxgD8JsZBa8rM
+KZ09QEdZXTvpyvZ8bSakP5PF6Yz3QYO32CakL7LDPpCng0QDNHG10YaZbTOgJIzQ
+NJ5o87DkgDx0Bb3L8FoREIBkjpYFbQi2fvPthoepZ3D5VamVsOwOiZ2sR1WF2J8l
+X9c8GdG38byO+SQIPNZ8eT5JvUcNeSlIZiVSwvaEk496d2KzhmMMfoBLFVeHXG90
+CIZPleVfkTmgNQgXPWcFngqTZdDEGsHjEDDhbEAijB3EeOxyiiEDJPMy5zqkdy5D
+cZ/Y77EDbln7omcyL+cGvCgBhhYpTbtbuBtzW4CiCvcfEB5N4EtJKOTRJXIpL/d3
+oVnZruqRRKidKwFMEZU2NZJX5FneAWFSeCv0IrY2vAUIc3El+n84CFFK
+-----END ENCRYPTED PRIVATE KEY-----
diff --git a/setup-maven/node_modules/tunnel/test/keys/ca3.cnf b/setup-maven/node_modules/tunnel/test/keys/ca3.cnf
new file mode 100644
index 0000000..7b2378a
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/ca3.cnf
@@ -0,0 +1,17 @@
+[ req ]
+default_bits           = 1024
+days                   = 9999
+distinguished_name     = req_distinguished_name
+attributes             = req_attributes
+prompt                 = no
+output_password        = password
+
+[ req_distinguished_name ]
+C                      = JP
+OU                     = nodejs_jp
+CN                     = ca3
+emailAddress           = koichik@improvement.jp
+
+[ req_attributes ]
+challengePassword              = A challenge password
+
diff --git a/setup-maven/node_modules/tunnel/test/keys/ca4-cert.pem b/setup-maven/node_modules/tunnel/test/keys/ca4-cert.pem
new file mode 100644
index 0000000..ed0686a
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/ca4-cert.pem
@@ -0,0 +1,14 @@
+-----BEGIN CERTIFICATE-----
+MIICIzCCAYwCCQDUGh2r7lOpITANBgkqhkiG9w0BAQUFADBWMQswCQYDVQQGEwJK
+UDESMBAGA1UECxQJbm9kZWpzX2pwMQwwCgYDVQQDEwNjYTQxJTAjBgkqhkiG9w0B
+CQEWFmtvaWNoaWtAaW1wcm92ZW1lbnQuanAwHhcNMTMxMjI0MTEyMzIxWhcNNDEw
+NTEwMTEyMzIxWjBWMQswCQYDVQQGEwJKUDESMBAGA1UECxQJbm9kZWpzX2pwMQww
+CgYDVQQDEwNjYTQxJTAjBgkqhkiG9w0BCQEWFmtvaWNoaWtAaW1wcm92ZW1lbnQu
+anAwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOOC+SPC8XzkjIHfKPMzzNV6
+O/LpqQWdzJtEvFNW0oQ9g8gSV4iKqwUFrLNnSlwSGigvqKqGmYtG8S17ANWInoxI
+c3sQlrS2cGbgLUBNKu4hZ7s+11EPOjbnn0QUE5w9GN8fy8CDx7ID/8URYKoxcoRv
+0w7EJ2agfd68KS1ayxUXAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAumPFeR63Dyki
+SWQtRAe2QWkIFlSRAR2PvSDdsDMLwMeXF5wD3Hv51yfTu9Gkg0QJB86deYfQ5vfV
+4QsOQ35icesa12boyYpTE0/OoEX1f/s1sLlszpRvtAki3J4bkcGWAzM5yO1fKqpQ
+MbtPzLn+DA7ymxuJa6EQAEb+kaJEBuU=
+-----END CERTIFICATE-----
diff --git a/setup-maven/node_modules/tunnel/test/keys/ca4-cert.srl b/setup-maven/node_modules/tunnel/test/keys/ca4-cert.srl
new file mode 100644
index 0000000..5c11314
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/ca4-cert.srl
@@ -0,0 +1 @@
+B01FE0416A2EDCF5
diff --git a/setup-maven/node_modules/tunnel/test/keys/ca4-key.pem b/setup-maven/node_modules/tunnel/test/keys/ca4-key.pem
new file mode 100644
index 0000000..fa7aca1
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/ca4-key.pem
@@ -0,0 +1,17 @@
+-----BEGIN ENCRYPTED PRIVATE KEY-----
+MIICxjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIWE/ri/feeikCAggA
+MBQGCCqGSIb3DQMHBAiu6hUzoFnsVASCAoC53ZQ4gxLcFnb5yAcdCl4DdKOJ5m4G
+CHosR87pJpZlO68DsCKwORUp9tTmb1/Q4Wm9n2kRf6VQNyVVm6REwzEPAgIJEgy2
+FqLmfqpTElbRsQako8UDXjDjaMO30e+Qhy8HOTrHMJZ6LgrU90xnOCPPeN9fYmIu
+YBkX4qewUfu+wFzk/unUbFLChvJsEN4fdrlDwTJMHRzKwbdvg3mHlCnspWwjA2Mc
+q27QPeb3mwRUajmqL0dT9y7wVYeAN2zV59VoWm6zV+dWFgyMlVrVCRYkqQC3xOsy
+ZlKrGldrY8nNdv5s6+Sc7YavTJiJxHgIB7sm6QFIsdqjxTBEGD4/YhEI52SUw/xO
+VJmOTWdWUz4FdWNi7286nfhZ0+mdv6fUoG54Qv6ahnUMJvEsp60LkR1gHXLzQu/m
++yDZFqY/IIg2QA7M3gL0Md5GrWydDlD2uBPoXcC4A5gfOHswzHWDKurDCpoMqdpn
+CUQ/ZVl2rwF8Pnty61MjY1xCN1r8xQjFBCgcfBWw5v6sNRbr/vef3TfQIBzVm+hx
+akDb1nckBsIjMT9EfeT6hXub2n0oehEHewF1COifbcOjnxToLSswPLrtb0behB+o
+zTgftn+4XrkY0sFY69TzYtQVMLAsiWTpZFvAi+D++2pXlQ/bnxKJiBBc6kZuAGpN
+z+cJ4kUuFE4S9v5C5vK89nIgcuJT06u8wYTy0N0j/DnIjSaVgGr0Y0841mXtU1VV
+wUZjuyYrVwVT/g5r6uzEFldTcjmYkbMaxo+MYnEZZgqYJvu2QlK87YxJOwo+D1NX
+4gl1s/bmlPlGw/t9TxutI3S9PEr3JM3013e9UPE+evlTG9IIrZaUPzyj
+-----END ENCRYPTED PRIVATE KEY-----
diff --git a/setup-maven/node_modules/tunnel/test/keys/ca4.cnf b/setup-maven/node_modules/tunnel/test/keys/ca4.cnf
new file mode 100644
index 0000000..ceac8f3
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/ca4.cnf
@@ -0,0 +1,17 @@
+[ req ]
+default_bits           = 1024
+days                   = 9999
+distinguished_name     = req_distinguished_name
+attributes             = req_attributes
+prompt                 = no
+output_password        = password
+
+[ req_distinguished_name ]
+C                      = JP
+OU                     = nodejs_jp
+CN                     = ca4
+emailAddress           = koichik@improvement.jp
+
+[ req_attributes ]
+challengePassword              = A challenge password
+
diff --git a/setup-maven/node_modules/tunnel/test/keys/client.cnf b/setup-maven/node_modules/tunnel/test/keys/client.cnf
new file mode 100644
index 0000000..e3db741
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/client.cnf
@@ -0,0 +1,16 @@
+[ req ]
+default_bits           = 1024
+days                   = 9999
+distinguished_name     = req_distinguished_name
+attributes             = req_attributes
+prompt                 = no
+
+[ req_distinguished_name ]
+C                      = JP
+OU                     = nodejs_jp
+CN                     = localhost
+emailAddress           = koichik@improvement.jp
+
+[ req_attributes ]
+challengePassword              = A challenge password
+
diff --git a/setup-maven/node_modules/tunnel/test/keys/client1-cert.pem b/setup-maven/node_modules/tunnel/test/keys/client1-cert.pem
new file mode 100644
index 0000000..24ea1db
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/client1-cert.pem
@@ -0,0 +1,14 @@
+-----BEGIN CERTIFICATE-----
+MIICKTCCAZICCQDveyzw+mHfQTANBgkqhkiG9w0BAQUFADBWMQswCQYDVQQGEwJK
+UDESMBAGA1UECxQJbm9kZWpzX2pwMQwwCgYDVQQDEwNjYTMxJTAjBgkqhkiG9w0B
+CQEWFmtvaWNoaWtAaW1wcm92ZW1lbnQuanAwHhcNMTMxMjI0MTEyMzIxWhcNNDEw
+NTEwMTEyMzIxWjBcMQswCQYDVQQGEwJKUDESMBAGA1UECxQJbm9kZWpzX2pwMRIw
+EAYDVQQDEwlsb2NhbGhvc3QxJTAjBgkqhkiG9w0BCQEWFmtvaWNoaWtAaW1wcm92
+ZW1lbnQuanAwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMYUuKyuxT93zvrS
+mL8IMI8xu8dP3iRZDUYu6dmq6Dntgb7intfzxtEFVmfNCDGwJwg7UKx/FzftGxFb
+9LksuvAQuW2FLhCrOmXUVU938OZkQRSflISD80kd4i9JEoKKYPX1imjaMugIQ0ta
+Bq2orY6sna8JAUVDW6WO3wVEJ4mBAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAAbaH
+bc/6dIFC9TPIDrgsLtsOtycdBJqKbFT1wThhyKncXF/iyaI+8N4UA+hXMjk8ODUl
+BVmmgaN6ufMLwnx/Gdl9FLmmDq4FQ4zspClTJo42QPzg5zKoPSw5liy73LM7z+nG
+g6IeM8RFlEbs109YxqvQnbHfTgeLdIsdvtNXU80=
+-----END CERTIFICATE-----
diff --git a/setup-maven/node_modules/tunnel/test/keys/client1-csr.pem b/setup-maven/node_modules/tunnel/test/keys/client1-csr.pem
new file mode 100644
index 0000000..c33a135
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/client1-csr.pem
@@ -0,0 +1,12 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIIBwTCCASoCAQAwXDELMAkGA1UEBhMCSlAxEjAQBgNVBAsUCW5vZGVqc19qcDES
+MBAGA1UEAxMJbG9jYWxob3N0MSUwIwYJKoZIhvcNAQkBFhZrb2ljaGlrQGltcHJv
+dmVtZW50LmpwMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDGFLisrsU/d876
+0pi/CDCPMbvHT94kWQ1GLunZqug57YG+4p7X88bRBVZnzQgxsCcIO1Csfxc37RsR
+W/S5LLrwELlthS4Qqzpl1FVPd/DmZEEUn5SEg/NJHeIvSRKCimD19Ypo2jLoCENL
+WgatqK2OrJ2vCQFFQ1uljt8FRCeJgQIDAQABoCUwIwYJKoZIhvcNAQkHMRYTFEEg
+Y2hhbGxlbmdlIHBhc3N3b3JkMA0GCSqGSIb3DQEBBQUAA4GBAB5NvNSHX+WDlF5R
+LNr7SI2NzIy5OWEAgTxLkvS0NS75zlDLScaqwgs1uNfB2AnH0Fpw9+pePEijlb+L
+3VRLNpV8hRn5TKztlS3O0Z4PPb7hlDHitXukTOQYrq0juQacodVSgWqNbac+O2yK
+qf4Y3A7kQO1qmDOfN6QJFYVIpPiP
+-----END CERTIFICATE REQUEST-----
diff --git a/setup-maven/node_modules/tunnel/test/keys/client1-key.pem b/setup-maven/node_modules/tunnel/test/keys/client1-key.pem
new file mode 100644
index 0000000..52aff97
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/client1-key.pem
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXAIBAAKBgQDGFLisrsU/d8760pi/CDCPMbvHT94kWQ1GLunZqug57YG+4p7X
+88bRBVZnzQgxsCcIO1Csfxc37RsRW/S5LLrwELlthS4Qqzpl1FVPd/DmZEEUn5SE
+g/NJHeIvSRKCimD19Ypo2jLoCENLWgatqK2OrJ2vCQFFQ1uljt8FRCeJgQIDAQAB
+AoGAbfcM+xjfejeqGYcWs175jlVe2OyW93jUrLTYsDV4TMh08iLfaiX0pw+eg2vI
+88TGNoSvacP4gNzJ3R4+wxp5AFlRKZ876yL7D0VKavMFwbyRk21+D/tLGvW6gqOC
+4qi4IWSkfgBh5RK+o4jZcl5tzRPQyuxR3pJGBS33q5K2dEECQQDhV4NuKZcGDnKt
+1AhmtzqsJ4wrp2a3ysZYDTWyA692NGXi2Vnpnc6Aw9JchJhT3cueFLcOTFrb/ttu
+ZC/iA67pAkEA4Qe7LvcPvHlwNAmzqzOg2lYAqq+aJY2ghfJMqr3dPCJqbHJnLN6p
+GXsqGngwVlnvso0O/n5g30UmzvkRMFZW2QJAbOMQy0alh3OrzntKo/eeDln9zYpS
+hDUjqqCXdbF6M7AWG4vTeqOaiXYWTEZ2JPBj17tCyVH0BaIc/jbDPH9zIQJBALei
+YH0l/oB2tTqyBB2cpxIlhqvDW05z8d/859WZ1PVivGg9P7cdCO+TU7uAAyokgHe7
+ptXFefYZb18NX5qLipkCQHjIo4BknrO1oisfsusWcCC700aRIYIDk0QyEEIAY3+9
+7ar/Oo1EbqWA/qN7zByPuTKrjrb91/D+IMFUFgb4RWc=
+-----END RSA PRIVATE KEY-----
diff --git a/setup-maven/node_modules/tunnel/test/keys/client1.cnf b/setup-maven/node_modules/tunnel/test/keys/client1.cnf
new file mode 100644
index 0000000..e3db741
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/client1.cnf
@@ -0,0 +1,16 @@
+[ req ]
+default_bits           = 1024
+days                   = 9999
+distinguished_name     = req_distinguished_name
+attributes             = req_attributes
+prompt                 = no
+
+[ req_distinguished_name ]
+C                      = JP
+OU                     = nodejs_jp
+CN                     = localhost
+emailAddress           = koichik@improvement.jp
+
+[ req_attributes ]
+challengePassword              = A challenge password
+
diff --git a/setup-maven/node_modules/tunnel/test/keys/client2-cert.pem b/setup-maven/node_modules/tunnel/test/keys/client2-cert.pem
new file mode 100644
index 0000000..f0de53c
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/client2-cert.pem
@@ -0,0 +1,14 @@
+-----BEGIN CERTIFICATE-----
+MIICKTCCAZICCQCwH+BBai7c9TANBgkqhkiG9w0BAQUFADBWMQswCQYDVQQGEwJK
+UDESMBAGA1UECxQJbm9kZWpzX2pwMQwwCgYDVQQDEwNjYTQxJTAjBgkqhkiG9w0B
+CQEWFmtvaWNoaWtAaW1wcm92ZW1lbnQuanAwHhcNMTMxMjI0MTEyMzIxWhcNNDEw
+NTEwMTEyMzIxWjBcMQswCQYDVQQGEwJKUDESMBAGA1UECxQJbm9kZWpzX2pwMRIw
+EAYDVQQDEwlsb2NhbGhvc3QxJTAjBgkqhkiG9w0BCQEWFmtvaWNoaWtAaW1wcm92
+ZW1lbnQuanAwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMJQGt34PZX5pQmi
+3bNp3dryr7qPO3oGhTeShLCeZ6PPCdnmVl0PnT0n8/DFBlaijbvXGU9AjcFZ7gg7
+hcSAFLGmPEb2pug021yzl7u0qUD2fnVaEzfJ04ZU4lUCFqGKsfFVQuIkDHFwadbE
+AO+8EqOmDynUMkKfHPWQK6O9jt5ZAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEA143M
+QIygJGDv2GFKlVgV05/CYZo6ouX9I6vPRekJnGeL98lmVH83Ogb7Xmc2SbJ18qFq
+naBYnUEmHPUAZ2Ms2KuV3OOvscUSCsEJ4utJYznOT8PsemxVWrgG1Ba+zpnPkdII
+p+PanKCsclNUKwBlSkJ8XfGi9CAZJBykwws3O1c=
+-----END CERTIFICATE-----
diff --git a/setup-maven/node_modules/tunnel/test/keys/client2-csr.pem b/setup-maven/node_modules/tunnel/test/keys/client2-csr.pem
new file mode 100644
index 0000000..b7507f4
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/client2-csr.pem
@@ -0,0 +1,12 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIIBwTCCASoCAQAwXDELMAkGA1UEBhMCSlAxEjAQBgNVBAsUCW5vZGVqc19qcDES
+MBAGA1UEAxMJbG9jYWxob3N0MSUwIwYJKoZIhvcNAQkBFhZrb2ljaGlrQGltcHJv
+dmVtZW50LmpwMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCUBrd+D2V+aUJ
+ot2zad3a8q+6jzt6BoU3koSwnmejzwnZ5lZdD509J/PwxQZWoo271xlPQI3BWe4I
+O4XEgBSxpjxG9qboNNtcs5e7tKlA9n51WhM3ydOGVOJVAhahirHxVULiJAxxcGnW
+xADvvBKjpg8p1DJCnxz1kCujvY7eWQIDAQABoCUwIwYJKoZIhvcNAQkHMRYTFEEg
+Y2hhbGxlbmdlIHBhc3N3b3JkMA0GCSqGSIb3DQEBBQUAA4GBAA//UPKPpVEpflDj
+DBboWewa6yw8FEOnMvh6eeg/a8KbXfIYnkZRtxbmH06ygywBy/RUBCbM5EzyElkJ
+bTVKorzCHnxuTfSnKQ68ZD+vI2SNjiWqQFXW6oOCPzLbtaTJVKw5D6ylBp8Zsu6n
+BzQ/4Y42aX/HW4nfJeDydxNFYVJJ
+-----END CERTIFICATE REQUEST-----
diff --git a/setup-maven/node_modules/tunnel/test/keys/client2-key.pem b/setup-maven/node_modules/tunnel/test/keys/client2-key.pem
new file mode 100644
index 0000000..ecb616e
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/client2-key.pem
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICWwIBAAKBgQDCUBrd+D2V+aUJot2zad3a8q+6jzt6BoU3koSwnmejzwnZ5lZd
+D509J/PwxQZWoo271xlPQI3BWe4IO4XEgBSxpjxG9qboNNtcs5e7tKlA9n51WhM3
+ydOGVOJVAhahirHxVULiJAxxcGnWxADvvBKjpg8p1DJCnxz1kCujvY7eWQIDAQAB
+AoGAbiT0JdCaMFIzb/PnEdU30e1xGSIpx7C8gNTH7EnOW7d3URHU8KlyKwFjsJ4u
+SpuYFdsG2Lqx3+D3IamD2O/1SgODmtdFas1C/hQ2zx42SgyBQolVJU1MHJxHqmCb
+nm2Wo8aHmvFXpQ8OF4YJLPxLOSdvmq0PC17evDyjz5PciWUCQQD5yzaBpJ7yzGwd
+b6nreWj6pt+jfi11YsA3gAdvTJcFzMGyNNC+U9OExjQqHsyaHyxGhHKQ6y+ybZkR
+BggkudPfAkEAxyQC/hmcvWegdGI4xOJNbm0kv8UyxyeqhtgzEW2hWgEQs4k3fflZ
+iNpvxyIBIp/7zZo02YqeQfZlDYuxKypUxwJAa6jQBzRCZXcBqfY0kA611kIR5U8+
+nHdBTSpbCfdCp/dGDF6DEWTjpzgdx4GawVpqJMJ09kzHM+nUrOeinuGQlQJAMAsV
+Gb6OHPfaMxnbPkymh6SXQBjQNlHwhxWzxFmhmrg1EkthcufsXOLuIqmmgnb8Zc71
+PyJ9KcbK/GieNp7A0wJAIz3Mm3Up9Rlk25TH9k5e3ELjC6fkd93u94Uo145oTgDm
+HSbCbjifP5eVl66PztxZppG2GBXiXT0hA/RMruTQMg==
+-----END RSA PRIVATE KEY-----
diff --git a/setup-maven/node_modules/tunnel/test/keys/client2.cnf b/setup-maven/node_modules/tunnel/test/keys/client2.cnf
new file mode 100644
index 0000000..e3db741
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/client2.cnf
@@ -0,0 +1,16 @@
+[ req ]
+default_bits           = 1024
+days                   = 9999
+distinguished_name     = req_distinguished_name
+attributes             = req_attributes
+prompt                 = no
+
+[ req_distinguished_name ]
+C                      = JP
+OU                     = nodejs_jp
+CN                     = localhost
+emailAddress           = koichik@improvement.jp
+
+[ req_attributes ]
+challengePassword              = A challenge password
+
diff --git a/setup-maven/node_modules/tunnel/test/keys/proxy1-cert.pem b/setup-maven/node_modules/tunnel/test/keys/proxy1-cert.pem
new file mode 100644
index 0000000..30851fe
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/proxy1-cert.pem
@@ -0,0 +1,14 @@
+-----BEGIN CERTIFICATE-----
+MIICKTCCAZICCQCb8tSy4A7fFTANBgkqhkiG9w0BAQUFADBWMQswCQYDVQQGEwJK
+UDESMBAGA1UECxQJbm9kZWpzX2pwMQwwCgYDVQQDEwNjYTIxJTAjBgkqhkiG9w0B
+CQEWFmtvaWNoaWtAaW1wcm92ZW1lbnQuanAwHhcNMTMxMjI0MTEyMzIxWhcNNDEw
+NTEwMTEyMzIxWjBcMQswCQYDVQQGEwJKUDESMBAGA1UECxQJbm9kZWpzX2pwMRIw
+EAYDVQQDEwlsb2NhbGhvc3QxJTAjBgkqhkiG9w0BCQEWFmtvaWNoaWtAaW1wcm92
+ZW1lbnQuanAwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALiUyeosVxtJK8G4
+sAqU2DBLx5sMuZpV/YcW/YxUuJv3t/9TpVxcWAs6VRPzi5fqKe8TER8qxi1/I8zV
+Qks1gWyZ01reU6Wpdt1MZguF036W2qKOxlJXvnqnRDWu9IFf6KMjSJjFZb6nqhQv
+aiL/80hqc2qXVfuJbSYlGrKWFFINAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEABPIn
++vQoDpJx7lVNJNOe7DE+ShCXCK6jkQY8+GQXB1sz5K0OWdZxUWOOp/fcjNJua0NM
+hgnylWu/pmjPh7c9xHdZhuh6LPD3F0k4QqK+I2rg45gdBPZT2IxEvxNYpGIfayvY
+ofOgbienn69tMzGCMF/lUmEJu7Bn08EbL+OyNBg=
+-----END CERTIFICATE-----
diff --git a/setup-maven/node_modules/tunnel/test/keys/proxy1-csr.pem b/setup-maven/node_modules/tunnel/test/keys/proxy1-csr.pem
new file mode 100644
index 0000000..78ad220
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/proxy1-csr.pem
@@ -0,0 +1,12 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIIBwTCCASoCAQAwXDELMAkGA1UEBhMCSlAxEjAQBgNVBAsUCW5vZGVqc19qcDES
+MBAGA1UEAxMJbG9jYWxob3N0MSUwIwYJKoZIhvcNAQkBFhZrb2ljaGlrQGltcHJv
+dmVtZW50LmpwMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC4lMnqLFcbSSvB
+uLAKlNgwS8ebDLmaVf2HFv2MVLib97f/U6VcXFgLOlUT84uX6invExEfKsYtfyPM
+1UJLNYFsmdNa3lOlqXbdTGYLhdN+ltqijsZSV756p0Q1rvSBX+ijI0iYxWW+p6oU
+L2oi//NIanNql1X7iW0mJRqylhRSDQIDAQABoCUwIwYJKoZIhvcNAQkHMRYTFEEg
+Y2hhbGxlbmdlIHBhc3N3b3JkMA0GCSqGSIb3DQEBBQUAA4GBAFhZc2cvYGf8mCg/
+5nPWmnjNIqgy7uJnOGfE3AP4rW48yiVHCJK9ZmPogbH7gBMOBrrX8fLX3ThK9Sbj
+uJlBlZD/19zjM+kvJ14DcievJ15S3KehVQ6Ipmgbz/vnAaL1D+ZiOnjQad2/Fzg4
+0MFXQaZFEUcI8fKnv/zmYi1aivej
+-----END CERTIFICATE REQUEST-----
diff --git a/setup-maven/node_modules/tunnel/test/keys/proxy1-key.pem b/setup-maven/node_modules/tunnel/test/keys/proxy1-key.pem
new file mode 100644
index 0000000..d06fddd
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/proxy1-key.pem
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXQIBAAKBgQC4lMnqLFcbSSvBuLAKlNgwS8ebDLmaVf2HFv2MVLib97f/U6Vc
+XFgLOlUT84uX6invExEfKsYtfyPM1UJLNYFsmdNa3lOlqXbdTGYLhdN+ltqijsZS
+V756p0Q1rvSBX+ijI0iYxWW+p6oUL2oi//NIanNql1X7iW0mJRqylhRSDQIDAQAB
+AoGADPSkl4M1Of0QzTAhaxy3b+xhvkhOXr7aZLkAYvEvZAMnLwy39puksmUNw7C8
+g5U0DEvST9W4w0jBQodVd+Hxi4dUS4BLDVVStaLMa1Fjai/4uBPxbsrvdHzDu7if
+BI6t12vWNNRtTxbfCJ1Fs3nHvDG0ueBZX3fYWBIPPM4bRQECQQDjmCrxbkfFrN5z
+JXHfmzoNovV7KzgwRLKOLF17dYnhaG3G77JYjhEjIg5VXmQ8XJrwS45C/io5feFA
+qrsy/0v1AkEAz55QK8CLue+sn0J8Yw//yLjJT6BK4pCFFKDxyAvP/3r4t7+1TgDj
+KAfUMWb5Hcn9iT3sEykUeOe0ghU0h5X2uQJBAKES2qGPuP/vvmejwpnMVCO+hxmq
+ltOiavQv9eEgaHq826SFk6UUtpA01AwbB7momIckEgTbuKqDql2H94C6KdkCQQC7
+PfrtyoP5V8dmBk8qBEbZ3pVn45dFx7LNzOzhTo3yyhO/m/zGcZRsCMt9FnI7RG0M
+tjTPfvAArm8kFj2+vie5AkASvVx478N8so+02QWKme4T3ZDX+HDBXgFH1+SMD91m
+9tS6x2dtTNvvwBA2KFI1fUg3B/wDoKJQRrqwdl8jpoGP
+-----END RSA PRIVATE KEY-----
diff --git a/setup-maven/node_modules/tunnel/test/keys/proxy1.cnf b/setup-maven/node_modules/tunnel/test/keys/proxy1.cnf
new file mode 100644
index 0000000..e3db741
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/proxy1.cnf
@@ -0,0 +1,16 @@
+[ req ]
+default_bits           = 1024
+days                   = 9999
+distinguished_name     = req_distinguished_name
+attributes             = req_attributes
+prompt                 = no
+
+[ req_distinguished_name ]
+C                      = JP
+OU                     = nodejs_jp
+CN                     = localhost
+emailAddress           = koichik@improvement.jp
+
+[ req_attributes ]
+challengePassword              = A challenge password
+
diff --git a/setup-maven/node_modules/tunnel/test/keys/proxy2-cert.pem b/setup-maven/node_modules/tunnel/test/keys/proxy2-cert.pem
new file mode 100644
index 0000000..dfe9d8e
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/proxy2-cert.pem
@@ -0,0 +1,14 @@
+-----BEGIN CERTIFICATE-----
+MIICJjCCAY8CCQCb8tSy4A7fFjANBgkqhkiG9w0BAQUFADBWMQswCQYDVQQGEwJK
+UDESMBAGA1UECxQJbm9kZWpzX2pwMQwwCgYDVQQDEwNjYTIxJTAjBgkqhkiG9w0B
+CQEWFmtvaWNoaWtAaW1wcm92ZW1lbnQuanAwHhcNMTMxMjI0MTEyMzIxWhcNNDEw
+NTEwMTEyMzIxWjBZMQswCQYDVQQGEwJKUDESMBAGA1UECxQJbm9kZWpzX2pwMQ8w
+DQYDVQQDEwZwcm94eTIxJTAjBgkqhkiG9w0BCQEWFmtvaWNoaWtAaW1wcm92ZW1l
+bnQuanAwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALZ3oNCmB2P4Q9DoUVFq
+Z1ByASLm63jTPEumv2kX81GF5QMLRl59HBM6Te1rRR7wFHL0iBQUYuEzNPmedXpU
+cds0uWl5teoO63ZSKFL1QLU3PMFo56AeWeznxOhy6vwWv3M8C391X6lYsiBow3K9
+d37p//GLIR+jl6Q4xYD41zaxAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEADUQgtmot
+8zqsRQInjWAypcntkxX8hdUOEudN2/zjX/YtMZbr8rRvsZzBsUDdgK+E2EmEb/N3
+9ARZ0T2zWFFphJapkZOM1o1+LawN5ON5HfTPqr6d9qlHuRdGCBpXMUERO2V43Z+S
+Zwm+iw1yZEs4buTmiw6zu6Nq0fhBlTiAweE=
+-----END CERTIFICATE-----
diff --git a/setup-maven/node_modules/tunnel/test/keys/proxy2-csr.pem b/setup-maven/node_modules/tunnel/test/keys/proxy2-csr.pem
new file mode 100644
index 0000000..5510e7f
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/proxy2-csr.pem
@@ -0,0 +1,12 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIIBvjCCAScCAQAwWTELMAkGA1UEBhMCSlAxEjAQBgNVBAsUCW5vZGVqc19qcDEP
+MA0GA1UEAxMGcHJveHkyMSUwIwYJKoZIhvcNAQkBFhZrb2ljaGlrQGltcHJvdmVt
+ZW50LmpwMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2d6DQpgdj+EPQ6FFR
+amdQcgEi5ut40zxLpr9pF/NRheUDC0ZefRwTOk3ta0Ue8BRy9IgUFGLhMzT5nnV6
+VHHbNLlpebXqDut2UihS9UC1NzzBaOegHlns58Tocur8Fr9zPAt/dV+pWLIgaMNy
+vXd+6f/xiyEfo5ekOMWA+Nc2sQIDAQABoCUwIwYJKoZIhvcNAQkHMRYTFEEgY2hh
+bGxlbmdlIHBhc3N3b3JkMA0GCSqGSIb3DQEBBQUAA4GBADC4dh/+gQnJcPMQ0riJ
+CBVLygcCWxkNvwM3ARboyihuNbzFX1f2g23Zr5iLphiuEFCPDOyd26hHieQ8Xo1y
+FPuDXpWMx9X9MLjCWg8kdtada7HsYffbUvpjjL9TxFh+rX0cmr6Ixc5kV7AV4I6V
+3h8BYJebX+XfuYrI1UwEqjqI
+-----END CERTIFICATE REQUEST-----
diff --git a/setup-maven/node_modules/tunnel/test/keys/proxy2-key.pem b/setup-maven/node_modules/tunnel/test/keys/proxy2-key.pem
new file mode 100644
index 0000000..29eed2c
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/proxy2-key.pem
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXQIBAAKBgQC2d6DQpgdj+EPQ6FFRamdQcgEi5ut40zxLpr9pF/NRheUDC0Ze
+fRwTOk3ta0Ue8BRy9IgUFGLhMzT5nnV6VHHbNLlpebXqDut2UihS9UC1NzzBaOeg
+Hlns58Tocur8Fr9zPAt/dV+pWLIgaMNyvXd+6f/xiyEfo5ekOMWA+Nc2sQIDAQAB
+AoGBALPH0o9Bxu5c4pSnEdgh+oFskmoNE90MY9A2D0pA6uBcCHSjW0YmBs97FuTi
+WExPSBarkJgYLgStK3j3A9Dv+uzRRT0gSr34vKFh5ozI+nJZOMNJyHDOCFiT9sm7
+urDW0gSq9OW/H8NbAkxkBZw0PaB9oW5nljuieVIFDYXNAeMBAkEA6NfBHjzp3GS0
+RbtaBkxn3CRlEoUUPVd3sJ6lW2XBu5AWrgNHRSlh0oBupXgd3cxWIB69xPOg6QjU
+XmvcLjBlCQJBAMidTIw4s89m4+14eY/KuXaEgxW/awLEbQP2JDCjY1wT3Ya3Ggac
+HIFuGdTbd2faJPxNJjoljZnatSdwY5aXFmkCQBQZM5FBnsooYys1vdKXW8uz1Imh
+tRqKZ0l2mD1obi2bhWml3MwKg2ghL+vWj3VqwvBo1uaeRQB4g6RW2R2fjckCQQCf
+FnZ0oCafa2WGlMo5qDbI8K6PGXv/9srIoHH0jC0oAKzkvuEJqtTEIw6jCOM43PoF
+hhyxccRH5PNRckPXULs5AkACxKEL1dN+Bx72zE8jSU4DB5arpQdGOvuVsqXgVM/5
+QLneJEHGPCqNFS1OkWUYLtX0S28X5GmHMEpLRLpgE9JY
+-----END RSA PRIVATE KEY-----
diff --git a/setup-maven/node_modules/tunnel/test/keys/proxy2.cnf b/setup-maven/node_modules/tunnel/test/keys/proxy2.cnf
new file mode 100644
index 0000000..e62c90a
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/proxy2.cnf
@@ -0,0 +1,16 @@
+[ req ]
+default_bits           = 1024
+days                   = 9999
+distinguished_name     = req_distinguished_name
+attributes             = req_attributes
+prompt                 = no
+
+[ req_distinguished_name ]
+C                      = JP
+OU                     = nodejs_jp
+CN                     = proxy2
+emailAddress           = koichik@improvement.jp
+
+[ req_attributes ]
+challengePassword              = A challenge password
+
diff --git a/setup-maven/node_modules/tunnel/test/keys/server1-cert.pem b/setup-maven/node_modules/tunnel/test/keys/server1-cert.pem
new file mode 100644
index 0000000..d0b6430
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/server1-cert.pem
@@ -0,0 +1,14 @@
+-----BEGIN CERTIFICATE-----
+MIICKTCCAZICCQCxEcnO8CV2kTANBgkqhkiG9w0BAQUFADBWMQswCQYDVQQGEwJK
+UDESMBAGA1UECxQJbm9kZWpzX2pwMQwwCgYDVQQDEwNjYTExJTAjBgkqhkiG9w0B
+CQEWFmtvaWNoaWtAaW1wcm92ZW1lbnQuanAwHhcNMTMxMjI0MTEyMzIxWhcNNDEw
+NTEwMTEyMzIxWjBcMQswCQYDVQQGEwJKUDESMBAGA1UECxQJbm9kZWpzX2pwMRIw
+EAYDVQQDEwlsb2NhbGhvc3QxJTAjBgkqhkiG9w0BCQEWFmtvaWNoaWtAaW1wcm92
+ZW1lbnQuanAwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALYb3z6TVgD8VmV2
+i0IHoes/HNVz+/UgXxRoA7gTUXp4Q69HBymWwm4fG61YMn7XAjy0gyC2CX/C0S74
+ZzHkhq1DCXCtlXCDx5oZhSRPpa902MVdDSRR+naLA4PPFkV2pI53hsFW37M5Dhge
++taFbih/dbjpOnhLD+SbkSKNTw/dAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAjDNi
+mdmMM8Of/8iCYISqkqCG+7fz747Ntkg5fVMPufkwrBfkD9UjYVbfIpEOkZ3L0If9
+0/wNi0uZobIJnd/9B/e0cHKYnx0gkhUpMylaRvIV4odKe2vq3+mjwMb9syYXYDx3
+hw2qDMIIPr0S5ICeoIKXhbsYtODVxKSdJq+FjAI=
+-----END CERTIFICATE-----
diff --git a/setup-maven/node_modules/tunnel/test/keys/server1-csr.pem b/setup-maven/node_modules/tunnel/test/keys/server1-csr.pem
new file mode 100644
index 0000000..9d9ff1b
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/server1-csr.pem
@@ -0,0 +1,12 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIIBwTCCASoCAQAwXDELMAkGA1UEBhMCSlAxEjAQBgNVBAsUCW5vZGVqc19qcDES
+MBAGA1UEAxMJbG9jYWxob3N0MSUwIwYJKoZIhvcNAQkBFhZrb2ljaGlrQGltcHJv
+dmVtZW50LmpwMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2G98+k1YA/FZl
+dotCB6HrPxzVc/v1IF8UaAO4E1F6eEOvRwcplsJuHxutWDJ+1wI8tIMgtgl/wtEu
++Gcx5IatQwlwrZVwg8eaGYUkT6WvdNjFXQ0kUfp2iwODzxZFdqSOd4bBVt+zOQ4Y
+HvrWhW4of3W46Tp4Sw/km5EijU8P3QIDAQABoCUwIwYJKoZIhvcNAQkHMRYTFEEg
+Y2hhbGxlbmdlIHBhc3N3b3JkMA0GCSqGSIb3DQEBBQUAA4GBAJLLYClTc1BZbQi4
+2GrGEimzJoheXXD1vepECS6TaeYJFSQldMGdkn5D8TMXWW115V4hw7a1pCwvRBPH
+dVEeh3u3ktI1e4pS5ozvpbpYanILrHCNOQ4PvKi9rzG9Km8CprPcrJCZlWf2QUBK
+gVNgqZJeqyEcBu80/ajjc6xrZsSP
+-----END CERTIFICATE REQUEST-----
diff --git a/setup-maven/node_modules/tunnel/test/keys/server1-key.pem b/setup-maven/node_modules/tunnel/test/keys/server1-key.pem
new file mode 100644
index 0000000..d24acc8
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/server1-key.pem
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXQIBAAKBgQC2G98+k1YA/FZldotCB6HrPxzVc/v1IF8UaAO4E1F6eEOvRwcp
+lsJuHxutWDJ+1wI8tIMgtgl/wtEu+Gcx5IatQwlwrZVwg8eaGYUkT6WvdNjFXQ0k
+Ufp2iwODzxZFdqSOd4bBVt+zOQ4YHvrWhW4of3W46Tp4Sw/km5EijU8P3QIDAQAB
+AoGAcDioz+T3gM//ZbMxidUuQMu5twgsYhg6v1aBxDOTaEcoXqEElupikn31DlNl
+eqiApmwOyl+jZunlAm7tGN/c5WjmZtW6watv1D7HjDIFJQBdiOv2jLeV5gsoArMP
+f8Y13MS68nJ7/ZkqisovjBlD7ZInbyUiJj0FH/cazauflIECQQDwHgQ0J46eL5EG
+3smQQG9/8b/Wsnf8s9Vz6X/KptsbL3c7mCBY9/+cGw0xVxoUOyO7KGPzpRhtz4Y0
+oP+JwISxAkEAwieUtl+SuUAn6er1tZzPPiAM2w6XGOAod+HuPjTAKVhLKHYIEJbU
+jhPdjOGtZr10ED9g0m7M4n3JKMMM00W47QJBAOVkp7tztwpkgva/TG0lQeBHgnCI
+G50t6NRN1Koz8crs88nZMb4NXwMxzM7AWcfOH/qjQan4pXfy9FG/JaHibGECQH8i
+L+zj1E3dxsUTh+VuUv5ZOlHO0f4F+jnWBY1SOWpZWI2cDFfgjDqko3R26nbWI8Pn
+3FyvFRZSS4CXiDRn+VkCQQCKPBl60QAifkZITqL0dCs+wB2hhmlWwqlpq1ZgeCby
+zwmZY1auUK1BYBX1aPB85+Bm2Zhp5jnkwRcO7iSYy8+C
+-----END RSA PRIVATE KEY-----
diff --git a/setup-maven/node_modules/tunnel/test/keys/server1.cnf b/setup-maven/node_modules/tunnel/test/keys/server1.cnf
new file mode 100644
index 0000000..e3db741
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/server1.cnf
@@ -0,0 +1,16 @@
+[ req ]
+default_bits           = 1024
+days                   = 9999
+distinguished_name     = req_distinguished_name
+attributes             = req_attributes
+prompt                 = no
+
+[ req_distinguished_name ]
+C                      = JP
+OU                     = nodejs_jp
+CN                     = localhost
+emailAddress           = koichik@improvement.jp
+
+[ req_attributes ]
+challengePassword              = A challenge password
+
diff --git a/setup-maven/node_modules/tunnel/test/keys/server2-cert.pem b/setup-maven/node_modules/tunnel/test/keys/server2-cert.pem
new file mode 100644
index 0000000..ba92620
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/server2-cert.pem
@@ -0,0 +1,14 @@
+-----BEGIN CERTIFICATE-----
+MIICJzCCAZACCQCxEcnO8CV2kjANBgkqhkiG9w0BAQUFADBWMQswCQYDVQQGEwJK
+UDESMBAGA1UECxQJbm9kZWpzX2pwMQwwCgYDVQQDEwNjYTExJTAjBgkqhkiG9w0B
+CQEWFmtvaWNoaWtAaW1wcm92ZW1lbnQuanAwHhcNMTMxMjI0MTEyMzIxWhcNNDEw
+NTEwMTEyMzIxWjBaMQswCQYDVQQGEwJKUDESMBAGA1UECxQJbm9kZWpzX2pwMRAw
+DgYDVQQDEwdzZXJ2ZXIyMSUwIwYJKoZIhvcNAQkBFhZrb2ljaGlrQGltcHJvdmVt
+ZW50LmpwMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDEkKr9SHG6jtf5UNfL
+u66wNi8jrbAW5keYy7ECWRGRFDE7ay4N8LDMmOO3/1eH2WpY0QM5JFxq78hoVQED
+ogvoeVTw+Ni33yqY6VL2WRv84FN2BmCrDGJQ83EYdsJqPUnxuXvbmq7Viw3l/BEu
+hvsp722KcToIrqt8mHKMc/nPRwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBALbdQz32
+CN0hJfJ6BtGyqee3zRSpufPY1KFV8OHSDG4qL55OfpjB5e5wsldp3VChTWzm2KM+
+xg9WSWurMINM5KLgUqCZ69ttg1gJ/SnZNolXhH0I3SG/DY4DGTHo9oJPoSrgrWbX
+3ZmCoO6rrDoSuVRJ8dKMWJmt8O1pZ6ZRW2iM
+-----END CERTIFICATE-----
diff --git a/setup-maven/node_modules/tunnel/test/keys/server2-csr.pem b/setup-maven/node_modules/tunnel/test/keys/server2-csr.pem
new file mode 100644
index 0000000..f89c510
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/server2-csr.pem
@@ -0,0 +1,12 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIIBvzCCASgCAQAwWjELMAkGA1UEBhMCSlAxEjAQBgNVBAsUCW5vZGVqc19qcDEQ
+MA4GA1UEAxMHc2VydmVyMjElMCMGCSqGSIb3DQEJARYWa29pY2hpa0BpbXByb3Zl
+bWVudC5qcDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAxJCq/Uhxuo7X+VDX
+y7uusDYvI62wFuZHmMuxAlkRkRQxO2suDfCwzJjjt/9Xh9lqWNEDOSRcau/IaFUB
+A6IL6HlU8PjYt98qmOlS9lkb/OBTdgZgqwxiUPNxGHbCaj1J8bl725qu1YsN5fwR
+Lob7Ke9tinE6CK6rfJhyjHP5z0cCAwEAAaAlMCMGCSqGSIb3DQEJBzEWExRBIGNo
+YWxsZW5nZSBwYXNzd29yZDANBgkqhkiG9w0BAQUFAAOBgQB3rCGCErgshGKEI5j9
+togUBwD3ul91yRFSBoV2hVGXsTOalWa0XCI+9+5QQEOBlj1pUT8eDU8ve55mX1UX
+AZEx+cbUQa9DNeiDAMX83GqHMD8fF2zqsY1mkg5zFKG3nhoIYSG15qXcpqAhxRpX
+NUQnZ4yzt2pE0aiFfkXa3PM42Q==
+-----END CERTIFICATE REQUEST-----
diff --git a/setup-maven/node_modules/tunnel/test/keys/server2-key.pem b/setup-maven/node_modules/tunnel/test/keys/server2-key.pem
new file mode 100644
index 0000000..9f72b5c
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/server2-key.pem
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXQIBAAKBgQDEkKr9SHG6jtf5UNfLu66wNi8jrbAW5keYy7ECWRGRFDE7ay4N
+8LDMmOO3/1eH2WpY0QM5JFxq78hoVQEDogvoeVTw+Ni33yqY6VL2WRv84FN2BmCr
+DGJQ83EYdsJqPUnxuXvbmq7Viw3l/BEuhvsp722KcToIrqt8mHKMc/nPRwIDAQAB
+AoGAQ/bRaGoYCK1DN80gEC2ApSTW/7saW5CbyNUFCw7I6CTXMPhKID/MobFraz86
+gJpIDxWVy7gqzD7ESG67vwnUm52ITojQiY3JH7NCNhq/39/aYZOz2d7rBv2mvhk3
+w7gxUsmtPVUz3s2/h1KYaGpM3b68TwMS9nIiwwHDJS1aR8ECQQDu/kOy+Z/0EVKC
+APgiEzbxewAiy7BVzNppd8CR/5m1KxlsIoMr8OdLqVwiJ/13m3eZGkPNx5pLJ9Xv
+sXER0ZcPAkEA0o19xA1AJ/v5qsRaWJaA+ftgQ8ZanqsWXhM9abAvkPdFLPKYWTfO
+r9f8eUDH0+O9mA2eZ2mlsEcsmIHDTY6ESQJAO2lyIvfzT5VO0Yq0JKRqMDXHnt7M
+A0hds4JVmPXVnDgOpdcejLniheigQs12MVmwrZrd6DYKoUxR3rhZx3g2+QJBAK/2
+5fuaI1sHP+HSlbrhlUrWJd6egA+I5nma1MFmKGqb7Kki2eX+OPNGq87eL+LKuyG/
+h/nfFkTbRs7x67n+eFkCQQCPgy381Vpa7lmoNUfEVeMSNe74FNL05IlPDs/BHcci
+1GX9XzsFEqHLtJ5t1aWbGv39gb2WmPP3LJBsRPzLa2iQ
+-----END RSA PRIVATE KEY-----
diff --git a/setup-maven/node_modules/tunnel/test/keys/server2.cnf b/setup-maven/node_modules/tunnel/test/keys/server2.cnf
new file mode 100644
index 0000000..bfaa48b
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/server2.cnf
@@ -0,0 +1,16 @@
+[ req ]
+default_bits           = 1024
+days                   = 9999
+distinguished_name     = req_distinguished_name
+attributes             = req_attributes
+prompt                 = no
+
+[ req_distinguished_name ]
+C                      = JP
+OU                     = nodejs_jp
+CN                     = server2
+emailAddress           = koichik@improvement.jp
+
+[ req_attributes ]
+challengePassword              = A challenge password
+
diff --git a/setup-maven/node_modules/tunnel/test/keys/test.js b/setup-maven/node_modules/tunnel/test/keys/test.js
new file mode 100644
index 0000000..d828422
--- /dev/null
+++ b/setup-maven/node_modules/tunnel/test/keys/test.js
@@ -0,0 +1,43 @@
+var fs = require('fs');
+var tls = require('tls');
+
+var server1Key = fs.readFileSync(__dirname + '/server1-key.pem');
+var server1Cert = fs.readFileSync(__dirname + '/server1-cert.pem');
+var clientKey = fs.readFileSync(__dirname + '/client-key.pem');
+var clientCert = fs.readFileSync(__dirname + '/client-cert.pem');
+var ca1Cert = fs.readFileSync(__dirname + '/ca1-cert.pem');
+var ca3Cert = fs.readFileSync(__dirname + '/ca3-cert.pem');
+
+var server = tls.createServer({
+  key: server1Key,
+  cert: server1Cert,
+  ca: [ca3Cert],
+  requestCert: true,
+  rejectUnauthorized: true,
+}, function(s) {
+  console.log('connected on server');
+  s.on('data', function(chunk) {
+    console.log('S:' + chunk);
+    s.write(chunk);
+  });
+  s.setEncoding('utf8');
+}).listen(3000, function() {
+  var c = tls.connect({
+    host: 'localhost',
+    port: 3000,
+    key: clientKey,
+    cert: clientCert,
+    ca: [ca1Cert],
+    rejectUnauthorized: true
+  }, function() {
+    console.log('connected on client');
+    c.on('data', function(chunk) {
+      console.log('C:' + chunk);
+    });
+    c.setEncoding('utf8');
+    c.write('Hello');
+  });
+  c.on('error', function(err) {
+    console.log(err);
+  });
+});
diff --git a/setup-maven/node_modules/typed-rest-client/Handlers.d.ts b/setup-maven/node_modules/typed-rest-client/Handlers.d.ts
new file mode 100644
index 0000000..780935d
--- /dev/null
+++ b/setup-maven/node_modules/typed-rest-client/Handlers.d.ts
@@ -0,0 +1,4 @@
+export { BasicCredentialHandler } from "./handlers/basiccreds";
+export { BearerCredentialHandler } from "./handlers/bearertoken";
+export { NtlmCredentialHandler } from "./handlers/ntlm";
+export { PersonalAccessTokenCredentialHandler } from "./handlers/personalaccesstoken";
diff --git a/setup-maven/node_modules/typed-rest-client/Handlers.js b/setup-maven/node_modules/typed-rest-client/Handlers.js
new file mode 100644
index 0000000..0b9e040
--- /dev/null
+++ b/setup-maven/node_modules/typed-rest-client/Handlers.js
@@ -0,0 +1,10 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+var basiccreds_1 = require("./handlers/basiccreds");
+exports.BasicCredentialHandler = basiccreds_1.BasicCredentialHandler;
+var bearertoken_1 = require("./handlers/bearertoken");
+exports.BearerCredentialHandler = bearertoken_1.BearerCredentialHandler;
+var ntlm_1 = require("./handlers/ntlm");
+exports.NtlmCredentialHandler = ntlm_1.NtlmCredentialHandler;
+var personalaccesstoken_1 = require("./handlers/personalaccesstoken");
+exports.PersonalAccessTokenCredentialHandler = personalaccesstoken_1.PersonalAccessTokenCredentialHandler;
diff --git a/setup-maven/node_modules/typed-rest-client/HttpClient.d.ts b/setup-maven/node_modules/typed-rest-client/HttpClient.d.ts
new file mode 100644
index 0000000..f5cd014
--- /dev/null
+++ b/setup-maven/node_modules/typed-rest-client/HttpClient.d.ts
@@ -0,0 +1,103 @@
+/// <reference types="node" />
+import url = require("url");
+import http = require("http");
+import ifm = require('./Interfaces');
+export declare enum HttpCodes {
+    OK = 200,
+    MultipleChoices = 300,
+    MovedPermanently = 301,
+    ResourceMoved = 302,
+    SeeOther = 303,
+    NotModified = 304,
+    UseProxy = 305,
+    SwitchProxy = 306,
+    TemporaryRedirect = 307,
+    PermanentRedirect = 308,
+    BadRequest = 400,
+    Unauthorized = 401,
+    PaymentRequired = 402,
+    Forbidden = 403,
+    NotFound = 404,
+    MethodNotAllowed = 405,
+    NotAcceptable = 406,
+    ProxyAuthenticationRequired = 407,
+    RequestTimeout = 408,
+    Conflict = 409,
+    Gone = 410,
+    InternalServerError = 500,
+    NotImplemented = 501,
+    BadGateway = 502,
+    ServiceUnavailable = 503,
+    GatewayTimeout = 504,
+}
+export declare class HttpClientResponse implements ifm.IHttpClientResponse {
+    constructor(message: http.IncomingMessage);
+    message: http.IncomingMessage;
+    readBody(): Promise<string>;
+}
+export interface RequestInfo {
+    options: http.RequestOptions;
+    parsedUrl: url.Url;
+    httpModule: any;
+}
+export declare function isHttps(requestUrl: string): boolean;
+export declare class HttpClient implements ifm.IHttpClient {
+    userAgent: string;
+    handlers: ifm.IRequestHandler[];
+    requestOptions: ifm.IRequestOptions;
+    private _ignoreSslError;
+    private _socketTimeout;
+    private _httpProxy;
+    private _httpProxyBypassHosts;
+    private _allowRedirects;
+    private _maxRedirects;
+    private _allowRetries;
+    private _maxRetries;
+    private _agent;
+    private _proxyAgent;
+    private _keepAlive;
+    private _disposed;
+    private _certConfig;
+    private _ca;
+    private _cert;
+    private _key;
+    constructor(userAgent: string, handlers?: ifm.IRequestHandler[], requestOptions?: ifm.IRequestOptions);
+    options(requestUrl: string, additionalHeaders?: ifm.IHeaders): Promise<ifm.IHttpClientResponse>;
+    get(requestUrl: string, additionalHeaders?: ifm.IHeaders): Promise<ifm.IHttpClientResponse>;
+    del(requestUrl: string, additionalHeaders?: ifm.IHeaders): Promise<ifm.IHttpClientResponse>;
+    post(requestUrl: string, data: string, additionalHeaders?: ifm.IHeaders): Promise<ifm.IHttpClientResponse>;
+    patch(requestUrl: string, data: string, additionalHeaders?: ifm.IHeaders): Promise<ifm.IHttpClientResponse>;
+    put(requestUrl: string, data: string, additionalHeaders?: ifm.IHeaders): Promise<ifm.IHttpClientResponse>;
+    head(requestUrl: string, additionalHeaders?: ifm.IHeaders): Promise<ifm.IHttpClientResponse>;
+    sendStream(verb: string, requestUrl: string, stream: NodeJS.ReadableStream, additionalHeaders?: ifm.IHeaders): Promise<ifm.IHttpClientResponse>;
+    /**
+     * Makes a raw http request.
+     * All other methods such as get, post, patch, and request ultimately call this.
+     * Prefer get, del, post and patch
+     */
+    request(verb: string, requestUrl: string, data: string | NodeJS.ReadableStream, headers: ifm.IHeaders): Promise<ifm.IHttpClientResponse>;
+    /**
+     * Needs to be called if keepAlive is set to true in request options.
+     */
+    dispose(): void;
+    /**
+     * Raw request.
+     * @param info
+     * @param data
+     */
+    requestRaw(info: ifm.IRequestInfo, data: string | NodeJS.ReadableStream): Promise<ifm.IHttpClientResponse>;
+    /**
+     * Raw request with callback.
+     * @param info
+     * @param data
+     * @param onResult
+     */
+    requestRawWithCallback(info: ifm.IRequestInfo, data: string | NodeJS.ReadableStream, onResult: (err: any, res: ifm.IHttpClientResponse) => void): void;
+    private _prepareRequest(method, requestUrl, headers);
+    private _isPresigned(requestUrl);
+    private _mergeHeaders(headers);
+    private _getAgent(requestUrl);
+    private _getProxy(requestUrl);
+    private _isBypassProxy(requestUrl);
+    private _performExponentialBackoff(retryNumber);
+}
diff --git a/setup-maven/node_modules/typed-rest-client/HttpClient.js b/setup-maven/node_modules/typed-rest-client/HttpClient.js
new file mode 100644
index 0000000..169b8f7
--- /dev/null
+++ b/setup-maven/node_modules/typed-rest-client/HttpClient.js
@@ -0,0 +1,455 @@
+"use strict";
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+    return new (P || (P = Promise))(function (resolve, reject) {
+        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
+        step((generator = generator.apply(thisArg, _arguments || [])).next());
+    });
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const url = require("url");
+const http = require("http");
+const https = require("https");
+let fs;
+let tunnel;
+var HttpCodes;
+(function (HttpCodes) {
+    HttpCodes[HttpCodes["OK"] = 200] = "OK";
+    HttpCodes[HttpCodes["MultipleChoices"] = 300] = "MultipleChoices";
+    HttpCodes[HttpCodes["MovedPermanently"] = 301] = "MovedPermanently";
+    HttpCodes[HttpCodes["ResourceMoved"] = 302] = "ResourceMoved";
+    HttpCodes[HttpCodes["SeeOther"] = 303] = "SeeOther";
+    HttpCodes[HttpCodes["NotModified"] = 304] = "NotModified";
+    HttpCodes[HttpCodes["UseProxy"] = 305] = "UseProxy";
+    HttpCodes[HttpCodes["SwitchProxy"] = 306] = "SwitchProxy";
+    HttpCodes[HttpCodes["TemporaryRedirect"] = 307] = "TemporaryRedirect";
+    HttpCodes[HttpCodes["PermanentRedirect"] = 308] = "PermanentRedirect";
+    HttpCodes[HttpCodes["BadRequest"] = 400] = "BadRequest";
+    HttpCodes[HttpCodes["Unauthorized"] = 401] = "Unauthorized";
+    HttpCodes[HttpCodes["PaymentRequired"] = 402] = "PaymentRequired";
+    HttpCodes[HttpCodes["Forbidden"] = 403] = "Forbidden";
+    HttpCodes[HttpCodes["NotFound"] = 404] = "NotFound";
+    HttpCodes[HttpCodes["MethodNotAllowed"] = 405] = "MethodNotAllowed";
+    HttpCodes[HttpCodes["NotAcceptable"] = 406] = "NotAcceptable";
+    HttpCodes[HttpCodes["ProxyAuthenticationRequired"] = 407] = "ProxyAuthenticationRequired";
+    HttpCodes[HttpCodes["RequestTimeout"] = 408] = "RequestTimeout";
+    HttpCodes[HttpCodes["Conflict"] = 409] = "Conflict";
+    HttpCodes[HttpCodes["Gone"] = 410] = "Gone";
+    HttpCodes[HttpCodes["InternalServerError"] = 500] = "InternalServerError";
+    HttpCodes[HttpCodes["NotImplemented"] = 501] = "NotImplemented";
+    HttpCodes[HttpCodes["BadGateway"] = 502] = "BadGateway";
+    HttpCodes[HttpCodes["ServiceUnavailable"] = 503] = "ServiceUnavailable";
+    HttpCodes[HttpCodes["GatewayTimeout"] = 504] = "GatewayTimeout";
+})(HttpCodes = exports.HttpCodes || (exports.HttpCodes = {}));
+const HttpRedirectCodes = [HttpCodes.MovedPermanently, HttpCodes.ResourceMoved, HttpCodes.SeeOther, HttpCodes.TemporaryRedirect, HttpCodes.PermanentRedirect];
+const HttpResponseRetryCodes = [HttpCodes.BadGateway, HttpCodes.ServiceUnavailable, HttpCodes.GatewayTimeout];
+const RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD'];
+const ExponentialBackoffCeiling = 10;
+const ExponentialBackoffTimeSlice = 5;
+class HttpClientResponse {
+    constructor(message) {
+        this.message = message;
+    }
+    readBody() {
+        return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
+            let output = '';
+            this.message.on('data', (chunk) => {
+                output += chunk;
+            });
+            this.message.on('end', () => {
+                resolve(output);
+            });
+        }));
+    }
+}
+exports.HttpClientResponse = HttpClientResponse;
+function isHttps(requestUrl) {
+    let parsedUrl = url.parse(requestUrl);
+    return parsedUrl.protocol === 'https:';
+}
+exports.isHttps = isHttps;
+var EnvironmentVariables;
+(function (EnvironmentVariables) {
+    EnvironmentVariables["HTTP_PROXY"] = "HTTP_PROXY";
+    EnvironmentVariables["HTTPS_PROXY"] = "HTTPS_PROXY";
+})(EnvironmentVariables || (EnvironmentVariables = {}));
+class HttpClient {
+    constructor(userAgent, handlers, requestOptions) {
+        this._ignoreSslError = false;
+        this._allowRedirects = true;
+        this._maxRedirects = 50;
+        this._allowRetries = false;
+        this._maxRetries = 1;
+        this._keepAlive = false;
+        this._disposed = false;
+        this.userAgent = userAgent;
+        this.handlers = handlers || [];
+        this.requestOptions = requestOptions;
+        if (requestOptions) {
+            if (requestOptions.ignoreSslError != null) {
+                this._ignoreSslError = requestOptions.ignoreSslError;
+            }
+            this._socketTimeout = requestOptions.socketTimeout;
+            this._httpProxy = requestOptions.proxy;
+            if (requestOptions.proxy && requestOptions.proxy.proxyBypassHosts) {
+                this._httpProxyBypassHosts = [];
+                requestOptions.proxy.proxyBypassHosts.forEach(bypass => {
+                    this._httpProxyBypassHosts.push(new RegExp(bypass, 'i'));
+                });
+            }
+            this._certConfig = requestOptions.cert;
+            if (this._certConfig) {
+                // If using cert, need fs
+                fs = require('fs');
+                // cache the cert content into memory, so we don't have to read it from disk every time 
+                if (this._certConfig.caFile && fs.existsSync(this._certConfig.caFile)) {
+                    this._ca = fs.readFileSync(this._certConfig.caFile, 'utf8');
+                }
+                if (this._certConfig.certFile && fs.existsSync(this._certConfig.certFile)) {
+                    this._cert = fs.readFileSync(this._certConfig.certFile, 'utf8');
+                }
+                if (this._certConfig.keyFile && fs.existsSync(this._certConfig.keyFile)) {
+                    this._key = fs.readFileSync(this._certConfig.keyFile, 'utf8');
+                }
+            }
+            if (requestOptions.allowRedirects != null) {
+                this._allowRedirects = requestOptions.allowRedirects;
+            }
+            if (requestOptions.maxRedirects != null) {
+                this._maxRedirects = Math.max(requestOptions.maxRedirects, 0);
+            }
+            if (requestOptions.keepAlive != null) {
+                this._keepAlive = requestOptions.keepAlive;
+            }
+            if (requestOptions.allowRetries != null) {
+                this._allowRetries = requestOptions.allowRetries;
+            }
+            if (requestOptions.maxRetries != null) {
+                this._maxRetries = requestOptions.maxRetries;
+            }
+        }
+    }
+    options(requestUrl, additionalHeaders) {
+        return this.request('OPTIONS', requestUrl, null, additionalHeaders || {});
+    }
+    get(requestUrl, additionalHeaders) {
+        return this.request('GET', requestUrl, null, additionalHeaders || {});
+    }
+    del(requestUrl, additionalHeaders) {
+        return this.request('DELETE', requestUrl, null, additionalHeaders || {});
+    }
+    post(requestUrl, data, additionalHeaders) {
+        return this.request('POST', requestUrl, data, additionalHeaders || {});
+    }
+    patch(requestUrl, data, additionalHeaders) {
+        return this.request('PATCH', requestUrl, data, additionalHeaders || {});
+    }
+    put(requestUrl, data, additionalHeaders) {
+        return this.request('PUT', requestUrl, data, additionalHeaders || {});
+    }
+    head(requestUrl, additionalHeaders) {
+        return this.request('HEAD', requestUrl, null, additionalHeaders || {});
+    }
+    sendStream(verb, requestUrl, stream, additionalHeaders) {
+        return this.request(verb, requestUrl, stream, additionalHeaders);
+    }
+    /**
+     * Makes a raw http request.
+     * All other methods such as get, post, patch, and request ultimately call this.
+     * Prefer get, del, post and patch
+     */
+    request(verb, requestUrl, data, headers) {
+        return __awaiter(this, void 0, void 0, function* () {
+            if (this._disposed) {
+                throw new Error("Client has already been disposed.");
+            }
+            let info = this._prepareRequest(verb, requestUrl, headers);
+            // Only perform retries on reads since writes may not be idempotent.
+            let maxTries = (this._allowRetries && RetryableHttpVerbs.indexOf(verb) != -1) ? this._maxRetries + 1 : 1;
+            let numTries = 0;
+            let response;
+            while (numTries < maxTries) {
+                response = yield this.requestRaw(info, data);
+                // Check if it's an authentication challenge
+                if (response && response.message && response.message.statusCode === HttpCodes.Unauthorized) {
+                    let authenticationHandler;
+                    for (let i = 0; i < this.handlers.length; i++) {
+                        if (this.handlers[i].canHandleAuthentication(response)) {
+                            authenticationHandler = this.handlers[i];
+                            break;
+                        }
+                    }
+                    if (authenticationHandler) {
+                        return authenticationHandler.handleAuthentication(this, info, data);
+                    }
+                    else {
+                        // We have received an unauthorized response but have no handlers to handle it.
+                        // Let the response return to the caller.
+                        return response;
+                    }
+                }
+                let redirectsRemaining = this._maxRedirects;
+                while (HttpRedirectCodes.indexOf(response.message.statusCode) != -1
+                    && this._allowRedirects
+                    && redirectsRemaining > 0) {
+                    const redirectUrl = response.message.headers["location"];
+                    if (!redirectUrl) {
+                        // if there's no location to redirect to, we won't
+                        break;
+                    }
+                    // we need to finish reading the response before reassigning response
+                    // which will leak the open socket.
+                    yield response.readBody();
+                    // let's make the request with the new redirectUrl
+                    info = this._prepareRequest(verb, redirectUrl, headers);
+                    response = yield this.requestRaw(info, data);
+                    redirectsRemaining--;
+                }
+                if (HttpResponseRetryCodes.indexOf(response.message.statusCode) == -1) {
+                    // If not a retry code, return immediately instead of retrying
+                    return response;
+                }
+                numTries += 1;
+                if (numTries < maxTries) {
+                    yield response.readBody();
+                    yield this._performExponentialBackoff(numTries);
+                }
+            }
+            return response;
+        });
+    }
+    /**
+     * Needs to be called if keepAlive is set to true in request options.
+     */
+    dispose() {
+        if (this._agent) {
+            this._agent.destroy();
+        }
+        this._disposed = true;
+    }
+    /**
+     * Raw request.
+     * @param info
+     * @param data
+     */
+    requestRaw(info, data) {
+        return new Promise((resolve, reject) => {
+            let callbackForResult = function (err, res) {
+                if (err) {
+                    reject(err);
+                }
+                resolve(res);
+            };
+            this.requestRawWithCallback(info, data, callbackForResult);
+        });
+    }
+    /**
+     * Raw request with callback.
+     * @param info
+     * @param data
+     * @param onResult
+     */
+    requestRawWithCallback(info, data, onResult) {
+        let socket;
+        let isDataString = typeof (data) === 'string';
+        if (typeof (data) === 'string') {
+            info.options.headers["Content-Length"] = Buffer.byteLength(data, 'utf8');
+        }
+        let callbackCalled = false;
+        let handleResult = (err, res) => {
+            if (!callbackCalled) {
+                callbackCalled = true;
+                onResult(err, res);
+            }
+        };
+        let req = info.httpModule.request(info.options, (msg) => {
+            let res = new HttpClientResponse(msg);
+            handleResult(null, res);
+        });
+        req.on('socket', (sock) => {
+            socket = sock;
+        });
+        // If we ever get disconnected, we want the socket to timeout eventually
+        req.setTimeout(this._socketTimeout || 3 * 60000, () => {
+            if (socket) {
+                socket.end();
+            }
+            handleResult(new Error('Request timeout: ' + info.options.path), null);
+        });
+        req.on('error', function (err) {
+            // err has statusCode property
+            // res should have headers
+            handleResult(err, null);
+        });
+        if (data && typeof (data) === 'string') {
+            req.write(data, 'utf8');
+        }
+        if (data && typeof (data) !== 'string') {
+            data.on('close', function () {
+                req.end();
+            });
+            data.pipe(req);
+        }
+        else {
+            req.end();
+        }
+    }
+    _prepareRequest(method, requestUrl, headers) {
+        const info = {};
+        info.parsedUrl = url.parse(requestUrl);
+        const usingSsl = info.parsedUrl.protocol === 'https:';
+        info.httpModule = usingSsl ? https : http;
+        const defaultPort = usingSsl ? 443 : 80;
+        info.options = {};
+        info.options.host = info.parsedUrl.hostname;
+        info.options.port = info.parsedUrl.port ? parseInt(info.parsedUrl.port) : defaultPort;
+        info.options.path = (info.parsedUrl.pathname || '') + (info.parsedUrl.search || '');
+        info.options.method = method;
+        info.options.headers = this._mergeHeaders(headers);
+        info.options.headers["user-agent"] = this.userAgent;
+        info.options.agent = this._getAgent(requestUrl);
+        // gives handlers an opportunity to participate
+        if (this.handlers && !this._isPresigned(requestUrl)) {
+            this.handlers.forEach((handler) => {
+                handler.prepareRequest(info.options);
+            });
+        }
+        return info;
+    }
+    _isPresigned(requestUrl) {
+        if (this.requestOptions && this.requestOptions.presignedUrlPatterns) {
+            const patterns = this.requestOptions.presignedUrlPatterns;
+            for (let i = 0; i < patterns.length; i++) {
+                if (requestUrl.match(patterns[i])) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+    _mergeHeaders(headers) {
+        const lowercaseKeys = obj => Object.keys(obj).reduce((c, k) => (c[k.toLowerCase()] = obj[k], c), {});
+        if (this.requestOptions && this.requestOptions.headers) {
+            return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers));
+        }
+        return lowercaseKeys(headers || {});
+    }
+    _getAgent(requestUrl) {
+        let agent;
+        let proxy = this._getProxy(requestUrl);
+        let useProxy = proxy.proxyUrl && proxy.proxyUrl.hostname && !this._isBypassProxy(requestUrl);
+        if (this._keepAlive && useProxy) {
+            agent = this._proxyAgent;
+        }
+        if (this._keepAlive && !useProxy) {
+            agent = this._agent;
+        }
+        // if agent is already assigned use that agent.
+        if (!!agent) {
+            return agent;
+        }
+        let parsedUrl = url.parse(requestUrl);
+        const usingSsl = parsedUrl.protocol === 'https:';
+        let maxSockets = 100;
+        if (!!this.requestOptions) {
+            maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets;
+        }
+        if (useProxy) {
+            // If using proxy, need tunnel
+            if (!tunnel) {
+                tunnel = require('tunnel');
+            }
+            const agentOptions = {
+                maxSockets: maxSockets,
+                keepAlive: this._keepAlive,
+                proxy: {
+                    proxyAuth: proxy.proxyAuth,
+                    host: proxy.proxyUrl.hostname,
+                    port: proxy.proxyUrl.port
+                },
+            };
+            let tunnelAgent;
+            const overHttps = proxy.proxyUrl.protocol === 'https:';
+            if (usingSsl) {
+                tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp;
+            }
+            else {
+                tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp;
+            }
+            agent = tunnelAgent(agentOptions);
+            this._proxyAgent = agent;
+        }
+        // if reusing agent across request and tunneling agent isn't assigned create a new agent
+        if (this._keepAlive && !agent) {
+            const options = { keepAlive: this._keepAlive, maxSockets: maxSockets };
+            agent = usingSsl ? new https.Agent(options) : new http.Agent(options);
+            this._agent = agent;
+        }
+        // if not using private agent and tunnel agent isn't setup then use global agent
+        if (!agent) {
+            agent = usingSsl ? https.globalAgent : http.globalAgent;
+        }
+        if (usingSsl && this._ignoreSslError) {
+            // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process
+            // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options
+            // we have to cast it to any and change it directly
+            agent.options = Object.assign(agent.options || {}, { rejectUnauthorized: false });
+        }
+        if (usingSsl && this._certConfig) {
+            agent.options = Object.assign(agent.options || {}, { ca: this._ca, cert: this._cert, key: this._key, passphrase: this._certConfig.passphrase });
+        }
+        return agent;
+    }
+    _getProxy(requestUrl) {
+        const parsedUrl = url.parse(requestUrl);
+        let usingSsl = parsedUrl.protocol === 'https:';
+        let proxyConfig = this._httpProxy;
+        // fallback to http_proxy and https_proxy env
+        let https_proxy = process.env[EnvironmentVariables.HTTPS_PROXY];
+        let http_proxy = process.env[EnvironmentVariables.HTTP_PROXY];
+        if (!proxyConfig) {
+            if (https_proxy && usingSsl) {
+                proxyConfig = {
+                    proxyUrl: https_proxy
+                };
+            }
+            else if (http_proxy) {
+                proxyConfig = {
+                    proxyUrl: http_proxy
+                };
+            }
+        }
+        let proxyUrl;
+        let proxyAuth;
+        if (proxyConfig) {
+            if (proxyConfig.proxyUrl.length > 0) {
+                proxyUrl = url.parse(proxyConfig.proxyUrl);
+            }
+            if (proxyConfig.proxyUsername || proxyConfig.proxyPassword) {
+                proxyAuth = proxyConfig.proxyUsername + ":" + proxyConfig.proxyPassword;
+            }
+        }
+        return { proxyUrl: proxyUrl, proxyAuth: proxyAuth };
+    }
+    _isBypassProxy(requestUrl) {
+        if (!this._httpProxyBypassHosts) {
+            return false;
+        }
+        let bypass = false;
+        this._httpProxyBypassHosts.forEach(bypassHost => {
+            if (bypassHost.test(requestUrl)) {
+                bypass = true;
+            }
+        });
+        return bypass;
+    }
+    _performExponentialBackoff(retryNumber) {
+        retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber);
+        const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber);
+        return new Promise(resolve => setTimeout(() => resolve(), ms));
+    }
+}
+exports.HttpClient = HttpClient;
diff --git a/setup-maven/node_modules/typed-rest-client/Index.d.ts b/setup-maven/node_modules/typed-rest-client/Index.d.ts
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/setup-maven/node_modules/typed-rest-client/Index.d.ts
diff --git a/setup-maven/node_modules/typed-rest-client/Index.js b/setup-maven/node_modules/typed-rest-client/Index.js
new file mode 100644
index 0000000..c8ad2e5
--- /dev/null
+++ b/setup-maven/node_modules/typed-rest-client/Index.js
@@ -0,0 +1,2 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
diff --git a/setup-maven/node_modules/typed-rest-client/Interfaces.d.ts b/setup-maven/node_modules/typed-rest-client/Interfaces.d.ts
new file mode 100644
index 0000000..5900e26
--- /dev/null
+++ b/setup-maven/node_modules/typed-rest-client/Interfaces.d.ts
@@ -0,0 +1,62 @@
+/// <reference types="node" />
+import http = require("http");
+import url = require("url");
+export interface IHeaders {
+    [key: string]: any;
+}
+export interface IBasicCredentials {
+    username: string;
+    password: string;
+}
+export interface IHttpClient {
+    options(requestUrl: string, additionalHeaders?: IHeaders): Promise<IHttpClientResponse>;
+    get(requestUrl: string, additionalHeaders?: IHeaders): Promise<IHttpClientResponse>;
+    del(requestUrl: string, additionalHeaders?: IHeaders): Promise<IHttpClientResponse>;
+    post(requestUrl: string, data: string, additionalHeaders?: IHeaders): Promise<IHttpClientResponse>;
+    patch(requestUrl: string, data: string, additionalHeaders?: IHeaders): Promise<IHttpClientResponse>;
+    put(requestUrl: string, data: string, additionalHeaders?: IHeaders): Promise<IHttpClientResponse>;
+    sendStream(verb: string, requestUrl: string, stream: NodeJS.ReadableStream, additionalHeaders?: IHeaders): Promise<IHttpClientResponse>;
+    request(verb: string, requestUrl: string, data: string | NodeJS.ReadableStream, headers: IHeaders): Promise<IHttpClientResponse>;
+    requestRaw(info: IRequestInfo, data: string | NodeJS.ReadableStream): Promise<IHttpClientResponse>;
+    requestRawWithCallback(info: IRequestInfo, data: string | NodeJS.ReadableStream, onResult: (err: any, res: IHttpClientResponse) => void): void;
+}
+export interface IRequestHandler {
+    prepareRequest(options: http.RequestOptions): void;
+    canHandleAuthentication(response: IHttpClientResponse): boolean;
+    handleAuthentication(httpClient: IHttpClient, requestInfo: IRequestInfo, objs: any): Promise<IHttpClientResponse>;
+}
+export interface IHttpClientResponse {
+    message: http.IncomingMessage;
+    readBody(): Promise<string>;
+}
+export interface IRequestInfo {
+    options: http.RequestOptions;
+    parsedUrl: url.Url;
+    httpModule: any;
+}
+export interface IRequestOptions {
+    headers?: IHeaders;
+    socketTimeout?: number;
+    ignoreSslError?: boolean;
+    proxy?: IProxyConfiguration;
+    cert?: ICertConfiguration;
+    allowRedirects?: boolean;
+    maxRedirects?: number;
+    maxSockets?: number;
+    keepAlive?: boolean;
+    presignedUrlPatterns?: RegExp[];
+    allowRetries?: boolean;
+    maxRetries?: number;
+}
+export interface IProxyConfiguration {
+    proxyUrl: string;
+    proxyUsername?: string;
+    proxyPassword?: string;
+    proxyBypassHosts?: string[];
+}
+export interface ICertConfiguration {
+    caFile?: string;
+    certFile?: string;
+    keyFile?: string;
+    passphrase?: string;
+}
diff --git a/setup-maven/node_modules/typed-rest-client/Interfaces.js b/setup-maven/node_modules/typed-rest-client/Interfaces.js
new file mode 100644
index 0000000..2bc6be2
--- /dev/null
+++ b/setup-maven/node_modules/typed-rest-client/Interfaces.js
@@ -0,0 +1,5 @@
+"use strict";
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+Object.defineProperty(exports, "__esModule", { value: true });
+;
diff --git a/setup-maven/node_modules/typed-rest-client/LICENSE b/setup-maven/node_modules/typed-rest-client/LICENSE
new file mode 100644
index 0000000..8cddf7e
--- /dev/null
+++ b/setup-maven/node_modules/typed-rest-client/LICENSE
@@ -0,0 +1,21 @@
+Typed Rest Client for Node.js
+
+Copyright (c) Microsoft Corporation
+
+All rights reserved.
+
+MIT License
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/setup-maven/node_modules/typed-rest-client/README.md b/setup-maven/node_modules/typed-rest-client/README.md
new file mode 100644
index 0000000..0c2b768
--- /dev/null
+++ b/setup-maven/node_modules/typed-rest-client/README.md
@@ -0,0 +1,100 @@
+[![Build Status](https://dev.azure.com/ms/typed-rest-client/_apis/build/status/Microsoft.typed-rest-client?branchName=master)](https://dev.azure.com/ms/typed-rest-client/_build/latest?definitionId=42&branchName=master)
+
+# Typed REST and HTTP Client with TypeScript Typings
+
+A lightweight REST and HTTP client optimized for use with TypeScript with generics and async await.
+
+## Features
+
+  - REST and HTTP client with TypeScript generics and async/await/Promises
+  - Typings included so no need to acquire separately (great for intellisense and no versioning drift)
+  - Basic, Bearer and NTLM Support out of the box.  Extensible handlers for others.
+  - Proxy support
+  - Certificate support (Self-signed server and client cert)
+  - Redirects supported
+
+Intellisense and compile support:
+
+![intellisense](./docs/intellisense.png)
+
+## Install
+
+```
+npm install typed-rest-client --save
+```
+
+Or to install the latest preview:
+```
+npm install typed-rest-client@preview --save
+```
+
+## Samples
+
+See the [samples](./samples) for complete coding examples. Also see the [REST](./test/tests/resttests.ts) and [HTTP](./test/tests/httptests.ts) tests for detailed examples.
+
+## Errors
+
+### HTTP
+
+The HTTP client does not throw unless truly exceptional.
+
+* A request that successfully executes resulting in a 404, 500 etc... will return a response object with a status code and a body.
+* Redirects (3xx) will be followed by default.
+
+
+See [HTTP tests](./test/tests/httptests.ts) for detailed examples.
+
+### REST
+
+The REST client is a high-level client which uses the HTTP client.  Its responsibility is to turn a body into a typed resource object.  
+
+* A 200 will be success.  
+* Redirects (3xx) will be followed.  
+* A 404 will not throw but the result object will be null and the result statusCode will be set.
+* Other 4xx and 5xx errors will throw.  The status code will be attached to the error object.  If a RESTful error object is returned (`{ message: xxx}`), then the error message will be that.  Otherwise, it will be a generic, `Failed Request: (xxx)`.
+
+See [REST tests](./test/tests/resttests.ts) for detailed examples.
+
+## Debugging
+
+To enable detailed console logging of all HTTP requests and responses, set the NODE_DEBUG environment varible:
+
+```
+export NODE_DEBUG=http
+```
+
+or
+
+```
+set NODE_DEBUG=http
+```
+
+
+
+## Node support
+
+The typed-rest-client is built using the latest LTS version of Node 8. We also support the latest LTS for Node 4 and Node 6.
+
+## Contributing
+
+To contribute to this repository, see the [contribution guide](./CONTRIBUTING.md)
+
+To build:
+
+```bash
+$ npm run build
+```
+
+To run all tests:
+```bash
+$ npm test
+```
+
+To just run unit tests:
+```bash
+$ npm run units
+```
+
+## Code of Conduct
+
+This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
diff --git a/setup-maven/node_modules/typed-rest-client/RestClient.d.ts b/setup-maven/node_modules/typed-rest-client/RestClient.d.ts
new file mode 100644
index 0000000..74b33cb
--- /dev/null
+++ b/setup-maven/node_modules/typed-rest-client/RestClient.d.ts
@@ -0,0 +1,77 @@
+/// <reference types="node" />
+import httpm = require('./HttpClient');
+import ifm = require("./Interfaces");
+export interface IRestResponse<T> {
+    statusCode: number;
+    result: T | null;
+    headers: Object;
+}
+export interface IRequestOptions {
+    acceptHeader?: string;
+    additionalHeaders?: ifm.IHeaders;
+    responseProcessor?: Function;
+    deserializeDates?: boolean;
+}
+export declare class RestClient {
+    client: httpm.HttpClient;
+    versionParam: string;
+    /**
+     * Creates an instance of the RestClient
+     * @constructor
+     * @param {string} userAgent - userAgent for requests
+     * @param {string} baseUrl - (Optional) If not specified, use full urls per request.  If supplied and a function passes a relative url, it will be appended to this
+     * @param {ifm.IRequestHandler[]} handlers - handlers are typically auth handlers (basic, bearer, ntlm supplied)
+     * @param {ifm.IRequestOptions} requestOptions - options for each http requests (http proxy setting, socket timeout)
+     */
+    constructor(userAgent: string, baseUrl?: string, handlers?: ifm.IRequestHandler[], requestOptions?: ifm.IRequestOptions);
+    private _baseUrl;
+    /**
+     * Gets a resource from an endpoint
+     * Be aware that not found returns a null.  Other error conditions reject the promise
+     * @param {string} requestUrl - fully qualified or relative url
+     * @param {IRequestOptions} requestOptions - (optional) requestOptions object
+     */
+    options<T>(requestUrl: string, options?: IRequestOptions): Promise<IRestResponse<T>>;
+    /**
+     * Gets a resource from an endpoint
+     * Be aware that not found returns a null.  Other error conditions reject the promise
+     * @param {string} resource - fully qualified url or relative path
+     * @param {IRequestOptions} requestOptions - (optional) requestOptions object
+     */
+    get<T>(resource: string, options?: IRequestOptions): Promise<IRestResponse<T>>;
+    /**
+     * Deletes a resource from an endpoint
+     * Be aware that not found returns a null.  Other error conditions reject the promise
+     * @param {string} resource - fully qualified or relative url
+     * @param {IRequestOptions} requestOptions - (optional) requestOptions object
+     */
+    del<T>(resource: string, options?: IRequestOptions): Promise<IRestResponse<T>>;
+    /**
+     * Creates resource(s) from an endpoint
+     * T type of object returned.
+     * Be aware that not found returns a null.  Other error conditions reject the promise
+     * @param {string} resource - fully qualified or relative url
+     * @param {IRequestOptions} requestOptions - (optional) requestOptions object
+     */
+    create<T>(resource: string, resources: any, options?: IRequestOptions): Promise<IRestResponse<T>>;
+    /**
+     * Updates resource(s) from an endpoint
+     * T type of object returned.
+     * Be aware that not found returns a null.  Other error conditions reject the promise
+     * @param {string} resource - fully qualified or relative url
+     * @param {IRequestOptions} requestOptions - (optional) requestOptions object
+     */
+    update<T>(resource: string, resources: any, options?: IRequestOptions): Promise<IRestResponse<T>>;
+    /**
+     * Replaces resource(s) from an endpoint
+     * T type of object returned.
+     * Be aware that not found returns a null.  Other error conditions reject the promise
+     * @param {string} resource - fully qualified or relative url
+     * @param {IRequestOptions} requestOptions - (optional) requestOptions object
+     */
+    replace<T>(resource: string, resources: any, options?: IRequestOptions): Promise<IRestResponse<T>>;
+    uploadStream<T>(verb: string, requestUrl: string, stream: NodeJS.ReadableStream, options?: IRequestOptions): Promise<IRestResponse<T>>;
+    private _headersFromOptions(options, contentType?);
+    private static dateTimeDeserializer(key, value);
+    private _processResponse<T>(res, options);
+}
diff --git a/setup-maven/node_modules/typed-rest-client/RestClient.js b/setup-maven/node_modules/typed-rest-client/RestClient.js
new file mode 100644
index 0000000..1548b8f
--- /dev/null
+++ b/setup-maven/node_modules/typed-rest-client/RestClient.js
@@ -0,0 +1,217 @@
+"use strict";
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+    return new (P || (P = Promise))(function (resolve, reject) {
+        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
+        step((generator = generator.apply(thisArg, _arguments || [])).next());
+    });
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const httpm = require("./HttpClient");
+const util = require("./Util");
+class RestClient {
+    /**
+     * Creates an instance of the RestClient
+     * @constructor
+     * @param {string} userAgent - userAgent for requests
+     * @param {string} baseUrl - (Optional) If not specified, use full urls per request.  If supplied and a function passes a relative url, it will be appended to this
+     * @param {ifm.IRequestHandler[]} handlers - handlers are typically auth handlers (basic, bearer, ntlm supplied)
+     * @param {ifm.IRequestOptions} requestOptions - options for each http requests (http proxy setting, socket timeout)
+     */
+    constructor(userAgent, baseUrl, handlers, requestOptions) {
+        this.client = new httpm.HttpClient(userAgent, handlers, requestOptions);
+        if (baseUrl) {
+            this._baseUrl = baseUrl;
+        }
+    }
+    /**
+     * Gets a resource from an endpoint
+     * Be aware that not found returns a null.  Other error conditions reject the promise
+     * @param {string} requestUrl - fully qualified or relative url
+     * @param {IRequestOptions} requestOptions - (optional) requestOptions object
+     */
+    options(requestUrl, options) {
+        return __awaiter(this, void 0, void 0, function* () {
+            let url = util.getUrl(requestUrl, this._baseUrl);
+            let res = yield this.client.options(url, this._headersFromOptions(options));
+            return this._processResponse(res, options);
+        });
+    }
+    /**
+     * Gets a resource from an endpoint
+     * Be aware that not found returns a null.  Other error conditions reject the promise
+     * @param {string} resource - fully qualified url or relative path
+     * @param {IRequestOptions} requestOptions - (optional) requestOptions object
+     */
+    get(resource, options) {
+        return __awaiter(this, void 0, void 0, function* () {
+            let url = util.getUrl(resource, this._baseUrl);
+            let res = yield this.client.get(url, this._headersFromOptions(options));
+            return this._processResponse(res, options);
+        });
+    }
+    /**
+     * Deletes a resource from an endpoint
+     * Be aware that not found returns a null.  Other error conditions reject the promise
+     * @param {string} resource - fully qualified or relative url
+     * @param {IRequestOptions} requestOptions - (optional) requestOptions object
+     */
+    del(resource, options) {
+        return __awaiter(this, void 0, void 0, function* () {
+            let url = util.getUrl(resource, this._baseUrl);
+            let res = yield this.client.del(url, this._headersFromOptions(options));
+            return this._processResponse(res, options);
+        });
+    }
+    /**
+     * Creates resource(s) from an endpoint
+     * T type of object returned.
+     * Be aware that not found returns a null.  Other error conditions reject the promise
+     * @param {string} resource - fully qualified or relative url
+     * @param {IRequestOptions} requestOptions - (optional) requestOptions object
+     */
+    create(resource, resources, options) {
+        return __awaiter(this, void 0, void 0, function* () {
+            let url = util.getUrl(resource, this._baseUrl);
+            let headers = this._headersFromOptions(options, true);
+            let data = JSON.stringify(resources, null, 2);
+            let res = yield this.client.post(url, data, headers);
+            return this._processResponse(res, options);
+        });
+    }
+    /**
+     * Updates resource(s) from an endpoint
+     * T type of object returned.
+     * Be aware that not found returns a null.  Other error conditions reject the promise
+     * @param {string} resource - fully qualified or relative url
+     * @param {IRequestOptions} requestOptions - (optional) requestOptions object
+     */
+    update(resource, resources, options) {
+        return __awaiter(this, void 0, void 0, function* () {
+            let url = util.getUrl(resource, this._baseUrl);
+            let headers = this._headersFromOptions(options, true);
+            let data = JSON.stringify(resources, null, 2);
+            let res = yield this.client.patch(url, data, headers);
+            return this._processResponse(res, options);
+        });
+    }
+    /**
+     * Replaces resource(s) from an endpoint
+     * T type of object returned.
+     * Be aware that not found returns a null.  Other error conditions reject the promise
+     * @param {string} resource - fully qualified or relative url
+     * @param {IRequestOptions} requestOptions - (optional) requestOptions object
+     */
+    replace(resource, resources, options) {
+        return __awaiter(this, void 0, void 0, function* () {
+            let url = util.getUrl(resource, this._baseUrl);
+            let headers = this._headersFromOptions(options, true);
+            let data = JSON.stringify(resources, null, 2);
+            let res = yield this.client.put(url, data, headers);
+            return this._processResponse(res, options);
+        });
+    }
+    uploadStream(verb, requestUrl, stream, options) {
+        return __awaiter(this, void 0, void 0, function* () {
+            let url = util.getUrl(requestUrl, this._baseUrl);
+            let headers = this._headersFromOptions(options, true);
+            let res = yield this.client.sendStream(verb, url, stream, headers);
+            return this._processResponse(res, options);
+        });
+    }
+    _headersFromOptions(options, contentType) {
+        options = options || {};
+        let headers = options.additionalHeaders || {};
+        headers["Accept"] = options.acceptHeader || "application/json";
+        if (contentType) {
+            let found = false;
+            for (let header in headers) {
+                if (header.toLowerCase() == "content-type") {
+                    found = true;
+                }
+            }
+            if (!found) {
+                headers["Content-Type"] = 'application/json; charset=utf-8';
+            }
+        }
+        return headers;
+    }
+    static dateTimeDeserializer(key, value) {
+        if (typeof value === 'string') {
+            let a = new Date(value);
+            if (!isNaN(a.valueOf())) {
+                return a;
+            }
+        }
+        return value;
+    }
+    _processResponse(res, options) {
+        return __awaiter(this, void 0, void 0, function* () {
+            return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
+                const statusCode = res.message.statusCode;
+                const response = {
+                    statusCode: statusCode,
+                    result: null,
+                    headers: {}
+                };
+                // not found leads to null obj returned
+                if (statusCode == httpm.HttpCodes.NotFound) {
+                    resolve(response);
+                }
+                let obj;
+                let contents;
+                // get the result from the body
+                try {
+                    contents = yield res.readBody();
+                    if (contents && contents.length > 0) {
+                        if (options && options.deserializeDates) {
+                            obj = JSON.parse(contents, RestClient.dateTimeDeserializer);
+                        }
+                        else {
+                            obj = JSON.parse(contents);
+                        }
+                        if (options && options.responseProcessor) {
+                            response.result = options.responseProcessor(obj);
+                        }
+                        else {
+                            response.result = obj;
+                        }
+                    }
+                    response.headers = res.message.headers;
+                }
+                catch (err) {
+                    // Invalid resource (contents not json);  leaving result obj null
+                }
+                // note that 3xx redirects are handled by the http layer.
+                if (statusCode > 299) {
+                    let msg;
+                    // if exception/error in body, attempt to get better error
+                    if (obj && obj.message) {
+                        msg = obj.message;
+                    }
+                    else if (contents && contents.length > 0) {
+                        // it may be the case that the exception is in the body message as string
+                        msg = contents;
+                    }
+                    else {
+                        msg = "Failed request: (" + statusCode + ")";
+                    }
+                    let err = new Error(msg);
+                    // attach statusCode and body obj (if available) to the error object
+                    err['statusCode'] = statusCode;
+                    if (response.result) {
+                        err['result'] = response.result;
+                    }
+                    reject(err);
+                }
+                else {
+                    resolve(response);
+                }
+            }));
+        });
+    }
+}
+exports.RestClient = RestClient;
diff --git a/setup-maven/node_modules/typed-rest-client/ThirdPartyNotice.txt b/setup-maven/node_modules/typed-rest-client/ThirdPartyNotice.txt
new file mode 100644
index 0000000..7bd6774
--- /dev/null
+++ b/setup-maven/node_modules/typed-rest-client/ThirdPartyNotice.txt
@@ -0,0 +1,1318 @@
+
+THIRD-PARTY SOFTWARE NOTICES AND INFORMATION
+Do Not Translate or Localize
+
+This Visual Studio Team Services extension (vsts-task-lib) is based on or incorporates material from the projects listed below (Third Party IP). The original copyright notice and the license under which Microsoft received such Third Party IP, are set forth below. Such licenses and notices are provided for informational purposes only. Microsoft licenses the Third Party IP to you under the licensing terms for the Visual Studio Team Services extension. Microsoft reserves all other rights not expressly granted under this agreement, whether by implication, estoppel or otherwise.
+
+1.	@types/glob (https://www.github.com/DefinitelyTyped/DefinitelyTyped.git)
+2.	@types/minimatch (https://www.github.com/DefinitelyTyped/DefinitelyTyped.git)
+3.	@types/mocha (https://www.github.com/DefinitelyTyped/DefinitelyTyped.git)
+4.	@types/node (https://www.github.com/DefinitelyTyped/DefinitelyTyped.git)
+5.	@types/shelljs (https://www.github.com/DefinitelyTyped/DefinitelyTyped.git)
+6.	balanced-match (git://github.com/juliangruber/balanced-match.git)
+7.	brace-expansion (git://github.com/juliangruber/brace-expansion.git)
+8.	browser-stdout (git+ssh://git@github.com/kumavis/browser-stdout.git)
+9.	commander (git+https://github.com/tj/commander.js.git)
+10.	concat-map (git://github.com/substack/node-concat-map.git)
+11.	debug (git://github.com/visionmedia/debug.git)
+12.	diff (git://github.com/kpdecker/jsdiff.git)
+13.	escape-string-regexp (git+https://github.com/sindresorhus/escape-string-regexp.git)
+14.	fs.realpath (git+https://github.com/isaacs/fs.realpath.git)
+15.	glob (git://github.com/isaacs/node-glob.git)
+16.	graceful-readlink (git://github.com/zhiyelee/graceful-readlink.git)
+17.	growl (git://github.com/tj/node-growl.git)
+18.	has-flag (git+https://github.com/sindresorhus/has-flag.git)
+19.	he (git+https://github.com/mathiasbynens/he.git)
+20.	inflight (git+https://github.com/npm/inflight.git)
+21.	inherits (git://github.com/isaacs/inherits.git)
+22.	interpret (git://github.com/tkellen/node-interpret.git)
+23.	json3 (git://github.com/bestiejs/json3.git)
+24.	lodash.create (git+https://github.com/lodash/lodash.git)
+25.	lodash.isarguments (git+https://github.com/lodash/lodash.git)
+26.	lodash.isarray (git+https://github.com/lodash/lodash.git)
+27.	lodash.keys (git+https://github.com/lodash/lodash.git)
+28.	lodash._baseassign (git+https://github.com/lodash/lodash.git)
+29.	lodash._basecopy (git+https://github.com/lodash/lodash.git)
+30.	lodash._basecreate (git+https://github.com/lodash/lodash.git)
+31.	lodash._getnative (git+https://github.com/lodash/lodash.git)
+32.	lodash._isiterateecall (git+https://github.com/lodash/lodash.git)
+33.	minimatch (git://github.com/isaacs/minimatch.git)
+34.	minimist (git://github.com/substack/minimist.git)
+35.	mkdirp (git+https://github.com/substack/node-mkdirp.git)
+36.	mocha (git+https://github.com/mochajs/mocha.git)
+37.	ms (git+https://github.com/zeit/ms.git)
+38.	once (git://github.com/isaacs/once.git)
+39.	path-is-absolute (git+https://github.com/sindresorhus/path-is-absolute.git)
+40.	path-parse (git+https://github.com/jbgutierrez/path-parse.git)
+41.	rechoir (git://github.com/tkellen/node-rechoir.git)
+42.	resolve (git://github.com/substack/node-resolve.git)
+43.	semver (git://github.com/npm/node-semver.git)
+44.	shelljs (git://github.com/shelljs/shelljs.git)
+45.	supports-color (git+https://github.com/chalk/supports-color.git)
+46.	tunnel (git+https://github.com/koichik/node-tunnel.git)
+47.	typescript (git+https://github.com/Microsoft/TypeScript.git)
+48.	underscore (git://github.com/jashkenas/underscore.git)
+49.	wrappy (git+https://github.com/npm/wrappy.git)
+
+
+%% @types/glob NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+MIT License
+
+    Copyright (c) Microsoft Corporation. All rights reserved.
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE
+=========================================
+END OF @types/glob NOTICES, INFORMATION, AND LICENSE
+
+%% @types/minimatch NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+MIT License
+
+    Copyright (c) Microsoft Corporation. All rights reserved.
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE
+=========================================
+END OF @types/minimatch NOTICES, INFORMATION, AND LICENSE
+
+%% @types/mocha NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+MIT License
+
+    Copyright (c) Microsoft Corporation. All rights reserved.
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE
+=========================================
+END OF @types/mocha NOTICES, INFORMATION, AND LICENSE
+
+%% @types/node NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+MIT License
+
+    Copyright (c) Microsoft Corporation. All rights reserved.
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE
+=========================================
+END OF @types/node NOTICES, INFORMATION, AND LICENSE
+
+%% @types/shelljs NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+MIT License
+
+    Copyright (c) Microsoft Corporation. All rights reserved.
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE
+=========================================
+END OF @types/shelljs NOTICES, INFORMATION, AND LICENSE
+
+%% balanced-match NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+(MIT)
+
+Copyright (c) 2013 Julian Gruber &lt;julian@juliangruber.com&gt;
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+=========================================
+END OF balanced-match NOTICES, INFORMATION, AND LICENSE
+
+%% brace-expansion NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+No license text available.
+=========================================
+END OF brace-expansion NOTICES, INFORMATION, AND LICENSE
+
+%% browser-stdout NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+No license text available.
+=========================================
+END OF browser-stdout NOTICES, INFORMATION, AND LICENSE
+
+%% commander NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+(The MIT License)
+
+Copyright (c) 2011 TJ Holowaychuk <tj@vision-media.ca>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF commander NOTICES, INFORMATION, AND LICENSE
+
+%% concat-map NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+This software is released under the MIT license:
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF concat-map NOTICES, INFORMATION, AND LICENSE
+
+%% debug NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+(The MIT License)
+
+Copyright (c) 2014 TJ Holowaychuk <tj@vision-media.ca>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software 
+and associated documentation files (the 'Software'), to deal in the Software without restriction, 
+including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, 
+and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial 
+portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT 
+LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF debug NOTICES, INFORMATION, AND LICENSE
+
+%% diff NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Software License Agreement (BSD License)
+
+Copyright (c) 2009-2015, Kevin Decker <kpdecker@gmail.com>
+
+All rights reserved.
+
+Redistribution and use of this software in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above
+  copyright notice, this list of conditions and the
+  following disclaimer.
+
+* Redistributions in binary form must reproduce the above
+  copyright notice, this list of conditions and the
+  following disclaimer in the documentation and/or other
+  materials provided with the distribution.
+
+* Neither the name of Kevin Decker nor the names of its
+  contributors may be used to endorse or promote products
+  derived from this software without specific prior
+  written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+=========================================
+END OF diff NOTICES, INFORMATION, AND LICENSE
+
+%% escape-string-regexp NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+=========================================
+END OF escape-string-regexp NOTICES, INFORMATION, AND LICENSE
+
+%% fs.realpath NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+----
+
+This library bundles a version of the `fs.realpath` and `fs.realpathSync`
+methods from Node.js v0.10 under the terms of the Node.js MIT license.
+
+Node's license follows, also included at the header of `old.js` which contains
+the licensed code:
+
+  Copyright Joyent, Inc. and other Node contributors.
+
+  Permission is hereby granted, free of charge, to any person obtaining a
+  copy of this software and associated documentation files (the "Software"),
+  to deal in the Software without restriction, including without limitation
+  the rights to use, copy, modify, merge, publish, distribute, sublicense,
+  and/or sell copies of the Software, and to permit persons to whom the
+  Software is furnished to do so, subject to the following conditions:
+
+  The above copyright notice and this permission notice shall be included in
+  all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+  DEALINGS IN THE SOFTWARE.
+=========================================
+END OF fs.realpath NOTICES, INFORMATION, AND LICENSE
+
+%% glob NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+=========================================
+END OF glob NOTICES, INFORMATION, AND LICENSE
+
+%% graceful-readlink NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The MIT License (MIT)
+
+Copyright (c) 2015 Zhiye Li
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+=========================================
+END OF graceful-readlink NOTICES, INFORMATION, AND LICENSE
+
+%% growl NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+No license text available.
+=========================================
+END OF growl NOTICES, INFORMATION, AND LICENSE
+
+%% has-flag NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+=========================================
+END OF has-flag NOTICES, INFORMATION, AND LICENSE
+
+%% he NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright Mathias Bynens <https://mathiasbynens.be/>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF he NOTICES, INFORMATION, AND LICENSE
+
+%% inflight NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+=========================================
+END OF inflight NOTICES, INFORMATION, AND LICENSE
+
+%% inherits NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+=========================================
+END OF inherits NOTICES, INFORMATION, AND LICENSE
+
+%% interpret NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2014 Tyler Kellen
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF interpret NOTICES, INFORMATION, AND LICENSE
+
+%% json3 NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2012-2014 Kit Cambridge.
+http://kitcambridge.be/
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+=========================================
+END OF json3 NOTICES, INFORMATION, AND LICENSE
+
+%% lodash.create NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
+Based on Underscore.js, copyright 2009-2015 Jeremy Ashkenas,
+DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF lodash.create NOTICES, INFORMATION, AND LICENSE
+
+%% lodash.isarguments NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright jQuery Foundation and other contributors <https://jquery.org/>
+
+Based on Underscore.js, copyright Jeremy Ashkenas,
+DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+available at https://github.com/lodash/lodash
+
+The following license applies to all parts of this software except as
+documented below:
+
+====
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+====
+
+Copyright and related rights for sample code are waived via CC0. Sample
+code is defined as all source code displayed within the prose of the
+documentation.
+
+CC0: http://creativecommons.org/publicdomain/zero/1.0/
+
+====
+
+Files located in the node_modules and vendor directories are externally
+maintained libraries used by this software which have their own
+licenses; we recommend you read them, as their terms may differ from the
+terms above.
+=========================================
+END OF lodash.isarguments NOTICES, INFORMATION, AND LICENSE
+
+%% lodash.isarray NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
+Based on Underscore.js, copyright 2009-2015 Jeremy Ashkenas,
+DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF lodash.isarray NOTICES, INFORMATION, AND LICENSE
+
+%% lodash.keys NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
+Based on Underscore.js, copyright 2009-2015 Jeremy Ashkenas,
+DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF lodash.keys NOTICES, INFORMATION, AND LICENSE
+
+%% lodash._baseassign NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
+Based on Underscore.js, copyright 2009-2015 Jeremy Ashkenas,
+DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF lodash._baseassign NOTICES, INFORMATION, AND LICENSE
+
+%% lodash._basecopy NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
+Based on Underscore.js, copyright 2009-2015 Jeremy Ashkenas,
+DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF lodash._basecopy NOTICES, INFORMATION, AND LICENSE
+
+%% lodash._basecreate NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
+Based on Underscore.js, copyright 2009-2015 Jeremy Ashkenas,
+DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF lodash._basecreate NOTICES, INFORMATION, AND LICENSE
+
+%% lodash._getnative NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
+Based on Underscore.js, copyright 2009-2015 Jeremy Ashkenas,
+DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF lodash._getnative NOTICES, INFORMATION, AND LICENSE
+
+%% lodash._isiterateecall NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
+Based on Underscore.js, copyright 2009-2015 Jeremy Ashkenas,
+DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF lodash._isiterateecall NOTICES, INFORMATION, AND LICENSE
+
+%% minimatch NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+=========================================
+END OF minimatch NOTICES, INFORMATION, AND LICENSE
+
+%% minimist NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+This software is released under the MIT license:
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF minimist NOTICES, INFORMATION, AND LICENSE
+
+%% mkdirp NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright 2010 James Halliday (mail@substack.net)
+
+This project is free software released under the MIT/X11 license:
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+=========================================
+END OF mkdirp NOTICES, INFORMATION, AND LICENSE
+
+%% mocha NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+(The MIT License)
+
+Copyright (c) 2011-2017 JS Foundation and contributors, https://js.foundation
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF mocha NOTICES, INFORMATION, AND LICENSE
+
+%% ms NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The MIT License (MIT)
+
+Copyright (c) 2016 Zeit, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+=========================================
+END OF ms NOTICES, INFORMATION, AND LICENSE
+
+%% once NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+=========================================
+END OF once NOTICES, INFORMATION, AND LICENSE
+
+%% path-is-absolute NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+=========================================
+END OF path-is-absolute NOTICES, INFORMATION, AND LICENSE
+
+%% path-parse NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+No license text available.
+=========================================
+END OF path-parse NOTICES, INFORMATION, AND LICENSE
+
+%% rechoir NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2015 Tyler Kellen
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF rechoir NOTICES, INFORMATION, AND LICENSE
+
+%% resolve NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+This software is released under the MIT license:
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF resolve NOTICES, INFORMATION, AND LICENSE
+
+%% semver NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) Isaac Z. Schlueter ("Author")
+All rights reserved.
+
+The BSD License
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+=========================================
+END OF semver NOTICES, INFORMATION, AND LICENSE
+
+%% shelljs NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2012, Artur Adib <arturadib@gmail.com>
+All rights reserved.
+
+You may use this project under the terms of the New BSD license as follows:
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+    * Neither the name of Artur Adib nor the
+      names of the contributors may be used to endorse or promote products
+      derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
+ARE DISCLAIMED. IN NO EVENT SHALL ARTUR ADIB BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+=========================================
+END OF shelljs NOTICES, INFORMATION, AND LICENSE
+
+%% supports-color NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+=========================================
+END OF supports-color NOTICES, INFORMATION, AND LICENSE
+
+%% tunnel NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The MIT License (MIT)
+
+Copyright (c) 2012 Koichi Kobayashi
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+=========================================
+END OF tunnel NOTICES, INFORMATION, AND LICENSE
+
+%% typescript NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Apache License
+
+Version 2.0, January 2004
+
+http://www.apache.org/licenses/ 
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
+
+"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
+
+"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
+
+"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
+
+"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
+
+"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
+
+"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
+
+You must give any other recipients of the Work or Derivative Works a copy of this License; and
+
+You must cause any modified files to carry prominent notices stating that You changed the files; and
+
+You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
+
+If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+=========================================
+END OF typescript NOTICES, INFORMATION, AND LICENSE
+
+%% underscore NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+Copyright (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative
+Reporters & Editors
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+=========================================
+END OF underscore NOTICES, INFORMATION, AND LICENSE
+
+%% wrappy NOTICES, INFORMATION, AND LICENSE BEGIN HERE
+=========================================
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+=========================================
+END OF wrappy NOTICES, INFORMATION, AND LICENSE
+
diff --git a/setup-maven/node_modules/typed-rest-client/Util.d.ts b/setup-maven/node_modules/typed-rest-client/Util.d.ts
new file mode 100644
index 0000000..32757e8
--- /dev/null
+++ b/setup-maven/node_modules/typed-rest-client/Util.d.ts
@@ -0,0 +1,7 @@
+/**
+ * creates an url from a request url and optional base url (http://server:8080)
+ * @param {string} resource - a fully qualified url or relative path
+ * @param {string} baseUrl - an optional baseUrl (http://server:8080)
+ * @return {string} - resultant url
+ */
+export declare function getUrl(resource: string, baseUrl?: string): string;
diff --git a/setup-maven/node_modules/typed-rest-client/Util.js b/setup-maven/node_modules/typed-rest-client/Util.js
new file mode 100644
index 0000000..32981d1
--- /dev/null
+++ b/setup-maven/node_modules/typed-rest-client/Util.js
@@ -0,0 +1,35 @@
+"use strict";
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+Object.defineProperty(exports, "__esModule", { value: true });
+const url = require("url");
+const path = require("path");
+/**
+ * creates an url from a request url and optional base url (http://server:8080)
+ * @param {string} resource - a fully qualified url or relative path
+ * @param {string} baseUrl - an optional baseUrl (http://server:8080)
+ * @return {string} - resultant url
+ */
+function getUrl(resource, baseUrl) {
+    const pathApi = path.posix || path;
+    if (!baseUrl) {
+        return resource;
+    }
+    else if (!resource) {
+        return baseUrl;
+    }
+    else {
+        const base = url.parse(baseUrl);
+        const resultantUrl = url.parse(resource);
+        // resource (specific per request) elements take priority
+        resultantUrl.protocol = resultantUrl.protocol || base.protocol;
+        resultantUrl.auth = resultantUrl.auth || base.auth;
+        resultantUrl.host = resultantUrl.host || base.host;
+        resultantUrl.pathname = pathApi.resolve(base.pathname, resultantUrl.pathname);
+        if (!resultantUrl.pathname.endsWith('/') && resource.endsWith('/')) {
+            resultantUrl.pathname += '/';
+        }
+        return url.format(resultantUrl);
+    }
+}
+exports.getUrl = getUrl;
diff --git a/setup-maven/node_modules/typed-rest-client/handlers/basiccreds.d.ts b/setup-maven/node_modules/typed-rest-client/handlers/basiccreds.d.ts
new file mode 100644
index 0000000..17ade55
--- /dev/null
+++ b/setup-maven/node_modules/typed-rest-client/handlers/basiccreds.d.ts
@@ -0,0 +1,9 @@
+import ifm = require('../Interfaces');
+export declare class BasicCredentialHandler implements ifm.IRequestHandler {
+    username: string;
+    password: string;
+    constructor(username: string, password: string);
+    prepareRequest(options: any): void;
+    canHandleAuthentication(response: ifm.IHttpClientResponse): boolean;
+    handleAuthentication(httpClient: ifm.IHttpClient, requestInfo: ifm.IRequestInfo, objs: any): Promise<ifm.IHttpClientResponse>;
+}
diff --git a/setup-maven/node_modules/typed-rest-client/handlers/basiccreds.js b/setup-maven/node_modules/typed-rest-client/handlers/basiccreds.js
new file mode 100644
index 0000000..384a39c
--- /dev/null
+++ b/setup-maven/node_modules/typed-rest-client/handlers/basiccreds.js
@@ -0,0 +1,24 @@
+"use strict";
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+Object.defineProperty(exports, "__esModule", { value: true });
+class BasicCredentialHandler {
+    constructor(username, password) {
+        this.username = username;
+        this.password = password;
+    }
+    // currently implements pre-authorization
+    // TODO: support preAuth = false where it hooks on 401
+    prepareRequest(options) {
+        options.headers['Authorization'] = 'Basic ' + new Buffer(this.username + ':' + this.password).toString('base64');
+        options.headers['X-TFS-FedAuthRedirect'] = 'Suppress';
+    }
+    // This handler cannot handle 401
+    canHandleAuthentication(response) {
+        return false;
+    }
+    handleAuthentication(httpClient, requestInfo, objs) {
+        return null;
+    }
+}
+exports.BasicCredentialHandler = BasicCredentialHandler;
diff --git a/setup-maven/node_modules/typed-rest-client/handlers/bearertoken.d.ts b/setup-maven/node_modules/typed-rest-client/handlers/bearertoken.d.ts
new file mode 100644
index 0000000..c08496f
--- /dev/null
+++ b/setup-maven/node_modules/typed-rest-client/handlers/bearertoken.d.ts
@@ -0,0 +1,8 @@
+import ifm = require('../Interfaces');
+export declare class BearerCredentialHandler implements ifm.IRequestHandler {
+    token: string;
+    constructor(token: string);
+    prepareRequest(options: any): void;
+    canHandleAuthentication(response: ifm.IHttpClientResponse): boolean;
+    handleAuthentication(httpClient: ifm.IHttpClient, requestInfo: ifm.IRequestInfo, objs: any): Promise<ifm.IHttpClientResponse>;
+}
diff --git a/setup-maven/node_modules/typed-rest-client/handlers/bearertoken.js b/setup-maven/node_modules/typed-rest-client/handlers/bearertoken.js
new file mode 100644
index 0000000..dad27a7
--- /dev/null
+++ b/setup-maven/node_modules/typed-rest-client/handlers/bearertoken.js
@@ -0,0 +1,23 @@
+"use strict";
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+Object.defineProperty(exports, "__esModule", { value: true });
+class BearerCredentialHandler {
+    constructor(token) {
+        this.token = token;
+    }
+    // currently implements pre-authorization
+    // TODO: support preAuth = false where it hooks on 401
+    prepareRequest(options) {
+        options.headers['Authorization'] = 'Bearer ' + this.token;
+        options.headers['X-TFS-FedAuthRedirect'] = 'Suppress';
+    }
+    // This handler cannot handle 401
+    canHandleAuthentication(response) {
+        return false;
+    }
+    handleAuthentication(httpClient, requestInfo, objs) {
+        return null;
+    }
+}
+exports.BearerCredentialHandler = BearerCredentialHandler;
diff --git a/setup-maven/node_modules/typed-rest-client/handlers/ntlm.d.ts b/setup-maven/node_modules/typed-rest-client/handlers/ntlm.d.ts
new file mode 100644
index 0000000..2f509b0
--- /dev/null
+++ b/setup-maven/node_modules/typed-rest-client/handlers/ntlm.d.ts
@@ -0,0 +1,13 @@
+/// <reference types="node" />
+import ifm = require('../Interfaces');
+import http = require("http");
+export declare class NtlmCredentialHandler implements ifm.IRequestHandler {
+    private _ntlmOptions;
+    constructor(username: string, password: string, workstation?: string, domain?: string);
+    prepareRequest(options: http.RequestOptions): void;
+    canHandleAuthentication(response: ifm.IHttpClientResponse): boolean;
+    handleAuthentication(httpClient: ifm.IHttpClient, requestInfo: ifm.IRequestInfo, objs: any): Promise<ifm.IHttpClientResponse>;
+    private handleAuthenticationPrivate(httpClient, requestInfo, objs, finalCallback);
+    private sendType1Message(httpClient, requestInfo, objs, finalCallback);
+    private sendType3Message(httpClient, requestInfo, objs, res, callback);
+}
diff --git a/setup-maven/node_modules/typed-rest-client/handlers/ntlm.js b/setup-maven/node_modules/typed-rest-client/handlers/ntlm.js
new file mode 100644
index 0000000..5fbca82
--- /dev/null
+++ b/setup-maven/node_modules/typed-rest-client/handlers/ntlm.js
@@ -0,0 +1,137 @@
+"use strict";
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+Object.defineProperty(exports, "__esModule", { value: true });
+const http = require("http");
+const https = require("https");
+const _ = require("underscore");
+const ntlm = require("../opensource/node-http-ntlm/ntlm");
+class NtlmCredentialHandler {
+    constructor(username, password, workstation, domain) {
+        this._ntlmOptions = {};
+        this._ntlmOptions.username = username;
+        this._ntlmOptions.password = password;
+        if (domain !== undefined) {
+            this._ntlmOptions.domain = domain;
+        }
+        else {
+            this._ntlmOptions.domain = '';
+        }
+        if (workstation !== undefined) {
+            this._ntlmOptions.workstation = workstation;
+        }
+        else {
+            this._ntlmOptions.workstation = '';
+        }
+    }
+    prepareRequest(options) {
+        // No headers or options need to be set.  We keep the credentials on the handler itself.
+        // If a (proxy) agent is set, remove it as we don't support proxy for NTLM at this time
+        if (options.agent) {
+            delete options.agent;
+        }
+    }
+    canHandleAuthentication(response) {
+        if (response && response.message && response.message.statusCode === 401) {
+            // Ensure that we're talking NTLM here
+            // Once we have the www-authenticate header, split it so we can ensure we can talk NTLM
+            const wwwAuthenticate = response.message.headers['www-authenticate'];
+            if (wwwAuthenticate) {
+                const mechanisms = wwwAuthenticate.split(', ');
+                const index = mechanisms.indexOf("NTLM");
+                if (index >= 0) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+    handleAuthentication(httpClient, requestInfo, objs) {
+        return new Promise((resolve, reject) => {
+            const callbackForResult = function (err, res) {
+                if (err) {
+                    reject(err);
+                }
+                // We have to readbody on the response before continuing otherwise there is a hang.
+                res.readBody().then(() => {
+                    resolve(res);
+                });
+            };
+            this.handleAuthenticationPrivate(httpClient, requestInfo, objs, callbackForResult);
+        });
+    }
+    handleAuthenticationPrivate(httpClient, requestInfo, objs, finalCallback) {
+        // Set up the headers for NTLM authentication
+        requestInfo.options = _.extend(requestInfo.options, {
+            username: this._ntlmOptions.username,
+            password: this._ntlmOptions.password,
+            domain: this._ntlmOptions.domain,
+            workstation: this._ntlmOptions.workstation
+        });
+        if (httpClient.isSsl === true) {
+            requestInfo.options.agent = new https.Agent({ keepAlive: true });
+        }
+        else {
+            requestInfo.options.agent = new http.Agent({ keepAlive: true });
+        }
+        let self = this;
+        // The following pattern of sending the type1 message following immediately (in a setImmediate) is
+        // critical for the NTLM exchange to happen.  If we removed setImmediate (or call in a different manner)
+        // the NTLM exchange will always fail with a 401.
+        this.sendType1Message(httpClient, requestInfo, objs, function (err, res) {
+            if (err) {
+                return finalCallback(err, null, null);
+            }
+            /// We have to readbody on the response before continuing otherwise there is a hang.
+            res.readBody().then(() => {
+                // It is critical that we have setImmediate here due to how connection requests are queued.
+                // If setImmediate is removed then the NTLM handshake will not work.
+                // setImmediate allows us to queue a second request on the same connection. If this second 
+                // request is not queued on the connection when the first request finishes then node closes
+                // the connection. NTLM requires both requests to be on the same connection so we need this.
+                setImmediate(function () {
+                    self.sendType3Message(httpClient, requestInfo, objs, res, finalCallback);
+                });
+            });
+        });
+    }
+    // The following method is an adaptation of code found at https://github.com/SamDecrock/node-http-ntlm/blob/master/httpntlm.js
+    sendType1Message(httpClient, requestInfo, objs, finalCallback) {
+        const type1msg = ntlm.createType1Message(this._ntlmOptions);
+        const type1options = {
+            headers: {
+                'Connection': 'keep-alive',
+                'Authorization': type1msg
+            },
+            timeout: requestInfo.options.timeout || 0,
+            agent: requestInfo.httpModule,
+        };
+        const type1info = {};
+        type1info.httpModule = requestInfo.httpModule;
+        type1info.parsedUrl = requestInfo.parsedUrl;
+        type1info.options = _.extend(type1options, _.omit(requestInfo.options, 'headers'));
+        return httpClient.requestRawWithCallback(type1info, objs, finalCallback);
+    }
+    // The following method is an adaptation of code found at https://github.com/SamDecrock/node-http-ntlm/blob/master/httpntlm.js
+    sendType3Message(httpClient, requestInfo, objs, res, callback) {
+        if (!res.message.headers && !res.message.headers['www-authenticate']) {
+            throw new Error('www-authenticate not found on response of second request');
+        }
+        const type2msg = ntlm.parseType2Message(res.message.headers['www-authenticate']);
+        const type3msg = ntlm.createType3Message(type2msg, this._ntlmOptions);
+        const type3options = {
+            headers: {
+                'Authorization': type3msg,
+                'Connection': 'Close'
+            },
+            agent: requestInfo.httpModule,
+        };
+        const type3info = {};
+        type3info.httpModule = requestInfo.httpModule;
+        type3info.parsedUrl = requestInfo.parsedUrl;
+        type3options.headers = _.extend(type3options.headers, requestInfo.options.headers);
+        type3info.options = _.extend(type3options, _.omit(requestInfo.options, 'headers'));
+        return httpClient.requestRawWithCallback(type3info, objs, callback);
+    }
+}
+exports.NtlmCredentialHandler = NtlmCredentialHandler;
diff --git a/setup-maven/node_modules/typed-rest-client/handlers/personalaccesstoken.d.ts b/setup-maven/node_modules/typed-rest-client/handlers/personalaccesstoken.d.ts
new file mode 100644
index 0000000..4bb77fd
--- /dev/null
+++ b/setup-maven/node_modules/typed-rest-client/handlers/personalaccesstoken.d.ts
@@ -0,0 +1,8 @@
+import ifm = require('../Interfaces');
+export declare class PersonalAccessTokenCredentialHandler implements ifm.IRequestHandler {
+    token: string;
+    constructor(token: string);
+    prepareRequest(options: any): void;
+    canHandleAuthentication(response: ifm.IHttpClientResponse): boolean;
+    handleAuthentication(httpClient: ifm.IHttpClient, requestInfo: ifm.IRequestInfo, objs: any): Promise<ifm.IHttpClientResponse>;
+}
diff --git a/setup-maven/node_modules/typed-rest-client/handlers/personalaccesstoken.js b/setup-maven/node_modules/typed-rest-client/handlers/personalaccesstoken.js
new file mode 100644
index 0000000..4bb88f8
--- /dev/null
+++ b/setup-maven/node_modules/typed-rest-client/handlers/personalaccesstoken.js
@@ -0,0 +1,23 @@
+"use strict";
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+Object.defineProperty(exports, "__esModule", { value: true });
+class PersonalAccessTokenCredentialHandler {
+    constructor(token) {
+        this.token = token;
+    }
+    // currently implements pre-authorization
+    // TODO: support preAuth = false where it hooks on 401
+    prepareRequest(options) {
+        options.headers['Authorization'] = 'Basic ' + new Buffer('PAT:' + this.token).toString('base64');
+        options.headers['X-TFS-FedAuthRedirect'] = 'Suppress';
+    }
+    // This handler cannot handle 401
+    canHandleAuthentication(response) {
+        return false;
+    }
+    handleAuthentication(httpClient, requestInfo, objs) {
+        return null;
+    }
+}
+exports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler;
diff --git a/setup-maven/node_modules/typed-rest-client/opensource/node-http-ntlm/ntlm.js b/setup-maven/node_modules/typed-rest-client/opensource/node-http-ntlm/ntlm.js
new file mode 100644
index 0000000..adf7602
--- /dev/null
+++ b/setup-maven/node_modules/typed-rest-client/opensource/node-http-ntlm/ntlm.js
@@ -0,0 +1,389 @@
+var crypto = require('crypto');
+
+var flags = {
+	NTLM_NegotiateUnicode                :  0x00000001,
+	NTLM_NegotiateOEM                    :  0x00000002,
+	NTLM_RequestTarget                   :  0x00000004,
+	NTLM_Unknown9                        :  0x00000008,
+	NTLM_NegotiateSign                   :  0x00000010,
+	NTLM_NegotiateSeal                   :  0x00000020,
+	NTLM_NegotiateDatagram               :  0x00000040,
+	NTLM_NegotiateLanManagerKey          :  0x00000080,
+	NTLM_Unknown8                        :  0x00000100,
+	NTLM_NegotiateNTLM                   :  0x00000200,
+	NTLM_NegotiateNTOnly                 :  0x00000400,
+	NTLM_Anonymous                       :  0x00000800,
+	NTLM_NegotiateOemDomainSupplied      :  0x00001000,
+	NTLM_NegotiateOemWorkstationSupplied :  0x00002000,
+	NTLM_Unknown6                        :  0x00004000,
+	NTLM_NegotiateAlwaysSign             :  0x00008000,
+	NTLM_TargetTypeDomain                :  0x00010000,
+	NTLM_TargetTypeServer                :  0x00020000,
+	NTLM_TargetTypeShare                 :  0x00040000,
+	NTLM_NegotiateExtendedSecurity       :  0x00080000,
+	NTLM_NegotiateIdentify               :  0x00100000,
+	NTLM_Unknown5                        :  0x00200000,
+	NTLM_RequestNonNTSessionKey          :  0x00400000,
+	NTLM_NegotiateTargetInfo             :  0x00800000,
+	NTLM_Unknown4                        :  0x01000000,
+	NTLM_NegotiateVersion                :  0x02000000,
+	NTLM_Unknown3                        :  0x04000000,
+	NTLM_Unknown2                        :  0x08000000,
+	NTLM_Unknown1                        :  0x10000000,
+	NTLM_Negotiate128                    :  0x20000000,
+	NTLM_NegotiateKeyExchange            :  0x40000000,
+	NTLM_Negotiate56                     :  0x80000000
+};
+var typeflags = {
+	NTLM_TYPE1_FLAGS : 	  flags.NTLM_NegotiateUnicode
+						+ flags.NTLM_NegotiateOEM
+						+ flags.NTLM_RequestTarget
+						+ flags.NTLM_NegotiateNTLM
+						+ flags.NTLM_NegotiateOemDomainSupplied
+						+ flags.NTLM_NegotiateOemWorkstationSupplied
+						+ flags.NTLM_NegotiateAlwaysSign
+						+ flags.NTLM_NegotiateExtendedSecurity
+						+ flags.NTLM_NegotiateVersion
+						+ flags.NTLM_Negotiate128
+						+ flags.NTLM_Negotiate56,
+
+	NTLM_TYPE2_FLAGS :    flags.NTLM_NegotiateUnicode
+						+ flags.NTLM_RequestTarget
+						+ flags.NTLM_NegotiateNTLM
+						+ flags.NTLM_NegotiateAlwaysSign
+						+ flags.NTLM_NegotiateExtendedSecurity
+						+ flags.NTLM_NegotiateTargetInfo
+						+ flags.NTLM_NegotiateVersion
+						+ flags.NTLM_Negotiate128
+						+ flags.NTLM_Negotiate56
+};
+
+function createType1Message(options){
+	var domain = escape(options.domain.toUpperCase());
+	var workstation = escape(options.workstation.toUpperCase());
+	var protocol = 'NTLMSSP\0';
+
+	var BODY_LENGTH = 40;
+
+	var type1flags = typeflags.NTLM_TYPE1_FLAGS;
+	if(!domain || domain === '')
+		type1flags = type1flags - flags.NTLM_NegotiateOemDomainSupplied;
+
+	var pos = 0;
+	var buf = new Buffer(BODY_LENGTH + domain.length + workstation.length);
+
+
+	buf.write(protocol, pos, protocol.length); pos += protocol.length; // protocol
+	buf.writeUInt32LE(1, pos); pos += 4;          // type 1
+	buf.writeUInt32LE(type1flags, pos); pos += 4; // TYPE1 flag
+
+	buf.writeUInt16LE(domain.length, pos); pos += 2; // domain length
+	buf.writeUInt16LE(domain.length, pos); pos += 2; // domain max length
+	buf.writeUInt32LE(BODY_LENGTH + workstation.length, pos); pos += 4; // domain buffer offset
+
+	buf.writeUInt16LE(workstation.length, pos); pos += 2; // workstation length
+	buf.writeUInt16LE(workstation.length, pos); pos += 2; // workstation max length
+	buf.writeUInt32LE(BODY_LENGTH, pos); pos += 4; // workstation buffer offset
+
+	buf.writeUInt8(5, pos); pos += 1;      //ProductMajorVersion
+	buf.writeUInt8(1, pos); pos += 1;      //ProductMinorVersion
+	buf.writeUInt16LE(2600, pos); pos += 2; //ProductBuild
+
+	buf.writeUInt8(0 , pos); pos += 1; //VersionReserved1
+	buf.writeUInt8(0 , pos); pos += 1; //VersionReserved2
+	buf.writeUInt8(0 , pos); pos += 1; //VersionReserved3
+	buf.writeUInt8(15, pos); pos += 1; //NTLMRevisionCurrent
+
+	buf.write(workstation, pos, workstation.length, 'ascii'); pos += workstation.length; // workstation string
+	buf.write(domain     , pos, domain.length     , 'ascii'); pos += domain.length;
+
+	return 'NTLM ' + buf.toString('base64');
+}
+
+function parseType2Message(rawmsg, callback){
+	var match = rawmsg.match(/NTLM (.+)?/);
+	if(!match || !match[1])
+		return callback(new Error("Couldn't find NTLM in the message type2 comming from the server"));
+
+	var buf = new Buffer(match[1], 'base64');
+
+	var msg = {};
+
+	msg.signature = buf.slice(0, 8);
+	msg.type = buf.readInt16LE(8);
+
+	if(msg.type != 2)
+		return callback(new Error("Server didn't return a type 2 message"));
+
+	msg.targetNameLen = buf.readInt16LE(12);
+	msg.targetNameMaxLen = buf.readInt16LE(14);
+	msg.targetNameOffset = buf.readInt32LE(16);
+	msg.targetName  = buf.slice(msg.targetNameOffset, msg.targetNameOffset + msg.targetNameMaxLen);
+
+    msg.negotiateFlags = buf.readInt32LE(20);
+    msg.serverChallenge = buf.slice(24, 32);
+    msg.reserved = buf.slice(32, 40);
+
+    if(msg.negotiateFlags & flags.NTLM_NegotiateTargetInfo){
+    	msg.targetInfoLen = buf.readInt16LE(40);
+    	msg.targetInfoMaxLen = buf.readInt16LE(42);
+    	msg.targetInfoOffset = buf.readInt32LE(44);
+    	msg.targetInfo = buf.slice(msg.targetInfoOffset, msg.targetInfoOffset + msg.targetInfoLen);
+    }
+	return msg;
+}
+
+function createType3Message(msg2, options){
+	var nonce = msg2.serverChallenge;
+	var username = options.username;
+	var password = options.password;
+	var negotiateFlags = msg2.negotiateFlags;
+
+	var isUnicode = negotiateFlags & flags.NTLM_NegotiateUnicode;
+	var isNegotiateExtendedSecurity = negotiateFlags & flags.NTLM_NegotiateExtendedSecurity;
+
+	var BODY_LENGTH = 72;
+
+	var domainName = escape(options.domain.toUpperCase());
+	var workstation = escape(options.workstation.toUpperCase());
+
+	var workstationBytes, domainNameBytes, usernameBytes, encryptedRandomSessionKeyBytes;
+
+	var encryptedRandomSessionKey = "";
+	if(isUnicode){
+		workstationBytes = new Buffer(workstation, 'utf16le');
+		domainNameBytes = new Buffer(domainName, 'utf16le');
+		usernameBytes = new Buffer(username, 'utf16le');
+		encryptedRandomSessionKeyBytes = new Buffer(encryptedRandomSessionKey, 'utf16le');
+	}else{
+		workstationBytes = new Buffer(workstation, 'ascii');
+		domainNameBytes = new Buffer(domainName, 'ascii');
+		usernameBytes = new Buffer(username, 'ascii');
+		encryptedRandomSessionKeyBytes = new Buffer(encryptedRandomSessionKey, 'ascii');
+	}
+
+	var lmChallengeResponse = calc_resp(create_LM_hashed_password_v1(password), nonce);
+	var ntChallengeResponse = calc_resp(create_NT_hashed_password_v1(password), nonce);
+
+	if(isNegotiateExtendedSecurity){
+		var pwhash = create_NT_hashed_password_v1(password);
+	 	var clientChallenge = "";
+	 	for(var i=0; i < 8; i++){
+	 		clientChallenge += String.fromCharCode( Math.floor(Math.random()*256) );
+	   	}
+	   	var clientChallengeBytes = new Buffer(clientChallenge, 'ascii');
+	    var challenges = ntlm2sr_calc_resp(pwhash, nonce, clientChallengeBytes);
+	    lmChallengeResponse = challenges.lmChallengeResponse;
+	    ntChallengeResponse = challenges.ntChallengeResponse;
+	}
+
+	var signature = 'NTLMSSP\0';
+
+	var pos = 0;
+	var buf = new Buffer(BODY_LENGTH + domainNameBytes.length + usernameBytes.length + workstationBytes.length + lmChallengeResponse.length + ntChallengeResponse.length + encryptedRandomSessionKeyBytes.length);
+
+	buf.write(signature, pos, signature.length); pos += signature.length;
+	buf.writeUInt32LE(3, pos); pos += 4;          // type 1
+
+	buf.writeUInt16LE(lmChallengeResponse.length, pos); pos += 2; // LmChallengeResponseLen
+	buf.writeUInt16LE(lmChallengeResponse.length, pos); pos += 2; // LmChallengeResponseMaxLen
+	buf.writeUInt32LE(BODY_LENGTH + domainNameBytes.length + usernameBytes.length + workstationBytes.length, pos); pos += 4; // LmChallengeResponseOffset
+
+	buf.writeUInt16LE(ntChallengeResponse.length, pos); pos += 2; // NtChallengeResponseLen
+	buf.writeUInt16LE(ntChallengeResponse.length, pos); pos += 2; // NtChallengeResponseMaxLen
+	buf.writeUInt32LE(BODY_LENGTH + domainNameBytes.length + usernameBytes.length + workstationBytes.length + lmChallengeResponse.length, pos); pos += 4; // NtChallengeResponseOffset
+
+	buf.writeUInt16LE(domainNameBytes.length, pos); pos += 2; // DomainNameLen
+	buf.writeUInt16LE(domainNameBytes.length, pos); pos += 2; // DomainNameMaxLen
+	buf.writeUInt32LE(BODY_LENGTH, pos); pos += 4; 			  // DomainNameOffset
+
+	buf.writeUInt16LE(usernameBytes.length, pos); pos += 2; // UserNameLen
+	buf.writeUInt16LE(usernameBytes.length, pos); pos += 2; // UserNameMaxLen
+	buf.writeUInt32LE(BODY_LENGTH + domainNameBytes.length, pos); pos += 4; // UserNameOffset
+
+	buf.writeUInt16LE(workstationBytes.length, pos); pos += 2; // WorkstationLen
+	buf.writeUInt16LE(workstationBytes.length, pos); pos += 2; // WorkstationMaxLen
+	buf.writeUInt32LE(BODY_LENGTH + domainNameBytes.length + usernameBytes.length, pos); pos += 4; // WorkstationOffset
+
+	buf.writeUInt16LE(encryptedRandomSessionKeyBytes.length, pos); pos += 2; // EncryptedRandomSessionKeyLen
+	buf.writeUInt16LE(encryptedRandomSessionKeyBytes.length, pos); pos += 2; // EncryptedRandomSessionKeyMaxLen
+	buf.writeUInt32LE(BODY_LENGTH + domainNameBytes.length + usernameBytes.length + workstationBytes.length + lmChallengeResponse.length + ntChallengeResponse.length, pos); pos += 4; // EncryptedRandomSessionKeyOffset
+
+	buf.writeUInt32LE(typeflags.NTLM_TYPE2_FLAGS, pos); pos += 4; // NegotiateFlags
+
+	buf.writeUInt8(5, pos); pos++; // ProductMajorVersion
+	buf.writeUInt8(1, pos); pos++; // ProductMinorVersion
+	buf.writeUInt16LE(2600, pos); pos += 2; // ProductBuild
+	buf.writeUInt8(0, pos); pos++; // VersionReserved1
+	buf.writeUInt8(0, pos); pos++; // VersionReserved2
+	buf.writeUInt8(0, pos); pos++; // VersionReserved3
+	buf.writeUInt8(15, pos); pos++; // NTLMRevisionCurrent
+
+	domainNameBytes.copy(buf, pos); pos += domainNameBytes.length;
+	usernameBytes.copy(buf, pos); pos += usernameBytes.length;
+	workstationBytes.copy(buf, pos); pos += workstationBytes.length;
+	lmChallengeResponse.copy(buf, pos); pos += lmChallengeResponse.length;
+	ntChallengeResponse.copy(buf, pos); pos += ntChallengeResponse.length;
+	encryptedRandomSessionKeyBytes.copy(buf, pos); pos += encryptedRandomSessionKeyBytes.length;
+
+	return 'NTLM ' + buf.toString('base64');
+}
+
+function create_LM_hashed_password_v1(password){
+	// fix the password length to 14 bytes
+	password = password.toUpperCase();
+	var passwordBytes = new Buffer(password, 'ascii');
+
+	var passwordBytesPadded = new Buffer(14);
+	passwordBytesPadded.fill("\0");
+	var sourceEnd = 14;
+	if(passwordBytes.length < 14) sourceEnd = passwordBytes.length;
+	passwordBytes.copy(passwordBytesPadded, 0, 0, sourceEnd);
+
+	// split into 2 parts of 7 bytes:
+	var firstPart = passwordBytesPadded.slice(0,7);
+	var secondPart = passwordBytesPadded.slice(7);
+
+	function encrypt(buf){
+		var key = insertZerosEvery7Bits(buf);
+		var des = crypto.createCipheriv('DES-ECB', key, '');
+		return des.update("KGS!@#$%"); // page 57 in [MS-NLMP]);
+	}
+
+	var firstPartEncrypted = encrypt(firstPart);
+	var secondPartEncrypted = encrypt(secondPart);
+
+	return Buffer.concat([firstPartEncrypted, secondPartEncrypted]);
+}
+
+function insertZerosEvery7Bits(buf){
+	var binaryArray = bytes2binaryArray(buf);
+	var newBinaryArray = [];
+	for(var i=0; i<binaryArray.length; i++){
+		newBinaryArray.push(binaryArray[i]);
+
+		if((i+1)%7 === 0){
+			newBinaryArray.push(0);
+		}
+	}
+	return binaryArray2bytes(newBinaryArray);
+}
+
+function bytes2binaryArray(buf){
+	var hex2binary = {
+		0: [0,0,0,0],
+		1: [0,0,0,1],
+		2: [0,0,1,0],
+		3: [0,0,1,1],
+		4: [0,1,0,0],
+		5: [0,1,0,1],
+		6: [0,1,1,0],
+		7: [0,1,1,1],
+		8: [1,0,0,0],
+		9: [1,0,0,1],
+		A: [1,0,1,0],
+		B: [1,0,1,1],
+		C: [1,1,0,0],
+		D: [1,1,0,1],
+		E: [1,1,1,0],
+		F: [1,1,1,1]
+	};
+
+	var hexString = buf.toString('hex').toUpperCase();
+	var array = [];
+	for(var i=0; i<hexString.length; i++){
+   		var hexchar = hexString.charAt(i);
+   		array = array.concat(hex2binary[hexchar]);
+   	}
+   	return array;
+}
+
+function binaryArray2bytes(array){
+	var binary2hex = {
+		'0000': 0,
+		'0001': 1,
+		'0010': 2,
+		'0011': 3,
+		'0100': 4,
+		'0101': 5,
+		'0110': 6,
+		'0111': 7,
+		'1000': 8,
+		'1001': 9,
+		'1010': 'A',
+		'1011': 'B',
+		'1100': 'C',
+		'1101': 'D',
+		'1110': 'E',
+		'1111': 'F'
+	};
+
+ 	var bufArray = [];
+
+	for(var i=0; i<array.length; i +=8 ){
+		if((i+7) > array.length)
+			break;
+
+		var binString1 = '' + array[i] + '' + array[i+1] + '' + array[i+2] + '' + array[i+3];
+		var binString2 = '' + array[i+4] + '' + array[i+5] + '' + array[i+6] + '' + array[i+7];
+   		var hexchar1 = binary2hex[binString1];
+   		var hexchar2 = binary2hex[binString2];
+
+   		var buf = new Buffer(hexchar1 + '' + hexchar2, 'hex');
+   		bufArray.push(buf);
+   	}
+
+   	return Buffer.concat(bufArray);
+}
+
+function create_NT_hashed_password_v1(password){
+	var buf = new Buffer(password, 'utf16le');
+	var md4 = crypto.createHash('md4');
+	md4.update(buf);
+	return new Buffer(md4.digest());
+}
+
+function calc_resp(password_hash, server_challenge){
+    // padding with zeros to make the hash 21 bytes long
+    var passHashPadded = new Buffer(21);
+    passHashPadded.fill("\0");
+    password_hash.copy(passHashPadded, 0, 0, password_hash.length);
+
+    var resArray = [];
+
+    var des = crypto.createCipheriv('DES-ECB', insertZerosEvery7Bits(passHashPadded.slice(0,7)), '');
+    resArray.push( des.update(server_challenge.slice(0,8)) );
+
+    des = crypto.createCipheriv('DES-ECB', insertZerosEvery7Bits(passHashPadded.slice(7,14)), '');
+    resArray.push( des.update(server_challenge.slice(0,8)) );
+
+    des = crypto.createCipheriv('DES-ECB', insertZerosEvery7Bits(passHashPadded.slice(14,21)), '');
+    resArray.push( des.update(server_challenge.slice(0,8)) );
+
+   	return Buffer.concat(resArray);
+}
+
+function ntlm2sr_calc_resp(responseKeyNT, serverChallenge, clientChallenge){
+	// padding with zeros to make the hash 16 bytes longer
+    var lmChallengeResponse = new Buffer(clientChallenge.length + 16);
+    lmChallengeResponse.fill("\0");
+    clientChallenge.copy(lmChallengeResponse, 0, 0, clientChallenge.length);
+
+    var buf = Buffer.concat([serverChallenge, clientChallenge]);
+    var md5 = crypto.createHash('md5');
+    md5.update(buf);
+    var sess = md5.digest();
+    var ntChallengeResponse = calc_resp(responseKeyNT, sess.slice(0,8));
+
+    return {
+    	lmChallengeResponse: lmChallengeResponse,
+    	ntChallengeResponse: ntChallengeResponse
+    };
+}
+
+exports.createType1Message = createType1Message;
+exports.parseType2Message = parseType2Message;
+exports.createType3Message = createType3Message;
+
+
+
diff --git a/setup-maven/node_modules/typed-rest-client/opensource/node-http-ntlm/readme.txt b/setup-maven/node_modules/typed-rest-client/opensource/node-http-ntlm/readme.txt
new file mode 100644
index 0000000..b341600
--- /dev/null
+++ b/setup-maven/node_modules/typed-rest-client/opensource/node-http-ntlm/readme.txt
@@ -0,0 +1,6 @@
+// This software (ntlm.js) was copied from a file of the same name at https://github.com/SamDecrock/node-http-ntlm/blob/master/ntlm.js.
+//
+// As of this writing, it is a part of the node-http-ntlm module produced by SamDecrock.
+//
+// It is used as a part of the NTLM support provided by the vso-node-api library.
+//
diff --git a/setup-maven/node_modules/typed-rest-client/package.json b/setup-maven/node_modules/typed-rest-client/package.json
new file mode 100644
index 0000000..a0bce6b
--- /dev/null
+++ b/setup-maven/node_modules/typed-rest-client/package.json
@@ -0,0 +1,74 @@
+{
+  "_from": "typed-rest-client@^1.5.0",
+  "_id": "typed-rest-client@1.5.0",
+  "_inBundle": false,
+  "_integrity": "sha512-DVZRlmsfnTjp6ZJaatcdyvvwYwbWvR4YDNFDqb+qdTxpvaVP99YCpBkA8rxsLtAPjBVoDe4fNsnMIdZTiPuKWg==",
+  "_location": "/typed-rest-client",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "typed-rest-client@^1.5.0",
+    "name": "typed-rest-client",
+    "escapedName": "typed-rest-client",
+    "rawSpec": "^1.5.0",
+    "saveSpec": null,
+    "fetchSpec": "^1.5.0"
+  },
+  "_requiredBy": [
+    "/",
+    "/@actions/tool-cache"
+  ],
+  "_resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.5.0.tgz",
+  "_shasum": "c0dda6e775b942fd46a2d99f2160a94953206fc2",
+  "_spec": "typed-rest-client@^1.5.0",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven",
+  "author": {
+    "name": "Microsoft Corporation"
+  },
+  "bugs": {
+    "url": "https://github.com/Microsoft/typed-rest-client/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "tunnel": "0.0.4",
+    "underscore": "1.8.3"
+  },
+  "deprecated": false,
+  "description": "Node Rest and Http Clients for use with TypeScript",
+  "devDependencies": {
+    "@types/mocha": "^2.2.44",
+    "@types/node": "^6.0.92",
+    "@types/shelljs": "0.7.4",
+    "mocha": "^3.5.3",
+    "nock": "9.6.1",
+    "react-scripts": "1.1.5",
+    "semver": "4.3.3",
+    "shelljs": "0.7.6",
+    "typescript": "3.1.5"
+  },
+  "homepage": "https://github.com/Microsoft/typed-rest-client#readme",
+  "keywords": [
+    "rest",
+    "http",
+    "client",
+    "typescript",
+    "node"
+  ],
+  "license": "MIT",
+  "main": "./RestClient.js",
+  "name": "typed-rest-client",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/Microsoft/typed-rest-client.git"
+  },
+  "scripts": {
+    "bt": "node make.js buildtest",
+    "build": "node make.js build",
+    "samples": "node make.js samples",
+    "test": "node make.js test",
+    "units": "node make.js units",
+    "validate": "node make.js validate"
+  },
+  "version": "1.5.0"
+}
diff --git a/setup-maven/node_modules/underscore/LICENSE b/setup-maven/node_modules/underscore/LICENSE
new file mode 100644
index 0000000..ad0e71b
--- /dev/null
+++ b/setup-maven/node_modules/underscore/LICENSE
@@ -0,0 +1,23 @@
+Copyright (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative
+Reporters & Editors
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
diff --git a/setup-maven/node_modules/underscore/README.md b/setup-maven/node_modules/underscore/README.md
new file mode 100644
index 0000000..c2ba259
--- /dev/null
+++ b/setup-maven/node_modules/underscore/README.md
@@ -0,0 +1,22 @@
+                       __
+                      /\ \                                                         __
+     __  __    ___    \_\ \     __   _ __   ____    ___    ___   _ __    __       /\_\    ____
+    /\ \/\ \ /' _ `\  /'_  \  /'__`\/\  __\/ ,__\  / ___\ / __`\/\  __\/'__`\     \/\ \  /',__\
+    \ \ \_\ \/\ \/\ \/\ \ \ \/\  __/\ \ \//\__, `\/\ \__//\ \ \ \ \ \//\  __/  __  \ \ \/\__, `\
+     \ \____/\ \_\ \_\ \___,_\ \____\\ \_\\/\____/\ \____\ \____/\ \_\\ \____\/\_\ _\ \ \/\____/
+      \/___/  \/_/\/_/\/__,_ /\/____/ \/_/ \/___/  \/____/\/___/  \/_/ \/____/\/_//\ \_\ \/___/
+                                                                                  \ \____/
+                                                                                   \/___/
+
+Underscore.js is a utility-belt library for JavaScript that provides
+support for the usual functional suspects (each, map, reduce, filter...)
+without extending any core JavaScript objects.
+
+For Docs, License, Tests, and pre-packed downloads, see:
+http://underscorejs.org
+
+Underscore is an open-sourced component of DocumentCloud:
+https://github.com/documentcloud
+
+Many thanks to our contributors:
+https://github.com/jashkenas/underscore/contributors
diff --git a/setup-maven/node_modules/underscore/package.json b/setup-maven/node_modules/underscore/package.json
new file mode 100644
index 0000000..ffa4c1d
--- /dev/null
+++ b/setup-maven/node_modules/underscore/package.json
@@ -0,0 +1,73 @@
+{
+  "_from": "underscore@1.8.3",
+  "_id": "underscore@1.8.3",
+  "_inBundle": false,
+  "_integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=",
+  "_location": "/underscore",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "underscore@1.8.3",
+    "name": "underscore",
+    "escapedName": "underscore",
+    "rawSpec": "1.8.3",
+    "saveSpec": null,
+    "fetchSpec": "1.8.3"
+  },
+  "_requiredBy": [
+    "/typed-rest-client"
+  ],
+  "_resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz",
+  "_shasum": "4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022",
+  "_spec": "underscore@1.8.3",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/typed-rest-client",
+  "author": {
+    "name": "Jeremy Ashkenas",
+    "email": "jeremy@documentcloud.org"
+  },
+  "bugs": {
+    "url": "https://github.com/jashkenas/underscore/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "JavaScript's functional programming helper library.",
+  "devDependencies": {
+    "docco": "*",
+    "eslint": "0.6.x",
+    "karma": "~0.12.31",
+    "karma-qunit": "~0.1.4",
+    "qunit-cli": "~0.2.0",
+    "uglify-js": "2.4.x"
+  },
+  "files": [
+    "underscore.js",
+    "underscore-min.js",
+    "underscore-min.map",
+    "LICENSE"
+  ],
+  "homepage": "http://underscorejs.org",
+  "keywords": [
+    "util",
+    "functional",
+    "server",
+    "client",
+    "browser"
+  ],
+  "license": "MIT",
+  "main": "underscore.js",
+  "name": "underscore",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/jashkenas/underscore.git"
+  },
+  "scripts": {
+    "build": "uglifyjs underscore.js -c \"evaluate=false\" --comments \"/    .*/\" -m --source-map underscore-min.map -o underscore-min.js",
+    "doc": "docco underscore.js",
+    "lint": "eslint underscore.js test/*.js",
+    "test": "npm run test-node && npm run lint",
+    "test-browser": "npm i karma-phantomjs-launcher && ./node_modules/karma/bin/karma start",
+    "test-node": "qunit-cli test/*.js"
+  },
+  "version": "1.8.3"
+}
diff --git a/setup-maven/node_modules/underscore/underscore-min.js b/setup-maven/node_modules/underscore/underscore-min.js
new file mode 100644
index 0000000..f01025b
--- /dev/null
+++ b/setup-maven/node_modules/underscore/underscore-min.js
@@ -0,0 +1,6 @@
+//     Underscore.js 1.8.3
+//     http://underscorejs.org
+//     (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+//     Underscore may be freely distributed under the MIT license.
+(function(){function n(n){function t(t,r,e,u,i,o){for(;i>=0&&o>i;i+=n){var a=u?u[i]:i;e=r(e,t[a],a,t)}return e}return function(r,e,u,i){e=b(e,i,4);var o=!k(r)&&m.keys(r),a=(o||r).length,c=n>0?0:a-1;return arguments.length<3&&(u=r[o?o[c]:c],c+=n),t(r,e,u,o,c,a)}}function t(n){return function(t,r,e){r=x(r,e);for(var u=O(t),i=n>0?0:u-1;i>=0&&u>i;i+=n)if(r(t[i],i,t))return i;return-1}}function r(n,t,r){return function(e,u,i){var o=0,a=O(e);if("number"==typeof i)n>0?o=i>=0?i:Math.max(i+a,o):a=i>=0?Math.min(i+1,a):i+a+1;else if(r&&i&&a)return i=r(e,u),e[i]===u?i:-1;if(u!==u)return i=t(l.call(e,o,a),m.isNaN),i>=0?i+o:-1;for(i=n>0?o:a-1;i>=0&&a>i;i+=n)if(e[i]===u)return i;return-1}}function e(n,t){var r=I.length,e=n.constructor,u=m.isFunction(e)&&e.prototype||a,i="constructor";for(m.has(n,i)&&!m.contains(t,i)&&t.push(i);r--;)i=I[r],i in n&&n[i]!==u[i]&&!m.contains(t,i)&&t.push(i)}var u=this,i=u._,o=Array.prototype,a=Object.prototype,c=Function.prototype,f=o.push,l=o.slice,s=a.toString,p=a.hasOwnProperty,h=Array.isArray,v=Object.keys,g=c.bind,y=Object.create,d=function(){},m=function(n){return n instanceof m?n:this instanceof m?void(this._wrapped=n):new m(n)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=m),exports._=m):u._=m,m.VERSION="1.8.3";var b=function(n,t,r){if(t===void 0)return n;switch(null==r?3:r){case 1:return function(r){return n.call(t,r)};case 2:return function(r,e){return n.call(t,r,e)};case 3:return function(r,e,u){return n.call(t,r,e,u)};case 4:return function(r,e,u,i){return n.call(t,r,e,u,i)}}return function(){return n.apply(t,arguments)}},x=function(n,t,r){return null==n?m.identity:m.isFunction(n)?b(n,t,r):m.isObject(n)?m.matcher(n):m.property(n)};m.iteratee=function(n,t){return x(n,t,1/0)};var _=function(n,t){return function(r){var e=arguments.length;if(2>e||null==r)return r;for(var u=1;e>u;u++)for(var i=arguments[u],o=n(i),a=o.length,c=0;a>c;c++){var f=o[c];t&&r[f]!==void 0||(r[f]=i[f])}return r}},j=function(n){if(!m.isObject(n))return{};if(y)return y(n);d.prototype=n;var t=new d;return d.prototype=null,t},w=function(n){return function(t){return null==t?void 0:t[n]}},A=Math.pow(2,53)-1,O=w("length"),k=function(n){var t=O(n);return"number"==typeof t&&t>=0&&A>=t};m.each=m.forEach=function(n,t,r){t=b(t,r);var e,u;if(k(n))for(e=0,u=n.length;u>e;e++)t(n[e],e,n);else{var i=m.keys(n);for(e=0,u=i.length;u>e;e++)t(n[i[e]],i[e],n)}return n},m.map=m.collect=function(n,t,r){t=x(t,r);for(var e=!k(n)&&m.keys(n),u=(e||n).length,i=Array(u),o=0;u>o;o++){var a=e?e[o]:o;i[o]=t(n[a],a,n)}return i},m.reduce=m.foldl=m.inject=n(1),m.reduceRight=m.foldr=n(-1),m.find=m.detect=function(n,t,r){var e;return e=k(n)?m.findIndex(n,t,r):m.findKey(n,t,r),e!==void 0&&e!==-1?n[e]:void 0},m.filter=m.select=function(n,t,r){var e=[];return t=x(t,r),m.each(n,function(n,r,u){t(n,r,u)&&e.push(n)}),e},m.reject=function(n,t,r){return m.filter(n,m.negate(x(t)),r)},m.every=m.all=function(n,t,r){t=x(t,r);for(var e=!k(n)&&m.keys(n),u=(e||n).length,i=0;u>i;i++){var o=e?e[i]:i;if(!t(n[o],o,n))return!1}return!0},m.some=m.any=function(n,t,r){t=x(t,r);for(var e=!k(n)&&m.keys(n),u=(e||n).length,i=0;u>i;i++){var o=e?e[i]:i;if(t(n[o],o,n))return!0}return!1},m.contains=m.includes=m.include=function(n,t,r,e){return k(n)||(n=m.values(n)),("number"!=typeof r||e)&&(r=0),m.indexOf(n,t,r)>=0},m.invoke=function(n,t){var r=l.call(arguments,2),e=m.isFunction(t);return m.map(n,function(n){var u=e?t:n[t];return null==u?u:u.apply(n,r)})},m.pluck=function(n,t){return m.map(n,m.property(t))},m.where=function(n,t){return m.filter(n,m.matcher(t))},m.findWhere=function(n,t){return m.find(n,m.matcher(t))},m.max=function(n,t,r){var e,u,i=-1/0,o=-1/0;if(null==t&&null!=n){n=k(n)?n:m.values(n);for(var a=0,c=n.length;c>a;a++)e=n[a],e>i&&(i=e)}else t=x(t,r),m.each(n,function(n,r,e){u=t(n,r,e),(u>o||u===-1/0&&i===-1/0)&&(i=n,o=u)});return i},m.min=function(n,t,r){var e,u,i=1/0,o=1/0;if(null==t&&null!=n){n=k(n)?n:m.values(n);for(var a=0,c=n.length;c>a;a++)e=n[a],i>e&&(i=e)}else t=x(t,r),m.each(n,function(n,r,e){u=t(n,r,e),(o>u||1/0===u&&1/0===i)&&(i=n,o=u)});return i},m.shuffle=function(n){for(var t,r=k(n)?n:m.values(n),e=r.length,u=Array(e),i=0;e>i;i++)t=m.random(0,i),t!==i&&(u[i]=u[t]),u[t]=r[i];return u},m.sample=function(n,t,r){return null==t||r?(k(n)||(n=m.values(n)),n[m.random(n.length-1)]):m.shuffle(n).slice(0,Math.max(0,t))},m.sortBy=function(n,t,r){return t=x(t,r),m.pluck(m.map(n,function(n,r,e){return{value:n,index:r,criteria:t(n,r,e)}}).sort(function(n,t){var r=n.criteria,e=t.criteria;if(r!==e){if(r>e||r===void 0)return 1;if(e>r||e===void 0)return-1}return n.index-t.index}),"value")};var F=function(n){return function(t,r,e){var u={};return r=x(r,e),m.each(t,function(e,i){var o=r(e,i,t);n(u,e,o)}),u}};m.groupBy=F(function(n,t,r){m.has(n,r)?n[r].push(t):n[r]=[t]}),m.indexBy=F(function(n,t,r){n[r]=t}),m.countBy=F(function(n,t,r){m.has(n,r)?n[r]++:n[r]=1}),m.toArray=function(n){return n?m.isArray(n)?l.call(n):k(n)?m.map(n,m.identity):m.values(n):[]},m.size=function(n){return null==n?0:k(n)?n.length:m.keys(n).length},m.partition=function(n,t,r){t=x(t,r);var e=[],u=[];return m.each(n,function(n,r,i){(t(n,r,i)?e:u).push(n)}),[e,u]},m.first=m.head=m.take=function(n,t,r){return null==n?void 0:null==t||r?n[0]:m.initial(n,n.length-t)},m.initial=function(n,t,r){return l.call(n,0,Math.max(0,n.length-(null==t||r?1:t)))},m.last=function(n,t,r){return null==n?void 0:null==t||r?n[n.length-1]:m.rest(n,Math.max(0,n.length-t))},m.rest=m.tail=m.drop=function(n,t,r){return l.call(n,null==t||r?1:t)},m.compact=function(n){return m.filter(n,m.identity)};var S=function(n,t,r,e){for(var u=[],i=0,o=e||0,a=O(n);a>o;o++){var c=n[o];if(k(c)&&(m.isArray(c)||m.isArguments(c))){t||(c=S(c,t,r));var f=0,l=c.length;for(u.length+=l;l>f;)u[i++]=c[f++]}else r||(u[i++]=c)}return u};m.flatten=function(n,t){return S(n,t,!1)},m.without=function(n){return m.difference(n,l.call(arguments,1))},m.uniq=m.unique=function(n,t,r,e){m.isBoolean(t)||(e=r,r=t,t=!1),null!=r&&(r=x(r,e));for(var u=[],i=[],o=0,a=O(n);a>o;o++){var c=n[o],f=r?r(c,o,n):c;t?(o&&i===f||u.push(c),i=f):r?m.contains(i,f)||(i.push(f),u.push(c)):m.contains(u,c)||u.push(c)}return u},m.union=function(){return m.uniq(S(arguments,!0,!0))},m.intersection=function(n){for(var t=[],r=arguments.length,e=0,u=O(n);u>e;e++){var i=n[e];if(!m.contains(t,i)){for(var o=1;r>o&&m.contains(arguments[o],i);o++);o===r&&t.push(i)}}return t},m.difference=function(n){var t=S(arguments,!0,!0,1);return m.filter(n,function(n){return!m.contains(t,n)})},m.zip=function(){return m.unzip(arguments)},m.unzip=function(n){for(var t=n&&m.max(n,O).length||0,r=Array(t),e=0;t>e;e++)r[e]=m.pluck(n,e);return r},m.object=function(n,t){for(var r={},e=0,u=O(n);u>e;e++)t?r[n[e]]=t[e]:r[n[e][0]]=n[e][1];return r},m.findIndex=t(1),m.findLastIndex=t(-1),m.sortedIndex=function(n,t,r,e){r=x(r,e,1);for(var u=r(t),i=0,o=O(n);o>i;){var a=Math.floor((i+o)/2);r(n[a])<u?i=a+1:o=a}return i},m.indexOf=r(1,m.findIndex,m.sortedIndex),m.lastIndexOf=r(-1,m.findLastIndex),m.range=function(n,t,r){null==t&&(t=n||0,n=0),r=r||1;for(var e=Math.max(Math.ceil((t-n)/r),0),u=Array(e),i=0;e>i;i++,n+=r)u[i]=n;return u};var E=function(n,t,r,e,u){if(!(e instanceof t))return n.apply(r,u);var i=j(n.prototype),o=n.apply(i,u);return m.isObject(o)?o:i};m.bind=function(n,t){if(g&&n.bind===g)return g.apply(n,l.call(arguments,1));if(!m.isFunction(n))throw new TypeError("Bind must be called on a function");var r=l.call(arguments,2),e=function(){return E(n,e,t,this,r.concat(l.call(arguments)))};return e},m.partial=function(n){var t=l.call(arguments,1),r=function(){for(var e=0,u=t.length,i=Array(u),o=0;u>o;o++)i[o]=t[o]===m?arguments[e++]:t[o];for(;e<arguments.length;)i.push(arguments[e++]);return E(n,r,this,this,i)};return r},m.bindAll=function(n){var t,r,e=arguments.length;if(1>=e)throw new Error("bindAll must be passed function names");for(t=1;e>t;t++)r=arguments[t],n[r]=m.bind(n[r],n);return n},m.memoize=function(n,t){var r=function(e){var u=r.cache,i=""+(t?t.apply(this,arguments):e);return m.has(u,i)||(u[i]=n.apply(this,arguments)),u[i]};return r.cache={},r},m.delay=function(n,t){var r=l.call(arguments,2);return setTimeout(function(){return n.apply(null,r)},t)},m.defer=m.partial(m.delay,m,1),m.throttle=function(n,t,r){var e,u,i,o=null,a=0;r||(r={});var c=function(){a=r.leading===!1?0:m.now(),o=null,i=n.apply(e,u),o||(e=u=null)};return function(){var f=m.now();a||r.leading!==!1||(a=f);var l=t-(f-a);return e=this,u=arguments,0>=l||l>t?(o&&(clearTimeout(o),o=null),a=f,i=n.apply(e,u),o||(e=u=null)):o||r.trailing===!1||(o=setTimeout(c,l)),i}},m.debounce=function(n,t,r){var e,u,i,o,a,c=function(){var f=m.now()-o;t>f&&f>=0?e=setTimeout(c,t-f):(e=null,r||(a=n.apply(i,u),e||(i=u=null)))};return function(){i=this,u=arguments,o=m.now();var f=r&&!e;return e||(e=setTimeout(c,t)),f&&(a=n.apply(i,u),i=u=null),a}},m.wrap=function(n,t){return m.partial(t,n)},m.negate=function(n){return function(){return!n.apply(this,arguments)}},m.compose=function(){var n=arguments,t=n.length-1;return function(){for(var r=t,e=n[t].apply(this,arguments);r--;)e=n[r].call(this,e);return e}},m.after=function(n,t){return function(){return--n<1?t.apply(this,arguments):void 0}},m.before=function(n,t){var r;return function(){return--n>0&&(r=t.apply(this,arguments)),1>=n&&(t=null),r}},m.once=m.partial(m.before,2);var M=!{toString:null}.propertyIsEnumerable("toString"),I=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"];m.keys=function(n){if(!m.isObject(n))return[];if(v)return v(n);var t=[];for(var r in n)m.has(n,r)&&t.push(r);return M&&e(n,t),t},m.allKeys=function(n){if(!m.isObject(n))return[];var t=[];for(var r in n)t.push(r);return M&&e(n,t),t},m.values=function(n){for(var t=m.keys(n),r=t.length,e=Array(r),u=0;r>u;u++)e[u]=n[t[u]];return e},m.mapObject=function(n,t,r){t=x(t,r);for(var e,u=m.keys(n),i=u.length,o={},a=0;i>a;a++)e=u[a],o[e]=t(n[e],e,n);return o},m.pairs=function(n){for(var t=m.keys(n),r=t.length,e=Array(r),u=0;r>u;u++)e[u]=[t[u],n[t[u]]];return e},m.invert=function(n){for(var t={},r=m.keys(n),e=0,u=r.length;u>e;e++)t[n[r[e]]]=r[e];return t},m.functions=m.methods=function(n){var t=[];for(var r in n)m.isFunction(n[r])&&t.push(r);return t.sort()},m.extend=_(m.allKeys),m.extendOwn=m.assign=_(m.keys),m.findKey=function(n,t,r){t=x(t,r);for(var e,u=m.keys(n),i=0,o=u.length;o>i;i++)if(e=u[i],t(n[e],e,n))return e},m.pick=function(n,t,r){var e,u,i={},o=n;if(null==o)return i;m.isFunction(t)?(u=m.allKeys(o),e=b(t,r)):(u=S(arguments,!1,!1,1),e=function(n,t,r){return t in r},o=Object(o));for(var a=0,c=u.length;c>a;a++){var f=u[a],l=o[f];e(l,f,o)&&(i[f]=l)}return i},m.omit=function(n,t,r){if(m.isFunction(t))t=m.negate(t);else{var e=m.map(S(arguments,!1,!1,1),String);t=function(n,t){return!m.contains(e,t)}}return m.pick(n,t,r)},m.defaults=_(m.allKeys,!0),m.create=function(n,t){var r=j(n);return t&&m.extendOwn(r,t),r},m.clone=function(n){return m.isObject(n)?m.isArray(n)?n.slice():m.extend({},n):n},m.tap=function(n,t){return t(n),n},m.isMatch=function(n,t){var r=m.keys(t),e=r.length;if(null==n)return!e;for(var u=Object(n),i=0;e>i;i++){var o=r[i];if(t[o]!==u[o]||!(o in u))return!1}return!0};var N=function(n,t,r,e){if(n===t)return 0!==n||1/n===1/t;if(null==n||null==t)return n===t;n instanceof m&&(n=n._wrapped),t instanceof m&&(t=t._wrapped);var u=s.call(n);if(u!==s.call(t))return!1;switch(u){case"[object RegExp]":case"[object String]":return""+n==""+t;case"[object Number]":return+n!==+n?+t!==+t:0===+n?1/+n===1/t:+n===+t;case"[object Date]":case"[object Boolean]":return+n===+t}var i="[object Array]"===u;if(!i){if("object"!=typeof n||"object"!=typeof t)return!1;var o=n.constructor,a=t.constructor;if(o!==a&&!(m.isFunction(o)&&o instanceof o&&m.isFunction(a)&&a instanceof a)&&"constructor"in n&&"constructor"in t)return!1}r=r||[],e=e||[];for(var c=r.length;c--;)if(r[c]===n)return e[c]===t;if(r.push(n),e.push(t),i){if(c=n.length,c!==t.length)return!1;for(;c--;)if(!N(n[c],t[c],r,e))return!1}else{var f,l=m.keys(n);if(c=l.length,m.keys(t).length!==c)return!1;for(;c--;)if(f=l[c],!m.has(t,f)||!N(n[f],t[f],r,e))return!1}return r.pop(),e.pop(),!0};m.isEqual=function(n,t){return N(n,t)},m.isEmpty=function(n){return null==n?!0:k(n)&&(m.isArray(n)||m.isString(n)||m.isArguments(n))?0===n.length:0===m.keys(n).length},m.isElement=function(n){return!(!n||1!==n.nodeType)},m.isArray=h||function(n){return"[object Array]"===s.call(n)},m.isObject=function(n){var t=typeof n;return"function"===t||"object"===t&&!!n},m.each(["Arguments","Function","String","Number","Date","RegExp","Error"],function(n){m["is"+n]=function(t){return s.call(t)==="[object "+n+"]"}}),m.isArguments(arguments)||(m.isArguments=function(n){return m.has(n,"callee")}),"function"!=typeof/./&&"object"!=typeof Int8Array&&(m.isFunction=function(n){return"function"==typeof n||!1}),m.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))},m.isNaN=function(n){return m.isNumber(n)&&n!==+n},m.isBoolean=function(n){return n===!0||n===!1||"[object Boolean]"===s.call(n)},m.isNull=function(n){return null===n},m.isUndefined=function(n){return n===void 0},m.has=function(n,t){return null!=n&&p.call(n,t)},m.noConflict=function(){return u._=i,this},m.identity=function(n){return n},m.constant=function(n){return function(){return n}},m.noop=function(){},m.property=w,m.propertyOf=function(n){return null==n?function(){}:function(t){return n[t]}},m.matcher=m.matches=function(n){return n=m.extendOwn({},n),function(t){return m.isMatch(t,n)}},m.times=function(n,t,r){var e=Array(Math.max(0,n));t=b(t,r,1);for(var u=0;n>u;u++)e[u]=t(u);return e},m.random=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))},m.now=Date.now||function(){return(new Date).getTime()};var B={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;"},T=m.invert(B),R=function(n){var t=function(t){return n[t]},r="(?:"+m.keys(n).join("|")+")",e=RegExp(r),u=RegExp(r,"g");return function(n){return n=null==n?"":""+n,e.test(n)?n.replace(u,t):n}};m.escape=R(B),m.unescape=R(T),m.result=function(n,t,r){var e=null==n?void 0:n[t];return e===void 0&&(e=r),m.isFunction(e)?e.call(n):e};var q=0;m.uniqueId=function(n){var t=++q+"";return n?n+t:t},m.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var K=/(.)^/,z={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},D=/\\|'|\r|\n|\u2028|\u2029/g,L=function(n){return"\\"+z[n]};m.template=function(n,t,r){!t&&r&&(t=r),t=m.defaults({},t,m.templateSettings);var e=RegExp([(t.escape||K).source,(t.interpolate||K).source,(t.evaluate||K).source].join("|")+"|$","g"),u=0,i="__p+='";n.replace(e,function(t,r,e,o,a){return i+=n.slice(u,a).replace(D,L),u=a+t.length,r?i+="'+\n((__t=("+r+"))==null?'':_.escape(__t))+\n'":e?i+="'+\n((__t=("+e+"))==null?'':__t)+\n'":o&&(i+="';\n"+o+"\n__p+='"),t}),i+="';\n",t.variable||(i="with(obj||{}){\n"+i+"}\n"),i="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+i+"return __p;\n";try{var o=new Function(t.variable||"obj","_",i)}catch(a){throw a.source=i,a}var c=function(n){return o.call(this,n,m)},f=t.variable||"obj";return c.source="function("+f+"){\n"+i+"}",c},m.chain=function(n){var t=m(n);return t._chain=!0,t};var P=function(n,t){return n._chain?m(t).chain():t};m.mixin=function(n){m.each(m.functions(n),function(t){var r=m[t]=n[t];m.prototype[t]=function(){var n=[this._wrapped];return f.apply(n,arguments),P(this,r.apply(m,n))}})},m.mixin(m),m.each(["pop","push","reverse","shift","sort","splice","unshift"],function(n){var t=o[n];m.prototype[n]=function(){var r=this._wrapped;return t.apply(r,arguments),"shift"!==n&&"splice"!==n||0!==r.length||delete r[0],P(this,r)}}),m.each(["concat","join","slice"],function(n){var t=o[n];m.prototype[n]=function(){return P(this,t.apply(this._wrapped,arguments))}}),m.prototype.value=function(){return this._wrapped},m.prototype.valueOf=m.prototype.toJSON=m.prototype.value,m.prototype.toString=function(){return""+this._wrapped},"function"==typeof define&&define.amd&&define("underscore",[],function(){return m})}).call(this);
+//# sourceMappingURL=underscore-min.map
\ No newline at end of file
diff --git a/setup-maven/node_modules/underscore/underscore-min.map b/setup-maven/node_modules/underscore/underscore-min.map
new file mode 100644
index 0000000..cf356bf
--- /dev/null
+++ b/setup-maven/node_modules/underscore/underscore-min.map
@@ -0,0 +1 @@
+{"version":3,"file":"underscore-min.js","sources":["underscore.js"],"names":["createReduce","dir","iterator","obj","iteratee","memo","keys","index","length","currentKey","context","optimizeCb","isArrayLike","_","arguments","createPredicateIndexFinder","array","predicate","cb","getLength","createIndexFinder","predicateFind","sortedIndex","item","idx","i","Math","max","min","slice","call","isNaN","collectNonEnumProps","nonEnumIdx","nonEnumerableProps","constructor","proto","isFunction","prototype","ObjProto","prop","has","contains","push","root","this","previousUnderscore","ArrayProto","Array","Object","FuncProto","Function","toString","hasOwnProperty","nativeIsArray","isArray","nativeKeys","nativeBind","bind","nativeCreate","create","Ctor","_wrapped","exports","module","VERSION","func","argCount","value","other","collection","accumulator","apply","identity","isObject","matcher","property","Infinity","createAssigner","keysFunc","undefinedOnly","source","l","key","baseCreate","result","MAX_ARRAY_INDEX","pow","each","forEach","map","collect","results","reduce","foldl","inject","reduceRight","foldr","find","detect","findIndex","findKey","filter","select","list","reject","negate","every","all","some","any","includes","include","fromIndex","guard","values","indexOf","invoke","method","args","isFunc","pluck","where","attrs","findWhere","computed","lastComputed","shuffle","rand","set","shuffled","random","sample","n","sortBy","criteria","sort","left","right","a","b","group","behavior","groupBy","indexBy","countBy","toArray","size","partition","pass","fail","first","head","take","initial","last","rest","tail","drop","compact","flatten","input","shallow","strict","startIndex","output","isArguments","j","len","without","difference","uniq","unique","isSorted","isBoolean","seen","union","intersection","argsLength","zip","unzip","object","findLastIndex","low","high","mid","floor","lastIndexOf","range","start","stop","step","ceil","executeBound","sourceFunc","boundFunc","callingContext","self","TypeError","bound","concat","partial","boundArgs","position","bindAll","Error","memoize","hasher","cache","address","delay","wait","setTimeout","defer","throttle","options","timeout","previous","later","leading","now","remaining","clearTimeout","trailing","debounce","immediate","timestamp","callNow","wrap","wrapper","compose","after","times","before","once","hasEnumBug","propertyIsEnumerable","allKeys","mapObject","pairs","invert","functions","methods","names","extend","extendOwn","assign","pick","oiteratee","omit","String","defaults","props","clone","tap","interceptor","isMatch","eq","aStack","bStack","className","areArrays","aCtor","bCtor","pop","isEqual","isEmpty","isString","isElement","nodeType","type","name","Int8Array","isFinite","parseFloat","isNumber","isNull","isUndefined","noConflict","constant","noop","propertyOf","matches","accum","Date","getTime","escapeMap","&","<",">","\"","'","`","unescapeMap","createEscaper","escaper","match","join","testRegexp","RegExp","replaceRegexp","string","test","replace","escape","unescape","fallback","idCounter","uniqueId","prefix","id","templateSettings","evaluate","interpolate","noMatch","escapes","\\","\r","\n","
","
","escapeChar","template","text","settings","oldSettings","offset","variable","render","e","data","argument","chain","instance","_chain","mixin","valueOf","toJSON","define","amd"],"mappings":";;;;CAKC,WA4KC,QAASA,GAAaC,GAGpB,QAASC,GAASC,EAAKC,EAAUC,EAAMC,EAAMC,EAAOC,GAClD,KAAOD,GAAS,GAAaC,EAARD,EAAgBA,GAASN,EAAK,CACjD,GAAIQ,GAAaH,EAAOA,EAAKC,GAASA,CACtCF,GAAOD,EAASC,EAAMF,EAAIM,GAAaA,EAAYN,GAErD,MAAOE,GAGT,MAAO,UAASF,EAAKC,EAAUC,EAAMK,GACnCN,EAAWO,EAAWP,EAAUM,EAAS,EACzC,IAAIJ,IAAQM,EAAYT,IAAQU,EAAEP,KAAKH,GACnCK,GAAUF,GAAQH,GAAKK,OACvBD,EAAQN,EAAM,EAAI,EAAIO,EAAS,CAMnC,OAJIM,WAAUN,OAAS,IACrBH,EAAOF,EAAIG,EAAOA,EAAKC,GAASA,GAChCA,GAASN,GAEJC,EAASC,EAAKC,EAAUC,EAAMC,EAAMC,EAAOC,IA+ZtD,QAASO,GAA2Bd,GAClC,MAAO,UAASe,EAAOC,EAAWP,GAChCO,EAAYC,EAAGD,EAAWP,EAG1B,KAFA,GAAIF,GAASW,EAAUH,GACnBT,EAAQN,EAAM,EAAI,EAAIO,EAAS,EAC5BD,GAAS,GAAaC,EAARD,EAAgBA,GAASN,EAC5C,GAAIgB,EAAUD,EAAMT,GAAQA,EAAOS,GAAQ,MAAOT,EAEpD,QAAQ,GAsBZ,QAASa,GAAkBnB,EAAKoB,EAAeC,GAC7C,MAAO,UAASN,EAAOO,EAAMC,GAC3B,GAAIC,GAAI,EAAGjB,EAASW,EAAUH,EAC9B,IAAkB,gBAAPQ,GACLvB,EAAM,EACNwB,EAAID,GAAO,EAAIA,EAAME,KAAKC,IAAIH,EAAMhB,EAAQiB,GAE5CjB,EAASgB,GAAO,EAAIE,KAAKE,IAAIJ,EAAM,EAAGhB,GAAUgB,EAAMhB,EAAS,MAE9D,IAAIc,GAAeE,GAAOhB,EAE/B,MADAgB,GAAMF,EAAYN,EAAOO,GAClBP,EAAMQ,KAASD,EAAOC,GAAO,CAEtC,IAAID,IAASA,EAEX,MADAC,GAAMH,EAAcQ,EAAMC,KAAKd,EAAOS,EAAGjB,GAASK,EAAEkB,OAC7CP,GAAO,EAAIA,EAAMC,GAAK,CAE/B,KAAKD,EAAMvB,EAAM,EAAIwB,EAAIjB,EAAS,EAAGgB,GAAO,GAAWhB,EAANgB,EAAcA,GAAOvB,EACpE,GAAIe,EAAMQ,KAASD,EAAM,MAAOC,EAElC,QAAQ,GAqPZ,QAASQ,GAAoB7B,EAAKG,GAChC,GAAI2B,GAAaC,EAAmB1B,OAChC2B,EAAchC,EAAIgC,YAClBC,EAASvB,EAAEwB,WAAWF,IAAgBA,EAAYG,WAAcC,EAGhEC,EAAO,aAGX,KAFI3B,EAAE4B,IAAItC,EAAKqC,KAAU3B,EAAE6B,SAASpC,EAAMkC,IAAOlC,EAAKqC,KAAKH,GAEpDP,KACLO,EAAON,EAAmBD,GACtBO,IAAQrC,IAAOA,EAAIqC,KAAUJ,EAAMI,KAAU3B,EAAE6B,SAASpC,EAAMkC,IAChElC,EAAKqC,KAAKH,GA74BhB,GAAII,GAAOC,KAGPC,EAAqBF,EAAK/B,EAG1BkC,EAAaC,MAAMV,UAAWC,EAAWU,OAAOX,UAAWY,EAAYC,SAASb,UAIlFK,EAAmBI,EAAWJ,KAC9Bd,EAAmBkB,EAAWlB,MAC9BuB,EAAmBb,EAASa,SAC5BC,EAAmBd,EAASc,eAK5BC,EAAqBN,MAAMO,QAC3BC,EAAqBP,OAAO3C,KAC5BmD,EAAqBP,EAAUQ,KAC/BC,EAAqBV,OAAOW,OAG1BC,EAAO,aAGPhD,EAAI,SAASV,GACf,MAAIA,aAAeU,GAAUV,EACvB0C,eAAgBhC,QACtBgC,KAAKiB,SAAW3D,GADiB,GAAIU,GAAEV,GAOlB,oBAAZ4D,UACa,mBAAXC,SAA0BA,OAAOD,UAC1CA,QAAUC,OAAOD,QAAUlD,GAE7BkD,QAAQlD,EAAIA,GAEZ+B,EAAK/B,EAAIA,EAIXA,EAAEoD,QAAU,OAKZ,IAAItD,GAAa,SAASuD,EAAMxD,EAASyD,GACvC,GAAIzD,QAAiB,GAAG,MAAOwD,EAC/B,QAAoB,MAAZC,EAAmB,EAAIA,GAC7B,IAAK,GAAG,MAAO,UAASC,GACtB,MAAOF,GAAKpC,KAAKpB,EAAS0D,GAE5B,KAAK,GAAG,MAAO,UAASA,EAAOC,GAC7B,MAAOH,GAAKpC,KAAKpB,EAAS0D,EAAOC,GAEnC,KAAK,GAAG,MAAO,UAASD,EAAO7D,EAAO+D,GACpC,MAAOJ,GAAKpC,KAAKpB,EAAS0D,EAAO7D,EAAO+D,GAE1C,KAAK,GAAG,MAAO,UAASC,EAAaH,EAAO7D,EAAO+D,GACjD,MAAOJ,GAAKpC,KAAKpB,EAAS6D,EAAaH,EAAO7D,EAAO+D,IAGzD,MAAO,YACL,MAAOJ,GAAKM,MAAM9D,EAASI,aAO3BI,EAAK,SAASkD,EAAO1D,EAASyD,GAChC,MAAa,OAATC,EAAsBvD,EAAE4D,SACxB5D,EAAEwB,WAAW+B,GAAezD,EAAWyD,EAAO1D,EAASyD,GACvDtD,EAAE6D,SAASN,GAAevD,EAAE8D,QAAQP,GACjCvD,EAAE+D,SAASR,GAEpBvD,GAAET,SAAW,SAASgE,EAAO1D,GAC3B,MAAOQ,GAAGkD,EAAO1D,EAASmE,KAI5B,IAAIC,GAAiB,SAASC,EAAUC,GACtC,MAAO,UAAS7E,GACd,GAAIK,GAASM,UAAUN,MACvB,IAAa,EAATA,GAAqB,MAAPL,EAAa,MAAOA,EACtC,KAAK,GAAII,GAAQ,EAAWC,EAARD,EAAgBA,IAIlC,IAAK,GAHD0E,GAASnE,UAAUP,GACnBD,EAAOyE,EAASE,GAChBC,EAAI5E,EAAKE,OACJiB,EAAI,EAAOyD,EAAJzD,EAAOA,IAAK,CAC1B,GAAI0D,GAAM7E,EAAKmB,EACVuD,IAAiB7E,EAAIgF,SAAc,KAAGhF,EAAIgF,GAAOF,EAAOE,IAGjE,MAAOhF,KAKPiF,EAAa,SAAS9C,GACxB,IAAKzB,EAAE6D,SAASpC,GAAY,QAC5B,IAAIqB,EAAc,MAAOA,GAAarB,EACtCuB,GAAKvB,UAAYA,CACjB,IAAI+C,GAAS,GAAIxB,EAEjB,OADAA,GAAKvB,UAAY,KACV+C,GAGLT,EAAW,SAASO,GACtB,MAAO,UAAShF,GACd,MAAc,OAAPA,MAAmB,GAAIA,EAAIgF,KAQlCG,EAAkB5D,KAAK6D,IAAI,EAAG,IAAM,EACpCpE,EAAYyD,EAAS,UACrBhE,EAAc,SAAS0D,GACzB,GAAI9D,GAASW,EAAUmD,EACvB,OAAwB,gBAAV9D,IAAsBA,GAAU,GAAe8E,GAAV9E,EASrDK,GAAE2E,KAAO3E,EAAE4E,QAAU,SAAStF,EAAKC,EAAUM,GAC3CN,EAAWO,EAAWP,EAAUM,EAChC,IAAIe,GAAGjB,CACP,IAAII,EAAYT,GACd,IAAKsB,EAAI,EAAGjB,EAASL,EAAIK,OAAYA,EAAJiB,EAAYA,IAC3CrB,EAASD,EAAIsB,GAAIA,EAAGtB,OAEjB,CACL,GAAIG,GAAOO,EAAEP,KAAKH,EAClB,KAAKsB,EAAI,EAAGjB,EAASF,EAAKE,OAAYA,EAAJiB,EAAYA,IAC5CrB,EAASD,EAAIG,EAAKmB,IAAKnB,EAAKmB,GAAItB,GAGpC,MAAOA,IAITU,EAAE6E,IAAM7E,EAAE8E,QAAU,SAASxF,EAAKC,EAAUM,GAC1CN,EAAWc,EAAGd,EAAUM,EAIxB,KAAK,GAHDJ,IAAQM,EAAYT,IAAQU,EAAEP,KAAKH,GACnCK,GAAUF,GAAQH,GAAKK,OACvBoF,EAAU5C,MAAMxC,GACXD,EAAQ,EAAWC,EAARD,EAAgBA,IAAS,CAC3C,GAAIE,GAAaH,EAAOA,EAAKC,GAASA,CACtCqF,GAAQrF,GAASH,EAASD,EAAIM,GAAaA,EAAYN,GAEzD,MAAOyF,IA+BT/E,EAAEgF,OAAShF,EAAEiF,MAAQjF,EAAEkF,OAAS/F,EAAa,GAG7Ca,EAAEmF,YAAcnF,EAAEoF,MAAQjG,GAAc,GAGxCa,EAAEqF,KAAOrF,EAAEsF,OAAS,SAAShG,EAAKc,EAAWP,GAC3C,GAAIyE,EAMJ,OAJEA,GADEvE,EAAYT,GACRU,EAAEuF,UAAUjG,EAAKc,EAAWP,GAE5BG,EAAEwF,QAAQlG,EAAKc,EAAWP,GAE9ByE,QAAa,IAAKA,KAAS,EAAUhF,EAAIgF,GAA7C,QAKFtE,EAAEyF,OAASzF,EAAE0F,OAAS,SAASpG,EAAKc,EAAWP,GAC7C,GAAIkF,KAKJ,OAJA3E,GAAYC,EAAGD,EAAWP,GAC1BG,EAAE2E,KAAKrF,EAAK,SAASiE,EAAO7D,EAAOiG,GAC7BvF,EAAUmD,EAAO7D,EAAOiG,IAAOZ,EAAQjD,KAAKyB,KAE3CwB,GAIT/E,EAAE4F,OAAS,SAAStG,EAAKc,EAAWP,GAClC,MAAOG,GAAEyF,OAAOnG,EAAKU,EAAE6F,OAAOxF,EAAGD,IAAaP,IAKhDG,EAAE8F,MAAQ9F,EAAE+F,IAAM,SAASzG,EAAKc,EAAWP,GACzCO,EAAYC,EAAGD,EAAWP,EAG1B,KAAK,GAFDJ,IAAQM,EAAYT,IAAQU,EAAEP,KAAKH,GACnCK,GAAUF,GAAQH,GAAKK,OAClBD,EAAQ,EAAWC,EAARD,EAAgBA,IAAS,CAC3C,GAAIE,GAAaH,EAAOA,EAAKC,GAASA,CACtC,KAAKU,EAAUd,EAAIM,GAAaA,EAAYN,GAAM,OAAO,EAE3D,OAAO,GAKTU,EAAEgG,KAAOhG,EAAEiG,IAAM,SAAS3G,EAAKc,EAAWP,GACxCO,EAAYC,EAAGD,EAAWP,EAG1B,KAAK,GAFDJ,IAAQM,EAAYT,IAAQU,EAAEP,KAAKH,GACnCK,GAAUF,GAAQH,GAAKK,OAClBD,EAAQ,EAAWC,EAARD,EAAgBA,IAAS,CAC3C,GAAIE,GAAaH,EAAOA,EAAKC,GAASA,CACtC,IAAIU,EAAUd,EAAIM,GAAaA,EAAYN,GAAM,OAAO,EAE1D,OAAO,GAKTU,EAAE6B,SAAW7B,EAAEkG,SAAWlG,EAAEmG,QAAU,SAAS7G,EAAKoB,EAAM0F,EAAWC,GAGnE,MAFKtG,GAAYT,KAAMA,EAAMU,EAAEsG,OAAOhH,KACd,gBAAb8G,IAAyBC,KAAOD,EAAY,GAChDpG,EAAEuG,QAAQjH,EAAKoB,EAAM0F,IAAc,GAI5CpG,EAAEwG,OAAS,SAASlH,EAAKmH,GACvB,GAAIC,GAAO1F,EAAMC,KAAKhB,UAAW,GAC7B0G,EAAS3G,EAAEwB,WAAWiF,EAC1B,OAAOzG,GAAE6E,IAAIvF,EAAK,SAASiE,GACzB,GAAIF,GAAOsD,EAASF,EAASlD,EAAMkD,EACnC,OAAe,OAARpD,EAAeA,EAAOA,EAAKM,MAAMJ,EAAOmD,MAKnD1G,EAAE4G,MAAQ,SAAStH,EAAKgF,GACtB,MAAOtE,GAAE6E,IAAIvF,EAAKU,EAAE+D,SAASO,KAK/BtE,EAAE6G,MAAQ,SAASvH,EAAKwH,GACtB,MAAO9G,GAAEyF,OAAOnG,EAAKU,EAAE8D,QAAQgD,KAKjC9G,EAAE+G,UAAY,SAASzH,EAAKwH,GAC1B,MAAO9G,GAAEqF,KAAK/F,EAAKU,EAAE8D,QAAQgD,KAI/B9G,EAAEc,IAAM,SAASxB,EAAKC,EAAUM,GAC9B,GACI0D,GAAOyD,EADPxC,GAAUR,IAAUiD,GAAgBjD,GAExC,IAAgB,MAAZzE,GAA2B,MAAPD,EAAa,CACnCA,EAAMS,EAAYT,GAAOA,EAAMU,EAAEsG,OAAOhH,EACxC,KAAK,GAAIsB,GAAI,EAAGjB,EAASL,EAAIK,OAAYA,EAAJiB,EAAYA,IAC/C2C,EAAQjE,EAAIsB,GACR2C,EAAQiB,IACVA,EAASjB,OAIbhE,GAAWc,EAAGd,EAAUM,GACxBG,EAAE2E,KAAKrF,EAAK,SAASiE,EAAO7D,EAAOiG,GACjCqB,EAAWzH,EAASgE,EAAO7D,EAAOiG,IAC9BqB,EAAWC,GAAgBD,KAAchD,KAAYQ,KAAYR,OACnEQ,EAASjB,EACT0D,EAAeD,IAIrB,OAAOxC,IAITxE,EAAEe,IAAM,SAASzB,EAAKC,EAAUM,GAC9B,GACI0D,GAAOyD,EADPxC,EAASR,IAAUiD,EAAejD,GAEtC,IAAgB,MAAZzE,GAA2B,MAAPD,EAAa,CACnCA,EAAMS,EAAYT,GAAOA,EAAMU,EAAEsG,OAAOhH,EACxC,KAAK,GAAIsB,GAAI,EAAGjB,EAASL,EAAIK,OAAYA,EAAJiB,EAAYA,IAC/C2C,EAAQjE,EAAIsB,GACA4D,EAARjB,IACFiB,EAASjB,OAIbhE,GAAWc,EAAGd,EAAUM,GACxBG,EAAE2E,KAAKrF,EAAK,SAASiE,EAAO7D,EAAOiG,GACjCqB,EAAWzH,EAASgE,EAAO7D,EAAOiG,IACnBsB,EAAXD,GAAwChD,MAAbgD,GAAoChD,MAAXQ,KACtDA,EAASjB,EACT0D,EAAeD,IAIrB,OAAOxC,IAKTxE,EAAEkH,QAAU,SAAS5H,GAInB,IAAK,GAAe6H,GAHhBC,EAAMrH,EAAYT,GAAOA,EAAMU,EAAEsG,OAAOhH,GACxCK,EAASyH,EAAIzH,OACb0H,EAAWlF,MAAMxC,GACZD,EAAQ,EAAiBC,EAARD,EAAgBA,IACxCyH,EAAOnH,EAAEsH,OAAO,EAAG5H,GACfyH,IAASzH,IAAO2H,EAAS3H,GAAS2H,EAASF,IAC/CE,EAASF,GAAQC,EAAI1H,EAEvB,OAAO2H,IAMTrH,EAAEuH,OAAS,SAASjI,EAAKkI,EAAGnB,GAC1B,MAAS,OAALmB,GAAanB,GACVtG,EAAYT,KAAMA,EAAMU,EAAEsG,OAAOhH,IAC/BA,EAAIU,EAAEsH,OAAOhI,EAAIK,OAAS,KAE5BK,EAAEkH,QAAQ5H,GAAK0B,MAAM,EAAGH,KAAKC,IAAI,EAAG0G,KAI7CxH,EAAEyH,OAAS,SAASnI,EAAKC,EAAUM,GAEjC,MADAN,GAAWc,EAAGd,EAAUM,GACjBG,EAAE4G,MAAM5G,EAAE6E,IAAIvF,EAAK,SAASiE,EAAO7D,EAAOiG,GAC/C,OACEpC,MAAOA,EACP7D,MAAOA,EACPgI,SAAUnI,EAASgE,EAAO7D,EAAOiG,MAElCgC,KAAK,SAASC,EAAMC,GACrB,GAAIC,GAAIF,EAAKF,SACTK,EAAIF,EAAMH,QACd,IAAII,IAAMC,EAAG,CACX,GAAID,EAAIC,GAAKD,QAAW,GAAG,MAAO,EAClC,IAAQC,EAAJD,GAASC,QAAW,GAAG,OAAQ,EAErC,MAAOH,GAAKlI,MAAQmI,EAAMnI,QACxB,SAIN,IAAIsI,GAAQ,SAASC,GACnB,MAAO,UAAS3I,EAAKC,EAAUM,GAC7B,GAAI2E,KAMJ,OALAjF,GAAWc,EAAGd,EAAUM,GACxBG,EAAE2E,KAAKrF,EAAK,SAASiE,EAAO7D,GAC1B,GAAI4E,GAAM/E,EAASgE,EAAO7D,EAAOJ,EACjC2I,GAASzD,EAAQjB,EAAOe,KAEnBE,GAMXxE,GAAEkI,QAAUF,EAAM,SAASxD,EAAQjB,EAAOe,GACpCtE,EAAE4B,IAAI4C,EAAQF,GAAME,EAAOF,GAAKxC,KAAKyB,GAAaiB,EAAOF,IAAQf,KAKvEvD,EAAEmI,QAAUH,EAAM,SAASxD,EAAQjB,EAAOe,GACxCE,EAAOF,GAAOf,IAMhBvD,EAAEoI,QAAUJ,EAAM,SAASxD,EAAQjB,EAAOe,GACpCtE,EAAE4B,IAAI4C,EAAQF,GAAME,EAAOF,KAAaE,EAAOF,GAAO,IAI5DtE,EAAEqI,QAAU,SAAS/I,GACnB,MAAKA,GACDU,EAAE0C,QAAQpD,GAAa0B,EAAMC,KAAK3B,GAClCS,EAAYT,GAAaU,EAAE6E,IAAIvF,EAAKU,EAAE4D,UACnC5D,EAAEsG,OAAOhH,OAIlBU,EAAEsI,KAAO,SAAShJ,GAChB,MAAW,OAAPA,EAAoB,EACjBS,EAAYT,GAAOA,EAAIK,OAASK,EAAEP,KAAKH,GAAKK,QAKrDK,EAAEuI,UAAY,SAASjJ,EAAKc,EAAWP,GACrCO,EAAYC,EAAGD,EAAWP,EAC1B,IAAI2I,MAAWC,IAIf,OAHAzI,GAAE2E,KAAKrF,EAAK,SAASiE,EAAOe,EAAKhF,IAC9Bc,EAAUmD,EAAOe,EAAKhF,GAAOkJ,EAAOC,GAAM3G,KAAKyB,MAE1CiF,EAAMC,IAShBzI,EAAE0I,MAAQ1I,EAAE2I,KAAO3I,EAAE4I,KAAO,SAASzI,EAAOqH,EAAGnB,GAC7C,MAAa,OAATlG,MAA2B,GACtB,MAALqH,GAAanB,EAAclG,EAAM,GAC9BH,EAAE6I,QAAQ1I,EAAOA,EAAMR,OAAS6H,IAMzCxH,EAAE6I,QAAU,SAAS1I,EAAOqH,EAAGnB,GAC7B,MAAOrF,GAAMC,KAAKd,EAAO,EAAGU,KAAKC,IAAI,EAAGX,EAAMR,QAAe,MAAL6H,GAAanB,EAAQ,EAAImB,MAKnFxH,EAAE8I,KAAO,SAAS3I,EAAOqH,EAAGnB,GAC1B,MAAa,OAATlG,MAA2B,GACtB,MAALqH,GAAanB,EAAclG,EAAMA,EAAMR,OAAS,GAC7CK,EAAE+I,KAAK5I,EAAOU,KAAKC,IAAI,EAAGX,EAAMR,OAAS6H,KAMlDxH,EAAE+I,KAAO/I,EAAEgJ,KAAOhJ,EAAEiJ,KAAO,SAAS9I,EAAOqH,EAAGnB,GAC5C,MAAOrF,GAAMC,KAAKd,EAAY,MAALqH,GAAanB,EAAQ,EAAImB,IAIpDxH,EAAEkJ,QAAU,SAAS/I,GACnB,MAAOH,GAAEyF,OAAOtF,EAAOH,EAAE4D,UAI3B,IAAIuF,GAAU,SAASC,EAAOC,EAASC,EAAQC,GAE7C,IAAK,GADDC,MAAa7I,EAAM,EACdC,EAAI2I,GAAc,EAAG5J,EAASW,EAAU8I,GAAYzJ,EAAJiB,EAAYA,IAAK,CACxE,GAAI2C,GAAQ6F,EAAMxI,EAClB,IAAIb,EAAYwD,KAAWvD,EAAE0C,QAAQa,IAAUvD,EAAEyJ,YAAYlG,IAAS,CAE/D8F,IAAS9F,EAAQ4F,EAAQ5F,EAAO8F,EAASC,GAC9C,IAAII,GAAI,EAAGC,EAAMpG,EAAM5D,MAEvB,KADA6J,EAAO7J,QAAUgK,EACNA,EAAJD,GACLF,EAAO7I,KAAS4C,EAAMmG,SAEdJ,KACVE,EAAO7I,KAAS4C,GAGpB,MAAOiG,GAITxJ,GAAEmJ,QAAU,SAAShJ,EAAOkJ,GAC1B,MAAOF,GAAQhJ,EAAOkJ,GAAS,IAIjCrJ,EAAE4J,QAAU,SAASzJ,GACnB,MAAOH,GAAE6J,WAAW1J,EAAOa,EAAMC,KAAKhB,UAAW,KAMnDD,EAAE8J,KAAO9J,EAAE+J,OAAS,SAAS5J,EAAO6J,EAAUzK,EAAUM,GACjDG,EAAEiK,UAAUD,KACfnK,EAAUN,EACVA,EAAWyK,EACXA,GAAW,GAEG,MAAZzK,IAAkBA,EAAWc,EAAGd,EAAUM,GAG9C,KAAK,GAFD2E,MACA0F,KACKtJ,EAAI,EAAGjB,EAASW,EAAUH,GAAYR,EAAJiB,EAAYA,IAAK,CAC1D,GAAI2C,GAAQpD,EAAMS,GACdoG,EAAWzH,EAAWA,EAASgE,EAAO3C,EAAGT,GAASoD,CAClDyG,IACGpJ,GAAKsJ,IAASlD,GAAUxC,EAAO1C,KAAKyB,GACzC2G,EAAOlD,GACEzH,EACJS,EAAE6B,SAASqI,EAAMlD,KACpBkD,EAAKpI,KAAKkF,GACVxC,EAAO1C,KAAKyB,IAEJvD,EAAE6B,SAAS2C,EAAQjB,IAC7BiB,EAAO1C,KAAKyB,GAGhB,MAAOiB,IAKTxE,EAAEmK,MAAQ,WACR,MAAOnK,GAAE8J,KAAKX,EAAQlJ,WAAW,GAAM,KAKzCD,EAAEoK,aAAe,SAASjK,GAGxB,IAAK,GAFDqE,MACA6F,EAAapK,UAAUN,OAClBiB,EAAI,EAAGjB,EAASW,EAAUH,GAAYR,EAAJiB,EAAYA,IAAK,CAC1D,GAAIF,GAAOP,EAAMS,EACjB,KAAIZ,EAAE6B,SAAS2C,EAAQ9D,GAAvB,CACA,IAAK,GAAIgJ,GAAI,EAAOW,EAAJX,GACT1J,EAAE6B,SAAS5B,UAAUyJ,GAAIhJ,GADAgJ,KAG5BA,IAAMW,GAAY7F,EAAO1C,KAAKpB,IAEpC,MAAO8D,IAKTxE,EAAE6J,WAAa,SAAS1J,GACtB,GAAI4I,GAAOI,EAAQlJ,WAAW,GAAM,EAAM,EAC1C,OAAOD,GAAEyF,OAAOtF,EAAO,SAASoD,GAC9B,OAAQvD,EAAE6B,SAASkH,EAAMxF,MAM7BvD,EAAEsK,IAAM,WACN,MAAOtK,GAAEuK,MAAMtK,YAKjBD,EAAEuK,MAAQ,SAASpK,GAIjB,IAAK,GAHDR,GAASQ,GAASH,EAAEc,IAAIX,EAAOG,GAAWX,QAAU,EACpD6E,EAASrC,MAAMxC,GAEVD,EAAQ,EAAWC,EAARD,EAAgBA,IAClC8E,EAAO9E,GAASM,EAAE4G,MAAMzG,EAAOT,EAEjC,OAAO8E,IAMTxE,EAAEwK,OAAS,SAAS7E,EAAMW,GAExB,IAAK,GADD9B,MACK5D,EAAI,EAAGjB,EAASW,EAAUqF,GAAWhG,EAAJiB,EAAYA,IAChD0F,EACF9B,EAAOmB,EAAK/E,IAAM0F,EAAO1F,GAEzB4D,EAAOmB,EAAK/E,GAAG,IAAM+E,EAAK/E,GAAG,EAGjC,OAAO4D,IAiBTxE,EAAEuF,UAAYrF,EAA2B,GACzCF,EAAEyK,cAAgBvK,GAA4B,GAI9CF,EAAES,YAAc,SAASN,EAAOb,EAAKC,EAAUM,GAC7CN,EAAWc,EAAGd,EAAUM,EAAS,EAGjC,KAFA,GAAI0D,GAAQhE,EAASD,GACjBoL,EAAM,EAAGC,EAAOrK,EAAUH,GACjBwK,EAAND,GAAY,CACjB,GAAIE,GAAM/J,KAAKgK,OAAOH,EAAMC,GAAQ,EAChCpL,GAASY,EAAMyK,IAAQrH,EAAOmH,EAAME,EAAM,EAAQD,EAAOC,EAE/D,MAAOF,IAgCT1K,EAAEuG,QAAUhG,EAAkB,EAAGP,EAAEuF,UAAWvF,EAAES,aAChDT,EAAE8K,YAAcvK,GAAmB,EAAGP,EAAEyK,eAKxCzK,EAAE+K,MAAQ,SAASC,EAAOC,EAAMC,GAClB,MAARD,IACFA,EAAOD,GAAS,EAChBA,EAAQ,GAEVE,EAAOA,GAAQ,CAKf,KAAK,GAHDvL,GAASkB,KAAKC,IAAID,KAAKsK,MAAMF,EAAOD,GAASE,GAAO,GACpDH,EAAQ5I,MAAMxC,GAETgB,EAAM,EAAShB,EAANgB,EAAcA,IAAOqK,GAASE,EAC9CH,EAAMpK,GAAOqK,CAGf,OAAOD,GAQT,IAAIK,GAAe,SAASC,EAAYC,EAAWzL,EAAS0L,EAAgB7E,GAC1E,KAAM6E,YAA0BD,IAAY,MAAOD,GAAW1H,MAAM9D,EAAS6G,EAC7E,IAAI8E,GAAOjH,EAAW8G,EAAW5J,WAC7B+C,EAAS6G,EAAW1H,MAAM6H,EAAM9E,EACpC,OAAI1G,GAAE6D,SAASW,GAAgBA,EACxBgH,EAMTxL,GAAE6C,KAAO,SAASQ,EAAMxD,GACtB,GAAI+C,GAAcS,EAAKR,OAASD,EAAY,MAAOA,GAAWe,MAAMN,EAAMrC,EAAMC,KAAKhB,UAAW,GAChG,KAAKD,EAAEwB,WAAW6B,GAAO,KAAM,IAAIoI,WAAU,oCAC7C,IAAI/E,GAAO1F,EAAMC,KAAKhB,UAAW,GAC7ByL,EAAQ,WACV,MAAON,GAAa/H,EAAMqI,EAAO7L,EAASmC,KAAM0E,EAAKiF,OAAO3K,EAAMC,KAAKhB,aAEzE,OAAOyL,IAMT1L,EAAE4L,QAAU,SAASvI,GACnB,GAAIwI,GAAY7K,EAAMC,KAAKhB,UAAW,GAClCyL,EAAQ,WAGV,IAAK,GAFDI,GAAW,EAAGnM,EAASkM,EAAUlM,OACjC+G,EAAOvE,MAAMxC,GACRiB,EAAI,EAAOjB,EAAJiB,EAAYA,IAC1B8F,EAAK9F,GAAKiL,EAAUjL,KAAOZ,EAAIC,UAAU6L,KAAcD,EAAUjL,EAEnE,MAAOkL,EAAW7L,UAAUN,QAAQ+G,EAAK5E,KAAK7B,UAAU6L,KACxD,OAAOV,GAAa/H,EAAMqI,EAAO1J,KAAMA,KAAM0E,GAE/C,OAAOgF,IAMT1L,EAAE+L,QAAU,SAASzM,GACnB,GAAIsB,GAA8B0D,EAA3B3E,EAASM,UAAUN,MAC1B,IAAc,GAAVA,EAAa,KAAM,IAAIqM,OAAM,wCACjC,KAAKpL,EAAI,EAAOjB,EAAJiB,EAAYA,IACtB0D,EAAMrE,UAAUW,GAChBtB,EAAIgF,GAAOtE,EAAE6C,KAAKvD,EAAIgF,GAAMhF,EAE9B,OAAOA,IAITU,EAAEiM,QAAU,SAAS5I,EAAM6I,GACzB,GAAID,GAAU,SAAS3H,GACrB,GAAI6H,GAAQF,EAAQE,MAChBC,EAAU,IAAMF,EAASA,EAAOvI,MAAM3B,KAAM/B,WAAaqE,EAE7D,OADKtE,GAAE4B,IAAIuK,EAAOC,KAAUD,EAAMC,GAAW/I,EAAKM,MAAM3B,KAAM/B,YACvDkM,EAAMC,GAGf,OADAH,GAAQE,SACDF,GAKTjM,EAAEqM,MAAQ,SAAShJ,EAAMiJ,GACvB,GAAI5F,GAAO1F,EAAMC,KAAKhB,UAAW,EACjC,OAAOsM,YAAW,WAChB,MAAOlJ,GAAKM,MAAM,KAAM+C,IACvB4F,IAKLtM,EAAEwM,MAAQxM,EAAE4L,QAAQ5L,EAAEqM,MAAOrM,EAAG,GAOhCA,EAAEyM,SAAW,SAASpJ,EAAMiJ,EAAMI,GAChC,GAAI7M,GAAS6G,EAAMlC,EACfmI,EAAU,KACVC,EAAW,CACVF,KAASA,KACd,IAAIG,GAAQ,WACVD,EAAWF,EAAQI,WAAY,EAAQ,EAAI9M,EAAE+M,MAC7CJ,EAAU,KACVnI,EAASnB,EAAKM,MAAM9D,EAAS6G,GACxBiG,IAAS9M,EAAU6G,EAAO,MAEjC,OAAO,YACL,GAAIqG,GAAM/M,EAAE+M,KACPH,IAAYF,EAAQI,WAAY,IAAOF,EAAWG,EACvD,IAAIC,GAAYV,GAAQS,EAAMH,EAc9B,OAbA/M,GAAUmC,KACV0E,EAAOzG,UACU,GAAb+M,GAAkBA,EAAYV,GAC5BK,IACFM,aAAaN,GACbA,EAAU,MAEZC,EAAWG,EACXvI,EAASnB,EAAKM,MAAM9D,EAAS6G,GACxBiG,IAAS9M,EAAU6G,EAAO,OACrBiG,GAAWD,EAAQQ,YAAa,IAC1CP,EAAUJ,WAAWM,EAAOG,IAEvBxI,IAQXxE,EAAEmN,SAAW,SAAS9J,EAAMiJ,EAAMc,GAChC,GAAIT,GAASjG,EAAM7G,EAASwN,EAAW7I,EAEnCqI,EAAQ,WACV,GAAI/D,GAAO9I,EAAE+M,MAAQM,CAEVf,GAAPxD,GAAeA,GAAQ,EACzB6D,EAAUJ,WAAWM,EAAOP,EAAOxD,IAEnC6D,EAAU,KACLS,IACH5I,EAASnB,EAAKM,MAAM9D,EAAS6G,GACxBiG,IAAS9M,EAAU6G,EAAO,QAKrC,OAAO,YACL7G,EAAUmC,KACV0E,EAAOzG,UACPoN,EAAYrN,EAAE+M,KACd,IAAIO,GAAUF,IAAcT,CAO5B,OANKA,KAASA,EAAUJ,WAAWM,EAAOP,IACtCgB,IACF9I,EAASnB,EAAKM,MAAM9D,EAAS6G,GAC7B7G,EAAU6G,EAAO,MAGZlC,IAOXxE,EAAEuN,KAAO,SAASlK,EAAMmK,GACtB,MAAOxN,GAAE4L,QAAQ4B,EAASnK,IAI5BrD,EAAE6F,OAAS,SAASzF,GAClB,MAAO,YACL,OAAQA,EAAUuD,MAAM3B,KAAM/B,aAMlCD,EAAEyN,QAAU,WACV,GAAI/G,GAAOzG,UACP+K,EAAQtE,EAAK/G,OAAS,CAC1B,OAAO,YAGL,IAFA,GAAIiB,GAAIoK,EACJxG,EAASkC,EAAKsE,GAAOrH,MAAM3B,KAAM/B,WAC9BW,KAAK4D,EAASkC,EAAK9F,GAAGK,KAAKe,KAAMwC,EACxC,OAAOA,KAKXxE,EAAE0N,MAAQ,SAASC,EAAOtK,GACxB,MAAO,YACL,QAAMsK,EAAQ,EACLtK,EAAKM,MAAM3B,KAAM/B,WAD1B,SAOJD,EAAE4N,OAAS,SAASD,EAAOtK,GACzB,GAAI7D,EACJ,OAAO,YAKL,QAJMmO,EAAQ,IACZnO,EAAO6D,EAAKM,MAAM3B,KAAM/B,YAEb,GAAT0N,IAAYtK,EAAO,MAChB7D,IAMXQ,EAAE6N,KAAO7N,EAAE4L,QAAQ5L,EAAE4N,OAAQ,EAM7B,IAAIE,KAAevL,SAAU,MAAMwL,qBAAqB,YACpD1M,GAAsB,UAAW,gBAAiB,WAClC,uBAAwB,iBAAkB,iBAqB9DrB,GAAEP,KAAO,SAASH,GAChB,IAAKU,EAAE6D,SAASvE,GAAM,QACtB,IAAIqD,EAAY,MAAOA,GAAWrD,EAClC,IAAIG,KACJ,KAAK,GAAI6E,KAAOhF,GAASU,EAAE4B,IAAItC,EAAKgF,IAAM7E,EAAKqC,KAAKwC,EAGpD,OADIwJ,IAAY3M,EAAoB7B,EAAKG,GAClCA,GAITO,EAAEgO,QAAU,SAAS1O,GACnB,IAAKU,EAAE6D,SAASvE,GAAM,QACtB,IAAIG,KACJ,KAAK,GAAI6E,KAAOhF,GAAKG,EAAKqC,KAAKwC,EAG/B,OADIwJ,IAAY3M,EAAoB7B,EAAKG,GAClCA,GAITO,EAAEsG,OAAS,SAAShH,GAIlB,IAAK,GAHDG,GAAOO,EAAEP,KAAKH,GACdK,EAASF,EAAKE,OACd2G,EAASnE,MAAMxC,GACViB,EAAI,EAAOjB,EAAJiB,EAAYA,IAC1B0F,EAAO1F,GAAKtB,EAAIG,EAAKmB,GAEvB,OAAO0F,IAKTtG,EAAEiO,UAAY,SAAS3O,EAAKC,EAAUM,GACpCN,EAAWc,EAAGd,EAAUM,EAKtB,KAAK,GADDD,GAHFH,EAAQO,EAAEP,KAAKH,GACbK,EAASF,EAAKE,OACdoF,KAEKrF,EAAQ,EAAWC,EAARD,EAAgBA,IAClCE,EAAaH,EAAKC,GAClBqF,EAAQnF,GAAcL,EAASD,EAAIM,GAAaA,EAAYN,EAE9D,OAAOyF,IAIX/E,EAAEkO,MAAQ,SAAS5O,GAIjB,IAAK,GAHDG,GAAOO,EAAEP,KAAKH,GACdK,EAASF,EAAKE,OACduO,EAAQ/L,MAAMxC,GACTiB,EAAI,EAAOjB,EAAJiB,EAAYA,IAC1BsN,EAAMtN,IAAMnB,EAAKmB,GAAItB,EAAIG,EAAKmB,IAEhC,OAAOsN,IAITlO,EAAEmO,OAAS,SAAS7O,GAGlB,IAAK,GAFDkF,MACA/E,EAAOO,EAAEP,KAAKH,GACTsB,EAAI,EAAGjB,EAASF,EAAKE,OAAYA,EAAJiB,EAAYA,IAChD4D,EAAOlF,EAAIG,EAAKmB,KAAOnB,EAAKmB,EAE9B,OAAO4D,IAKTxE,EAAEoO,UAAYpO,EAAEqO,QAAU,SAAS/O,GACjC,GAAIgP,KACJ,KAAK,GAAIhK,KAAOhF,GACVU,EAAEwB,WAAWlC,EAAIgF,KAAOgK,EAAMxM,KAAKwC,EAEzC,OAAOgK,GAAM3G,QAIf3H,EAAEuO,OAAStK,EAAejE,EAAEgO,SAI5BhO,EAAEwO,UAAYxO,EAAEyO,OAASxK,EAAejE,EAAEP,MAG1CO,EAAEwF,QAAU,SAASlG,EAAKc,EAAWP,GACnCO,EAAYC,EAAGD,EAAWP,EAE1B,KAAK,GADmByE,GAApB7E,EAAOO,EAAEP,KAAKH,GACTsB,EAAI,EAAGjB,EAASF,EAAKE,OAAYA,EAAJiB,EAAYA,IAEhD,GADA0D,EAAM7E,EAAKmB,GACPR,EAAUd,EAAIgF,GAAMA,EAAKhF,GAAM,MAAOgF,IAK9CtE,EAAE0O,KAAO,SAASlE,EAAQmE,EAAW9O,GACnC,GAA+BN,GAAUE,EAArC+E,KAAalF,EAAMkL,CACvB,IAAW,MAAPlL,EAAa,MAAOkF,EACpBxE,GAAEwB,WAAWmN,IACflP,EAAOO,EAAEgO,QAAQ1O,GACjBC,EAAWO,EAAW6O,EAAW9O,KAEjCJ,EAAO0J,EAAQlJ,WAAW,GAAO,EAAO,GACxCV,EAAW,SAASgE,EAAOe,EAAKhF,GAAO,MAAOgF,KAAOhF,IACrDA,EAAM8C,OAAO9C,GAEf,KAAK,GAAIsB,GAAI,EAAGjB,EAASF,EAAKE,OAAYA,EAAJiB,EAAYA,IAAK,CACrD,GAAI0D,GAAM7E,EAAKmB,GACX2C,EAAQjE,EAAIgF,EACZ/E,GAASgE,EAAOe,EAAKhF,KAAMkF,EAAOF,GAAOf,GAE/C,MAAOiB,IAITxE,EAAE4O,KAAO,SAAStP,EAAKC,EAAUM,GAC/B,GAAIG,EAAEwB,WAAWjC,GACfA,EAAWS,EAAE6F,OAAOtG,OACf,CACL,GAAIE,GAAOO,EAAE6E,IAAIsE,EAAQlJ,WAAW,GAAO,EAAO,GAAI4O,OACtDtP,GAAW,SAASgE,EAAOe,GACzB,OAAQtE,EAAE6B,SAASpC,EAAM6E,IAG7B,MAAOtE,GAAE0O,KAAKpP,EAAKC,EAAUM,IAI/BG,EAAE8O,SAAW7K,EAAejE,EAAEgO,SAAS,GAKvChO,EAAE+C,OAAS,SAAStB,EAAWsN,GAC7B,GAAIvK,GAASD,EAAW9C,EAExB,OADIsN,IAAO/O,EAAEwO,UAAUhK,EAAQuK,GACxBvK,GAITxE,EAAEgP,MAAQ,SAAS1P,GACjB,MAAKU,GAAE6D,SAASvE,GACTU,EAAE0C,QAAQpD,GAAOA,EAAI0B,QAAUhB,EAAEuO,UAAWjP,GADtBA,GAO/BU,EAAEiP,IAAM,SAAS3P,EAAK4P,GAEpB,MADAA,GAAY5P,GACLA,GAITU,EAAEmP,QAAU,SAAS3E,EAAQ1D,GAC3B,GAAIrH,GAAOO,EAAEP,KAAKqH,GAAQnH,EAASF,EAAKE,MACxC,IAAc,MAAV6K,EAAgB,OAAQ7K,CAE5B,KAAK,GADDL,GAAM8C,OAAOoI,GACR5J,EAAI,EAAOjB,EAAJiB,EAAYA,IAAK,CAC/B,GAAI0D,GAAM7E,EAAKmB,EACf,IAAIkG,EAAMxC,KAAShF,EAAIgF,MAAUA,IAAOhF,IAAM,OAAO,EAEvD,OAAO,EAKT,IAAI8P,GAAK,SAAStH,EAAGC,EAAGsH,EAAQC,GAG9B,GAAIxH,IAAMC,EAAG,MAAa,KAAND,GAAW,EAAIA,IAAM,EAAIC,CAE7C,IAAS,MAALD,GAAkB,MAALC,EAAW,MAAOD,KAAMC,CAErCD,aAAa9H,KAAG8H,EAAIA,EAAE7E,UACtB8E,YAAa/H,KAAG+H,EAAIA,EAAE9E,SAE1B,IAAIsM,GAAYhN,EAAStB,KAAK6G,EAC9B,IAAIyH,IAAchN,EAAStB,KAAK8G,GAAI,OAAO,CAC3C,QAAQwH,GAEN,IAAK,kBAEL,IAAK,kBAGH,MAAO,GAAKzH,GAAM,GAAKC,CACzB,KAAK,kBAGH,OAAKD,KAAOA,GAAWC,KAAOA,EAEhB,KAAND,EAAU,GAAKA,IAAM,EAAIC,GAAKD,KAAOC,CAC/C,KAAK,gBACL,IAAK,mBAIH,OAAQD,KAAOC,EAGnB,GAAIyH,GAA0B,mBAAdD,CAChB,KAAKC,EAAW,CACd,GAAgB,gBAAL1H,IAA6B,gBAALC,GAAe,OAAO,CAIzD,IAAI0H,GAAQ3H,EAAExG,YAAaoO,EAAQ3H,EAAEzG,WACrC,IAAImO,IAAUC,KAAW1P,EAAEwB,WAAWiO,IAAUA,YAAiBA,IACxCzP,EAAEwB,WAAWkO,IAAUA,YAAiBA,KACzC,eAAiB5H,IAAK,eAAiBC,GAC7D,OAAO,EAQXsH,EAASA,MACTC,EAASA,KAET,KADA,GAAI3P,GAAS0P,EAAO1P,OACbA,KAGL,GAAI0P,EAAO1P,KAAYmI,EAAG,MAAOwH,GAAO3P,KAAYoI,CAQtD,IAJAsH,EAAOvN,KAAKgG,GACZwH,EAAOxN,KAAKiG,GAGRyH,EAAW,CAGb,GADA7P,EAASmI,EAAEnI,OACPA,IAAWoI,EAAEpI,OAAQ,OAAO,CAEhC,MAAOA,KACL,IAAKyP,EAAGtH,EAAEnI,GAASoI,EAAEpI,GAAS0P,EAAQC,GAAS,OAAO,MAEnD,CAEL,GAAsBhL,GAAlB7E,EAAOO,EAAEP,KAAKqI,EAGlB,IAFAnI,EAASF,EAAKE,OAEVK,EAAEP,KAAKsI,GAAGpI,SAAWA,EAAQ,OAAO,CACxC,MAAOA,KAGL,GADA2E,EAAM7E,EAAKE,IACLK,EAAE4B,IAAImG,EAAGzD,KAAQ8K,EAAGtH,EAAExD,GAAMyD,EAAEzD,GAAM+K,EAAQC,GAAU,OAAO,EAMvE,MAFAD,GAAOM,MACPL,EAAOK,OACA,EAIT3P,GAAE4P,QAAU,SAAS9H,EAAGC,GACtB,MAAOqH,GAAGtH,EAAGC,IAKf/H,EAAE6P,QAAU,SAASvQ,GACnB,MAAW,OAAPA,GAAoB,EACpBS,EAAYT,KAASU,EAAE0C,QAAQpD,IAAQU,EAAE8P,SAASxQ,IAAQU,EAAEyJ,YAAYnK,IAA6B,IAAfA,EAAIK,OAChE,IAAvBK,EAAEP,KAAKH,GAAKK,QAIrBK,EAAE+P,UAAY,SAASzQ,GACrB,SAAUA,GAAwB,IAAjBA,EAAI0Q,WAKvBhQ,EAAE0C,QAAUD,GAAiB,SAASnD,GACpC,MAA8B,mBAAvBiD,EAAStB,KAAK3B,IAIvBU,EAAE6D,SAAW,SAASvE,GACpB,GAAI2Q,SAAc3Q,EAClB,OAAgB,aAAT2Q,GAAgC,WAATA,KAAuB3Q,GAIvDU,EAAE2E,MAAM,YAAa,WAAY,SAAU,SAAU,OAAQ,SAAU,SAAU,SAASuL,GACxFlQ,EAAE,KAAOkQ,GAAQ,SAAS5Q,GACxB,MAAOiD,GAAStB,KAAK3B,KAAS,WAAa4Q,EAAO,OAMjDlQ,EAAEyJ,YAAYxJ,aACjBD,EAAEyJ,YAAc,SAASnK,GACvB,MAAOU,GAAE4B,IAAItC,EAAK,YAMJ,kBAAP,KAAyC,gBAAb6Q,aACrCnQ,EAAEwB,WAAa,SAASlC,GACtB,MAAqB,kBAAPA,KAAqB,IAKvCU,EAAEoQ,SAAW,SAAS9Q,GACpB,MAAO8Q,UAAS9Q,KAAS4B,MAAMmP,WAAW/Q,KAI5CU,EAAEkB,MAAQ,SAAS5B,GACjB,MAAOU,GAAEsQ,SAAShR,IAAQA,KAASA,GAIrCU,EAAEiK,UAAY,SAAS3K,GACrB,MAAOA,MAAQ,GAAQA,KAAQ,GAAgC,qBAAvBiD,EAAStB,KAAK3B,IAIxDU,EAAEuQ,OAAS,SAASjR,GAClB,MAAe,QAARA,GAITU,EAAEwQ,YAAc,SAASlR,GACvB,MAAOA,SAAa,IAKtBU,EAAE4B,IAAM,SAAStC,EAAKgF,GACpB,MAAc,OAAPhF,GAAekD,EAAevB,KAAK3B,EAAKgF,IAQjDtE,EAAEyQ,WAAa,WAEb,MADA1O,GAAK/B,EAAIiC,EACFD,MAIThC,EAAE4D,SAAW,SAASL,GACpB,MAAOA,IAITvD,EAAE0Q,SAAW,SAASnN,GACpB,MAAO,YACL,MAAOA,KAIXvD,EAAE2Q,KAAO,aAET3Q,EAAE+D,SAAWA,EAGb/D,EAAE4Q,WAAa,SAAStR,GACtB,MAAc,OAAPA,EAAc,aAAe,SAASgF,GAC3C,MAAOhF,GAAIgF,KAMftE,EAAE8D,QAAU9D,EAAE6Q,QAAU,SAAS/J,GAE/B,MADAA,GAAQ9G,EAAEwO,aAAc1H,GACjB,SAASxH,GACd,MAAOU,GAAEmP,QAAQ7P,EAAKwH,KAK1B9G,EAAE2N,MAAQ,SAASnG,EAAGjI,EAAUM,GAC9B,GAAIiR,GAAQ3O,MAAMtB,KAAKC,IAAI,EAAG0G,GAC9BjI,GAAWO,EAAWP,EAAUM,EAAS,EACzC,KAAK,GAAIe,GAAI,EAAO4G,EAAJ5G,EAAOA,IAAKkQ,EAAMlQ,GAAKrB,EAASqB,EAChD,OAAOkQ,IAIT9Q,EAAEsH,OAAS,SAASvG,EAAKD,GAKvB,MAJW,OAAPA,IACFA,EAAMC,EACNA,EAAM,GAEDA,EAAMF,KAAKgK,MAAMhK,KAAKyG,UAAYxG,EAAMC,EAAM,KAIvDf,EAAE+M,IAAMgE,KAAKhE,KAAO,WAClB,OAAO,GAAIgE,OAAOC,UAIpB,IAAIC,IACFC,IAAK,QACLC,IAAK,OACLC,IAAK,OACLC,IAAK,SACLC,IAAK,SACLC,IAAK,UAEHC,EAAcxR,EAAEmO,OAAO8C,GAGvBQ,EAAgB,SAAS5M,GAC3B,GAAI6M,GAAU,SAASC,GACrB,MAAO9M,GAAI8M,IAGTvN,EAAS,MAAQpE,EAAEP,KAAKoF,GAAK+M,KAAK,KAAO,IACzCC,EAAaC,OAAO1N,GACpB2N,EAAgBD,OAAO1N,EAAQ,IACnC,OAAO,UAAS4N,GAEd,MADAA,GAAmB,MAAVA,EAAiB,GAAK,GAAKA,EAC7BH,EAAWI,KAAKD,GAAUA,EAAOE,QAAQH,EAAeL,GAAWM,GAG9EhS,GAAEmS,OAASV,EAAcR,GACzBjR,EAAEoS,SAAWX,EAAcD,GAI3BxR,EAAEwE,OAAS,SAASgG,EAAQzG,EAAUsO,GACpC,GAAI9O,GAAkB,MAAViH,MAAsB,GAAIA,EAAOzG,EAI7C,OAHIR,SAAe,KACjBA,EAAQ8O,GAEHrS,EAAEwB,WAAW+B,GAASA,EAAMtC,KAAKuJ,GAAUjH,EAKpD,IAAI+O,GAAY,CAChBtS,GAAEuS,SAAW,SAASC,GACpB,GAAIC,KAAOH,EAAY,EACvB,OAAOE,GAASA,EAASC,EAAKA,GAKhCzS,EAAE0S,kBACAC,SAAc,kBACdC,YAAc,mBACdT,OAAc,mBAMhB,IAAIU,GAAU,OAIVC,GACFxB,IAAU,IACVyB,KAAU,KACVC,KAAU,IACVC,KAAU,IACVC,SAAU,QACVC,SAAU,SAGRzB,EAAU,4BAEV0B,EAAa,SAASzB,GACxB,MAAO,KAAOmB,EAAQnB,GAOxB3R,GAAEqT,SAAW,SAASC,EAAMC,EAAUC,IAC/BD,GAAYC,IAAaD,EAAWC,GACzCD,EAAWvT,EAAE8O,YAAayE,EAAUvT,EAAE0S,iBAGtC,IAAI5O,GAAUgO,SACXyB,EAASpB,QAAUU,GAASzO,QAC5BmP,EAASX,aAAeC,GAASzO,QACjCmP,EAASZ,UAAYE,GAASzO,QAC/BwN,KAAK,KAAO,KAAM,KAGhBlS,EAAQ,EACR0E,EAAS,QACbkP,GAAKpB,QAAQpO,EAAS,SAAS6N,EAAOQ,EAAQS,EAAaD,EAAUc,GAanE,MAZArP,IAAUkP,EAAKtS,MAAMtB,EAAO+T,GAAQvB,QAAQR,EAAS0B,GACrD1T,EAAQ+T,EAAS9B,EAAMhS,OAEnBwS,EACF/N,GAAU,cAAgB+N,EAAS,iCAC1BS,EACTxO,GAAU,cAAgBwO,EAAc,uBAC/BD,IACTvO,GAAU,OAASuO,EAAW,YAIzBhB,IAETvN,GAAU,OAGLmP,EAASG,WAAUtP,EAAS,mBAAqBA,EAAS,OAE/DA,EAAS,2CACP,oDACAA,EAAS,eAEX,KACE,GAAIuP,GAAS,GAAIrR,UAASiR,EAASG,UAAY,MAAO,IAAKtP,GAC3D,MAAOwP,GAEP,KADAA,GAAExP,OAASA,EACLwP,EAGR,GAAIP,GAAW,SAASQ,GACtB,MAAOF,GAAO1S,KAAKe,KAAM6R,EAAM7T,IAI7B8T,EAAWP,EAASG,UAAY,KAGpC,OAFAL,GAASjP,OAAS,YAAc0P,EAAW,OAAS1P,EAAS,IAEtDiP,GAITrT,EAAE+T,MAAQ,SAASzU,GACjB,GAAI0U,GAAWhU,EAAEV,EAEjB,OADA0U,GAASC,QAAS,EACXD,EAUT,IAAIxP,GAAS,SAASwP,EAAU1U,GAC9B,MAAO0U,GAASC,OAASjU,EAAEV,GAAKyU,QAAUzU,EAI5CU,GAAEkU,MAAQ,SAAS5U,GACjBU,EAAE2E,KAAK3E,EAAEoO,UAAU9O,GAAM,SAAS4Q,GAChC,GAAI7M,GAAOrD,EAAEkQ,GAAQ5Q,EAAI4Q,EACzBlQ,GAAEyB,UAAUyO,GAAQ,WAClB,GAAIxJ,IAAQ1E,KAAKiB,SAEjB,OADAnB,GAAK6B,MAAM+C,EAAMzG,WACVuE,EAAOxC,KAAMqB,EAAKM,MAAM3D,EAAG0G,QAMxC1G,EAAEkU,MAAMlU,GAGRA,EAAE2E,MAAM,MAAO,OAAQ,UAAW,QAAS,OAAQ,SAAU,WAAY,SAASuL,GAChF,GAAIzJ,GAASvE,EAAWgO,EACxBlQ,GAAEyB,UAAUyO,GAAQ,WAClB,GAAI5Q,GAAM0C,KAAKiB,QAGf,OAFAwD,GAAO9C,MAAMrE,EAAKW,WACJ,UAATiQ,GAA6B,WAATA,GAAqC,IAAf5Q,EAAIK,cAAqBL,GAAI,GACrEkF,EAAOxC,KAAM1C,MAKxBU,EAAE2E,MAAM,SAAU,OAAQ,SAAU,SAASuL,GAC3C,GAAIzJ,GAASvE,EAAWgO,EACxBlQ,GAAEyB,UAAUyO,GAAQ,WAClB,MAAO1L,GAAOxC,KAAMyE,EAAO9C,MAAM3B,KAAKiB,SAAUhD,eAKpDD,EAAEyB,UAAU8B,MAAQ,WAClB,MAAOvB,MAAKiB,UAKdjD,EAAEyB,UAAU0S,QAAUnU,EAAEyB,UAAU2S,OAASpU,EAAEyB,UAAU8B,MAEvDvD,EAAEyB,UAAUc,SAAW,WACrB,MAAO,GAAKP,KAAKiB,UAUG,kBAAXoR,SAAyBA,OAAOC,KACzCD,OAAO,gBAAkB,WACvB,MAAOrU,OAGXiB,KAAKe"}
\ No newline at end of file
diff --git a/setup-maven/node_modules/underscore/underscore.js b/setup-maven/node_modules/underscore/underscore.js
new file mode 100644
index 0000000..b29332f
--- /dev/null
+++ b/setup-maven/node_modules/underscore/underscore.js
@@ -0,0 +1,1548 @@
+//     Underscore.js 1.8.3
+//     http://underscorejs.org
+//     (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+//     Underscore may be freely distributed under the MIT license.
+
+(function() {
+
+  // Baseline setup
+  // --------------
+
+  // Establish the root object, `window` in the browser, or `exports` on the server.
+  var root = this;
+
+  // Save the previous value of the `_` variable.
+  var previousUnderscore = root._;
+
+  // Save bytes in the minified (but not gzipped) version:
+  var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;
+
+  // Create quick reference variables for speed access to core prototypes.
+  var
+    push             = ArrayProto.push,
+    slice            = ArrayProto.slice,
+    toString         = ObjProto.toString,
+    hasOwnProperty   = ObjProto.hasOwnProperty;
+
+  // All **ECMAScript 5** native function implementations that we hope to use
+  // are declared here.
+  var
+    nativeIsArray      = Array.isArray,
+    nativeKeys         = Object.keys,
+    nativeBind         = FuncProto.bind,
+    nativeCreate       = Object.create;
+
+  // Naked function reference for surrogate-prototype-swapping.
+  var Ctor = function(){};
+
+  // Create a safe reference to the Underscore object for use below.
+  var _ = function(obj) {
+    if (obj instanceof _) return obj;
+    if (!(this instanceof _)) return new _(obj);
+    this._wrapped = obj;
+  };
+
+  // Export the Underscore object for **Node.js**, with
+  // backwards-compatibility for the old `require()` API. If we're in
+  // the browser, add `_` as a global object.
+  if (typeof exports !== 'undefined') {
+    if (typeof module !== 'undefined' && module.exports) {
+      exports = module.exports = _;
+    }
+    exports._ = _;
+  } else {
+    root._ = _;
+  }
+
+  // Current version.
+  _.VERSION = '1.8.3';
+
+  // Internal function that returns an efficient (for current engines) version
+  // of the passed-in callback, to be repeatedly applied in other Underscore
+  // functions.
+  var optimizeCb = function(func, context, argCount) {
+    if (context === void 0) return func;
+    switch (argCount == null ? 3 : argCount) {
+      case 1: return function(value) {
+        return func.call(context, value);
+      };
+      case 2: return function(value, other) {
+        return func.call(context, value, other);
+      };
+      case 3: return function(value, index, collection) {
+        return func.call(context, value, index, collection);
+      };
+      case 4: return function(accumulator, value, index, collection) {
+        return func.call(context, accumulator, value, index, collection);
+      };
+    }
+    return function() {
+      return func.apply(context, arguments);
+    };
+  };
+
+  // A mostly-internal function to generate callbacks that can be applied
+  // to each element in a collection, returning the desired result — either
+  // identity, an arbitrary callback, a property matcher, or a property accessor.
+  var cb = function(value, context, argCount) {
+    if (value == null) return _.identity;
+    if (_.isFunction(value)) return optimizeCb(value, context, argCount);
+    if (_.isObject(value)) return _.matcher(value);
+    return _.property(value);
+  };
+  _.iteratee = function(value, context) {
+    return cb(value, context, Infinity);
+  };
+
+  // An internal function for creating assigner functions.
+  var createAssigner = function(keysFunc, undefinedOnly) {
+    return function(obj) {
+      var length = arguments.length;
+      if (length < 2 || obj == null) return obj;
+      for (var index = 1; index < length; index++) {
+        var source = arguments[index],
+            keys = keysFunc(source),
+            l = keys.length;
+        for (var i = 0; i < l; i++) {
+          var key = keys[i];
+          if (!undefinedOnly || obj[key] === void 0) obj[key] = source[key];
+        }
+      }
+      return obj;
+    };
+  };
+
+  // An internal function for creating a new object that inherits from another.
+  var baseCreate = function(prototype) {
+    if (!_.isObject(prototype)) return {};
+    if (nativeCreate) return nativeCreate(prototype);
+    Ctor.prototype = prototype;
+    var result = new Ctor;
+    Ctor.prototype = null;
+    return result;
+  };
+
+  var property = function(key) {
+    return function(obj) {
+      return obj == null ? void 0 : obj[key];
+    };
+  };
+
+  // Helper for collection methods to determine whether a collection
+  // should be iterated as an array or as an object
+  // Related: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength
+  // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094
+  var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;
+  var getLength = property('length');
+  var isArrayLike = function(collection) {
+    var length = getLength(collection);
+    return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX;
+  };
+
+  // Collection Functions
+  // --------------------
+
+  // The cornerstone, an `each` implementation, aka `forEach`.
+  // Handles raw objects in addition to array-likes. Treats all
+  // sparse array-likes as if they were dense.
+  _.each = _.forEach = function(obj, iteratee, context) {
+    iteratee = optimizeCb(iteratee, context);
+    var i, length;
+    if (isArrayLike(obj)) {
+      for (i = 0, length = obj.length; i < length; i++) {
+        iteratee(obj[i], i, obj);
+      }
+    } else {
+      var keys = _.keys(obj);
+      for (i = 0, length = keys.length; i < length; i++) {
+        iteratee(obj[keys[i]], keys[i], obj);
+      }
+    }
+    return obj;
+  };
+
+  // Return the results of applying the iteratee to each element.
+  _.map = _.collect = function(obj, iteratee, context) {
+    iteratee = cb(iteratee, context);
+    var keys = !isArrayLike(obj) && _.keys(obj),
+        length = (keys || obj).length,
+        results = Array(length);
+    for (var index = 0; index < length; index++) {
+      var currentKey = keys ? keys[index] : index;
+      results[index] = iteratee(obj[currentKey], currentKey, obj);
+    }
+    return results;
+  };
+
+  // Create a reducing function iterating left or right.
+  function createReduce(dir) {
+    // Optimized iterator function as using arguments.length
+    // in the main function will deoptimize the, see #1991.
+    function iterator(obj, iteratee, memo, keys, index, length) {
+      for (; index >= 0 && index < length; index += dir) {
+        var currentKey = keys ? keys[index] : index;
+        memo = iteratee(memo, obj[currentKey], currentKey, obj);
+      }
+      return memo;
+    }
+
+    return function(obj, iteratee, memo, context) {
+      iteratee = optimizeCb(iteratee, context, 4);
+      var keys = !isArrayLike(obj) && _.keys(obj),
+          length = (keys || obj).length,
+          index = dir > 0 ? 0 : length - 1;
+      // Determine the initial value if none is provided.
+      if (arguments.length < 3) {
+        memo = obj[keys ? keys[index] : index];
+        index += dir;
+      }
+      return iterator(obj, iteratee, memo, keys, index, length);
+    };
+  }
+
+  // **Reduce** builds up a single result from a list of values, aka `inject`,
+  // or `foldl`.
+  _.reduce = _.foldl = _.inject = createReduce(1);
+
+  // The right-associative version of reduce, also known as `foldr`.
+  _.reduceRight = _.foldr = createReduce(-1);
+
+  // Return the first value which passes a truth test. Aliased as `detect`.
+  _.find = _.detect = function(obj, predicate, context) {
+    var key;
+    if (isArrayLike(obj)) {
+      key = _.findIndex(obj, predicate, context);
+    } else {
+      key = _.findKey(obj, predicate, context);
+    }
+    if (key !== void 0 && key !== -1) return obj[key];
+  };
+
+  // Return all the elements that pass a truth test.
+  // Aliased as `select`.
+  _.filter = _.select = function(obj, predicate, context) {
+    var results = [];
+    predicate = cb(predicate, context);
+    _.each(obj, function(value, index, list) {
+      if (predicate(value, index, list)) results.push(value);
+    });
+    return results;
+  };
+
+  // Return all the elements for which a truth test fails.
+  _.reject = function(obj, predicate, context) {
+    return _.filter(obj, _.negate(cb(predicate)), context);
+  };
+
+  // Determine whether all of the elements match a truth test.
+  // Aliased as `all`.
+  _.every = _.all = function(obj, predicate, context) {
+    predicate = cb(predicate, context);
+    var keys = !isArrayLike(obj) && _.keys(obj),
+        length = (keys || obj).length;
+    for (var index = 0; index < length; index++) {
+      var currentKey = keys ? keys[index] : index;
+      if (!predicate(obj[currentKey], currentKey, obj)) return false;
+    }
+    return true;
+  };
+
+  // Determine if at least one element in the object matches a truth test.
+  // Aliased as `any`.
+  _.some = _.any = function(obj, predicate, context) {
+    predicate = cb(predicate, context);
+    var keys = !isArrayLike(obj) && _.keys(obj),
+        length = (keys || obj).length;
+    for (var index = 0; index < length; index++) {
+      var currentKey = keys ? keys[index] : index;
+      if (predicate(obj[currentKey], currentKey, obj)) return true;
+    }
+    return false;
+  };
+
+  // Determine if the array or object contains a given item (using `===`).
+  // Aliased as `includes` and `include`.
+  _.contains = _.includes = _.include = function(obj, item, fromIndex, guard) {
+    if (!isArrayLike(obj)) obj = _.values(obj);
+    if (typeof fromIndex != 'number' || guard) fromIndex = 0;
+    return _.indexOf(obj, item, fromIndex) >= 0;
+  };
+
+  // Invoke a method (with arguments) on every item in a collection.
+  _.invoke = function(obj, method) {
+    var args = slice.call(arguments, 2);
+    var isFunc = _.isFunction(method);
+    return _.map(obj, function(value) {
+      var func = isFunc ? method : value[method];
+      return func == null ? func : func.apply(value, args);
+    });
+  };
+
+  // Convenience version of a common use case of `map`: fetching a property.
+  _.pluck = function(obj, key) {
+    return _.map(obj, _.property(key));
+  };
+
+  // Convenience version of a common use case of `filter`: selecting only objects
+  // containing specific `key:value` pairs.
+  _.where = function(obj, attrs) {
+    return _.filter(obj, _.matcher(attrs));
+  };
+
+  // Convenience version of a common use case of `find`: getting the first object
+  // containing specific `key:value` pairs.
+  _.findWhere = function(obj, attrs) {
+    return _.find(obj, _.matcher(attrs));
+  };
+
+  // Return the maximum element (or element-based computation).
+  _.max = function(obj, iteratee, context) {
+    var result = -Infinity, lastComputed = -Infinity,
+        value, computed;
+    if (iteratee == null && obj != null) {
+      obj = isArrayLike(obj) ? obj : _.values(obj);
+      for (var i = 0, length = obj.length; i < length; i++) {
+        value = obj[i];
+        if (value > result) {
+          result = value;
+        }
+      }
+    } else {
+      iteratee = cb(iteratee, context);
+      _.each(obj, function(value, index, list) {
+        computed = iteratee(value, index, list);
+        if (computed > lastComputed || computed === -Infinity && result === -Infinity) {
+          result = value;
+          lastComputed = computed;
+        }
+      });
+    }
+    return result;
+  };
+
+  // Return the minimum element (or element-based computation).
+  _.min = function(obj, iteratee, context) {
+    var result = Infinity, lastComputed = Infinity,
+        value, computed;
+    if (iteratee == null && obj != null) {
+      obj = isArrayLike(obj) ? obj : _.values(obj);
+      for (var i = 0, length = obj.length; i < length; i++) {
+        value = obj[i];
+        if (value < result) {
+          result = value;
+        }
+      }
+    } else {
+      iteratee = cb(iteratee, context);
+      _.each(obj, function(value, index, list) {
+        computed = iteratee(value, index, list);
+        if (computed < lastComputed || computed === Infinity && result === Infinity) {
+          result = value;
+          lastComputed = computed;
+        }
+      });
+    }
+    return result;
+  };
+
+  // Shuffle a collection, using the modern version of the
+  // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle).
+  _.shuffle = function(obj) {
+    var set = isArrayLike(obj) ? obj : _.values(obj);
+    var length = set.length;
+    var shuffled = Array(length);
+    for (var index = 0, rand; index < length; index++) {
+      rand = _.random(0, index);
+      if (rand !== index) shuffled[index] = shuffled[rand];
+      shuffled[rand] = set[index];
+    }
+    return shuffled;
+  };
+
+  // Sample **n** random values from a collection.
+  // If **n** is not specified, returns a single random element.
+  // The internal `guard` argument allows it to work with `map`.
+  _.sample = function(obj, n, guard) {
+    if (n == null || guard) {
+      if (!isArrayLike(obj)) obj = _.values(obj);
+      return obj[_.random(obj.length - 1)];
+    }
+    return _.shuffle(obj).slice(0, Math.max(0, n));
+  };
+
+  // Sort the object's values by a criterion produced by an iteratee.
+  _.sortBy = function(obj, iteratee, context) {
+    iteratee = cb(iteratee, context);
+    return _.pluck(_.map(obj, function(value, index, list) {
+      return {
+        value: value,
+        index: index,
+        criteria: iteratee(value, index, list)
+      };
+    }).sort(function(left, right) {
+      var a = left.criteria;
+      var b = right.criteria;
+      if (a !== b) {
+        if (a > b || a === void 0) return 1;
+        if (a < b || b === void 0) return -1;
+      }
+      return left.index - right.index;
+    }), 'value');
+  };
+
+  // An internal function used for aggregate "group by" operations.
+  var group = function(behavior) {
+    return function(obj, iteratee, context) {
+      var result = {};
+      iteratee = cb(iteratee, context);
+      _.each(obj, function(value, index) {
+        var key = iteratee(value, index, obj);
+        behavior(result, value, key);
+      });
+      return result;
+    };
+  };
+
+  // Groups the object's values by a criterion. Pass either a string attribute
+  // to group by, or a function that returns the criterion.
+  _.groupBy = group(function(result, value, key) {
+    if (_.has(result, key)) result[key].push(value); else result[key] = [value];
+  });
+
+  // Indexes the object's values by a criterion, similar to `groupBy`, but for
+  // when you know that your index values will be unique.
+  _.indexBy = group(function(result, value, key) {
+    result[key] = value;
+  });
+
+  // Counts instances of an object that group by a certain criterion. Pass
+  // either a string attribute to count by, or a function that returns the
+  // criterion.
+  _.countBy = group(function(result, value, key) {
+    if (_.has(result, key)) result[key]++; else result[key] = 1;
+  });
+
+  // Safely create a real, live array from anything iterable.
+  _.toArray = function(obj) {
+    if (!obj) return [];
+    if (_.isArray(obj)) return slice.call(obj);
+    if (isArrayLike(obj)) return _.map(obj, _.identity);
+    return _.values(obj);
+  };
+
+  // Return the number of elements in an object.
+  _.size = function(obj) {
+    if (obj == null) return 0;
+    return isArrayLike(obj) ? obj.length : _.keys(obj).length;
+  };
+
+  // Split a collection into two arrays: one whose elements all satisfy the given
+  // predicate, and one whose elements all do not satisfy the predicate.
+  _.partition = function(obj, predicate, context) {
+    predicate = cb(predicate, context);
+    var pass = [], fail = [];
+    _.each(obj, function(value, key, obj) {
+      (predicate(value, key, obj) ? pass : fail).push(value);
+    });
+    return [pass, fail];
+  };
+
+  // Array Functions
+  // ---------------
+
+  // Get the first element of an array. Passing **n** will return the first N
+  // values in the array. Aliased as `head` and `take`. The **guard** check
+  // allows it to work with `_.map`.
+  _.first = _.head = _.take = function(array, n, guard) {
+    if (array == null) return void 0;
+    if (n == null || guard) return array[0];
+    return _.initial(array, array.length - n);
+  };
+
+  // Returns everything but the last entry of the array. Especially useful on
+  // the arguments object. Passing **n** will return all the values in
+  // the array, excluding the last N.
+  _.initial = function(array, n, guard) {
+    return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));
+  };
+
+  // Get the last element of an array. Passing **n** will return the last N
+  // values in the array.
+  _.last = function(array, n, guard) {
+    if (array == null) return void 0;
+    if (n == null || guard) return array[array.length - 1];
+    return _.rest(array, Math.max(0, array.length - n));
+  };
+
+  // Returns everything but the first entry of the array. Aliased as `tail` and `drop`.
+  // Especially useful on the arguments object. Passing an **n** will return
+  // the rest N values in the array.
+  _.rest = _.tail = _.drop = function(array, n, guard) {
+    return slice.call(array, n == null || guard ? 1 : n);
+  };
+
+  // Trim out all falsy values from an array.
+  _.compact = function(array) {
+    return _.filter(array, _.identity);
+  };
+
+  // Internal implementation of a recursive `flatten` function.
+  var flatten = function(input, shallow, strict, startIndex) {
+    var output = [], idx = 0;
+    for (var i = startIndex || 0, length = getLength(input); i < length; i++) {
+      var value = input[i];
+      if (isArrayLike(value) && (_.isArray(value) || _.isArguments(value))) {
+        //flatten current level of array or arguments object
+        if (!shallow) value = flatten(value, shallow, strict);
+        var j = 0, len = value.length;
+        output.length += len;
+        while (j < len) {
+          output[idx++] = value[j++];
+        }
+      } else if (!strict) {
+        output[idx++] = value;
+      }
+    }
+    return output;
+  };
+
+  // Flatten out an array, either recursively (by default), or just one level.
+  _.flatten = function(array, shallow) {
+    return flatten(array, shallow, false);
+  };
+
+  // Return a version of the array that does not contain the specified value(s).
+  _.without = function(array) {
+    return _.difference(array, slice.call(arguments, 1));
+  };
+
+  // Produce a duplicate-free version of the array. If the array has already
+  // been sorted, you have the option of using a faster algorithm.
+  // Aliased as `unique`.
+  _.uniq = _.unique = function(array, isSorted, iteratee, context) {
+    if (!_.isBoolean(isSorted)) {
+      context = iteratee;
+      iteratee = isSorted;
+      isSorted = false;
+    }
+    if (iteratee != null) iteratee = cb(iteratee, context);
+    var result = [];
+    var seen = [];
+    for (var i = 0, length = getLength(array); i < length; i++) {
+      var value = array[i],
+          computed = iteratee ? iteratee(value, i, array) : value;
+      if (isSorted) {
+        if (!i || seen !== computed) result.push(value);
+        seen = computed;
+      } else if (iteratee) {
+        if (!_.contains(seen, computed)) {
+          seen.push(computed);
+          result.push(value);
+        }
+      } else if (!_.contains(result, value)) {
+        result.push(value);
+      }
+    }
+    return result;
+  };
+
+  // Produce an array that contains the union: each distinct element from all of
+  // the passed-in arrays.
+  _.union = function() {
+    return _.uniq(flatten(arguments, true, true));
+  };
+
+  // Produce an array that contains every item shared between all the
+  // passed-in arrays.
+  _.intersection = function(array) {
+    var result = [];
+    var argsLength = arguments.length;
+    for (var i = 0, length = getLength(array); i < length; i++) {
+      var item = array[i];
+      if (_.contains(result, item)) continue;
+      for (var j = 1; j < argsLength; j++) {
+        if (!_.contains(arguments[j], item)) break;
+      }
+      if (j === argsLength) result.push(item);
+    }
+    return result;
+  };
+
+  // Take the difference between one array and a number of other arrays.
+  // Only the elements present in just the first array will remain.
+  _.difference = function(array) {
+    var rest = flatten(arguments, true, true, 1);
+    return _.filter(array, function(value){
+      return !_.contains(rest, value);
+    });
+  };
+
+  // Zip together multiple lists into a single array -- elements that share
+  // an index go together.
+  _.zip = function() {
+    return _.unzip(arguments);
+  };
+
+  // Complement of _.zip. Unzip accepts an array of arrays and groups
+  // each array's elements on shared indices
+  _.unzip = function(array) {
+    var length = array && _.max(array, getLength).length || 0;
+    var result = Array(length);
+
+    for (var index = 0; index < length; index++) {
+      result[index] = _.pluck(array, index);
+    }
+    return result;
+  };
+
+  // Converts lists into objects. Pass either a single array of `[key, value]`
+  // pairs, or two parallel arrays of the same length -- one of keys, and one of
+  // the corresponding values.
+  _.object = function(list, values) {
+    var result = {};
+    for (var i = 0, length = getLength(list); i < length; i++) {
+      if (values) {
+        result[list[i]] = values[i];
+      } else {
+        result[list[i][0]] = list[i][1];
+      }
+    }
+    return result;
+  };
+
+  // Generator function to create the findIndex and findLastIndex functions
+  function createPredicateIndexFinder(dir) {
+    return function(array, predicate, context) {
+      predicate = cb(predicate, context);
+      var length = getLength(array);
+      var index = dir > 0 ? 0 : length - 1;
+      for (; index >= 0 && index < length; index += dir) {
+        if (predicate(array[index], index, array)) return index;
+      }
+      return -1;
+    };
+  }
+
+  // Returns the first index on an array-like that passes a predicate test
+  _.findIndex = createPredicateIndexFinder(1);
+  _.findLastIndex = createPredicateIndexFinder(-1);
+
+  // Use a comparator function to figure out the smallest index at which
+  // an object should be inserted so as to maintain order. Uses binary search.
+  _.sortedIndex = function(array, obj, iteratee, context) {
+    iteratee = cb(iteratee, context, 1);
+    var value = iteratee(obj);
+    var low = 0, high = getLength(array);
+    while (low < high) {
+      var mid = Math.floor((low + high) / 2);
+      if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;
+    }
+    return low;
+  };
+
+  // Generator function to create the indexOf and lastIndexOf functions
+  function createIndexFinder(dir, predicateFind, sortedIndex) {
+    return function(array, item, idx) {
+      var i = 0, length = getLength(array);
+      if (typeof idx == 'number') {
+        if (dir > 0) {
+            i = idx >= 0 ? idx : Math.max(idx + length, i);
+        } else {
+            length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;
+        }
+      } else if (sortedIndex && idx && length) {
+        idx = sortedIndex(array, item);
+        return array[idx] === item ? idx : -1;
+      }
+      if (item !== item) {
+        idx = predicateFind(slice.call(array, i, length), _.isNaN);
+        return idx >= 0 ? idx + i : -1;
+      }
+      for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {
+        if (array[idx] === item) return idx;
+      }
+      return -1;
+    };
+  }
+
+  // Return the position of the first occurrence of an item in an array,
+  // or -1 if the item is not included in the array.
+  // If the array is large and already in sort order, pass `true`
+  // for **isSorted** to use binary search.
+  _.indexOf = createIndexFinder(1, _.findIndex, _.sortedIndex);
+  _.lastIndexOf = createIndexFinder(-1, _.findLastIndex);
+
+  // Generate an integer Array containing an arithmetic progression. A port of
+  // the native Python `range()` function. See
+  // [the Python documentation](http://docs.python.org/library/functions.html#range).
+  _.range = function(start, stop, step) {
+    if (stop == null) {
+      stop = start || 0;
+      start = 0;
+    }
+    step = step || 1;
+
+    var length = Math.max(Math.ceil((stop - start) / step), 0);
+    var range = Array(length);
+
+    for (var idx = 0; idx < length; idx++, start += step) {
+      range[idx] = start;
+    }
+
+    return range;
+  };
+
+  // Function (ahem) Functions
+  // ------------------
+
+  // Determines whether to execute a function as a constructor
+  // or a normal function with the provided arguments
+  var executeBound = function(sourceFunc, boundFunc, context, callingContext, args) {
+    if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);
+    var self = baseCreate(sourceFunc.prototype);
+    var result = sourceFunc.apply(self, args);
+    if (_.isObject(result)) return result;
+    return self;
+  };
+
+  // Create a function bound to a given object (assigning `this`, and arguments,
+  // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if
+  // available.
+  _.bind = function(func, context) {
+    if (nativeBind && func.bind === nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));
+    if (!_.isFunction(func)) throw new TypeError('Bind must be called on a function');
+    var args = slice.call(arguments, 2);
+    var bound = function() {
+      return executeBound(func, bound, context, this, args.concat(slice.call(arguments)));
+    };
+    return bound;
+  };
+
+  // Partially apply a function by creating a version that has had some of its
+  // arguments pre-filled, without changing its dynamic `this` context. _ acts
+  // as a placeholder, allowing any combination of arguments to be pre-filled.
+  _.partial = function(func) {
+    var boundArgs = slice.call(arguments, 1);
+    var bound = function() {
+      var position = 0, length = boundArgs.length;
+      var args = Array(length);
+      for (var i = 0; i < length; i++) {
+        args[i] = boundArgs[i] === _ ? arguments[position++] : boundArgs[i];
+      }
+      while (position < arguments.length) args.push(arguments[position++]);
+      return executeBound(func, bound, this, this, args);
+    };
+    return bound;
+  };
+
+  // Bind a number of an object's methods to that object. Remaining arguments
+  // are the method names to be bound. Useful for ensuring that all callbacks
+  // defined on an object belong to it.
+  _.bindAll = function(obj) {
+    var i, length = arguments.length, key;
+    if (length <= 1) throw new Error('bindAll must be passed function names');
+    for (i = 1; i < length; i++) {
+      key = arguments[i];
+      obj[key] = _.bind(obj[key], obj);
+    }
+    return obj;
+  };
+
+  // Memoize an expensive function by storing its results.
+  _.memoize = function(func, hasher) {
+    var memoize = function(key) {
+      var cache = memoize.cache;
+      var address = '' + (hasher ? hasher.apply(this, arguments) : key);
+      if (!_.has(cache, address)) cache[address] = func.apply(this, arguments);
+      return cache[address];
+    };
+    memoize.cache = {};
+    return memoize;
+  };
+
+  // Delays a function for the given number of milliseconds, and then calls
+  // it with the arguments supplied.
+  _.delay = function(func, wait) {
+    var args = slice.call(arguments, 2);
+    return setTimeout(function(){
+      return func.apply(null, args);
+    }, wait);
+  };
+
+  // Defers a function, scheduling it to run after the current call stack has
+  // cleared.
+  _.defer = _.partial(_.delay, _, 1);
+
+  // Returns a function, that, when invoked, will only be triggered at most once
+  // during a given window of time. Normally, the throttled function will run
+  // as much as it can, without ever going more than once per `wait` duration;
+  // but if you'd like to disable the execution on the leading edge, pass
+  // `{leading: false}`. To disable execution on the trailing edge, ditto.
+  _.throttle = function(func, wait, options) {
+    var context, args, result;
+    var timeout = null;
+    var previous = 0;
+    if (!options) options = {};
+    var later = function() {
+      previous = options.leading === false ? 0 : _.now();
+      timeout = null;
+      result = func.apply(context, args);
+      if (!timeout) context = args = null;
+    };
+    return function() {
+      var now = _.now();
+      if (!previous && options.leading === false) previous = now;
+      var remaining = wait - (now - previous);
+      context = this;
+      args = arguments;
+      if (remaining <= 0 || remaining > wait) {
+        if (timeout) {
+          clearTimeout(timeout);
+          timeout = null;
+        }
+        previous = now;
+        result = func.apply(context, args);
+        if (!timeout) context = args = null;
+      } else if (!timeout && options.trailing !== false) {
+        timeout = setTimeout(later, remaining);
+      }
+      return result;
+    };
+  };
+
+  // Returns a function, that, as long as it continues to be invoked, will not
+  // be triggered. The function will be called after it stops being called for
+  // N milliseconds. If `immediate` is passed, trigger the function on the
+  // leading edge, instead of the trailing.
+  _.debounce = function(func, wait, immediate) {
+    var timeout, args, context, timestamp, result;
+
+    var later = function() {
+      var last = _.now() - timestamp;
+
+      if (last < wait && last >= 0) {
+        timeout = setTimeout(later, wait - last);
+      } else {
+        timeout = null;
+        if (!immediate) {
+          result = func.apply(context, args);
+          if (!timeout) context = args = null;
+        }
+      }
+    };
+
+    return function() {
+      context = this;
+      args = arguments;
+      timestamp = _.now();
+      var callNow = immediate && !timeout;
+      if (!timeout) timeout = setTimeout(later, wait);
+      if (callNow) {
+        result = func.apply(context, args);
+        context = args = null;
+      }
+
+      return result;
+    };
+  };
+
+  // Returns the first function passed as an argument to the second,
+  // allowing you to adjust arguments, run code before and after, and
+  // conditionally execute the original function.
+  _.wrap = function(func, wrapper) {
+    return _.partial(wrapper, func);
+  };
+
+  // Returns a negated version of the passed-in predicate.
+  _.negate = function(predicate) {
+    return function() {
+      return !predicate.apply(this, arguments);
+    };
+  };
+
+  // Returns a function that is the composition of a list of functions, each
+  // consuming the return value of the function that follows.
+  _.compose = function() {
+    var args = arguments;
+    var start = args.length - 1;
+    return function() {
+      var i = start;
+      var result = args[start].apply(this, arguments);
+      while (i--) result = args[i].call(this, result);
+      return result;
+    };
+  };
+
+  // Returns a function that will only be executed on and after the Nth call.
+  _.after = function(times, func) {
+    return function() {
+      if (--times < 1) {
+        return func.apply(this, arguments);
+      }
+    };
+  };
+
+  // Returns a function that will only be executed up to (but not including) the Nth call.
+  _.before = function(times, func) {
+    var memo;
+    return function() {
+      if (--times > 0) {
+        memo = func.apply(this, arguments);
+      }
+      if (times <= 1) func = null;
+      return memo;
+    };
+  };
+
+  // Returns a function that will be executed at most one time, no matter how
+  // often you call it. Useful for lazy initialization.
+  _.once = _.partial(_.before, 2);
+
+  // Object Functions
+  // ----------------
+
+  // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.
+  var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');
+  var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',
+                      'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];
+
+  function collectNonEnumProps(obj, keys) {
+    var nonEnumIdx = nonEnumerableProps.length;
+    var constructor = obj.constructor;
+    var proto = (_.isFunction(constructor) && constructor.prototype) || ObjProto;
+
+    // Constructor is a special case.
+    var prop = 'constructor';
+    if (_.has(obj, prop) && !_.contains(keys, prop)) keys.push(prop);
+
+    while (nonEnumIdx--) {
+      prop = nonEnumerableProps[nonEnumIdx];
+      if (prop in obj && obj[prop] !== proto[prop] && !_.contains(keys, prop)) {
+        keys.push(prop);
+      }
+    }
+  }
+
+  // Retrieve the names of an object's own properties.
+  // Delegates to **ECMAScript 5**'s native `Object.keys`
+  _.keys = function(obj) {
+    if (!_.isObject(obj)) return [];
+    if (nativeKeys) return nativeKeys(obj);
+    var keys = [];
+    for (var key in obj) if (_.has(obj, key)) keys.push(key);
+    // Ahem, IE < 9.
+    if (hasEnumBug) collectNonEnumProps(obj, keys);
+    return keys;
+  };
+
+  // Retrieve all the property names of an object.
+  _.allKeys = function(obj) {
+    if (!_.isObject(obj)) return [];
+    var keys = [];
+    for (var key in obj) keys.push(key);
+    // Ahem, IE < 9.
+    if (hasEnumBug) collectNonEnumProps(obj, keys);
+    return keys;
+  };
+
+  // Retrieve the values of an object's properties.
+  _.values = function(obj) {
+    var keys = _.keys(obj);
+    var length = keys.length;
+    var values = Array(length);
+    for (var i = 0; i < length; i++) {
+      values[i] = obj[keys[i]];
+    }
+    return values;
+  };
+
+  // Returns the results of applying the iteratee to each element of the object
+  // In contrast to _.map it returns an object
+  _.mapObject = function(obj, iteratee, context) {
+    iteratee = cb(iteratee, context);
+    var keys =  _.keys(obj),
+          length = keys.length,
+          results = {},
+          currentKey;
+      for (var index = 0; index < length; index++) {
+        currentKey = keys[index];
+        results[currentKey] = iteratee(obj[currentKey], currentKey, obj);
+      }
+      return results;
+  };
+
+  // Convert an object into a list of `[key, value]` pairs.
+  _.pairs = function(obj) {
+    var keys = _.keys(obj);
+    var length = keys.length;
+    var pairs = Array(length);
+    for (var i = 0; i < length; i++) {
+      pairs[i] = [keys[i], obj[keys[i]]];
+    }
+    return pairs;
+  };
+
+  // Invert the keys and values of an object. The values must be serializable.
+  _.invert = function(obj) {
+    var result = {};
+    var keys = _.keys(obj);
+    for (var i = 0, length = keys.length; i < length; i++) {
+      result[obj[keys[i]]] = keys[i];
+    }
+    return result;
+  };
+
+  // Return a sorted list of the function names available on the object.
+  // Aliased as `methods`
+  _.functions = _.methods = function(obj) {
+    var names = [];
+    for (var key in obj) {
+      if (_.isFunction(obj[key])) names.push(key);
+    }
+    return names.sort();
+  };
+
+  // Extend a given object with all the properties in passed-in object(s).
+  _.extend = createAssigner(_.allKeys);
+
+  // Assigns a given object with all the own properties in the passed-in object(s)
+  // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)
+  _.extendOwn = _.assign = createAssigner(_.keys);
+
+  // Returns the first key on an object that passes a predicate test
+  _.findKey = function(obj, predicate, context) {
+    predicate = cb(predicate, context);
+    var keys = _.keys(obj), key;
+    for (var i = 0, length = keys.length; i < length; i++) {
+      key = keys[i];
+      if (predicate(obj[key], key, obj)) return key;
+    }
+  };
+
+  // Return a copy of the object only containing the whitelisted properties.
+  _.pick = function(object, oiteratee, context) {
+    var result = {}, obj = object, iteratee, keys;
+    if (obj == null) return result;
+    if (_.isFunction(oiteratee)) {
+      keys = _.allKeys(obj);
+      iteratee = optimizeCb(oiteratee, context);
+    } else {
+      keys = flatten(arguments, false, false, 1);
+      iteratee = function(value, key, obj) { return key in obj; };
+      obj = Object(obj);
+    }
+    for (var i = 0, length = keys.length; i < length; i++) {
+      var key = keys[i];
+      var value = obj[key];
+      if (iteratee(value, key, obj)) result[key] = value;
+    }
+    return result;
+  };
+
+   // Return a copy of the object without the blacklisted properties.
+  _.omit = function(obj, iteratee, context) {
+    if (_.isFunction(iteratee)) {
+      iteratee = _.negate(iteratee);
+    } else {
+      var keys = _.map(flatten(arguments, false, false, 1), String);
+      iteratee = function(value, key) {
+        return !_.contains(keys, key);
+      };
+    }
+    return _.pick(obj, iteratee, context);
+  };
+
+  // Fill in a given object with default properties.
+  _.defaults = createAssigner(_.allKeys, true);
+
+  // Creates an object that inherits from the given prototype object.
+  // If additional properties are provided then they will be added to the
+  // created object.
+  _.create = function(prototype, props) {
+    var result = baseCreate(prototype);
+    if (props) _.extendOwn(result, props);
+    return result;
+  };
+
+  // Create a (shallow-cloned) duplicate of an object.
+  _.clone = function(obj) {
+    if (!_.isObject(obj)) return obj;
+    return _.isArray(obj) ? obj.slice() : _.extend({}, obj);
+  };
+
+  // Invokes interceptor with the obj, and then returns obj.
+  // The primary purpose of this method is to "tap into" a method chain, in
+  // order to perform operations on intermediate results within the chain.
+  _.tap = function(obj, interceptor) {
+    interceptor(obj);
+    return obj;
+  };
+
+  // Returns whether an object has a given set of `key:value` pairs.
+  _.isMatch = function(object, attrs) {
+    var keys = _.keys(attrs), length = keys.length;
+    if (object == null) return !length;
+    var obj = Object(object);
+    for (var i = 0; i < length; i++) {
+      var key = keys[i];
+      if (attrs[key] !== obj[key] || !(key in obj)) return false;
+    }
+    return true;
+  };
+
+
+  // Internal recursive comparison function for `isEqual`.
+  var eq = function(a, b, aStack, bStack) {
+    // Identical objects are equal. `0 === -0`, but they aren't identical.
+    // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).
+    if (a === b) return a !== 0 || 1 / a === 1 / b;
+    // A strict comparison is necessary because `null == undefined`.
+    if (a == null || b == null) return a === b;
+    // Unwrap any wrapped objects.
+    if (a instanceof _) a = a._wrapped;
+    if (b instanceof _) b = b._wrapped;
+    // Compare `[[Class]]` names.
+    var className = toString.call(a);
+    if (className !== toString.call(b)) return false;
+    switch (className) {
+      // Strings, numbers, regular expressions, dates, and booleans are compared by value.
+      case '[object RegExp]':
+      // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')
+      case '[object String]':
+        // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is
+        // equivalent to `new String("5")`.
+        return '' + a === '' + b;
+      case '[object Number]':
+        // `NaN`s are equivalent, but non-reflexive.
+        // Object(NaN) is equivalent to NaN
+        if (+a !== +a) return +b !== +b;
+        // An `egal` comparison is performed for other numeric values.
+        return +a === 0 ? 1 / +a === 1 / b : +a === +b;
+      case '[object Date]':
+      case '[object Boolean]':
+        // Coerce dates and booleans to numeric primitive values. Dates are compared by their
+        // millisecond representations. Note that invalid dates with millisecond representations
+        // of `NaN` are not equivalent.
+        return +a === +b;
+    }
+
+    var areArrays = className === '[object Array]';
+    if (!areArrays) {
+      if (typeof a != 'object' || typeof b != 'object') return false;
+
+      // Objects with different constructors are not equivalent, but `Object`s or `Array`s
+      // from different frames are.
+      var aCtor = a.constructor, bCtor = b.constructor;
+      if (aCtor !== bCtor && !(_.isFunction(aCtor) && aCtor instanceof aCtor &&
+                               _.isFunction(bCtor) && bCtor instanceof bCtor)
+                          && ('constructor' in a && 'constructor' in b)) {
+        return false;
+      }
+    }
+    // Assume equality for cyclic structures. The algorithm for detecting cyclic
+    // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.
+
+    // Initializing stack of traversed objects.
+    // It's done here since we only need them for objects and arrays comparison.
+    aStack = aStack || [];
+    bStack = bStack || [];
+    var length = aStack.length;
+    while (length--) {
+      // Linear search. Performance is inversely proportional to the number of
+      // unique nested structures.
+      if (aStack[length] === a) return bStack[length] === b;
+    }
+
+    // Add the first object to the stack of traversed objects.
+    aStack.push(a);
+    bStack.push(b);
+
+    // Recursively compare objects and arrays.
+    if (areArrays) {
+      // Compare array lengths to determine if a deep comparison is necessary.
+      length = a.length;
+      if (length !== b.length) return false;
+      // Deep compare the contents, ignoring non-numeric properties.
+      while (length--) {
+        if (!eq(a[length], b[length], aStack, bStack)) return false;
+      }
+    } else {
+      // Deep compare objects.
+      var keys = _.keys(a), key;
+      length = keys.length;
+      // Ensure that both objects contain the same number of properties before comparing deep equality.
+      if (_.keys(b).length !== length) return false;
+      while (length--) {
+        // Deep compare each member
+        key = keys[length];
+        if (!(_.has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;
+      }
+    }
+    // Remove the first object from the stack of traversed objects.
+    aStack.pop();
+    bStack.pop();
+    return true;
+  };
+
+  // Perform a deep comparison to check if two objects are equal.
+  _.isEqual = function(a, b) {
+    return eq(a, b);
+  };
+
+  // Is a given array, string, or object empty?
+  // An "empty" object has no enumerable own-properties.
+  _.isEmpty = function(obj) {
+    if (obj == null) return true;
+    if (isArrayLike(obj) && (_.isArray(obj) || _.isString(obj) || _.isArguments(obj))) return obj.length === 0;
+    return _.keys(obj).length === 0;
+  };
+
+  // Is a given value a DOM element?
+  _.isElement = function(obj) {
+    return !!(obj && obj.nodeType === 1);
+  };
+
+  // Is a given value an array?
+  // Delegates to ECMA5's native Array.isArray
+  _.isArray = nativeIsArray || function(obj) {
+    return toString.call(obj) === '[object Array]';
+  };
+
+  // Is a given variable an object?
+  _.isObject = function(obj) {
+    var type = typeof obj;
+    return type === 'function' || type === 'object' && !!obj;
+  };
+
+  // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp, isError.
+  _.each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp', 'Error'], function(name) {
+    _['is' + name] = function(obj) {
+      return toString.call(obj) === '[object ' + name + ']';
+    };
+  });
+
+  // Define a fallback version of the method in browsers (ahem, IE < 9), where
+  // there isn't any inspectable "Arguments" type.
+  if (!_.isArguments(arguments)) {
+    _.isArguments = function(obj) {
+      return _.has(obj, 'callee');
+    };
+  }
+
+  // Optimize `isFunction` if appropriate. Work around some typeof bugs in old v8,
+  // IE 11 (#1621), and in Safari 8 (#1929).
+  if (typeof /./ != 'function' && typeof Int8Array != 'object') {
+    _.isFunction = function(obj) {
+      return typeof obj == 'function' || false;
+    };
+  }
+
+  // Is a given object a finite number?
+  _.isFinite = function(obj) {
+    return isFinite(obj) && !isNaN(parseFloat(obj));
+  };
+
+  // Is the given value `NaN`? (NaN is the only number which does not equal itself).
+  _.isNaN = function(obj) {
+    return _.isNumber(obj) && obj !== +obj;
+  };
+
+  // Is a given value a boolean?
+  _.isBoolean = function(obj) {
+    return obj === true || obj === false || toString.call(obj) === '[object Boolean]';
+  };
+
+  // Is a given value equal to null?
+  _.isNull = function(obj) {
+    return obj === null;
+  };
+
+  // Is a given variable undefined?
+  _.isUndefined = function(obj) {
+    return obj === void 0;
+  };
+
+  // Shortcut function for checking if an object has a given property directly
+  // on itself (in other words, not on a prototype).
+  _.has = function(obj, key) {
+    return obj != null && hasOwnProperty.call(obj, key);
+  };
+
+  // Utility Functions
+  // -----------------
+
+  // Run Underscore.js in *noConflict* mode, returning the `_` variable to its
+  // previous owner. Returns a reference to the Underscore object.
+  _.noConflict = function() {
+    root._ = previousUnderscore;
+    return this;
+  };
+
+  // Keep the identity function around for default iteratees.
+  _.identity = function(value) {
+    return value;
+  };
+
+  // Predicate-generating functions. Often useful outside of Underscore.
+  _.constant = function(value) {
+    return function() {
+      return value;
+    };
+  };
+
+  _.noop = function(){};
+
+  _.property = property;
+
+  // Generates a function for a given object that returns a given property.
+  _.propertyOf = function(obj) {
+    return obj == null ? function(){} : function(key) {
+      return obj[key];
+    };
+  };
+
+  // Returns a predicate for checking whether an object has a given set of
+  // `key:value` pairs.
+  _.matcher = _.matches = function(attrs) {
+    attrs = _.extendOwn({}, attrs);
+    return function(obj) {
+      return _.isMatch(obj, attrs);
+    };
+  };
+
+  // Run a function **n** times.
+  _.times = function(n, iteratee, context) {
+    var accum = Array(Math.max(0, n));
+    iteratee = optimizeCb(iteratee, context, 1);
+    for (var i = 0; i < n; i++) accum[i] = iteratee(i);
+    return accum;
+  };
+
+  // Return a random integer between min and max (inclusive).
+  _.random = function(min, max) {
+    if (max == null) {
+      max = min;
+      min = 0;
+    }
+    return min + Math.floor(Math.random() * (max - min + 1));
+  };
+
+  // A (possibly faster) way to get the current timestamp as an integer.
+  _.now = Date.now || function() {
+    return new Date().getTime();
+  };
+
+   // List of HTML entities for escaping.
+  var escapeMap = {
+    '&': '&amp;',
+    '<': '&lt;',
+    '>': '&gt;',
+    '"': '&quot;',
+    "'": '&#x27;',
+    '`': '&#x60;'
+  };
+  var unescapeMap = _.invert(escapeMap);
+
+  // Functions for escaping and unescaping strings to/from HTML interpolation.
+  var createEscaper = function(map) {
+    var escaper = function(match) {
+      return map[match];
+    };
+    // Regexes for identifying a key that needs to be escaped
+    var source = '(?:' + _.keys(map).join('|') + ')';
+    var testRegexp = RegExp(source);
+    var replaceRegexp = RegExp(source, 'g');
+    return function(string) {
+      string = string == null ? '' : '' + string;
+      return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;
+    };
+  };
+  _.escape = createEscaper(escapeMap);
+  _.unescape = createEscaper(unescapeMap);
+
+  // If the value of the named `property` is a function then invoke it with the
+  // `object` as context; otherwise, return it.
+  _.result = function(object, property, fallback) {
+    var value = object == null ? void 0 : object[property];
+    if (value === void 0) {
+      value = fallback;
+    }
+    return _.isFunction(value) ? value.call(object) : value;
+  };
+
+  // Generate a unique integer id (unique within the entire client session).
+  // Useful for temporary DOM ids.
+  var idCounter = 0;
+  _.uniqueId = function(prefix) {
+    var id = ++idCounter + '';
+    return prefix ? prefix + id : id;
+  };
+
+  // By default, Underscore uses ERB-style template delimiters, change the
+  // following template settings to use alternative delimiters.
+  _.templateSettings = {
+    evaluate    : /<%([\s\S]+?)%>/g,
+    interpolate : /<%=([\s\S]+?)%>/g,
+    escape      : /<%-([\s\S]+?)%>/g
+  };
+
+  // When customizing `templateSettings`, if you don't want to define an
+  // interpolation, evaluation or escaping regex, we need one that is
+  // guaranteed not to match.
+  var noMatch = /(.)^/;
+
+  // Certain characters need to be escaped so that they can be put into a
+  // string literal.
+  var escapes = {
+    "'":      "'",
+    '\\':     '\\',
+    '\r':     'r',
+    '\n':     'n',
+    '\u2028': 'u2028',
+    '\u2029': 'u2029'
+  };
+
+  var escaper = /\\|'|\r|\n|\u2028|\u2029/g;
+
+  var escapeChar = function(match) {
+    return '\\' + escapes[match];
+  };
+
+  // JavaScript micro-templating, similar to John Resig's implementation.
+  // Underscore templating handles arbitrary delimiters, preserves whitespace,
+  // and correctly escapes quotes within interpolated code.
+  // NB: `oldSettings` only exists for backwards compatibility.
+  _.template = function(text, settings, oldSettings) {
+    if (!settings && oldSettings) settings = oldSettings;
+    settings = _.defaults({}, settings, _.templateSettings);
+
+    // Combine delimiters into one regular expression via alternation.
+    var matcher = RegExp([
+      (settings.escape || noMatch).source,
+      (settings.interpolate || noMatch).source,
+      (settings.evaluate || noMatch).source
+    ].join('|') + '|$', 'g');
+
+    // Compile the template source, escaping string literals appropriately.
+    var index = 0;
+    var source = "__p+='";
+    text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {
+      source += text.slice(index, offset).replace(escaper, escapeChar);
+      index = offset + match.length;
+
+      if (escape) {
+        source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'";
+      } else if (interpolate) {
+        source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'";
+      } else if (evaluate) {
+        source += "';\n" + evaluate + "\n__p+='";
+      }
+
+      // Adobe VMs need the match returned to produce the correct offest.
+      return match;
+    });
+    source += "';\n";
+
+    // If a variable is not specified, place data values in local scope.
+    if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n';
+
+    source = "var __t,__p='',__j=Array.prototype.join," +
+      "print=function(){__p+=__j.call(arguments,'');};\n" +
+      source + 'return __p;\n';
+
+    try {
+      var render = new Function(settings.variable || 'obj', '_', source);
+    } catch (e) {
+      e.source = source;
+      throw e;
+    }
+
+    var template = function(data) {
+      return render.call(this, data, _);
+    };
+
+    // Provide the compiled source as a convenience for precompilation.
+    var argument = settings.variable || 'obj';
+    template.source = 'function(' + argument + '){\n' + source + '}';
+
+    return template;
+  };
+
+  // Add a "chain" function. Start chaining a wrapped Underscore object.
+  _.chain = function(obj) {
+    var instance = _(obj);
+    instance._chain = true;
+    return instance;
+  };
+
+  // OOP
+  // ---------------
+  // If Underscore is called as a function, it returns a wrapped object that
+  // can be used OO-style. This wrapper holds altered versions of all the
+  // underscore functions. Wrapped objects may be chained.
+
+  // Helper function to continue chaining intermediate results.
+  var result = function(instance, obj) {
+    return instance._chain ? _(obj).chain() : obj;
+  };
+
+  // Add your own custom functions to the Underscore object.
+  _.mixin = function(obj) {
+    _.each(_.functions(obj), function(name) {
+      var func = _[name] = obj[name];
+      _.prototype[name] = function() {
+        var args = [this._wrapped];
+        push.apply(args, arguments);
+        return result(this, func.apply(_, args));
+      };
+    });
+  };
+
+  // Add all of the Underscore functions to the wrapper object.
+  _.mixin(_);
+
+  // Add all mutator Array functions to the wrapper.
+  _.each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {
+    var method = ArrayProto[name];
+    _.prototype[name] = function() {
+      var obj = this._wrapped;
+      method.apply(obj, arguments);
+      if ((name === 'shift' || name === 'splice') && obj.length === 0) delete obj[0];
+      return result(this, obj);
+    };
+  });
+
+  // Add all accessor Array functions to the wrapper.
+  _.each(['concat', 'join', 'slice'], function(name) {
+    var method = ArrayProto[name];
+    _.prototype[name] = function() {
+      return result(this, method.apply(this._wrapped, arguments));
+    };
+  });
+
+  // Extracts the result from a wrapped and chained object.
+  _.prototype.value = function() {
+    return this._wrapped;
+  };
+
+  // Provide unwrapping proxy for some methods used in engine operations
+  // such as arithmetic and JSON stringification.
+  _.prototype.valueOf = _.prototype.toJSON = _.prototype.value;
+
+  _.prototype.toString = function() {
+    return '' + this._wrapped;
+  };
+
+  // AMD registration happens at the end for compatibility with AMD loaders
+  // that may not enforce next-turn semantics on modules. Even though general
+  // practice for AMD registration is to be anonymous, underscore registers
+  // as a named module because, like jQuery, it is a base library that is
+  // popular enough to be bundled in a third party lib, but not be part of
+  // an AMD load request. Those cases could generate an error when an
+  // anonymous define() is called outside of a loader request.
+  if (typeof define === 'function' && define.amd) {
+    define('underscore', [], function() {
+      return _;
+    });
+  }
+}.call(this));
diff --git a/setup-maven/node_modules/universal-user-agent/.travis.yml b/setup-maven/node_modules/universal-user-agent/.travis.yml
new file mode 100644
index 0000000..d540895
--- /dev/null
+++ b/setup-maven/node_modules/universal-user-agent/.travis.yml
@@ -0,0 +1,38 @@
+language: node_js
+cache:
+  directories:
+    - ~/.npm
+    - node_modules/cypress/dist
+
+# Trigger a push build on master and greenkeeper branches + PRs build on every branches
+# Avoid double build on PRs (See https://github.com/travis-ci/travis-ci/issues/1147)
+branches:
+  only:
+    - master
+    - /^greenkeeper.*$/
+
+stages:
+  - test
+  - name: release
+    if: branch = master AND type IN (push)
+
+jobs:
+  include:
+    - stage: test
+      node_js: 6
+      script: npm run test
+    - node_js: 8
+      script: npm run test
+    - node_js: 10
+      env: Node 10 & coverage upload
+      script:
+        - npm run test
+        - npm run coverage:upload
+    - node_js: lts/*
+      env: browser tests
+      script: npm run test:browser
+
+    - stage: release
+      node_js: lts/*
+      env: semantic-release
+      script: npm run semantic-release
diff --git a/setup-maven/node_modules/universal-user-agent/LICENSE.md b/setup-maven/node_modules/universal-user-agent/LICENSE.md
new file mode 100644
index 0000000..f105ab0
--- /dev/null
+++ b/setup-maven/node_modules/universal-user-agent/LICENSE.md
@@ -0,0 +1,7 @@
+# [ISC License](https://spdx.org/licenses/ISC)
+
+Copyright (c) 2018, Gregor Martynus (https://github.com/gr2m)
+
+Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/setup-maven/node_modules/universal-user-agent/README.md b/setup-maven/node_modules/universal-user-agent/README.md
new file mode 100644
index 0000000..59e809e
--- /dev/null
+++ b/setup-maven/node_modules/universal-user-agent/README.md
@@ -0,0 +1,25 @@
+# universal-user-agent
+
+> Get a user agent string in both browser and node
+
+[![@latest](https://img.shields.io/npm/v/universal-user-agent.svg)](https://www.npmjs.com/package/universal-user-agent)
+[![Build Status](https://travis-ci.com/gr2m/universal-user-agent.svg?branch=master)](https://travis-ci.com/gr2m/universal-user-agent)
+[![Coverage Status](https://coveralls.io/repos/github/gr2m/universal-user-agent/badge.svg)](https://coveralls.io/github/gr2m/universal-user-agent)
+[![Greenkeeper](https://badges.greenkeeper.io/gr2m/universal-user-agent.svg)](https://greenkeeper.io/)
+
+```js
+const getUserAgent = require('universal-user-agent')
+const userAgent = getUserAgent()
+
+// userAgent will look like this
+// in browser: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:61.0) Gecko/20100101 Firefox/61.0"
+// in node: Node.js/v8.9.4 (macOS High Sierra; x64)
+```
+
+## Credits
+
+The Node implementation was originally inspired by [default-user-agent](https://www.npmjs.com/package/default-user-agent).
+
+## License
+
+[ISC](LICENSE.md)
diff --git a/setup-maven/node_modules/universal-user-agent/browser.js b/setup-maven/node_modules/universal-user-agent/browser.js
new file mode 100644
index 0000000..eb12744
--- /dev/null
+++ b/setup-maven/node_modules/universal-user-agent/browser.js
@@ -0,0 +1,6 @@
+module.exports = getUserAgentBrowser
+
+function getUserAgentBrowser () {
+  /* global navigator */
+  return navigator.userAgent
+}
diff --git a/setup-maven/node_modules/universal-user-agent/cypress.json b/setup-maven/node_modules/universal-user-agent/cypress.json
new file mode 100644
index 0000000..a1ff4b8
--- /dev/null
+++ b/setup-maven/node_modules/universal-user-agent/cypress.json
@@ -0,0 +1,4 @@
+{
+  "integrationFolder": "test",
+  "video": false
+}
diff --git a/setup-maven/node_modules/universal-user-agent/index.d.ts b/setup-maven/node_modules/universal-user-agent/index.d.ts
new file mode 100644
index 0000000..04dfc04
--- /dev/null
+++ b/setup-maven/node_modules/universal-user-agent/index.d.ts
@@ -0,0 +1 @@
+export default function getUserAgentNode(): string;
diff --git a/setup-maven/node_modules/universal-user-agent/index.js b/setup-maven/node_modules/universal-user-agent/index.js
new file mode 100644
index 0000000..ef2d06b
--- /dev/null
+++ b/setup-maven/node_modules/universal-user-agent/index.js
@@ -0,0 +1,15 @@
+module.exports = getUserAgentNode
+
+const osName = require('os-name')
+
+function getUserAgentNode () {
+  try {
+    return `Node.js/${process.version.substr(1)} (${osName()}; ${process.arch})`
+  } catch (error) {
+    if (/wmic os get Caption/.test(error.message)) {
+      return 'Windows <version undetectable>'
+    }
+
+    throw error
+  }
+}
diff --git a/setup-maven/node_modules/universal-user-agent/package.json b/setup-maven/node_modules/universal-user-agent/package.json
new file mode 100644
index 0000000..21e51ed
--- /dev/null
+++ b/setup-maven/node_modules/universal-user-agent/package.json
@@ -0,0 +1,82 @@
+{
+  "_from": "universal-user-agent@^2.0.3",
+  "_id": "universal-user-agent@2.1.0",
+  "_inBundle": false,
+  "_integrity": "sha512-8itiX7G05Tu3mGDTdNY2fB4KJ8MgZLS54RdG6PkkfwMAavrXu1mV/lls/GABx9O3Rw4PnTtasxrvbMQoBYY92Q==",
+  "_location": "/universal-user-agent",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "universal-user-agent@^2.0.3",
+    "name": "universal-user-agent",
+    "escapedName": "universal-user-agent",
+    "rawSpec": "^2.0.3",
+    "saveSpec": null,
+    "fetchSpec": "^2.0.3"
+  },
+  "_requiredBy": [
+    "/@octokit/graphql"
+  ],
+  "_resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-2.1.0.tgz",
+  "_shasum": "5abfbcc036a1ba490cb941f8fd68c46d3669e8e4",
+  "_spec": "universal-user-agent@^2.0.3",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/@octokit/graphql",
+  "author": {
+    "name": "Gregor Martynus",
+    "url": "https://github.com/gr2m"
+  },
+  "browser": "browser.js",
+  "bugs": {
+    "url": "https://github.com/gr2m/universal-user-agent/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "os-name": "^3.0.0"
+  },
+  "deprecated": false,
+  "description": "Get a user agent string in both browser and node",
+  "devDependencies": {
+    "chai": "^4.1.2",
+    "coveralls": "^3.0.2",
+    "cypress": "^3.1.0",
+    "mocha": "^6.0.0",
+    "nyc": "^14.0.0",
+    "proxyquire": "^2.1.0",
+    "semantic-release": "^15.9.15",
+    "sinon": "^7.2.4",
+    "sinon-chai": "^3.2.0",
+    "standard": "^12.0.1",
+    "test": "^0.6.0",
+    "travis-deploy-once": "^5.0.7"
+  },
+  "homepage": "https://github.com/gr2m/universal-user-agent#readme",
+  "keywords": [],
+  "license": "ISC",
+  "main": "index.js",
+  "name": "universal-user-agent",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/gr2m/universal-user-agent.git"
+  },
+  "scripts": {
+    "coverage": "nyc report --reporter=html && open coverage/index.html",
+    "coverage:upload": "nyc report --reporter=text-lcov | coveralls",
+    "pretest": "standard",
+    "semantic-release": "semantic-release",
+    "test": "nyc mocha \"test/*-test.js\"",
+    "test:browser": "cypress run --browser chrome",
+    "travis-deploy-once": "travis-deploy-once"
+  },
+  "standard": {
+    "globals": [
+      "describe",
+      "it",
+      "beforeEach",
+      "afterEach",
+      "expect"
+    ]
+  },
+  "types": "index.d.ts",
+  "version": "2.1.0"
+}
diff --git a/setup-maven/node_modules/universal-user-agent/test/smoke-test.js b/setup-maven/node_modules/universal-user-agent/test/smoke-test.js
new file mode 100644
index 0000000..d71b2d5
--- /dev/null
+++ b/setup-maven/node_modules/universal-user-agent/test/smoke-test.js
@@ -0,0 +1,57 @@
+// make tests run in both Node & Express
+if (!global.cy) {
+  const chai = require('chai')
+  const sinon = require('sinon')
+  const sinonChai = require('sinon-chai')
+  chai.use(sinonChai)
+  global.expect = chai.expect
+
+  let sandbox
+  beforeEach(() => {
+    sandbox = sinon.createSandbox()
+    global.cy = {
+      stub: function () {
+        return sandbox.stub.apply(sandbox, arguments)
+      },
+      log () {
+        console.log.apply(console, arguments)
+      }
+    }
+  })
+
+  afterEach(() => {
+    sandbox.restore()
+  })
+}
+
+const getUserAgent = require('..')
+
+describe('smoke', () => {
+  it('works', () => {
+    expect(getUserAgent()).to.be.a('string')
+    expect(getUserAgent().length).to.be.above(10)
+  })
+
+  if (!process.browser) { // test on node only
+    const proxyquire = require('proxyquire').noCallThru()
+    it('works around wmic error on Windows (#5)', () => {
+      const getUserAgent = proxyquire('..', {
+        'os-name': () => {
+          throw new Error('Command failed: wmic os get Caption')
+        }
+      })
+
+      expect(getUserAgent()).to.equal('Windows <version undetectable>')
+    })
+
+    it('does not swallow unexpected errors', () => {
+      const getUserAgent = proxyquire('..', {
+        'os-name': () => {
+          throw new Error('oops')
+        }
+      })
+
+      expect(getUserAgent).to.throw('oops')
+    })
+  }
+})
diff --git a/setup-maven/node_modules/uuid/AUTHORS b/setup-maven/node_modules/uuid/AUTHORS
new file mode 100644
index 0000000..5a10523
--- /dev/null
+++ b/setup-maven/node_modules/uuid/AUTHORS
@@ -0,0 +1,5 @@
+Robert Kieffer <robert@broofa.com>
+Christoph Tavan <dev@tavan.de>
+AJ ONeal <coolaj86@gmail.com>
+Vincent Voyer <vincent@zeroload.net>
+Roman Shtylman <shtylman@gmail.com>
diff --git a/setup-maven/node_modules/uuid/CHANGELOG.md b/setup-maven/node_modules/uuid/CHANGELOG.md
new file mode 100644
index 0000000..1ff6978
--- /dev/null
+++ b/setup-maven/node_modules/uuid/CHANGELOG.md
@@ -0,0 +1,112 @@
+# Changelog
+
+All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
+
+### [3.3.3](https://github.com/kelektiv/node-uuid/compare/v3.3.2...v3.3.3) (2019-08-19)
+
+<a name="3.3.2"></a>
+## [3.3.2](https://github.com/kelektiv/node-uuid/compare/v3.3.1...v3.3.2) (2018-06-28)
+
+
+### Bug Fixes
+
+* typo ([305d877](https://github.com/kelektiv/node-uuid/commit/305d877))
+
+
+
+<a name="3.3.1"></a>
+## [3.3.1](https://github.com/kelektiv/node-uuid/compare/v3.3.0...v3.3.1) (2018-06-28)
+
+
+### Bug Fixes
+
+* fix [#284](https://github.com/kelektiv/node-uuid/issues/284) by setting function name in try-catch ([f2a60f2](https://github.com/kelektiv/node-uuid/commit/f2a60f2))
+
+
+
+<a name="3.3.0"></a>
+# [3.3.0](https://github.com/kelektiv/node-uuid/compare/v3.2.1...v3.3.0) (2018-06-22)
+
+
+### Bug Fixes
+
+* assignment to readonly property to allow running in strict mode ([#270](https://github.com/kelektiv/node-uuid/issues/270)) ([d062fdc](https://github.com/kelektiv/node-uuid/commit/d062fdc))
+* fix [#229](https://github.com/kelektiv/node-uuid/issues/229) ([c9684d4](https://github.com/kelektiv/node-uuid/commit/c9684d4))
+* Get correct version of IE11 crypto ([#274](https://github.com/kelektiv/node-uuid/issues/274)) ([153d331](https://github.com/kelektiv/node-uuid/commit/153d331))
+* mem issue when generating uuid ([#267](https://github.com/kelektiv/node-uuid/issues/267)) ([c47702c](https://github.com/kelektiv/node-uuid/commit/c47702c))
+
+### Features
+
+* enforce Conventional Commit style commit messages ([#282](https://github.com/kelektiv/node-uuid/issues/282)) ([cc9a182](https://github.com/kelektiv/node-uuid/commit/cc9a182))
+
+
+<a name="3.2.1"></a>
+## [3.2.1](https://github.com/kelektiv/node-uuid/compare/v3.2.0...v3.2.1) (2018-01-16)
+
+
+### Bug Fixes
+
+* use msCrypto if available. Fixes [#241](https://github.com/kelektiv/node-uuid/issues/241) ([#247](https://github.com/kelektiv/node-uuid/issues/247)) ([1fef18b](https://github.com/kelektiv/node-uuid/commit/1fef18b))
+
+
+
+<a name="3.2.0"></a>
+# [3.2.0](https://github.com/kelektiv/node-uuid/compare/v3.1.0...v3.2.0) (2018-01-16)
+
+
+### Bug Fixes
+
+* remove mistakenly added typescript dependency, rollback version (standard-version will auto-increment) ([09fa824](https://github.com/kelektiv/node-uuid/commit/09fa824))
+* use msCrypto if available. Fixes [#241](https://github.com/kelektiv/node-uuid/issues/241) ([#247](https://github.com/kelektiv/node-uuid/issues/247)) ([1fef18b](https://github.com/kelektiv/node-uuid/commit/1fef18b))
+
+
+### Features
+
+* Add v3 Support ([#217](https://github.com/kelektiv/node-uuid/issues/217)) ([d94f726](https://github.com/kelektiv/node-uuid/commit/d94f726))
+
+
+# [3.1.0](https://github.com/kelektiv/node-uuid/compare/v3.1.0...v3.0.1) (2017-06-17)
+
+### Bug Fixes
+
+* (fix) Add .npmignore file to exclude test/ and other non-essential files from packing. (#183)
+* Fix typo (#178)
+* Simple typo fix (#165)
+
+### Features
+* v5 support in CLI (#197)
+* V5 support (#188)
+
+
+# 3.0.1 (2016-11-28)
+
+* split uuid versions into separate files
+
+
+# 3.0.0 (2016-11-17)
+
+* remove .parse and .unparse
+
+
+# 2.0.0
+
+* Removed uuid.BufferClass
+
+
+# 1.4.0
+
+* Improved module context detection
+* Removed public RNG functions
+
+
+# 1.3.2
+
+* Improve tests and handling of v1() options (Issue #24)
+* Expose RNG option to allow for perf testing with different generators
+
+
+# 1.3.0
+
+* Support for version 1 ids, thanks to [@ctavan](https://github.com/ctavan)!
+* Support for node.js crypto API
+* De-emphasizing performance in favor of a) cryptographic quality PRNGs where available and b) more manageable code
diff --git a/setup-maven/node_modules/uuid/LICENSE.md b/setup-maven/node_modules/uuid/LICENSE.md
new file mode 100644
index 0000000..8c84e39
--- /dev/null
+++ b/setup-maven/node_modules/uuid/LICENSE.md
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2010-2016 Robert Kieffer and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/setup-maven/node_modules/uuid/README.md b/setup-maven/node_modules/uuid/README.md
new file mode 100644
index 0000000..6fc3708
--- /dev/null
+++ b/setup-maven/node_modules/uuid/README.md
@@ -0,0 +1,293 @@
+<!--
+  -- This file is auto-generated from README_js.md. Changes should be made there.
+  -->
+
+# uuid [![Build Status](https://secure.travis-ci.org/kelektiv/node-uuid.svg?branch=master)](http://travis-ci.org/kelektiv/node-uuid) #
+
+Simple, fast generation of [RFC4122](http://www.ietf.org/rfc/rfc4122.txt) UUIDS.
+
+Features:
+
+* Support for version 1, 3, 4 and 5 UUIDs
+* Cross-platform
+* Uses cryptographically-strong random number APIs (when available)
+* Zero-dependency, small footprint (... but not [this small](https://gist.github.com/982883))
+
+[**Deprecation warning**: The use of `require('uuid')` is deprecated and will not be
+supported after version 3.x of this module.  Instead, use `require('uuid/[v1|v3|v4|v5]')` as shown in the examples below.]
+
+## Quickstart - CommonJS (Recommended)
+
+```shell
+npm install uuid
+```
+
+Then generate your uuid version of choice ...
+
+Version 1 (timestamp):
+
+```javascript
+const uuidv1 = require('uuid/v1');
+uuidv1(); // ⇨ '2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d'
+
+```
+
+Version 3 (namespace):
+
+```javascript
+const uuidv3 = require('uuid/v3');
+
+// ... using predefined DNS namespace (for domain names)
+uuidv3('hello.example.com', uuidv3.DNS); // ⇨ '9125a8dc-52ee-365b-a5aa-81b0b3681cf6'
+
+// ... using predefined URL namespace (for, well, URLs)
+uuidv3('http://example.com/hello', uuidv3.URL); // ⇨ 'c6235813-3ba4-3801-ae84-e0a6ebb7d138'
+
+// ... using a custom namespace
+//
+// Note: Custom namespaces should be a UUID string specific to your application!
+// E.g. the one here was generated using this modules `uuid` CLI.
+const MY_NAMESPACE = '1b671a64-40d5-491e-99b0-da01ff1f3341';
+uuidv3('Hello, World!', MY_NAMESPACE); // ⇨ 'e8b5a51d-11c8-3310-a6ab-367563f20686'
+
+```
+
+Version 4 (random):
+
+```javascript
+const uuidv4 = require('uuid/v4');
+uuidv4(); // ⇨ '1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed'
+
+```
+
+Version 5 (namespace):
+
+```javascript
+const uuidv5 = require('uuid/v5');
+
+// ... using predefined DNS namespace (for domain names)
+uuidv5('hello.example.com', uuidv5.DNS); // ⇨ 'fdda765f-fc57-5604-a269-52a7df8164ec'
+
+// ... using predefined URL namespace (for, well, URLs)
+uuidv5('http://example.com/hello', uuidv5.URL); // ⇨ '3bbcee75-cecc-5b56-8031-b6641c1ed1f1'
+
+// ... using a custom namespace
+//
+// Note: Custom namespaces should be a UUID string specific to your application!
+// E.g. the one here was generated using this modules `uuid` CLI.
+const MY_NAMESPACE = '1b671a64-40d5-491e-99b0-da01ff1f3341';
+uuidv5('Hello, World!', MY_NAMESPACE); // ⇨ '630eb68f-e0fa-5ecc-887a-7c7a62614681'
+
+```
+
+## Quickstart - Browser-ready Versions
+
+Browser-ready versions of this module are available via [wzrd.in](https://github.com/jfhbrook/wzrd.in).
+
+For version 1 uuids:
+
+```html
+<script src="http://wzrd.in/standalone/uuid%2Fv1@latest"></script>
+<script>
+uuidv1(); // -> v1 UUID
+</script>
+```
+
+For version 3 uuids:
+
+```html
+<script src="http://wzrd.in/standalone/uuid%2Fv3@latest"></script>
+<script>
+uuidv3('http://example.com/hello', uuidv3.URL); // -> v3 UUID
+</script>
+```
+
+For version 4 uuids:
+
+```html
+<script src="http://wzrd.in/standalone/uuid%2Fv4@latest"></script>
+<script>
+uuidv4(); // -> v4 UUID
+</script>
+```
+
+For version 5 uuids:
+
+```html
+<script src="http://wzrd.in/standalone/uuid%2Fv5@latest"></script>
+<script>
+uuidv5('http://example.com/hello', uuidv5.URL); // -> v5 UUID
+</script>
+```
+
+## API
+
+### Version 1
+
+```javascript
+const uuidv1 = require('uuid/v1');
+
+// Incantations
+uuidv1();
+uuidv1(options);
+uuidv1(options, buffer, offset);
+```
+
+Generate and return a RFC4122 v1 (timestamp-based) UUID.
+
+* `options` - (Object) Optional uuid state to apply. Properties may include:
+
+  * `node` - (Array) Node id as Array of 6 bytes (per 4.1.6). Default: Randomly generated ID.  See note 1.
+  * `clockseq` - (Number between 0 - 0x3fff) RFC clock sequence.  Default: An internally maintained clockseq is used.
+  * `msecs` - (Number) Time in milliseconds since unix Epoch.  Default: The current time is used.
+  * `nsecs` - (Number between 0-9999) additional time, in 100-nanosecond units. Ignored if `msecs` is unspecified. Default: internal uuid counter is used, as per 4.2.1.2.
+
+* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written.
+* `offset` - (Number) Starting index in `buffer` at which to begin writing.
+
+Returns `buffer`, if specified, otherwise the string form of the UUID
+
+Note: The default [node id](https://tools.ietf.org/html/rfc4122#section-4.1.6) (the last 12 digits in the UUID) is generated once, randomly, on process startup, and then remains unchanged for the duration of the process.
+
+Example: Generate string UUID with fully-specified options
+
+```javascript
+const v1options = {
+  node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab],
+  clockseq: 0x1234,
+  msecs: new Date('2011-11-01').getTime(),
+  nsecs: 5678
+};
+uuidv1(v1options); // ⇨ '710b962e-041c-11e1-9234-0123456789ab'
+
+```
+
+Example: In-place generation of two binary IDs
+
+```javascript
+// Generate two ids in an array
+const arr = new Array();
+uuidv1(null, arr, 0);  // ⇨ [ 44, 94, 164, 192, 64, 103, 17, 233, 146, 52, 155, 29, 235, 77, 59, 125 ]
+uuidv1(null, arr, 16); // ⇨ [ 44, 94, 164, 192, 64, 103, 17, 233, 146, 52, 155, 29, 235, 77, 59, 125, 44, 94, 164, 193, 64, 103, 17, 233, 146, 52, 155, 29, 235, 77, 59, 125 ]
+
+```
+
+### Version 3
+
+```javascript
+const uuidv3 = require('uuid/v3');
+
+// Incantations
+uuidv3(name, namespace);
+uuidv3(name, namespace, buffer);
+uuidv3(name, namespace, buffer, offset);
+```
+
+Generate and return a RFC4122 v3 UUID.
+
+* `name` - (String | Array[]) "name" to create UUID with
+* `namespace` - (String | Array[]) "namespace" UUID either as a String or Array[16] of byte values
+* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written.
+* `offset` - (Number) Starting index in `buffer` at which to begin writing. Default = 0
+
+Returns `buffer`, if specified, otherwise the string form of the UUID
+
+Example:
+
+```javascript
+uuidv3('hello world', MY_NAMESPACE);  // ⇨ '042ffd34-d989-321c-ad06-f60826172424'
+
+```
+
+### Version 4
+
+```javascript
+const uuidv4 = require('uuid/v4')
+
+// Incantations
+uuidv4();
+uuidv4(options);
+uuidv4(options, buffer, offset);
+```
+
+Generate and return a RFC4122 v4 UUID.
+
+* `options` - (Object) Optional uuid state to apply. Properties may include:
+  * `random` - (Number[16]) Array of 16 numbers (0-255) to use in place of randomly generated values
+  * `rng` - (Function) Random # generator function that returns an Array[16] of byte values (0-255)
+* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written.
+* `offset` - (Number) Starting index in `buffer` at which to begin writing.
+
+Returns `buffer`, if specified, otherwise the string form of the UUID
+
+Example: Generate string UUID with predefined `random` values
+
+```javascript
+const v4options = {
+  random: [
+    0x10, 0x91, 0x56, 0xbe, 0xc4, 0xfb, 0xc1, 0xea,
+    0x71, 0xb4, 0xef, 0xe1, 0x67, 0x1c, 0x58, 0x36
+  ]
+};
+uuidv4(v4options); // ⇨ '109156be-c4fb-41ea-b1b4-efe1671c5836'
+
+```
+
+Example: Generate two IDs in a single buffer
+
+```javascript
+const buffer = new Array();
+uuidv4(null, buffer, 0);  // ⇨ [ 155, 29, 235, 77, 59, 125, 75, 173, 155, 221, 43, 13, 123, 61, 203, 109 ]
+uuidv4(null, buffer, 16); // ⇨ [ 155, 29, 235, 77, 59, 125, 75, 173, 155, 221, 43, 13, 123, 61, 203, 109, 27, 157, 107, 205, 187, 253, 75, 45, 155, 93, 171, 141, 251, 189, 75, 237 ]
+
+```
+
+### Version 5
+
+```javascript
+const uuidv5 = require('uuid/v5');
+
+// Incantations
+uuidv5(name, namespace);
+uuidv5(name, namespace, buffer);
+uuidv5(name, namespace, buffer, offset);
+```
+
+Generate and return a RFC4122 v5 UUID.
+
+* `name` - (String | Array[]) "name" to create UUID with
+* `namespace` - (String | Array[]) "namespace" UUID either as a String or Array[16] of byte values
+* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written.
+* `offset` - (Number) Starting index in `buffer` at which to begin writing. Default = 0
+
+Returns `buffer`, if specified, otherwise the string form of the UUID
+
+Example:
+
+```javascript
+uuidv5('hello world', MY_NAMESPACE);  // ⇨ '9f282611-e0fd-5650-8953-89c8e342da0b'
+
+```
+
+## Command Line
+
+UUIDs can be generated from the command line with the `uuid` command.
+
+```shell
+$ uuid
+ddeb27fb-d9a0-4624-be4d-4615062daed4
+
+$ uuid v1
+02d37060-d446-11e7-a9fa-7bdae751ebe1
+```
+
+Type `uuid --help` for usage details
+
+## Testing
+
+```shell
+npm test
+```
+
+----
+Markdown generated from [README_js.md](README_js.md) by [![RunMD Logo](http://i.imgur.com/h0FVyzU.png)](https://github.com/broofa/runmd)
\ No newline at end of file
diff --git a/setup-maven/node_modules/uuid/bin/uuid b/setup-maven/node_modules/uuid/bin/uuid
new file mode 100755
index 0000000..502626e
--- /dev/null
+++ b/setup-maven/node_modules/uuid/bin/uuid
@@ -0,0 +1,65 @@
+#!/usr/bin/env node
+var assert = require('assert');
+
+function usage() {
+  console.log('Usage:');
+  console.log('  uuid');
+  console.log('  uuid v1');
+  console.log('  uuid v3 <name> <namespace uuid>');
+  console.log('  uuid v4');
+  console.log('  uuid v5 <name> <namespace uuid>');
+  console.log('  uuid --help');
+  console.log('\nNote: <namespace uuid> may be "URL" or "DNS" to use the corresponding UUIDs defined by RFC4122');
+}
+
+var args = process.argv.slice(2);
+
+if (args.indexOf('--help') >= 0) {
+  usage();
+  process.exit(0);
+}
+var version = args.shift() || 'v4';
+
+switch (version) {
+  case 'v1':
+    var uuidV1 = require('../v1');
+    console.log(uuidV1());
+    break;
+
+  case 'v3':
+    var uuidV3 = require('../v3');
+
+    var name = args.shift();
+    var namespace = args.shift();
+    assert(name != null, 'v3 name not specified');
+    assert(namespace != null, 'v3 namespace not specified');
+
+    if (namespace == 'URL') namespace = uuidV3.URL;
+    if (namespace == 'DNS') namespace = uuidV3.DNS;
+
+    console.log(uuidV3(name, namespace));
+    break;
+
+  case 'v4':
+    var uuidV4 = require('../v4');
+    console.log(uuidV4());
+    break;
+
+  case 'v5':
+    var uuidV5 = require('../v5');
+
+    var name = args.shift();
+    var namespace = args.shift();
+    assert(name != null, 'v5 name not specified');
+    assert(namespace != null, 'v5 namespace not specified');
+
+    if (namespace == 'URL') namespace = uuidV5.URL;
+    if (namespace == 'DNS') namespace = uuidV5.DNS;
+
+    console.log(uuidV5(name, namespace));
+    break;
+
+  default:
+    usage();
+    process.exit(1);
+}
diff --git a/setup-maven/node_modules/uuid/index.js b/setup-maven/node_modules/uuid/index.js
new file mode 100644
index 0000000..e96791a
--- /dev/null
+++ b/setup-maven/node_modules/uuid/index.js
@@ -0,0 +1,8 @@
+var v1 = require('./v1');
+var v4 = require('./v4');
+
+var uuid = v4;
+uuid.v1 = v1;
+uuid.v4 = v4;
+
+module.exports = uuid;
diff --git a/setup-maven/node_modules/uuid/lib/bytesToUuid.js b/setup-maven/node_modules/uuid/lib/bytesToUuid.js
new file mode 100644
index 0000000..847c482
--- /dev/null
+++ b/setup-maven/node_modules/uuid/lib/bytesToUuid.js
@@ -0,0 +1,24 @@
+/**
+ * Convert array of 16 byte values to UUID string format of the form:
+ * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
+ */
+var byteToHex = [];
+for (var i = 0; i < 256; ++i) {
+  byteToHex[i] = (i + 0x100).toString(16).substr(1);
+}
+
+function bytesToUuid(buf, offset) {
+  var i = offset || 0;
+  var bth = byteToHex;
+  // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4
+  return ([bth[buf[i++]], bth[buf[i++]], 
+	bth[buf[i++]], bth[buf[i++]], '-',
+	bth[buf[i++]], bth[buf[i++]], '-',
+	bth[buf[i++]], bth[buf[i++]], '-',
+	bth[buf[i++]], bth[buf[i++]], '-',
+	bth[buf[i++]], bth[buf[i++]],
+	bth[buf[i++]], bth[buf[i++]],
+	bth[buf[i++]], bth[buf[i++]]]).join('');
+}
+
+module.exports = bytesToUuid;
diff --git a/setup-maven/node_modules/uuid/lib/md5-browser.js b/setup-maven/node_modules/uuid/lib/md5-browser.js
new file mode 100644
index 0000000..9b3b6c7
--- /dev/null
+++ b/setup-maven/node_modules/uuid/lib/md5-browser.js
@@ -0,0 +1,216 @@
+/*
+ * Browser-compatible JavaScript MD5
+ *
+ * Modification of JavaScript MD5
+ * https://github.com/blueimp/JavaScript-MD5
+ *
+ * Copyright 2011, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * https://opensource.org/licenses/MIT
+ *
+ * Based on
+ * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
+ * Digest Algorithm, as defined in RFC 1321.
+ * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009
+ * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
+ * Distributed under the BSD License
+ * See http://pajhome.org.uk/crypt/md5 for more info.
+ */
+
+'use strict';
+
+function md5(bytes) {
+  if (typeof(bytes) == 'string') {
+    var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape
+    bytes = new Array(msg.length);
+    for (var i = 0; i < msg.length; i++) bytes[i] = msg.charCodeAt(i);
+  }
+
+  return md5ToHexEncodedArray(
+    wordsToMd5(
+      bytesToWords(bytes)
+      , bytes.length * 8)
+  );
+}
+
+
+/*
+* Convert an array of little-endian words to an array of bytes
+*/
+function md5ToHexEncodedArray(input) {
+  var i;
+  var x;
+  var output = [];
+  var length32 = input.length * 32;
+  var hexTab = '0123456789abcdef';
+  var hex;
+
+  for (i = 0; i < length32; i += 8) {
+    x = (input[i >> 5] >>> (i % 32)) & 0xFF;
+
+    hex = parseInt(hexTab.charAt((x >>> 4) & 0x0F) + hexTab.charAt(x & 0x0F), 16);
+
+    output.push(hex);
+  }
+  return output;
+}
+
+/*
+* Calculate the MD5 of an array of little-endian words, and a bit length.
+*/
+function wordsToMd5(x, len) {
+  /* append padding */
+  x[len >> 5] |= 0x80 << (len % 32);
+  x[(((len + 64) >>> 9) << 4) + 14] = len;
+
+  var i;
+  var olda;
+  var oldb;
+  var oldc;
+  var oldd;
+  var a = 1732584193;
+  var b = -271733879;
+  var c = -1732584194;
+
+  var d = 271733878;
+
+  for (i = 0; i < x.length; i += 16) {
+    olda = a;
+    oldb = b;
+    oldc = c;
+    oldd = d;
+
+    a = md5ff(a, b, c, d, x[i], 7, -680876936);
+    d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);
+    c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);
+    b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);
+    a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);
+    d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);
+    c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);
+    b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);
+    a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);
+    d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);
+    c = md5ff(c, d, a, b, x[i + 10], 17, -42063);
+    b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);
+    a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);
+    d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);
+    c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);
+    b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);
+
+    a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);
+    d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);
+    c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);
+    b = md5gg(b, c, d, a, x[i], 20, -373897302);
+    a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);
+    d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);
+    c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);
+    b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);
+    a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);
+    d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);
+    c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);
+    b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);
+    a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);
+    d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);
+    c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);
+    b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);
+
+    a = md5hh(a, b, c, d, x[i + 5], 4, -378558);
+    d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);
+    c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);
+    b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);
+    a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);
+    d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);
+    c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);
+    b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);
+    a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);
+    d = md5hh(d, a, b, c, x[i], 11, -358537222);
+    c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);
+    b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);
+    a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);
+    d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);
+    c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);
+    b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);
+
+    a = md5ii(a, b, c, d, x[i], 6, -198630844);
+    d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);
+    c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);
+    b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);
+    a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);
+    d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);
+    c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);
+    b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);
+    a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);
+    d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);
+    c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);
+    b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);
+    a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);
+    d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);
+    c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);
+    b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);
+
+    a = safeAdd(a, olda);
+    b = safeAdd(b, oldb);
+    c = safeAdd(c, oldc);
+    d = safeAdd(d, oldd);
+  }
+  return [a, b, c, d];
+}
+
+/*
+* Convert an array bytes to an array of little-endian words
+* Characters >255 have their high-byte silently ignored.
+*/
+function bytesToWords(input) {
+  var i;
+  var output = [];
+  output[(input.length >> 2) - 1] = undefined;
+  for (i = 0; i < output.length; i += 1) {
+    output[i] = 0;
+  }
+  var length8 = input.length * 8;
+  for (i = 0; i < length8; i += 8) {
+    output[i >> 5] |= (input[(i / 8)] & 0xFF) << (i % 32);
+  }
+
+  return output;
+}
+
+/*
+* Add integers, wrapping at 2^32. This uses 16-bit operations internally
+* to work around bugs in some JS interpreters.
+*/
+function safeAdd(x, y) {
+  var lsw = (x & 0xFFFF) + (y & 0xFFFF);
+  var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
+  return (msw << 16) | (lsw & 0xFFFF);
+}
+
+/*
+* Bitwise rotate a 32-bit number to the left.
+*/
+function bitRotateLeft(num, cnt) {
+  return (num << cnt) | (num >>> (32 - cnt));
+}
+
+/*
+* These functions implement the four basic operations the algorithm uses.
+*/
+function md5cmn(q, a, b, x, s, t) {
+  return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);
+}
+function md5ff(a, b, c, d, x, s, t) {
+  return md5cmn((b & c) | ((~b) & d), a, b, x, s, t);
+}
+function md5gg(a, b, c, d, x, s, t) {
+  return md5cmn((b & d) | (c & (~d)), a, b, x, s, t);
+}
+function md5hh(a, b, c, d, x, s, t) {
+  return md5cmn(b ^ c ^ d, a, b, x, s, t);
+}
+function md5ii(a, b, c, d, x, s, t) {
+  return md5cmn(c ^ (b | (~d)), a, b, x, s, t);
+}
+
+module.exports = md5;
diff --git a/setup-maven/node_modules/uuid/lib/md5.js b/setup-maven/node_modules/uuid/lib/md5.js
new file mode 100644
index 0000000..7044b87
--- /dev/null
+++ b/setup-maven/node_modules/uuid/lib/md5.js
@@ -0,0 +1,25 @@
+'use strict';
+
+var crypto = require('crypto');
+
+function md5(bytes) {
+  if (typeof Buffer.from === 'function') {
+    // Modern Buffer API
+    if (Array.isArray(bytes)) {
+      bytes = Buffer.from(bytes);
+    } else if (typeof bytes === 'string') {
+      bytes = Buffer.from(bytes, 'utf8');
+    }
+  } else {
+    // Pre-v4 Buffer API
+    if (Array.isArray(bytes)) {
+      bytes = new Buffer(bytes);
+    } else if (typeof bytes === 'string') {
+      bytes = new Buffer(bytes, 'utf8');
+    }
+  }
+
+  return crypto.createHash('md5').update(bytes).digest();
+}
+
+module.exports = md5;
diff --git a/setup-maven/node_modules/uuid/lib/rng-browser.js b/setup-maven/node_modules/uuid/lib/rng-browser.js
new file mode 100644
index 0000000..6361fb8
--- /dev/null
+++ b/setup-maven/node_modules/uuid/lib/rng-browser.js
@@ -0,0 +1,34 @@
+// Unique ID creation requires a high quality random # generator.  In the
+// browser this is a little complicated due to unknown quality of Math.random()
+// and inconsistent support for the `crypto` API.  We do the best we can via
+// feature-detection
+
+// getRandomValues needs to be invoked in a context where "this" is a Crypto
+// implementation. Also, find the complete implementation of crypto on IE11.
+var getRandomValues = (typeof(crypto) != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto)) ||
+                      (typeof(msCrypto) != 'undefined' && typeof window.msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto));
+
+if (getRandomValues) {
+  // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto
+  var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef
+
+  module.exports = function whatwgRNG() {
+    getRandomValues(rnds8);
+    return rnds8;
+  };
+} else {
+  // Math.random()-based (RNG)
+  //
+  // If all else fails, use Math.random().  It's fast, but is of unspecified
+  // quality.
+  var rnds = new Array(16);
+
+  module.exports = function mathRNG() {
+    for (var i = 0, r; i < 16; i++) {
+      if ((i & 0x03) === 0) r = Math.random() * 0x100000000;
+      rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;
+    }
+
+    return rnds;
+  };
+}
diff --git a/setup-maven/node_modules/uuid/lib/rng.js b/setup-maven/node_modules/uuid/lib/rng.js
new file mode 100644
index 0000000..58f0dc9
--- /dev/null
+++ b/setup-maven/node_modules/uuid/lib/rng.js
@@ -0,0 +1,8 @@
+// Unique ID creation requires a high quality random # generator.  In node.js
+// this is pretty straight-forward - we use the crypto API.
+
+var crypto = require('crypto');
+
+module.exports = function nodeRNG() {
+  return crypto.randomBytes(16);
+};
diff --git a/setup-maven/node_modules/uuid/lib/sha1-browser.js b/setup-maven/node_modules/uuid/lib/sha1-browser.js
new file mode 100644
index 0000000..5758ed7
--- /dev/null
+++ b/setup-maven/node_modules/uuid/lib/sha1-browser.js
@@ -0,0 +1,89 @@
+// Adapted from Chris Veness' SHA1 code at
+// http://www.movable-type.co.uk/scripts/sha1.html
+'use strict';
+
+function f(s, x, y, z) {
+  switch (s) {
+    case 0: return (x & y) ^ (~x & z);
+    case 1: return x ^ y ^ z;
+    case 2: return (x & y) ^ (x & z) ^ (y & z);
+    case 3: return x ^ y ^ z;
+  }
+}
+
+function ROTL(x, n) {
+  return (x << n) | (x>>> (32 - n));
+}
+
+function sha1(bytes) {
+  var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];
+  var H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];
+
+  if (typeof(bytes) == 'string') {
+    var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape
+    bytes = new Array(msg.length);
+    for (var i = 0; i < msg.length; i++) bytes[i] = msg.charCodeAt(i);
+  }
+
+  bytes.push(0x80);
+
+  var l = bytes.length/4 + 2;
+  var N = Math.ceil(l/16);
+  var M = new Array(N);
+
+  for (var i=0; i<N; i++) {
+    M[i] = new Array(16);
+    for (var j=0; j<16; j++) {
+      M[i][j] =
+        bytes[i * 64 + j * 4] << 24 |
+        bytes[i * 64 + j * 4 + 1] << 16 |
+        bytes[i * 64 + j * 4 + 2] << 8 |
+        bytes[i * 64 + j * 4 + 3];
+    }
+  }
+
+  M[N - 1][14] = ((bytes.length - 1) * 8) /
+    Math.pow(2, 32); M[N - 1][14] = Math.floor(M[N - 1][14]);
+  M[N - 1][15] = ((bytes.length - 1) * 8) & 0xffffffff;
+
+  for (var i=0; i<N; i++) {
+    var W = new Array(80);
+
+    for (var t=0; t<16; t++) W[t] = M[i][t];
+    for (var t=16; t<80; t++) {
+      W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);
+    }
+
+    var a = H[0];
+    var b = H[1];
+    var c = H[2];
+    var d = H[3];
+    var e = H[4];
+
+    for (var t=0; t<80; t++) {
+      var s = Math.floor(t/20);
+      var T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0;
+      e = d;
+      d = c;
+      c = ROTL(b, 30) >>> 0;
+      b = a;
+      a = T;
+    }
+
+    H[0] = (H[0] + a) >>> 0;
+    H[1] = (H[1] + b) >>> 0;
+    H[2] = (H[2] + c) >>> 0;
+    H[3] = (H[3] + d) >>> 0;
+    H[4] = (H[4] + e) >>> 0;
+  }
+
+  return [
+    H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff,
+    H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff,
+    H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff,
+    H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff,
+    H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff
+  ];
+}
+
+module.exports = sha1;
diff --git a/setup-maven/node_modules/uuid/lib/sha1.js b/setup-maven/node_modules/uuid/lib/sha1.js
new file mode 100644
index 0000000..0b54b25
--- /dev/null
+++ b/setup-maven/node_modules/uuid/lib/sha1.js
@@ -0,0 +1,25 @@
+'use strict';
+
+var crypto = require('crypto');
+
+function sha1(bytes) {
+  if (typeof Buffer.from === 'function') {
+    // Modern Buffer API
+    if (Array.isArray(bytes)) {
+      bytes = Buffer.from(bytes);
+    } else if (typeof bytes === 'string') {
+      bytes = Buffer.from(bytes, 'utf8');
+    }
+  } else {
+    // Pre-v4 Buffer API
+    if (Array.isArray(bytes)) {
+      bytes = new Buffer(bytes);
+    } else if (typeof bytes === 'string') {
+      bytes = new Buffer(bytes, 'utf8');
+    }
+  }
+
+  return crypto.createHash('sha1').update(bytes).digest();
+}
+
+module.exports = sha1;
diff --git a/setup-maven/node_modules/uuid/lib/v35.js b/setup-maven/node_modules/uuid/lib/v35.js
new file mode 100644
index 0000000..8b066cc
--- /dev/null
+++ b/setup-maven/node_modules/uuid/lib/v35.js
@@ -0,0 +1,57 @@
+var bytesToUuid = require('./bytesToUuid');
+
+function uuidToBytes(uuid) {
+  // Note: We assume we're being passed a valid uuid string
+  var bytes = [];
+  uuid.replace(/[a-fA-F0-9]{2}/g, function(hex) {
+    bytes.push(parseInt(hex, 16));
+  });
+
+  return bytes;
+}
+
+function stringToBytes(str) {
+  str = unescape(encodeURIComponent(str)); // UTF8 escape
+  var bytes = new Array(str.length);
+  for (var i = 0; i < str.length; i++) {
+    bytes[i] = str.charCodeAt(i);
+  }
+  return bytes;
+}
+
+module.exports = function(name, version, hashfunc) {
+  var generateUUID = function(value, namespace, buf, offset) {
+    var off = buf && offset || 0;
+
+    if (typeof(value) == 'string') value = stringToBytes(value);
+    if (typeof(namespace) == 'string') namespace = uuidToBytes(namespace);
+
+    if (!Array.isArray(value)) throw TypeError('value must be an array of bytes');
+    if (!Array.isArray(namespace) || namespace.length !== 16) throw TypeError('namespace must be uuid string or an Array of 16 byte values');
+
+    // Per 4.3
+    var bytes = hashfunc(namespace.concat(value));
+    bytes[6] = (bytes[6] & 0x0f) | version;
+    bytes[8] = (bytes[8] & 0x3f) | 0x80;
+
+    if (buf) {
+      for (var idx = 0; idx < 16; ++idx) {
+        buf[off+idx] = bytes[idx];
+      }
+    }
+
+    return buf || bytesToUuid(bytes);
+  };
+
+  // Function#name is not settable on some platforms (#270)
+  try {
+    generateUUID.name = name;
+  } catch (err) {
+  }
+
+  // Pre-defined namespaces, per Appendix C
+  generateUUID.DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';
+  generateUUID.URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';
+
+  return generateUUID;
+};
diff --git a/setup-maven/node_modules/uuid/package.json b/setup-maven/node_modules/uuid/package.json
new file mode 100644
index 0000000..710bbe4
--- /dev/null
+++ b/setup-maven/node_modules/uuid/package.json
@@ -0,0 +1,95 @@
+{
+  "_from": "uuid@^3.3.2",
+  "_id": "uuid@3.3.3",
+  "_inBundle": false,
+  "_integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==",
+  "_location": "/uuid",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "uuid@^3.3.2",
+    "name": "uuid",
+    "escapedName": "uuid",
+    "rawSpec": "^3.3.2",
+    "saveSpec": null,
+    "fetchSpec": "^3.3.2"
+  },
+  "_requiredBy": [
+    "/@actions/tool-cache"
+  ],
+  "_resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz",
+  "_shasum": "4568f0216e78760ee1dbf3a4d2cf53e224112866",
+  "_spec": "uuid@^3.3.2",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/@actions/tool-cache",
+  "bin": {
+    "uuid": "./bin/uuid"
+  },
+  "browser": {
+    "./lib/rng.js": "./lib/rng-browser.js",
+    "./lib/sha1.js": "./lib/sha1-browser.js",
+    "./lib/md5.js": "./lib/md5-browser.js"
+  },
+  "bugs": {
+    "url": "https://github.com/kelektiv/node-uuid/issues"
+  },
+  "bundleDependencies": false,
+  "commitlint": {
+    "extends": [
+      "@commitlint/config-conventional"
+    ]
+  },
+  "contributors": [
+    {
+      "name": "Robert Kieffer",
+      "email": "robert@broofa.com"
+    },
+    {
+      "name": "Christoph Tavan",
+      "email": "dev@tavan.de"
+    },
+    {
+      "name": "AJ ONeal",
+      "email": "coolaj86@gmail.com"
+    },
+    {
+      "name": "Vincent Voyer",
+      "email": "vincent@zeroload.net"
+    },
+    {
+      "name": "Roman Shtylman",
+      "email": "shtylman@gmail.com"
+    }
+  ],
+  "deprecated": false,
+  "description": "RFC4122 (v1, v4, and v5) UUIDs",
+  "devDependencies": {
+    "@commitlint/cli": "8.1.0",
+    "@commitlint/config-conventional": "8.1.0",
+    "eslint": "6.2.0",
+    "husky": "3.0.4",
+    "mocha": "6.2.0",
+    "runmd": "1.2.1",
+    "standard-version": "7.0.0"
+  },
+  "homepage": "https://github.com/kelektiv/node-uuid#readme",
+  "keywords": [
+    "uuid",
+    "guid",
+    "rfc4122"
+  ],
+  "license": "MIT",
+  "name": "uuid",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/kelektiv/node-uuid.git"
+  },
+  "scripts": {
+    "commitmsg": "commitlint -E HUSKY_GIT_PARAMS",
+    "md": "runmd --watch --output=README.md README_js.md",
+    "prepare": "runmd --output=README.md README_js.md",
+    "release": "standard-version",
+    "test": "mocha test/test.js"
+  },
+  "version": "3.3.3"
+}
diff --git a/setup-maven/node_modules/uuid/v1.js b/setup-maven/node_modules/uuid/v1.js
new file mode 100644
index 0000000..d84c0f4
--- /dev/null
+++ b/setup-maven/node_modules/uuid/v1.js
@@ -0,0 +1,109 @@
+var rng = require('./lib/rng');
+var bytesToUuid = require('./lib/bytesToUuid');
+
+// **`v1()` - Generate time-based UUID**
+//
+// Inspired by https://github.com/LiosK/UUID.js
+// and http://docs.python.org/library/uuid.html
+
+var _nodeId;
+var _clockseq;
+
+// Previous uuid creation time
+var _lastMSecs = 0;
+var _lastNSecs = 0;
+
+// See https://github.com/broofa/node-uuid for API details
+function v1(options, buf, offset) {
+  var i = buf && offset || 0;
+  var b = buf || [];
+
+  options = options || {};
+  var node = options.node || _nodeId;
+  var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq;
+
+  // node and clockseq need to be initialized to random values if they're not
+  // specified.  We do this lazily to minimize issues related to insufficient
+  // system entropy.  See #189
+  if (node == null || clockseq == null) {
+    var seedBytes = rng();
+    if (node == null) {
+      // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)
+      node = _nodeId = [
+        seedBytes[0] | 0x01,
+        seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]
+      ];
+    }
+    if (clockseq == null) {
+      // Per 4.2.2, randomize (14 bit) clockseq
+      clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;
+    }
+  }
+
+  // UUID timestamps are 100 nano-second units since the Gregorian epoch,
+  // (1582-10-15 00:00).  JSNumbers aren't precise enough for this, so
+  // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'
+  // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.
+  var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime();
+
+  // Per 4.2.1.2, use count of uuid's generated during the current clock
+  // cycle to simulate higher resolution clock
+  var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1;
+
+  // Time since last uuid creation (in msecs)
+  var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000;
+
+  // Per 4.2.1.2, Bump clockseq on clock regression
+  if (dt < 0 && options.clockseq === undefined) {
+    clockseq = clockseq + 1 & 0x3fff;
+  }
+
+  // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new
+  // time interval
+  if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {
+    nsecs = 0;
+  }
+
+  // Per 4.2.1.2 Throw error if too many uuids are requested
+  if (nsecs >= 10000) {
+    throw new Error('uuid.v1(): Can\'t create more than 10M uuids/sec');
+  }
+
+  _lastMSecs = msecs;
+  _lastNSecs = nsecs;
+  _clockseq = clockseq;
+
+  // Per 4.1.4 - Convert from unix epoch to Gregorian epoch
+  msecs += 12219292800000;
+
+  // `time_low`
+  var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;
+  b[i++] = tl >>> 24 & 0xff;
+  b[i++] = tl >>> 16 & 0xff;
+  b[i++] = tl >>> 8 & 0xff;
+  b[i++] = tl & 0xff;
+
+  // `time_mid`
+  var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff;
+  b[i++] = tmh >>> 8 & 0xff;
+  b[i++] = tmh & 0xff;
+
+  // `time_high_and_version`
+  b[i++] = tmh >>> 24 & 0xf | 0x10; // include version
+  b[i++] = tmh >>> 16 & 0xff;
+
+  // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)
+  b[i++] = clockseq >>> 8 | 0x80;
+
+  // `clock_seq_low`
+  b[i++] = clockseq & 0xff;
+
+  // `node`
+  for (var n = 0; n < 6; ++n) {
+    b[i + n] = node[n];
+  }
+
+  return buf ? buf : bytesToUuid(b);
+}
+
+module.exports = v1;
diff --git a/setup-maven/node_modules/uuid/v3.js b/setup-maven/node_modules/uuid/v3.js
new file mode 100644
index 0000000..ee7e14c
--- /dev/null
+++ b/setup-maven/node_modules/uuid/v3.js
@@ -0,0 +1,4 @@
+var v35 = require('./lib/v35.js');
+var md5 = require('./lib/md5');
+
+module.exports = v35('v3', 0x30, md5);
\ No newline at end of file
diff --git a/setup-maven/node_modules/uuid/v4.js b/setup-maven/node_modules/uuid/v4.js
new file mode 100644
index 0000000..1f07be1
--- /dev/null
+++ b/setup-maven/node_modules/uuid/v4.js
@@ -0,0 +1,29 @@
+var rng = require('./lib/rng');
+var bytesToUuid = require('./lib/bytesToUuid');
+
+function v4(options, buf, offset) {
+  var i = buf && offset || 0;
+
+  if (typeof(options) == 'string') {
+    buf = options === 'binary' ? new Array(16) : null;
+    options = null;
+  }
+  options = options || {};
+
+  var rnds = options.random || (options.rng || rng)();
+
+  // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
+  rnds[6] = (rnds[6] & 0x0f) | 0x40;
+  rnds[8] = (rnds[8] & 0x3f) | 0x80;
+
+  // Copy bytes to buffer, if provided
+  if (buf) {
+    for (var ii = 0; ii < 16; ++ii) {
+      buf[i + ii] = rnds[ii];
+    }
+  }
+
+  return buf || bytesToUuid(rnds);
+}
+
+module.exports = v4;
diff --git a/setup-maven/node_modules/uuid/v5.js b/setup-maven/node_modules/uuid/v5.js
new file mode 100644
index 0000000..4945baf
--- /dev/null
+++ b/setup-maven/node_modules/uuid/v5.js
@@ -0,0 +1,3 @@
+var v35 = require('./lib/v35.js');
+var sha1 = require('./lib/sha1');
+module.exports = v35('v5', 0x50, sha1);
diff --git a/setup-maven/node_modules/which/CHANGELOG.md b/setup-maven/node_modules/which/CHANGELOG.md
new file mode 100644
index 0000000..3d83d26
--- /dev/null
+++ b/setup-maven/node_modules/which/CHANGELOG.md
@@ -0,0 +1,152 @@
+# Changes
+
+
+## 1.3.1
+
+* update deps
+* update travis
+
+## v1.3.0
+
+* Add nothrow option to which.sync
+* update tap
+
+## v1.2.14
+
+* appveyor: drop node 5 and 0.x
+* travis-ci: add node 6, drop 0.x
+
+## v1.2.13
+
+* test: Pass missing option to pass on windows
+* update tap
+* update isexe to 2.0.0
+* neveragain.tech pledge request
+
+## v1.2.12
+
+* Removed unused require
+
+## v1.2.11
+
+* Prevent changelog script from being included in package
+
+## v1.2.10
+
+* Use env.PATH only, not env.Path
+
+## v1.2.9
+
+* fix for paths starting with ../
+* Remove unused `is-absolute` module
+
+## v1.2.8
+
+* bullet items in changelog that contain (but don't start with) #
+
+## v1.2.7
+
+* strip 'update changelog' changelog entries out of changelog
+
+## v1.2.6
+
+* make the changelog bulleted
+
+## v1.2.5
+
+* make a changelog, and keep it up to date
+* don't include tests in package
+* Properly handle relative-path executables
+* appveyor
+* Attach error code to Not Found error
+* Make tests pass on Windows
+
+## v1.2.4
+
+* Fix typo
+
+## v1.2.3
+
+* update isexe, fix regression in pathExt handling
+
+## v1.2.2
+
+* update deps, use isexe module, test windows
+
+## v1.2.1
+
+* Sometimes windows PATH entries are quoted
+* Fixed a bug in the check for group and user mode bits. This bug was introduced during refactoring for supporting strict mode.
+* doc cli
+
+## v1.2.0
+
+* Add support for opt.all and -as cli flags
+* test the bin
+* update travis
+* Allow checking for multiple programs in bin/which
+* tap 2
+
+## v1.1.2
+
+* travis
+* Refactored and fixed undefined error on Windows
+* Support strict mode
+
+## v1.1.1
+
+* test +g exes against secondary groups, if available
+* Use windows exe semantics on cygwin & msys
+* cwd should be first in path on win32, not last
+* Handle lower-case 'env.Path' on Windows
+* Update docs
+* use single-quotes
+
+## v1.1.0
+
+* Add tests, depend on is-absolute
+
+## v1.0.9
+
+* which.js: root is allowed to execute files owned by anyone
+
+## v1.0.8
+
+* don't use graceful-fs
+
+## v1.0.7
+
+* add license to package.json
+
+## v1.0.6
+
+* isc license
+
+## 1.0.5
+
+* Awful typo
+
+## 1.0.4
+
+* Test for path absoluteness properly
+* win: Allow '' as a pathext if cmd has a . in it
+
+## 1.0.3
+
+* Remove references to execPath
+* Make `which.sync()` work on Windows by honoring the PATHEXT variable.
+* Make `isExe()` always return true on Windows.
+* MIT
+
+## 1.0.2
+
+* Only files can be exes
+
+## 1.0.1
+
+* Respect the PATHEXT env for win32 support
+* should 0755 the bin
+* binary
+* guts
+* package
+* 1st
diff --git a/setup-maven/node_modules/which/LICENSE b/setup-maven/node_modules/which/LICENSE
new file mode 100644
index 0000000..19129e3
--- /dev/null
+++ b/setup-maven/node_modules/which/LICENSE
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/setup-maven/node_modules/which/README.md b/setup-maven/node_modules/which/README.md
new file mode 100644
index 0000000..8c0b0cb
--- /dev/null
+++ b/setup-maven/node_modules/which/README.md
@@ -0,0 +1,51 @@
+# which
+
+Like the unix `which` utility.
+
+Finds the first instance of a specified executable in the PATH
+environment variable.  Does not cache the results, so `hash -r` is not
+needed when the PATH changes.
+
+## USAGE
+
+```javascript
+var which = require('which')
+
+// async usage
+which('node', function (er, resolvedPath) {
+  // er is returned if no "node" is found on the PATH
+  // if it is found, then the absolute path to the exec is returned
+})
+
+// sync usage
+// throws if not found
+var resolved = which.sync('node')
+
+// if nothrow option is used, returns null if not found
+resolved = which.sync('node', {nothrow: true})
+
+// Pass options to override the PATH and PATHEXT environment vars.
+which('node', { path: someOtherPath }, function (er, resolved) {
+  if (er)
+    throw er
+  console.log('found at %j', resolved)
+})
+```
+
+## CLI USAGE
+
+Same as the BSD `which(1)` binary.
+
+```
+usage: which [-as] program ...
+```
+
+## OPTIONS
+
+You may pass an options object as the second argument.
+
+- `path`: Use instead of the `PATH` environment variable.
+- `pathExt`: Use instead of the `PATHEXT` environment variable.
+- `all`: Return all matches, instead of just the first one.  Note that
+  this means the function returns an array of strings instead of a
+  single string.
diff --git a/setup-maven/node_modules/which/bin/which b/setup-maven/node_modules/which/bin/which
new file mode 100755
index 0000000..7cee372
--- /dev/null
+++ b/setup-maven/node_modules/which/bin/which
@@ -0,0 +1,52 @@
+#!/usr/bin/env node
+var which = require("../")
+if (process.argv.length < 3)
+  usage()
+
+function usage () {
+  console.error('usage: which [-as] program ...')
+  process.exit(1)
+}
+
+var all = false
+var silent = false
+var dashdash = false
+var args = process.argv.slice(2).filter(function (arg) {
+  if (dashdash || !/^-/.test(arg))
+    return true
+
+  if (arg === '--') {
+    dashdash = true
+    return false
+  }
+
+  var flags = arg.substr(1).split('')
+  for (var f = 0; f < flags.length; f++) {
+    var flag = flags[f]
+    switch (flag) {
+      case 's':
+        silent = true
+        break
+      case 'a':
+        all = true
+        break
+      default:
+        console.error('which: illegal option -- ' + flag)
+        usage()
+    }
+  }
+  return false
+})
+
+process.exit(args.reduce(function (pv, current) {
+  try {
+    var f = which.sync(current, { all: all })
+    if (all)
+      f = f.join('\n')
+    if (!silent)
+      console.log(f)
+    return pv;
+  } catch (e) {
+    return 1;
+  }
+}, 0))
diff --git a/setup-maven/node_modules/which/package.json b/setup-maven/node_modules/which/package.json
new file mode 100644
index 0000000..91b30f5
--- /dev/null
+++ b/setup-maven/node_modules/which/package.json
@@ -0,0 +1,65 @@
+{
+  "_from": "which@^1.2.9",
+  "_id": "which@1.3.1",
+  "_inBundle": false,
+  "_integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+  "_location": "/which",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "which@^1.2.9",
+    "name": "which",
+    "escapedName": "which",
+    "rawSpec": "^1.2.9",
+    "saveSpec": null,
+    "fetchSpec": "^1.2.9"
+  },
+  "_requiredBy": [
+    "/cross-spawn"
+  ],
+  "_resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+  "_shasum": "a45043d54f5805316da8d62f9f50918d3da70b0a",
+  "_spec": "which@^1.2.9",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/cross-spawn",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "http://blog.izs.me"
+  },
+  "bin": {
+    "which": "./bin/which"
+  },
+  "bugs": {
+    "url": "https://github.com/isaacs/node-which/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "isexe": "^2.0.0"
+  },
+  "deprecated": false,
+  "description": "Like which(1) unix command. Find the first instance of an executable in the PATH.",
+  "devDependencies": {
+    "mkdirp": "^0.5.0",
+    "rimraf": "^2.6.2",
+    "tap": "^12.0.1"
+  },
+  "files": [
+    "which.js",
+    "bin/which"
+  ],
+  "homepage": "https://github.com/isaacs/node-which#readme",
+  "license": "ISC",
+  "main": "which.js",
+  "name": "which",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/isaacs/node-which.git"
+  },
+  "scripts": {
+    "changelog": "bash gen-changelog.sh",
+    "postversion": "npm run changelog && git add CHANGELOG.md && git commit -m 'update changelog - '${npm_package_version}",
+    "test": "tap test/*.js --cov"
+  },
+  "version": "1.3.1"
+}
diff --git a/setup-maven/node_modules/which/which.js b/setup-maven/node_modules/which/which.js
new file mode 100644
index 0000000..4347f91
--- /dev/null
+++ b/setup-maven/node_modules/which/which.js
@@ -0,0 +1,135 @@
+module.exports = which
+which.sync = whichSync
+
+var isWindows = process.platform === 'win32' ||
+    process.env.OSTYPE === 'cygwin' ||
+    process.env.OSTYPE === 'msys'
+
+var path = require('path')
+var COLON = isWindows ? ';' : ':'
+var isexe = require('isexe')
+
+function getNotFoundError (cmd) {
+  var er = new Error('not found: ' + cmd)
+  er.code = 'ENOENT'
+
+  return er
+}
+
+function getPathInfo (cmd, opt) {
+  var colon = opt.colon || COLON
+  var pathEnv = opt.path || process.env.PATH || ''
+  var pathExt = ['']
+
+  pathEnv = pathEnv.split(colon)
+
+  var pathExtExe = ''
+  if (isWindows) {
+    pathEnv.unshift(process.cwd())
+    pathExtExe = (opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM')
+    pathExt = pathExtExe.split(colon)
+
+
+    // Always test the cmd itself first.  isexe will check to make sure
+    // it's found in the pathExt set.
+    if (cmd.indexOf('.') !== -1 && pathExt[0] !== '')
+      pathExt.unshift('')
+  }
+
+  // If it has a slash, then we don't bother searching the pathenv.
+  // just check the file itself, and that's it.
+  if (cmd.match(/\//) || isWindows && cmd.match(/\\/))
+    pathEnv = ['']
+
+  return {
+    env: pathEnv,
+    ext: pathExt,
+    extExe: pathExtExe
+  }
+}
+
+function which (cmd, opt, cb) {
+  if (typeof opt === 'function') {
+    cb = opt
+    opt = {}
+  }
+
+  var info = getPathInfo(cmd, opt)
+  var pathEnv = info.env
+  var pathExt = info.ext
+  var pathExtExe = info.extExe
+  var found = []
+
+  ;(function F (i, l) {
+    if (i === l) {
+      if (opt.all && found.length)
+        return cb(null, found)
+      else
+        return cb(getNotFoundError(cmd))
+    }
+
+    var pathPart = pathEnv[i]
+    if (pathPart.charAt(0) === '"' && pathPart.slice(-1) === '"')
+      pathPart = pathPart.slice(1, -1)
+
+    var p = path.join(pathPart, cmd)
+    if (!pathPart && (/^\.[\\\/]/).test(cmd)) {
+      p = cmd.slice(0, 2) + p
+    }
+    ;(function E (ii, ll) {
+      if (ii === ll) return F(i + 1, l)
+      var ext = pathExt[ii]
+      isexe(p + ext, { pathExt: pathExtExe }, function (er, is) {
+        if (!er && is) {
+          if (opt.all)
+            found.push(p + ext)
+          else
+            return cb(null, p + ext)
+        }
+        return E(ii + 1, ll)
+      })
+    })(0, pathExt.length)
+  })(0, pathEnv.length)
+}
+
+function whichSync (cmd, opt) {
+  opt = opt || {}
+
+  var info = getPathInfo(cmd, opt)
+  var pathEnv = info.env
+  var pathExt = info.ext
+  var pathExtExe = info.extExe
+  var found = []
+
+  for (var i = 0, l = pathEnv.length; i < l; i ++) {
+    var pathPart = pathEnv[i]
+    if (pathPart.charAt(0) === '"' && pathPart.slice(-1) === '"')
+      pathPart = pathPart.slice(1, -1)
+
+    var p = path.join(pathPart, cmd)
+    if (!pathPart && /^\.[\\\/]/.test(cmd)) {
+      p = cmd.slice(0, 2) + p
+    }
+    for (var j = 0, ll = pathExt.length; j < ll; j ++) {
+      var cur = p + pathExt[j]
+      var is
+      try {
+        is = isexe.sync(cur, { pathExt: pathExtExe })
+        if (is) {
+          if (opt.all)
+            found.push(cur)
+          else
+            return cur
+        }
+      } catch (ex) {}
+    }
+  }
+
+  if (opt.all && found.length)
+    return found
+
+  if (opt.nothrow)
+    return null
+
+  throw getNotFoundError(cmd)
+}
diff --git a/setup-maven/node_modules/windows-release/index.d.ts b/setup-maven/node_modules/windows-release/index.d.ts
new file mode 100644
index 0000000..6a9c44f
--- /dev/null
+++ b/setup-maven/node_modules/windows-release/index.d.ts
@@ -0,0 +1,30 @@
+/**
+Get the name of a Windows version from the release number: `5.1.2600` → `XP`.
+
+@param release - By default, the current OS is used, but you can supply a custom release number, which is the output of [`os.release()`](https://nodejs.org/api/os.html#os_os_release).
+
+Note: Most Windows Server versions cannot be detected based on the release number alone. There is runtime detection in place to work around this, but it will only be used if no argument is supplied, or the supplied argument matches `os.release()`.
+
+@example
+```
+import * as os from 'os';
+import windowsRelease = require('windows-release');
+
+// On a Windows XP system
+
+windowsRelease();
+//=> 'XP'
+
+os.release();
+//=> '5.1.2600'
+
+windowsRelease(os.release());
+//=> 'XP'
+
+windowsRelease('4.9.3000');
+//=> 'ME'
+```
+*/
+declare function windowsRelease(release?: string): string;
+
+export = windowsRelease;
diff --git a/setup-maven/node_modules/windows-release/index.js b/setup-maven/node_modules/windows-release/index.js
new file mode 100644
index 0000000..cb9ea9f
--- /dev/null
+++ b/setup-maven/node_modules/windows-release/index.js
@@ -0,0 +1,44 @@
+'use strict';
+const os = require('os');
+const execa = require('execa');
+
+// Reference: https://www.gaijin.at/en/lstwinver.php
+const names = new Map([
+	['10.0', '10'],
+	['6.3', '8.1'],
+	['6.2', '8'],
+	['6.1', '7'],
+	['6.0', 'Vista'],
+	['5.2', 'Server 2003'],
+	['5.1', 'XP'],
+	['5.0', '2000'],
+	['4.9', 'ME'],
+	['4.1', '98'],
+	['4.0', '95']
+]);
+
+const windowsRelease = release => {
+	const version = /\d+\.\d/.exec(release || os.release());
+
+	if (release && !version) {
+		throw new Error('`release` argument doesn\'t match `n.n`');
+	}
+
+	const ver = (version || [])[0];
+
+	// Server 2008, 2012 and 2016 versions are ambiguous with desktop versions and must be detected at runtime.
+	// If `release` is omitted or we're on a Windows system, and the version number is an ambiguous version
+	// then use `wmic` to get the OS caption: https://msdn.microsoft.com/en-us/library/aa394531(v=vs.85).aspx
+	// If the resulting caption contains the year 2008, 2012 or 2016, it is a server version, so return a server OS name.
+	if ((!release || release === os.release()) && ['6.1', '6.2', '6.3', '10.0'].includes(ver)) {
+		const stdout = execa.sync('wmic', ['os', 'get', 'Caption']).stdout || '';
+		const year = (stdout.match(/2008|2012|2016/) || [])[0];
+		if (year) {
+			return `Server ${year}`;
+		}
+	}
+
+	return names.get(ver);
+};
+
+module.exports = windowsRelease;
diff --git a/setup-maven/node_modules/windows-release/license b/setup-maven/node_modules/windows-release/license
new file mode 100644
index 0000000..e7af2f7
--- /dev/null
+++ b/setup-maven/node_modules/windows-release/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/setup-maven/node_modules/windows-release/package.json b/setup-maven/node_modules/windows-release/package.json
new file mode 100644
index 0000000..fb7493f
--- /dev/null
+++ b/setup-maven/node_modules/windows-release/package.json
@@ -0,0 +1,75 @@
+{
+  "_from": "windows-release@^3.1.0",
+  "_id": "windows-release@3.2.0",
+  "_inBundle": false,
+  "_integrity": "sha512-QTlz2hKLrdqukrsapKsINzqMgOUpQW268eJ0OaOpJN32h272waxR9fkB9VoWRtK7uKHG5EHJcTXQBD8XZVJkFA==",
+  "_location": "/windows-release",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "windows-release@^3.1.0",
+    "name": "windows-release",
+    "escapedName": "windows-release",
+    "rawSpec": "^3.1.0",
+    "saveSpec": null,
+    "fetchSpec": "^3.1.0"
+  },
+  "_requiredBy": [
+    "/os-name"
+  ],
+  "_resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.2.0.tgz",
+  "_shasum": "8122dad5afc303d833422380680a79cdfa91785f",
+  "_spec": "windows-release@^3.1.0",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/os-name",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "bugs": {
+    "url": "https://github.com/sindresorhus/windows-release/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "execa": "^1.0.0"
+  },
+  "deprecated": false,
+  "description": "Get the name of a Windows version from the release number: `5.1.2600` → `XP`",
+  "devDependencies": {
+    "ava": "^1.4.1",
+    "tsd": "^0.7.2",
+    "xo": "^0.24.0"
+  },
+  "engines": {
+    "node": ">=6"
+  },
+  "files": [
+    "index.js",
+    "index.d.ts"
+  ],
+  "homepage": "https://github.com/sindresorhus/windows-release#readme",
+  "keywords": [
+    "os",
+    "win",
+    "win32",
+    "windows",
+    "operating",
+    "system",
+    "platform",
+    "name",
+    "title",
+    "release",
+    "version"
+  ],
+  "license": "MIT",
+  "name": "windows-release",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/sindresorhus/windows-release.git"
+  },
+  "scripts": {
+    "test": "xo && ava && tsd"
+  },
+  "version": "3.2.0"
+}
diff --git a/setup-maven/node_modules/windows-release/readme.md b/setup-maven/node_modules/windows-release/readme.md
new file mode 100644
index 0000000..66557ea
--- /dev/null
+++ b/setup-maven/node_modules/windows-release/readme.md
@@ -0,0 +1,56 @@
+# windows-release [![Build Status](https://travis-ci.org/sindresorhus/windows-release.svg?branch=master)](https://travis-ci.org/sindresorhus/windows-release)
+
+> Get the name of a Windows version from the release number: `5.1.2600` → `XP`
+
+
+## Install
+
+```
+$ npm install windows-release
+```
+
+
+## Usage
+
+```js
+const os = require('os');
+const windowsRelease = require('windows-release');
+
+// On a Windows XP system
+
+windowsRelease();
+//=> 'XP'
+
+os.release();
+//=> '5.1.2600'
+
+windowsRelease(os.release());
+//=> 'XP'
+
+windowsRelease('4.9.3000');
+//=> 'ME'
+```
+
+
+## API
+
+### windowsRelease([release])
+
+#### release
+
+Type: `string`
+
+By default, the current OS is used, but you can supply a custom release number, which is the output of [`os.release()`](https://nodejs.org/api/os.html#os_os_release).
+
+Note: Most Windows Server versions cannot be detected based on the release number alone. There is runtime detection in place to work around this, but it will only be used if no argument is supplied, or the supplied argument matches `os.release()`.
+
+
+## Related
+
+- [os-name](https://github.com/sindresorhus/os-name) - Get the name of the current operating system
+- [macos-release](https://github.com/sindresorhus/macos-release) - Get the name and version of a macOS release from the Darwin version
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/setup-maven/node_modules/wrappy/LICENSE b/setup-maven/node_modules/wrappy/LICENSE
new file mode 100644
index 0000000..19129e3
--- /dev/null
+++ b/setup-maven/node_modules/wrappy/LICENSE
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/setup-maven/node_modules/wrappy/README.md b/setup-maven/node_modules/wrappy/README.md
new file mode 100644
index 0000000..98eab25
--- /dev/null
+++ b/setup-maven/node_modules/wrappy/README.md
@@ -0,0 +1,36 @@
+# wrappy
+
+Callback wrapping utility
+
+## USAGE
+
+```javascript
+var wrappy = require("wrappy")
+
+// var wrapper = wrappy(wrapperFunction)
+
+// make sure a cb is called only once
+// See also: http://npm.im/once for this specific use case
+var once = wrappy(function (cb) {
+  var called = false
+  return function () {
+    if (called) return
+    called = true
+    return cb.apply(this, arguments)
+  }
+})
+
+function printBoo () {
+  console.log('boo')
+}
+// has some rando property
+printBoo.iAmBooPrinter = true
+
+var onlyPrintOnce = once(printBoo)
+
+onlyPrintOnce() // prints 'boo'
+onlyPrintOnce() // does nothing
+
+// random property is retained!
+assert.equal(onlyPrintOnce.iAmBooPrinter, true)
+```
diff --git a/setup-maven/node_modules/wrappy/package.json b/setup-maven/node_modules/wrappy/package.json
new file mode 100644
index 0000000..17fdf9f
--- /dev/null
+++ b/setup-maven/node_modules/wrappy/package.json
@@ -0,0 +1,58 @@
+{
+  "_from": "wrappy@1",
+  "_id": "wrappy@1.0.2",
+  "_inBundle": false,
+  "_integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+  "_location": "/wrappy",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "wrappy@1",
+    "name": "wrappy",
+    "escapedName": "wrappy",
+    "rawSpec": "1",
+    "saveSpec": null,
+    "fetchSpec": "1"
+  },
+  "_requiredBy": [
+    "/once"
+  ],
+  "_resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+  "_shasum": "b5243d8f3ec1aa35f1364605bc0d1036e30ab69f",
+  "_spec": "wrappy@1",
+  "_where": "/home/stCarolas/Coding/projects/setup-maven/node_modules/once",
+  "author": {
+    "name": "Isaac Z. Schlueter",
+    "email": "i@izs.me",
+    "url": "http://blog.izs.me/"
+  },
+  "bugs": {
+    "url": "https://github.com/npm/wrappy/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {},
+  "deprecated": false,
+  "description": "Callback wrapping utility",
+  "devDependencies": {
+    "tap": "^2.3.1"
+  },
+  "directories": {
+    "test": "test"
+  },
+  "files": [
+    "wrappy.js"
+  ],
+  "homepage": "https://github.com/npm/wrappy",
+  "license": "ISC",
+  "main": "wrappy.js",
+  "name": "wrappy",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/npm/wrappy.git"
+  },
+  "scripts": {
+    "test": "tap --coverage test/*.js"
+  },
+  "version": "1.0.2"
+}
diff --git a/setup-maven/node_modules/wrappy/wrappy.js b/setup-maven/node_modules/wrappy/wrappy.js
new file mode 100644
index 0000000..bb7e7d6
--- /dev/null
+++ b/setup-maven/node_modules/wrappy/wrappy.js
@@ -0,0 +1,33 @@
+// Returns a wrapper function that returns a wrapped callback
+// The wrapper function should do some stuff, and return a
+// presumably different callback function.
+// This makes sure that own properties are retained, so that
+// decorations and such are not lost along the way.
+module.exports = wrappy
+function wrappy (fn, cb) {
+  if (fn && cb) return wrappy(fn)(cb)
+
+  if (typeof fn !== 'function')
+    throw new TypeError('need wrapper function')
+
+  Object.keys(fn).forEach(function (k) {
+    wrapper[k] = fn[k]
+  })
+
+  return wrapper
+
+  function wrapper() {
+    var args = new Array(arguments.length)
+    for (var i = 0; i < args.length; i++) {
+      args[i] = arguments[i]
+    }
+    var ret = fn.apply(this, args)
+    var cb = args[args.length-1]
+    if (typeof ret === 'function' && ret !== cb) {
+      Object.keys(cb).forEach(function (k) {
+        ret[k] = cb[k]
+      })
+    }
+    return ret
+  }
+}
diff --git a/setup-maven/package-lock.json b/setup-maven/package-lock.json
new file mode 100644
index 0000000..ae247d4
--- /dev/null
+++ b/setup-maven/package-lock.json
@@ -0,0 +1,916 @@
+{
+  "name": "setup-maven",
+  "version": "1.0.0",
+  "lockfileVersion": 1,
+  "requires": true,
+  "dependencies": {
+    "@actions/core": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.2.0.tgz",
+      "integrity": "sha512-ZKdyhlSlyz38S6YFfPnyNgCDZuAF2T0Qv5eHflNWytPS8Qjvz39bZFMry9Bb/dpSnqWcNeav5yM2CTYpJeY+Dw=="
+    },
+    "@actions/exec": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.0.1.tgz",
+      "integrity": "sha512-nvFkxwiicvpzNiCBF4wFBDfnBvi7xp/as7LE1hBxBxKG2L29+gkIPBiLKMVORL+Hg3JNf07AKRfl0V5djoypjQ=="
+    },
+    "@actions/github": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/@actions/github/-/github-1.1.0.tgz",
+      "integrity": "sha512-cHf6PyoNMdei13jEdGPhKprIMFmjVVW/dnM5/9QmQDJ1ZTaGVyezUSCUIC/ySNLRvDUpeFwPYMdThSEJldSbUw==",
+      "requires": {
+        "@octokit/graphql": "^2.0.1",
+        "@octokit/rest": "^16.15.0"
+      }
+    },
+    "@actions/io": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.0.1.tgz",
+      "integrity": "sha512-rhq+tfZukbtaus7xyUtwKfuiCRXd1hWSfmJNEpFgBQJ4woqPEpsBw04awicjwz9tyG2/MVhAEMfVn664Cri5zA=="
+    },
+    "@actions/tool-cache": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/@actions/tool-cache/-/tool-cache-1.1.2.tgz",
+      "integrity": "sha512-IJczPaZr02ECa3Lgws/TJEVco9tjOujiQSZbO3dHuXXjhd5vrUtfOgGwhmz3/f97L910OraPZ8SknofUk6RvOQ==",
+      "requires": {
+        "@actions/core": "^1.1.0",
+        "@actions/exec": "^1.0.1",
+        "@actions/io": "^1.0.1",
+        "semver": "^6.1.0",
+        "typed-rest-client": "^1.4.0",
+        "uuid": "^3.3.2"
+      }
+    },
+    "@babel/code-frame": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz",
+      "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==",
+      "dev": true,
+      "requires": {
+        "@babel/highlight": "^7.0.0"
+      }
+    },
+    "@babel/highlight": {
+      "version": "7.5.0",
+      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz",
+      "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==",
+      "dev": true,
+      "requires": {
+        "chalk": "^2.0.0",
+        "esutils": "^2.0.2",
+        "js-tokens": "^4.0.0"
+      }
+    },
+    "@octokit/endpoint": {
+      "version": "5.5.1",
+      "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-5.5.1.tgz",
+      "integrity": "sha512-nBFhRUb5YzVTCX/iAK1MgQ4uWo89Gu0TH00qQHoYRCsE12dWcG1OiLd7v2EIo2+tpUKPMOQ62QFy9hy9Vg2ULg==",
+      "requires": {
+        "@octokit/types": "^2.0.0",
+        "is-plain-object": "^3.0.0",
+        "universal-user-agent": "^4.0.0"
+      },
+      "dependencies": {
+        "universal-user-agent": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-4.0.0.tgz",
+          "integrity": "sha512-eM8knLpev67iBDizr/YtqkJsF3GK8gzDc6st/WKzrTuPtcsOKW/0IdL4cnMBsU69pOx0otavLWBDGTwg+dB0aA==",
+          "requires": {
+            "os-name": "^3.1.0"
+          }
+        }
+      }
+    },
+    "@octokit/graphql": {
+      "version": "2.1.3",
+      "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-2.1.3.tgz",
+      "integrity": "sha512-XoXJqL2ondwdnMIW3wtqJWEwcBfKk37jO/rYkoxNPEVeLBDGsGO1TCWggrAlq3keGt/O+C/7VepXnukUxwt5vA==",
+      "requires": {
+        "@octokit/request": "^5.0.0",
+        "universal-user-agent": "^2.0.3"
+      }
+    },
+    "@octokit/request": {
+      "version": "5.3.1",
+      "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.3.1.tgz",
+      "integrity": "sha512-5/X0AL1ZgoU32fAepTfEoggFinO3rxsMLtzhlUX+RctLrusn/CApJuGFCd0v7GMFhF+8UiCsTTfsu7Fh1HnEJg==",
+      "requires": {
+        "@octokit/endpoint": "^5.5.0",
+        "@octokit/request-error": "^1.0.1",
+        "@octokit/types": "^2.0.0",
+        "deprecation": "^2.0.0",
+        "is-plain-object": "^3.0.0",
+        "node-fetch": "^2.3.0",
+        "once": "^1.4.0",
+        "universal-user-agent": "^4.0.0"
+      },
+      "dependencies": {
+        "universal-user-agent": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-4.0.0.tgz",
+          "integrity": "sha512-eM8knLpev67iBDizr/YtqkJsF3GK8gzDc6st/WKzrTuPtcsOKW/0IdL4cnMBsU69pOx0otavLWBDGTwg+dB0aA==",
+          "requires": {
+            "os-name": "^3.1.0"
+          }
+        }
+      }
+    },
+    "@octokit/request-error": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-1.2.0.tgz",
+      "integrity": "sha512-DNBhROBYjjV/I9n7A8kVkmQNkqFAMem90dSxqvPq57e2hBr7mNTX98y3R2zDpqMQHVRpBDjsvsfIGgBzy+4PAg==",
+      "requires": {
+        "@octokit/types": "^2.0.0",
+        "deprecation": "^2.0.0",
+        "once": "^1.4.0"
+      }
+    },
+    "@octokit/rest": {
+      "version": "16.35.0",
+      "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.35.0.tgz",
+      "integrity": "sha512-9ShFqYWo0CLoGYhA1FdtdykJuMzS/9H6vSbbQWDX4pWr4p9v+15MsH/wpd/3fIU+tSxylaNO48+PIHqOkBRx3w==",
+      "requires": {
+        "@octokit/request": "^5.2.0",
+        "@octokit/request-error": "^1.0.2",
+        "atob-lite": "^2.0.0",
+        "before-after-hook": "^2.0.0",
+        "btoa-lite": "^1.0.0",
+        "deprecation": "^2.0.0",
+        "lodash.get": "^4.4.2",
+        "lodash.set": "^4.3.2",
+        "lodash.uniq": "^4.5.0",
+        "octokit-pagination-methods": "^1.1.0",
+        "once": "^1.4.0",
+        "universal-user-agent": "^4.0.0"
+      },
+      "dependencies": {
+        "universal-user-agent": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-4.0.0.tgz",
+          "integrity": "sha512-eM8knLpev67iBDizr/YtqkJsF3GK8gzDc6st/WKzrTuPtcsOKW/0IdL4cnMBsU69pOx0otavLWBDGTwg+dB0aA==",
+          "requires": {
+            "os-name": "^3.1.0"
+          }
+        }
+      }
+    },
+    "@octokit/types": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.0.2.tgz",
+      "integrity": "sha512-StASIL2lgT3TRjxv17z9pAqbnI7HGu9DrJlg3sEBFfCLaMEqp+O3IQPUF6EZtQ4xkAu2ml6kMBBCtGxjvmtmuQ==",
+      "requires": {
+        "@types/node": ">= 8"
+      }
+    },
+    "@types/node": {
+      "version": "12.12.14",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.14.tgz",
+      "integrity": "sha512-u/SJDyXwuihpwjXy7hOOghagLEV1KdAST6syfnOk6QZAMzZuWZqXy5aYYZbh8Jdpd4escVFP0MvftHNDb9pruA=="
+    },
+    "@types/normalize-package-data": {
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
+      "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==",
+      "dev": true
+    },
+    "@types/semver": {
+      "version": "6.2.0",
+      "resolved": "https://registry.npmjs.org/@types/semver/-/semver-6.2.0.tgz",
+      "integrity": "sha512-1OzrNb4RuAzIT7wHSsgZRlMBlNsJl+do6UblR7JMW4oB7bbR+uBEYtUh7gEc/jM84GGilh68lSOokyM/zNUlBA==",
+      "dev": true
+    },
+    "ansi-styles": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+      "dev": true,
+      "requires": {
+        "color-convert": "^1.9.0"
+      }
+    },
+    "argparse": {
+      "version": "1.0.10",
+      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+      "dev": true,
+      "requires": {
+        "sprintf-js": "~1.0.2"
+      }
+    },
+    "atob-lite": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/atob-lite/-/atob-lite-2.0.0.tgz",
+      "integrity": "sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY="
+    },
+    "before-after-hook": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.1.0.tgz",
+      "integrity": "sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A=="
+    },
+    "btoa-lite": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz",
+      "integrity": "sha1-M3dm2hWAEhD92VbCLpxokaudAzc="
+    },
+    "caller-callsite": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz",
+      "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=",
+      "dev": true,
+      "requires": {
+        "callsites": "^2.0.0"
+      }
+    },
+    "caller-path": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz",
+      "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=",
+      "dev": true,
+      "requires": {
+        "caller-callsite": "^2.0.0"
+      }
+    },
+    "callsites": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
+      "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=",
+      "dev": true
+    },
+    "chalk": {
+      "version": "2.4.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+      "dev": true,
+      "requires": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      }
+    },
+    "ci-info": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
+      "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
+      "dev": true
+    },
+    "color-convert": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+      "dev": true,
+      "requires": {
+        "color-name": "1.1.3"
+      }
+    },
+    "color-name": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+      "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+      "dev": true
+    },
+    "cosmiconfig": {
+      "version": "5.2.1",
+      "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
+      "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==",
+      "dev": true,
+      "requires": {
+        "import-fresh": "^2.0.0",
+        "is-directory": "^0.3.1",
+        "js-yaml": "^3.13.1",
+        "parse-json": "^4.0.0"
+      }
+    },
+    "cross-spawn": {
+      "version": "6.0.5",
+      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+      "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+      "requires": {
+        "nice-try": "^1.0.4",
+        "path-key": "^2.0.1",
+        "semver": "^5.5.0",
+        "shebang-command": "^1.2.0",
+        "which": "^1.2.9"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "5.7.1",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+        }
+      }
+    },
+    "deprecation": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
+      "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ=="
+    },
+    "end-of-stream": {
+      "version": "1.4.4",
+      "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+      "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+      "requires": {
+        "once": "^1.4.0"
+      }
+    },
+    "error-ex": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+      "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+      "dev": true,
+      "requires": {
+        "is-arrayish": "^0.2.1"
+      }
+    },
+    "escape-string-regexp": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+      "dev": true
+    },
+    "esprima": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+      "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+      "dev": true
+    },
+    "esutils": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+      "dev": true
+    },
+    "execa": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
+      "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+      "requires": {
+        "cross-spawn": "^6.0.0",
+        "get-stream": "^4.0.0",
+        "is-stream": "^1.1.0",
+        "npm-run-path": "^2.0.0",
+        "p-finally": "^1.0.0",
+        "signal-exit": "^3.0.0",
+        "strip-eof": "^1.0.0"
+      }
+    },
+    "find-up": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+      "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+      "dev": true,
+      "requires": {
+        "locate-path": "^3.0.0"
+      }
+    },
+    "get-stdin": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-7.0.0.tgz",
+      "integrity": "sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==",
+      "dev": true
+    },
+    "get-stream": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+      "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+      "requires": {
+        "pump": "^3.0.0"
+      }
+    },
+    "has-flag": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+      "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+      "dev": true
+    },
+    "hosted-git-info": {
+      "version": "2.8.5",
+      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz",
+      "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==",
+      "dev": true
+    },
+    "husky": {
+      "version": "2.7.0",
+      "resolved": "https://registry.npmjs.org/husky/-/husky-2.7.0.tgz",
+      "integrity": "sha512-LIi8zzT6PyFpcYKdvWRCn/8X+6SuG2TgYYMrM6ckEYhlp44UcEduVymZGIZNLiwOUjrEud+78w/AsAiqJA/kRg==",
+      "dev": true,
+      "requires": {
+        "cosmiconfig": "^5.2.0",
+        "execa": "^1.0.0",
+        "find-up": "^3.0.0",
+        "get-stdin": "^7.0.0",
+        "is-ci": "^2.0.0",
+        "pkg-dir": "^4.1.0",
+        "please-upgrade-node": "^3.1.1",
+        "read-pkg": "^5.1.1",
+        "run-node": "^1.0.0",
+        "slash": "^3.0.0"
+      }
+    },
+    "import-fresh": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
+      "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=",
+      "dev": true,
+      "requires": {
+        "caller-path": "^2.0.0",
+        "resolve-from": "^3.0.0"
+      }
+    },
+    "is-arrayish": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+      "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+      "dev": true
+    },
+    "is-ci": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
+      "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
+      "dev": true,
+      "requires": {
+        "ci-info": "^2.0.0"
+      }
+    },
+    "is-directory": {
+      "version": "0.3.1",
+      "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
+      "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=",
+      "dev": true
+    },
+    "is-plain-object": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.0.tgz",
+      "integrity": "sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==",
+      "requires": {
+        "isobject": "^4.0.0"
+      }
+    },
+    "is-stream": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+      "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
+    },
+    "isexe": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
+    },
+    "isobject": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz",
+      "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA=="
+    },
+    "js-tokens": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+      "dev": true
+    },
+    "js-yaml": {
+      "version": "3.13.1",
+      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
+      "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
+      "dev": true,
+      "requires": {
+        "argparse": "^1.0.7",
+        "esprima": "^4.0.0"
+      }
+    },
+    "json-parse-better-errors": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+      "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
+      "dev": true
+    },
+    "lines-and-columns": {
+      "version": "1.1.6",
+      "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz",
+      "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=",
+      "dev": true
+    },
+    "locate-path": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+      "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+      "dev": true,
+      "requires": {
+        "p-locate": "^3.0.0",
+        "path-exists": "^3.0.0"
+      }
+    },
+    "lodash.get": {
+      "version": "4.4.2",
+      "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
+      "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk="
+    },
+    "lodash.set": {
+      "version": "4.3.2",
+      "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz",
+      "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM="
+    },
+    "lodash.uniq": {
+      "version": "4.5.0",
+      "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
+      "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M="
+    },
+    "macos-release": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.3.0.tgz",
+      "integrity": "sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA=="
+    },
+    "nice-try": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+      "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
+    },
+    "node-fetch": {
+      "version": "2.6.0",
+      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
+      "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA=="
+    },
+    "normalize-package-data": {
+      "version": "2.5.0",
+      "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+      "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+      "dev": true,
+      "requires": {
+        "hosted-git-info": "^2.1.4",
+        "resolve": "^1.10.0",
+        "semver": "2 || 3 || 4 || 5",
+        "validate-npm-package-license": "^3.0.1"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "5.7.1",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+          "dev": true
+        }
+      }
+    },
+    "npm-run-path": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+      "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+      "requires": {
+        "path-key": "^2.0.0"
+      }
+    },
+    "octokit-pagination-methods": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz",
+      "integrity": "sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ=="
+    },
+    "once": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+      "requires": {
+        "wrappy": "1"
+      }
+    },
+    "os-name": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz",
+      "integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==",
+      "requires": {
+        "macos-release": "^2.2.0",
+        "windows-release": "^3.1.0"
+      }
+    },
+    "p-finally": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+      "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4="
+    },
+    "p-limit": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz",
+      "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==",
+      "dev": true,
+      "requires": {
+        "p-try": "^2.0.0"
+      }
+    },
+    "p-locate": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+      "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+      "dev": true,
+      "requires": {
+        "p-limit": "^2.0.0"
+      }
+    },
+    "p-try": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+      "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+      "dev": true
+    },
+    "parse-json": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+      "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+      "dev": true,
+      "requires": {
+        "error-ex": "^1.3.1",
+        "json-parse-better-errors": "^1.0.1"
+      }
+    },
+    "path-exists": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+      "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+      "dev": true
+    },
+    "path-key": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+      "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A="
+    },
+    "path-parse": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
+      "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
+      "dev": true
+    },
+    "pkg-dir": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+      "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+      "dev": true,
+      "requires": {
+        "find-up": "^4.0.0"
+      },
+      "dependencies": {
+        "find-up": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+          "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+          "dev": true,
+          "requires": {
+            "locate-path": "^5.0.0",
+            "path-exists": "^4.0.0"
+          }
+        },
+        "locate-path": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+          "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+          "dev": true,
+          "requires": {
+            "p-locate": "^4.1.0"
+          }
+        },
+        "p-locate": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+          "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+          "dev": true,
+          "requires": {
+            "p-limit": "^2.2.0"
+          }
+        },
+        "path-exists": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+          "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+          "dev": true
+        }
+      }
+    },
+    "please-upgrade-node": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz",
+      "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==",
+      "dev": true,
+      "requires": {
+        "semver-compare": "^1.0.0"
+      }
+    },
+    "prettier": {
+      "version": "1.19.1",
+      "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz",
+      "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==",
+      "dev": true
+    },
+    "pump": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+      "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+      "requires": {
+        "end-of-stream": "^1.1.0",
+        "once": "^1.3.1"
+      }
+    },
+    "read-pkg": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
+      "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
+      "dev": true,
+      "requires": {
+        "@types/normalize-package-data": "^2.4.0",
+        "normalize-package-data": "^2.5.0",
+        "parse-json": "^5.0.0",
+        "type-fest": "^0.6.0"
+      },
+      "dependencies": {
+        "parse-json": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz",
+          "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==",
+          "dev": true,
+          "requires": {
+            "@babel/code-frame": "^7.0.0",
+            "error-ex": "^1.3.1",
+            "json-parse-better-errors": "^1.0.1",
+            "lines-and-columns": "^1.1.6"
+          }
+        }
+      }
+    },
+    "resolve": {
+      "version": "1.13.1",
+      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.13.1.tgz",
+      "integrity": "sha512-CxqObCX8K8YtAhOBRg+lrcdn+LK+WYOS8tSjqSFbjtrI5PnS63QPhZl4+yKfrU9tdsbMu9Anr/amegT87M9Z6w==",
+      "dev": true,
+      "requires": {
+        "path-parse": "^1.0.6"
+      }
+    },
+    "resolve-from": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
+      "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
+      "dev": true
+    },
+    "run-node": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/run-node/-/run-node-1.0.0.tgz",
+      "integrity": "sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A==",
+      "dev": true
+    },
+    "semver": {
+      "version": "6.3.0",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+    },
+    "semver-compare": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
+      "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=",
+      "dev": true
+    },
+    "shebang-command": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+      "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+      "requires": {
+        "shebang-regex": "^1.0.0"
+      }
+    },
+    "shebang-regex": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+      "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM="
+    },
+    "signal-exit": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+      "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
+    },
+    "slash": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+      "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+      "dev": true
+    },
+    "spdx-correct": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
+      "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
+      "dev": true,
+      "requires": {
+        "spdx-expression-parse": "^3.0.0",
+        "spdx-license-ids": "^3.0.0"
+      }
+    },
+    "spdx-exceptions": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
+      "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
+      "dev": true
+    },
+    "spdx-expression-parse": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
+      "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
+      "dev": true,
+      "requires": {
+        "spdx-exceptions": "^2.1.0",
+        "spdx-license-ids": "^3.0.0"
+      }
+    },
+    "spdx-license-ids": {
+      "version": "3.0.5",
+      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz",
+      "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==",
+      "dev": true
+    },
+    "sprintf-js": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+      "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+      "dev": true
+    },
+    "strip-eof": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+      "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8="
+    },
+    "supports-color": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+      "dev": true,
+      "requires": {
+        "has-flag": "^3.0.0"
+      }
+    },
+    "tunnel": {
+      "version": "0.0.4",
+      "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.4.tgz",
+      "integrity": "sha1-LTeFoVjBdMmhbcLARuxfxfF0IhM="
+    },
+    "type-fest": {
+      "version": "0.6.0",
+      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
+      "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
+      "dev": true
+    },
+    "typed-rest-client": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.5.0.tgz",
+      "integrity": "sha512-DVZRlmsfnTjp6ZJaatcdyvvwYwbWvR4YDNFDqb+qdTxpvaVP99YCpBkA8rxsLtAPjBVoDe4fNsnMIdZTiPuKWg==",
+      "requires": {
+        "tunnel": "0.0.4",
+        "underscore": "1.8.3"
+      }
+    },
+    "typescript": {
+      "version": "3.7.3",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.3.tgz",
+      "integrity": "sha512-Mcr/Qk7hXqFBXMN7p7Lusj1ktCBydylfQM/FZCk5glCNQJrCUKPkMHdo9R0MTFWsC/4kPFvDS0fDPvukfCkFsw==",
+      "dev": true
+    },
+    "underscore": {
+      "version": "1.8.3",
+      "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz",
+      "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI="
+    },
+    "universal-user-agent": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-2.1.0.tgz",
+      "integrity": "sha512-8itiX7G05Tu3mGDTdNY2fB4KJ8MgZLS54RdG6PkkfwMAavrXu1mV/lls/GABx9O3Rw4PnTtasxrvbMQoBYY92Q==",
+      "requires": {
+        "os-name": "^3.0.0"
+      }
+    },
+    "uuid": {
+      "version": "3.3.3",
+      "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz",
+      "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ=="
+    },
+    "validate-npm-package-license": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+      "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+      "dev": true,
+      "requires": {
+        "spdx-correct": "^3.0.0",
+        "spdx-expression-parse": "^3.0.0"
+      }
+    },
+    "which": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+      "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+      "requires": {
+        "isexe": "^2.0.0"
+      }
+    },
+    "windows-release": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.2.0.tgz",
+      "integrity": "sha512-QTlz2hKLrdqukrsapKsINzqMgOUpQW268eJ0OaOpJN32h272waxR9fkB9VoWRtK7uKHG5EHJcTXQBD8XZVJkFA==",
+      "requires": {
+        "execa": "^1.0.0"
+      }
+    },
+    "wrappy": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
+    }
+  }
+}
diff --git a/setup-maven/package.json b/setup-maven/package.json
new file mode 100644
index 0000000..66619c2
--- /dev/null
+++ b/setup-maven/package.json
@@ -0,0 +1,41 @@
+{
+  "name": "setup-maven",
+  "version": "1.0.0",
+  "private": true,
+  "description": "setup maven action",
+  "main": "lib/setup-maven.js",
+  "scripts": {
+    "build": "tsc",
+    "format": "prettier --write **/*.ts",
+    "format-check": "prettier --check **/*.ts"
+  },
+  "keywords": [
+    "actions",
+    "maven",
+    "setup"
+  ],
+  "author": "stCarolas",
+  "license": "MIT",
+  "dependencies": {
+    "@actions/core": "^1.0.0",
+    "@actions/github": "^1.0.0",
+    "@actions/io": "^1.0.0",
+    "@actions/tool-cache": "^1.0.0",
+    "typed-rest-client": "^1.5.0",
+    "semver": "^6.1.1"
+  },
+  "devDependencies": {
+    "@types/node": "^12.0.4",
+    "@types/semver": "^6.0.0",
+    "husky": "^2.3.0",
+    "prettier": "^1.17.1",
+    "typescript": "^3.5.1"
+  },
+  "husky": {
+    "skipCI": true,
+    "hooks": {
+      "pre-commit": "npm run build && npm run format",
+      "post-commit": "npm prune --production && git add node_modules/* && git commit -m \"Husky commit correct node modules\""
+    }
+  }
+}
diff --git a/setup-maven/src/installer.ts b/setup-maven/src/installer.ts
new file mode 100644
index 0000000..d791f18
--- /dev/null
+++ b/setup-maven/src/installer.ts
@@ -0,0 +1,48 @@
+// Load tempDirectory before it gets wiped by tool-cache
+let tempDirectory = process.env['RUNNER_TEMPDIRECTORY'] || '';
+
+import * as core from '@actions/core';
+import * as tc from '@actions/tool-cache';
+import * as path from 'path';
+
+if (!tempDirectory) {
+  let baseLocation: string;
+  if (process.platform === 'win32') {
+    baseLocation = process.env['USERPROFILE'] || 'C:\\';
+  } else {
+    if (process.platform === 'darwin') {
+      baseLocation = '/Users';
+    } else {
+      baseLocation = '/home';
+    }
+  }
+  tempDirectory = path.join(baseLocation, 'actions', 'temp');
+}
+
+export async function getMaven(version: string) {
+  let toolPath: string;
+  toolPath = tc.find('maven', version);
+
+  if (!toolPath) {
+    toolPath = await downloadMaven(version);
+  }
+
+  toolPath = path.join(toolPath, 'bin');
+  core.addPath(toolPath);
+}
+
+async function downloadMaven(version: string): Promise<string> {
+  const toolDirectoryName = `apache-maven-${version}`
+  const downloadUrl =
+    `https://archive.apache.org/dist/maven/maven-3/${version}/binaries/${toolDirectoryName}-bin.tar.gz`
+  console.log(`downloading ${downloadUrl}`)
+
+  try {
+    const downloadPath = await tc.downloadTool(downloadUrl)
+    const extractedPath = await tc.extractTar(downloadPath)
+    let toolRoot = path.join(extractedPath, toolDirectoryName)
+    return await tc.cacheDir(toolRoot, 'maven', version)
+  } catch (err) {
+    throw err
+  }
+}
diff --git a/setup-maven/src/setup-maven.ts b/setup-maven/src/setup-maven.ts
new file mode 100644
index 0000000..c2ca4b2
--- /dev/null
+++ b/setup-maven/src/setup-maven.ts
@@ -0,0 +1,15 @@
+import * as core from '@actions/core';
+import * as installer from './installer';
+
+async function run() {
+  try {
+    let version = core.getInput('maven-version');
+    if (version) {
+      await installer.getMaven(version);
+    }
+  } catch (error) {
+    core.setFailed(error.message);
+  }
+}
+
+run();
diff --git a/setup-maven/tsconfig.json b/setup-maven/tsconfig.json
new file mode 100644
index 0000000..1485007
--- /dev/null
+++ b/setup-maven/tsconfig.json
@@ -0,0 +1,66 @@
+{
+  "compilerOptions": {
+    /* Basic Options */
+    // "incremental": true,                   /* Enable incremental compilation */
+    "target": "es6",                          /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */
+    "module": "commonjs",                     /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */
+    "lib": [
+      "es6"
+    ],
+    // "allowJs": true,                       /* Allow javascript files to be compiled. */
+    // "checkJs": true,                       /* Report errors in .js files. */
+    // "jsx": "preserve",                     /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */
+    // "declaration": true,                   /* Generates corresponding '.d.ts' file. */
+    // "declarationMap": true,                /* Generates a sourcemap for each corresponding '.d.ts' file. */
+    // "sourceMap": true,                     /* Generates corresponding '.map' file. */
+    // "outFile": "./",                       /* Concatenate and emit output to single file. */
+    "outDir": "./lib",                        /* Redirect output structure to the directory. */
+    "rootDir": "./src",                       /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
+    // "composite": true,                     /* Enable project compilation */
+    // "tsBuildInfoFile": "./",               /* Specify file to store incremental compilation information */
+    // "removeComments": true,                /* Do not emit comments to output. */
+    // "noEmit": true,                        /* Do not emit outputs. */
+    // "importHelpers": true,                 /* Import emit helpers from 'tslib'. */
+    // "downlevelIteration": true,            /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */
+    // "isolatedModules": true,               /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */
+
+    /* Strict Type-Checking Options */
+    "strict": true,                           /* Enable all strict type-checking options. */
+    "noImplicitAny": false,                 /* Raise error on expressions and declarations with an implied 'any' type. */
+    // "strictNullChecks": true,              /* Enable strict null checks. */
+    // "strictFunctionTypes": true,           /* Enable strict checking of function types. */
+    // "strictBindCallApply": true,           /* Enable strict 'bind', 'call', and 'apply' methods on functions. */
+    // "strictPropertyInitialization": true,  /* Enable strict checking of property initialization in classes. */
+    // "noImplicitThis": true,                /* Raise error on 'this' expressions with an implied 'any' type. */
+    // "alwaysStrict": true,                  /* Parse in strict mode and emit "use strict" for each source file. */
+
+    /* Additional Checks */
+    // "noUnusedLocals": true,                /* Report errors on unused locals. */
+    // "noUnusedParameters": true,            /* Report errors on unused parameters. */
+    // "noImplicitReturns": true,             /* Report error when not all code paths in function return a value. */
+    // "noFallthroughCasesInSwitch": true,    /* Report errors for fallthrough cases in switch statement. */
+
+    /* Module Resolution Options */
+    // "moduleResolution": "node",            /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
+    // "baseUrl": "./",                       /* Base directory to resolve non-absolute module names. */
+    // "paths": {},                           /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */
+    // "rootDirs": [],                        /* List of root folders whose combined content represents the structure of the project at runtime. */
+    // "typeRoots": [],                       /* List of folders to include type definitions from. */
+    // "types": [],                           /* Type declaration files to be included in compilation. */
+    // "allowSyntheticDefaultImports": true,  /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */
+    "esModuleInterop": true                   /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
+    // "preserveSymlinks": true,              /* Do not resolve the real path of symlinks. */
+    // "allowUmdGlobalAccess": true,          /* Allow accessing UMD globals from modules. */
+
+    /* Source Map Options */
+    // "sourceRoot": "",                      /* Specify the location where debugger should locate TypeScript files instead of source locations. */
+    // "mapRoot": "",                         /* Specify the location where debugger should locate map files instead of generated locations. */
+    // "inlineSourceMap": true,               /* Emit a single file with source maps instead of having a separate file. */
+    // "inlineSources": true,                 /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
+
+    /* Experimental Options */
+    // "experimentalDecorators": true,        /* Enables experimental support for ES7 decorators. */
+    // "emitDecoratorMetadata": true,         /* Enables experimental support for emitting type metadata for decorators. */
+  },
+  "exclude": ["node_modules", "**/*.test.ts"]
+}