{
  "parserOptions": {
    "ecmaVersion": 5,
  },

  "env": {
    "browser": true,
    "es6": true,
    "worker": true,
    "amd": true,
  },

  globals: {
    "PDFJSDev": false,
    "require": false,
    "exports": false,
  },

  "rules": {
    // Possible errors
    "no-cond-assign": ["error", "except-parens"],
    "no-constant-condition": ["error", { "checkLoops": false, }],
    "no-dupe-args": "error",
    "no-dupe-keys": "error",
    "no-duplicate-case": "error",
    "no-empty": ["error", { "allowEmptyCatch": true, }],
    "no-ex-assign": "error",
    "no-extra-boolean-cast": "error",
    "no-extra-semi": "error",
    "no-func-assign": "error",
    "no-inner-declarations": ["error", "functions"],
    "no-invalid-regexp": "error",
    "no-irregular-whitespace": "error",
    "no-obj-calls": "error",
    "no-regex-spaces": "error",
    "no-sparse-arrays": "error",
    "no-unexpected-multiline": "error",
    "no-unreachable": "error",
    "no-unsafe-finally": "error",
    "no-unsafe-negation": "error",
    "use-isnan": "error",
    "valid-typeof": ["error", { "requireStringLiterals": true, }],

    // Best Practices
    "accessor-pairs": ["error", { "setWithoutGet": true, }],
    "curly": ["error", "all"],
    "eqeqeq": ["error", "always"],
    "no-caller": "error",
    "no-else-return": "error",
    "no-empty-pattern": "error",
    "no-eval": "error",
    "no-extend-native": "error",
    "no-extra-bind": "error",
    "no-extra-label": "error",
    "no-fallthrough": "error",
    "no-floating-decimal": "error",
    "no-global-assign": "error",
    "no-implied-eval": "error",
    "no-lone-blocks": "error",
    "no-multi-spaces": "error",
    "no-multi-str": "error",
    "no-new-func": "error",
    "no-new-wrappers": "error",
    "no-new": "error",
    "no-octal-escape": "error",
    "no-octal": "error",
    "no-redeclare": "error",
    "no-self-assign": "error",
    "no-self-compare": "error",
    "no-unused-expressions": "error",
    "no-unused-labels": "error",
    "no-useless-call": "error",
    "no-useless-concat": "error",
    "wrap-iife": ["error", "any"],
    "yoda": ["error", "never", { "onlyEquality": true, }],

    // Strict Mode
    "strict": ["error", "global"],

    // Variables
    "no-catch-shadow": "error",
    "no-delete-var": "error",
    "no-label-var": "error",
    "no-shadow-restricted-names": "error",
    "no-undef-init": "error",
    "no-undef": ["error", { "typeof": true, }],

    // Stylistic Issues
    "array-bracket-spacing": ["error", "never"],
    "block-spacing": ["error", "always"],
    "brace-style": ["error", "1tbs", { "allowSingleLine": true, }],
    "comma-spacing": ["error", { "before": false, "after": true, }],
    "comma-style": ["error", "last"],
    "eol-last": "error",
    "func-call-spacing": ["error", "never"],
    "key-spacing": ["error", { "beforeColon": false, "afterColon": true, "mode": "strict", }],
    "keyword-spacing": ["error", { "before": true, "after": true, }],
    "linebreak-style": ["error", "unix"],
    "max-len": ["error", 80],
    "new-cap": ["error", { "newIsCap": true, "capIsNew": false, }],
    "new-parens": "error",
    "no-array-constructor": "error",
    "no-multiple-empty-lines": ["error", { "max": 2, "maxEOF": 0, "maxBOF": 1, }],
    "no-new-object": "error",
    "no-tabs": "error",
    "no-trailing-spaces": ["error", { "skipBlankLines": false, }],
    "no-whitespace-before-property": "error",
    "operator-linebreak": ["error", "after", { "overrides": { ":": "ignore", } }],
    "quotes": ["error", "single"],
    "semi-spacing": ["error", { "before": false, "after": true, }],
    "semi": ["error", "always"],
    "space-before-blocks": ["error", "always"],
    "space-before-function-paren": ["error", { "anonymous": "ignore", "named": "never", }],
    "space-in-parens": ["error", "never"],
    "space-infix-ops": ["error", { "int32Hint": false }],
    "space-unary-ops": ["error", { "words": true, "nonwords": false, }],
    "spaced-comment": ["error", "always", {
      "line": {
        "exceptions": ["//", "#else", "#endif"],
        "markers": ["#if", "#elif", "#include", "#expand", "#error"],
      },
      "block": {
        "balanced": true,
      }
    }],
  },

  // ECMAScript 6
}
