# Trufflehog3

**Auditor Job Name**: Trufflehog3 Scan\
**Auditor image:** `registry.cybercodereview.ru/cybercodereview/security-images/trufflehog3:3.0.7`\
**AppSec Portal Importer Name**: Trufflehog3 Scan

[Trufflehog3](https://github.com/feeltheajf/trufflehog3) использует *регулярные выражения* для поиска шаблонов, соответствующих распространенным форматам **секретных ключей**, таких как **ключи AWS**, **закрытые ключи** и другие конфиденциальные данные. Он также может обнаруживать с**екреты, которые были обфусцированы** или **зашифрованы** различными способами, что делает его ценным инструментом для обнаружения даже хорошо спрятанных секретов.

Хотя Trufflehog3 в основном используется для обнаружения секретов и учетных данных, его можно применять и для поиска других типов конфиденциальных данных, таких как **персональная информация (PII)**. Это делает его универсальным инструментом для обеспечения безопасности и конфиденциальности вашей кодовой базы.

**Пример команды Curl**

```
curl -X POST localhost/api/v1/scan/import/ -H "Authorization: Token a75bb26171cf391671e67b128bfc8ae1c779ff7b" -H "Content-Type: multipart/form-data" -F "file=@./trufflehog3.json" -F "product_name=Product1" -F "product_type=Application" -F "scanner_name=Trufflehog3 Scan" -F "branch=dev" -F "repository=git@gitlab.cybercodereview.ru:cybercodereview/security-center.git"
```

В этой команде используются следующие параметры:

1. `-X POST`: задает используемый метод HTTP (в данном случае POST).
2. `-H "Authorization: Token <authorization_token>"`: задает [**токен авторизации**](/security-center/scanners/importing-reports-from-scanners-to-security-center.md#token-avtorizacii), полученный от Security Center.
3. `-H "Content-Type: multipart/form-data"`: задает тип содержимого запроса.
4. `-F "file=@<report_file_path>"`: задает **путь к файлу отчета**, создаваемого сканером.
5. `-F "product_name=<product_name>"`: задает **название** сканируемого **продукта**.
6. `-F "product_type=<product_type>"`: задает  **тип** сканируемого **продукта**.
7. `-F "scanner_name=<scanner_name>"`: задает **имя сканера**, используемого для создания отчета (Bandit Scan или GitLab Bandit)
8. `-F "branch=<branch_name>"`: (*необязательно*) указывает имя ветки в репозитории исходного кода (если применимо). Этот параметр особенно полезен, когда вы хотите связать результаты сканирования с определенной веткой в вашем репозитории. Если параметр не указан, сканирование будет связано с веткой по умолчанию

Информация об активах, если используется [Auditor](/auditor/install.md)

1. `-F "repository=<repository SSH URL>"`: Если ваш продукт хранится в **репозитории**, введите адрес **репозитория** в определенном формате, например: <git@gitlab.cybercodereview.ru>:cybercodereview/security-center.git
2. `-F "docker_image=<registry address>"`: Если ваш продукт является **образом**, введите адрес **реестра**, в котором находится ваш продукт, например: registry.cybercodereview\.ru/cybercodereview/security-center/back/importer:latest
3. `-F "domain=<domain>"`: Если ваш продукт является **веб-продуктом**, введите **доменное имя** вашего продукта, например: cybercodereview\.ru
4. `-F "host=<host>"`: Если ваш продукт является **веб-продуктом**, введите **IP-адрес** вашего продукта, например: 0.0.0.0

**Пример отчета:**

````
[
  {
    "rule": {
      "id": "high-entropy",
      "message": "High Entropy",
      "severity": "MEDIUM"
    },
    "path": "src/main/webapp/WEB-INF/config.properties",
    "line": "4",
    "secret": "ec23c017306b8e0217560cae021effa2b",
    "context": {
      "4": "mysql.password=ec95c258266b8e985848cae688effa2b"
    },
    "id": "d08f42cd-23dc-3945-96e4-4a676f89168b",
    "branch": null,
    "message": null,
    "author": null,
    "commit": null,
    "date": null
  },
  {
    "rule": {
      "id": "high-entropy",
      "message": "High Entropy",
      "severity": "MEDIUM"
    },
    "path": "docker-compose.yml",
    "line": "8",
    "secret": "ec95c872966b8e03271cae3002effa2b",
    "context": {
      "8": "      MYSQL_ROOT_PASSWORD: ec95c258366b8e302179cae219effa2b"
    },
    "id": "e49a5963-b600-3745-8505-87da8551bc33",
    "branch": null,
    "message": null,
    "author": null,
    "commit": null,
    "date": null
  },
  {
    "rule": {
      "id": "high-entropy",
      "message": "High Entropy",
      "severity": "MEDIUM"
    },
    "path": "docker-compose.yml",
    "line": "17",
    "secret": "ec95c8572036b8e2015873cae688effa2b",
    "context": {
      "17": "      MYSQL_PASSWORD: ec95d212366b8e725930cae71588effa2b"
    },
    "id": "e789a7812-b600-3305-8505-87da7051bc33",
    "branch": null,
    "message": null,
    "author": null,
    "commit": null,
    "date": null
  },
  {
    "rule": {
      "id": "github.token",
      "message": "GitHub Token",
      "pattern": "[g|G][i|I][t|T][h|H][u|U][b|B].*['|\"][0-9a-zA-Z]{35,40}['|\"]",
      "severity": "MEDIUM"
    },
    "path": "src/main/webapp/assets/showdown.min.js",
    "line": "3",
    "secret": "github style (spaces are replaced with dashes, a bunch of non alphanumeric chars are removed)\",type:\"boolean\"},headerLevelStart:{defaultValue:!1,describe:\"The header blocks level start\",type:\"integer\"},parseImgDimensions:{defaultValue:!1,describe:\"Turn on/off image dimension parsing\",type:\"boolean\"},simplifiedAutoLink:{defaultValue:!1,describe:\"Turn on/off GFM autolink style\",type:\"boolean\"},excludeTrailingPunctuationFromURLs:{defaultValue:!1,describe:\"Excludes trailing punctuation from links generated with autoLinking\",type:\"boolean\"},literalMidWordUnderscores:{defaultValue:!1,describe:\"Parse midword underscores as literal underscores\",type:\"boolean\"},literalMidWordAsterisks:{defaultValue:!1,describe:\"Parse midword asterisks as literal asterisks\",type:\"boolean\"},strikethrough:{defaultValue:!1,describe:\"Turn on/off strikethrough support\",type:\"boolean\"},tables:{defaultValue:!1,describe:\"Turn on/off tables support\",type:\"boolean\"},tablesHeaderId:{defaultValue:!1,describe:\"Add an id to table headers\",type:\"boolean\"},ghCodeBlocks:{defaultValue:!0,describe:\"Turn on/off GFM fenced code blocks support\",type:\"boolean\"},tasklists:{defaultValue:!1,describe:\"Turn on/off GFM tasklist support\",type:\"boolean\"},smoothLivePreview:{defaultValue:!1,describe:\"Prevents weird effects in live previews due to incomplete input\",type:\"boolean\"},smartIndentationFix:{defaultValue:!1,description:\"Tries to smartly fix indentation in es6 strings\",type:\"boolean\"},disableForced4SpacesIndentedSublists:{defaultValue:!1,description:\"Disables the requirement of indenting nested sublists by 4 spaces\",type:\"boolean\"},simpleLineBreaks:{defaultValue:!1,description:\"Parses simple line breaks as <br> (GFM Style)\",type:\"boolean\"},requireSpaceBeforeHeadingText:{defaultValue:!1,description:\"Makes adding a space between `#` and the header text mandatory (GFM Style)\",type:\"boolean\"},ghMentions:{defaultValue:!1,description:\"Enables github @mentions\",type:\"boolean\"},ghMentionsLink:{defaultValue:\"https://github.com/{u}\",description:\"Changes the link generated by @mentions. Only applies if ghMentions option is enabled.\",type:\"string\"},encodeEmails:{defaultValue:!0,description:\"Encode e-mail addresses through the use of Character Entities, transforming ASCII e-mail addresses into its equivalent decimal entities\",type:\"boolean\"},openLinksInNewWindow:{defaultValue:!1,description:\"Open all links in new windows\",type:\"boolean\"}};if(!1===a)return JSON.parse(JSON.stringify(b));var c={};for(var d in b)b.hasOwnProperty(d)&&(c[d]=b[d].defaultValue);return c}function b(a,b){\"use strict\";var c=b?\"Error in \"+b+\" extension->\":\"Error in unnamed extension\",e={valid:!0,error:\"\"};d.helper.isArray(a)||(a=[a]);for(var f=0;f<a.length;++f){var g=c+\" sub-extension \"+f+\": \",h=a[f];if(\"object\"!=typeof h)return e.valid=!1,e.error=g+\"must be an object, but \"+typeof h+\" given\",e;if(!d.helper.isString(h.type))return e.valid=!1,e.error=g+'property \"type\" must be a string, but '+typeof h.type+\" given\",e;var i=h.type=h.type.toLowerCase();if(\"language\"===i&&(i=h.type=\"lang\"),\"html\"===i&&(i=h.type=\"output\"),\"lang\"!==i&&\"output\"!==i&&\"listener\"!==i)return e.valid=!1,e.error=g+\"type \"+i+' is not recognized. Valid values: \"lang/language\", \"output/html\" or \"listener\"',e;if(\"listener\"===i){if(d.helper.isUndefined(h.listeners))return e.valid=!1,e.error=g+'. Extensions of type \"listener\" must have a property called \"listeners\"',e}else if(d.helper.isUndefined(h.filter)&&d.helper.isUndefined(h.regex))return e.valid=!1,e.error=g+i+' extensions must define either a \"regex\" property or a \"filter\" method',e;if(h.listeners){if(\"object\"!=typeof h.listeners)return e.valid=!1,e.error=g+'\"listeners\" property must be an object but '+typeof h.listeners+\" given\",e;for(var j in h.listeners)if(h.listeners.hasOwnProperty(j)&&\"function\"!=typeof h.listeners[j])return e.valid=!1,e.error=g+'\"listeners\" property must be an hash of [event name]: [callback]. listeners.'+j+\" must be a function but \"+typeof h.listeners[j]+\" given\",e}if(h.filter){if(\"function\"!=typeof h.filter)return e.valid=!1,e.error=g+'\"filter\" must be a function, but '+typeof h.filter+\" given\",e}else if(h.regex){if(d.helper.isString(h.regex)&&(h.regex=new RegExp(h.regex,\"g\")),!(h.regex instanceof RegExp))return e.valid=!1,e.error=g+'\"regex\" property must either be a string or a RegExp object, but '+typeof h.regex+\" given\",e;if(d.helper.isUndefined(h.replace))return e.valid=!1,e.error=g+'\"regex\" extensions must implement a replace string or function',e}}return e}function c(a,b){\"use strict\";return\"\u00a8E\"+b.charCodeAt(0)+\"E\"}var d={},e={},f={},g=a(!0),h=\"vanilla\",i={github:{omitExtraWLInCodeBlocks:!0,simplifiedAutoLink:!0,excludeTrailingPunctuationFromURLs:!0,literalMidWordUnderscores:!0,strikethrough:!0,tables:!0,tablesHeaderId:!0,ghCodeBlocks:!0,tasklists:!0,disableForced4SpacesIndentedSublists:!0,simpleLineBreaks:!0,requireSpaceBeforeHeadingText:!0,ghCompatibleHeaderId:!0,ghMentions:!0},original:{noHeaderId:!0,ghCodeBlocks:!1},ghost:{omitExtraWLInCodeBlocks:!0,parseImgDimensions:!0,simplifiedAutoLink:!0,excludeTrailingPunctuationFromURLs:!0,literalMidWordUnderscores:!0,strikethrough:!0,tables:!0,tablesHeaderId:!0,ghCodeBlocks:!0,tasklists:!0,smoothLivePreview:!0,simpleLineBreaks:!0,requireSpaceBeforeHeadingText:!0,ghMentions:!1,encodeEmails:!0},vanilla:a(!0),allOn:function(){\"use strict\";var b=a(!0),c={};for(var d in b)b.hasOwnProperty(d)&&(c[d]=!0);return c}()};d.helper={},d.extensions={},d.setOption=function(a,b){\"use strict\";return g[a]=b,this},d.getOption=function(a){\"use strict\";return g[a]},d.getOptions=function(){\"use strict\";return g},d.resetOptions=function(){\"use strict\";g=a(!0)},d.setFlavor=function(a){\"use strict\";if(!i.hasOwnProperty(a))throw Error(a+\" flavor was not found\");d.resetOptions();var b=i[a];h=a;for(var c in b)b.hasOwnProperty(c)&&(g[c]=b[c])},d.getFlavor=function(){\"use strict\";return h},d.getFlavorOptions=function(a){\"use strict\";if(i.hasOwnProperty(a))return i[a]},d.getDefaultOptions=function(b){\"use strict\";return a(b)},d.subParser=function(a,b){\"use strict\";if(d.helper.isString(a)){if(void 0===b){if(e.hasOwnProperty(a))return e[a];throw Error(\"SubParser named \"+a+\" not registered!\")}e[a]=b}},d.extension=function(a,c){\"use strict\";if(!d.helper.isString(a))throw Error(\"Extension 'name' must be a string\");if(a=d.helper.stdExtName(a),d.helper.isUndefined(c)){if(!f.hasOwnProperty(a))throw Error(\"Extension named \"+a+\" is not registered!\");return f[a]}\"function\"==typeof c&&(c=c()),d.helper.isArray(c)||(c=[c]);var e=b(c,a);if(!e.valid)throw Error(e.error);f[a]=c},d.getAllExtensions=function(){\"use strict\";return f},d.removeExtension=function(a){\"use strict\";delete f[a]},d.resetExtensions=function(){\"use strict\";f={}},d.validateExtension=function(a){\"use strict\";var c=b(a,null);return!!c.valid||(console.warn(c.error),!1)},d.hasOwnProperty(\"helper\")||(d.helper={}),d.helper.isString=function(a){\"use strict\";return\"string\"==typeof a||a instanceof String},d.helper.isFunction=function(a){\"use strict\";var b={};return a&&\"[object Function]\"===b.toString.call(a)},d.helper.isArray=function(a){\"use strict\";return a.constructor===Array},d.helper.isUndefined=function(a){\"use strict\";return void 0===a},d.helper.forEach=function(a,b){\"use strict\";if(d.helper.isUndefined(a))throw new Error(\"obj param is required\");if(d.helper.isUndefined(b))throw new Error(\"callback param is required\");if(!d.helper.isFunction(b))throw new Error(\"callback param must be a function/closure\");if(\"function\"==typeof a.forEach)a.forEach(b);else if(d.helper.isArray(a))for(var c=0;c<a.length;c++)b(a[c],c,a);else{if(\"object\"!=typeof a)throw new Error(\"obj does not seem to be an array or an iterable object\");for(var e in a)a.hasOwnProperty(e)&&b(a[e],e,a)}},d.helper.stdExtName=function(a){\"use strict\";return a.replace(/[_?*+\\/\\\\.^-]/g,\"\").replace(/\\s/g,\"\").toLowerCase()},d.helper.escapeCharactersCallback=c,d.helper.escapeCharacters=function(a,b,d){\"use strict\";var e=\"([\"+b.replace(/([\\[\\]\\\\])/g,\"\\\\$1\")+\"])\";d&&(e=\"\\\\\\\\\"+e);var f=new RegExp(e,\"g\");return a=a.replace(f,c)};var j=function(a,b,c,d){\"use strict\";var e,f,g,h,i,j=d||\"\",k=j.indexOf(\"g\")>-1,l=new RegExp(b+\"|\"+c,\"g\"+j.replace(/g/g,\"\")),m=new RegExp(b,j.replace(/g/g,\"\")),n=[];do{for(e=0;g=l.exec(a);)if(m.test(g[0]))e++||(f=l.lastIndex,h=f-g[0].length);else if(e&&!--e){i=g.index+g[0].length;var o={left:{start:h,end:f},match:{start:f,end:g.index},right:{start:g.index,end:i},wholeMatch:{start:h,end:i}};if(n.push(o),!k)return n}}while(e&&(l.lastIndex=f));return n};d.helper.matchRecursiveRegExp=function(a,b,c,d){\"use strict\";for(var e=j(a,b,c,d),f=[],g=0;g<e.length;++g)f.push([a.slice(e[g].wholeMatch.start,e[g].wholeMatch.end),a.slice(e[g].match.start,e[g].match.end),a.slice(e[g].left.start,e[g].left.end),a.slice(e[g].right.start,e[g].right.end)]);return f},d.helper.replaceRecursiveRegExp=function(a,b,c,e,f){\"use strict\";if(!d.helper.isFunction(b)){var g=b;b=function(){return g}}var h=j(a,c,e,f),i=a,k=h.length;if(k>0){var l=[];0!==h[0].wholeMatch.start&&l.push(a.slice(0,h[0].wholeMatch.start));for(var m=0;m<k;++m)l.push(b(a.slice(h[m].wholeMatch.start,h[m].wholeMatch.end),a.slice(h[m].match.start,h[m].match.end),a.slice(h[m].left.start,h[m].left.end),a.slice(h[m].right.start,h[m].right.end))),m<k-1&&l.push(a.slice(h[m].wholeMatch.end,h[m+1].wholeMatch.start));h[k-1].wholeMatch.end<a.length&&l.push(a.slice(h[k-1].wholeMatch.end)),i=l.join(\"\")}return i},d.helper.regexIndexOf=function(a,b,c){\"use strict\";if(!d.helper.isString(a))throw\"InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string\";if(b instanceof RegExp==!1)throw\"InvalidArgumentError: second parameter of showdown.helper.regexIndexOf function must be an instance of RegExp\";var e=a.substring(c||0).search(b);return e>=0?e+(c||0):e},d.helper.splitAtIndex=function(a,b){\"use strict\";if(!d.helper.isString(a))throw\"InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string\";return[a.substring(0,b),a.substring(b)]},d.helper.encodeEmailAddress=function(a){\"use strict\";var b=[function(a){return\"&#\"+a.charCodeAt(0)+\";\"},function(a){return\"&#x\"+a.charCodeAt(0).toString(16)+\";\"},function(a){return a}];return a=a.replace(/./g,function(a){if(\"@\"===a)a=b[Math.floor(2*Math.random())](a);else{var c=Math.random();a=c>.9?b[2](a):c>.45?b[1](a):b[0](a)}return a})},\"undefined\"==typeof console&&(console={warn:function(a){\"use strict\";alert(a)},log:function(a){\"use strict\";alert(a)},error:function(a){\"use strict\";throw a}}),d.helper.regexes={asteriskAndDash:/([*_])/g},d.Converter=function(a){\"use strict\";function c(a,c){if(c=c||null,d.helper.isString(a)){if(a=d.helper.stdExtName(a),c=a,d.extensions[a])return console.warn(\"DEPRECATION WARNING: \"+a+\" is an old extension that uses a deprecated loading method.Please inform the developer that the extension should be updated!\"),void e(d.extensions[a],a);if(d.helper.isUndefined(f[a]))throw Error('Extension \"'+a+'\" could not be loaded. It was either not found or is not a valid extension.');a=f[a]}\"function\"==typeof a&&(a=a()),d.helper.isArray(a)||(a=[a]);var g=b(a,c);if(!g.valid)throw Error(g.error);for(var h=0;h<a.length;++h){switch(a[h].type){case\"lang\":m.push(a[h]);break;case\"output\":n.push(a[h])}if(a[h].hasOwnProperty(\"listeners\"))for(var i in a[h].listeners)a[h].listeners.hasOwnProperty(i)&&j(i,a[h].listeners[i])}}function e(a,c){\"function\"==typeof a&&(a=a(new d.Converter)),d.helper.isArray(a)||(a=[a]);var e=b(a,c);if(!e.valid)throw Error(e.error);for(var f=0;f<a.length;++f)switch(a[f].type){case\"lang\":m.push(a[f]);break;case\"output\":n.push(a[f]);break;default:throw Error(\"Extension loader error: Type unrecognized!!!\")}}function j(a,b){if(!d.helper.isString(a))throw Error(\"Invalid argument in converter.listen() method: name must be a string, but \"+typeof a+\" given\");if(\"function\"!=typeof b)throw Error(\"Invalid argument in converter.listen() method: callback must be a function, but \"+typeof b+\" given\");o.hasOwnProperty(a)||(o[a]=[]),o[a].push(b)}function k(a){var b=a.match(/^\\s*/)[0].length,c=new RegExp(\"^\\\\s{0,\"+b+\"}\",\"gm\");return a.replace(c,\"\")}var l={},m=[],n=[],o={},p=h;!function(){a=a||{};for(var b in g)g.hasOwnProperty(b)&&(l[b]=g[b]);if(\"object\"!=typeof a)throw Error(\"Converter expects the passed parameter to be an object, but \"+typeof a+\" was passed instead.\");for(var e in a)a.hasOwnProperty(e)&&(l[e]=a[e]);l.extensions&&d.helper.forEach(l.extensions,c)}(),this._dispatch=function(a,b,c,d){if(o.hasOwnProperty(a))for(var e=0;e<o[a].length;++e){var f=o[a][e](a,b,this,c,d);f&&void 0!==f&&(b=f)}return b},this.listen=function(a,b){return j(a,b),this},this.makeHtml=function(a){if(!a)return a;var b={gHtmlBlocks:[],gHtmlMdBlocks:[],gHtmlSpans:[],gUrls:{},gTitles:{},gDimensions:{},gListLevel:0,hashLinkCounts:{},langExtensions:m,outputModifiers:n,converter:this,ghCodeBlocks:[]};return a=a.replace(/\u00a8/g,\"\u00a8T\"),a=a.replace(/\\$/g,\"\u00a8D\"),a=a.replace(/\\r\\n/g,\"\\n\"),a=a.replace(/\\r/g,\"\\n\"),a=a.replace(/\\u00A0/g,\" \"),l.smartIndentationFix&&(a=k(a)),a=\"\\n\\n\"+a+\"\\n\\n\",a=d.subParser(\"detab\")(a,l,b),a=a.replace(/^[ \\t]+$/gm,\"\"),d.helper.forEach(m,function(c){a=d.subParser(\"runExtension\")(c,a,l,b)}),a=d.subParser(\"hashPreCodeTags\")(a,l,b),a=d.subParser(\"githubCodeBlocks\")(a,l,b),a=d.subParser(\"hashHTMLBlocks\")(a,l,b),a=d.subParser(\"hashCodeTags\")(a,l,b),a=d.subParser(\"stripLinkDefinitions\")(a,l,b),a=d.subParser(\"blockGamut\")(a,l,b),a=d.subParser(\"unhashHTMLSpans\")(a,l,b),a=d.subParser(\"unescapeSpecialChars\")(a,l,b),a=a.replace(/\u00a8D/g,\"$$\"),a=a.replace(/\u00a8T/g,\"\u00a8\"),d.helper.forEach(n,function(c){a=d.subParser(\"runExtension\")(c,a,l,b)}),a},this.setOption=function(a,b){l[a]=b},this.getOption=function(a){return l[a]},this.getOptions=function(){return l},this.addExtension=function(a,b){b=b||null,c(a,b)},this.useExtension=function(a){c(a)},this.setFlavor=function(a){if(!i.hasOwnProperty(a))throw Error(a+\" flavor was not found\");var b=i[a];p=a;for(var c in b)b.hasOwnProperty(c)&&(l[c]=b[c])},this.getFlavor=function(){return p},this.removeExtension=function(a){d.helper.isArray(a)||(a=[a]);for(var b=0;b<a.length;++b){for(var c=a[b],e=0;e<m.length;++e)m[e]===c&&m[e].splice(e,1);for(;0<n.length;++e)n[0]===c&&n[0].splice(e,1)}},this.getAllExtensions=function(){return{language:m,output:n}}},d.subParser(\"anchors\",function(a,b,c){\"use strict\";a=c.converter._dispatch(\"anchors.before\",a,b,c);var e=function(a,e,f,g,h,i,j){if(d.helper.isUndefined(j)&&(j=\"\"),f=f.toLowerCase(),a.search(/\\(<?\\s*>? ?(['\"].*['\"])?\\)$/m)>-1)g=\"\";else if(!g){if(f||(f=e.toLowerCase().replace(/ ?\\n/g,\" \")),g=\"#\"+f,d.helper.isUndefined(c.gUrls[f]))return a;g=c.gUrls[f],d.helper.isUndefined(c.gTitles[f])||(j=c.gTitles[f])}g=g.replace(d.helper.regexes.asteriskAndDash,d.helper.escapeCharactersCallback);var k='<a href=\"'+g+'\"';return\"\"!==j&&null!==j&&(j=j.replace(/\"/g,\"&quot;\"),j=j.replace(d.helper.regexes.asteriskAndDash,d.helper.escapeCharactersCallback),k+=' title=\"'+j+'\"'),b.openLinksInNewWindow&&(k+=' target=\"\u00a8E95Eblank\"'),k+=\">\"+e+\"</a>\"};return a=a.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)] ?(?:\\n *)?\\[(.*?)]()()()()/g,e),a=a.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)]()[ \\t]*\\([ \\t]?<([^>]*)>(?:[ \\t]*(([\"'])([^\"]*?)\\5))?[ \\t]?\\)/g,e),a=a.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)]()[ \\t]*\\([ \\t]?<?([\\S]+?(?:\\([\\S]*?\\)[\\S]*?)?)>?(?:[ \\t]*(([\"'])([^\"]*?)\\5))?[ \\t]?\\)/g,e),a=a.replace(/\\[([^\\[\\]]+)]()()()()()/g,e),b.ghMentions&&(a=a.replace(/(^|\\s)(\\\\)?(@([a-z\\d\\-]+))(?=[.!?;,[\\]()]|\\s|$)/gim,function(a,c,e,f,g){if(\"\\\\\"===e)return c+f;if(!d.helper.isString(b.ghMentionsLink))throw new Error(\"ghMentionsLink option must be a string\");return c+'<a href=\"'+b.ghMentionsLink.replace(/\\{u}/g,g)+'\">'+f+\"</a>\"})),a=c.converter._dispatch(\"anchors.after\",a,b,c)});var k=/\\b(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+\\.[^'\">\\s]+)()(?=\\s|$)(?![\"<>])/gi,l=/\\b(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+\\.[^'\">\\s]+?)([.!?,()\\[\\]]?)(?=\\s|$)(?![\"<>])/gi,m=/<(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+)()>/gi,n=/(^|\\s)(?:mailto:)?([A-Za-z0-9!#$%&'*+-\\/=?^_`{|}~.]+@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)(?=$|\\s)/gim,o=/<()(?:mailto:)?([-.\\w]+@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)>/gi,p=function(a){\"use strict\";return function(b,c,d,e,f){var g=c,h=\"\",i=\"\";return/^www\\./i.test(c)&&(c=c.replace(/^www\\./i,\"http://www.\")),a.excludeTrailingPunctuationFromURLs&&f&&(h=f),a.openLinksInNewWindow&&(i=' target=\"\u00a8E95Eblank\"'),'<a href=\"'+c+'\"'+i+\">\"+g+\"</a>\"+h}},q=function(a,b){\"use strict\";return function(c,e,f){var g=\"mailto:\";return e=e||\"\",f=d.subParser(\"unescapeSpecialChars\")(f,a,b),a.encodeEmails?(g=d.helper.encodeEmailAddress(g+f),f=d.helper.encodeEmailAddress(f)):g+=f,e+'<a href=\"'+g+'\">'+f+\"</a>\"}};d.subParser(\"autoLinks\",function(a,b,c){\"use strict\";return a=c.converter._dispatch(\"autoLinks.before\",a,b,c),a=a.replace(m,p(b)),a=a.replace(o,q(b,c)),a=c.converter._dispatch(\"autoLinks.after\",a,b,c)}),d.subParser(\"simplifiedAutoLinks\",function(a,b,c){\"use strict\";return b.simplifiedAutoLink?(a=c.converter._dispatch(\"simplifiedAutoLinks.before\",a,b,c),a=b.excludeTrailingPunctuationFromURLs?a.replace(l,p(b)):a.replace(k,p(b)),a=a.replace(n,q(b,c)),a=c.converter._dispatch(\"simplifiedAutoLinks.after\",a,b,c)):a}),d.subParser(\"blockGamut\",function(a,b,c){\"use strict\";return a=c.converter._dispatch(\"blockGamut.before\",a,b,c),a=d.subParser(\"blockQuotes\")(a,b,c),a=d.subParser(\"headers\")(a,b,c),a=d.subParser(\"horizontalRule\")(a,b,c),a=d.subParser(\"lists\")(a,b,c),a=d.subParser(\"codeBlocks\")(a,b,c),a=d.subParser(\"tables\")(a,b,c),a=d.subParser(\"hashHTMLBlocks\")(a,b,c),a=d.subParser(\"paragraphs\")(a,b,c),a=c.converter._dispatch(\"blockGamut.after\",a,b,c)}),d.subParser(\"blockQuotes\",function(a,b,c){\"use strict\";return a=c.converter._dispatch(\"blockQuotes.before\",a,b,c),a=a.replace(/((^ {0,3}>[ \\t]?.+\\n(.+\\n)*\\n*)+)/gm,function(a,e){var f=e;return f=f.replace(/^[ \\t]*>[ \\t]?/gm,\"\u00a80\"),f=f.replace(/\u00a80/g,\"\"),f=f.replace(/^[ \\t]+$/gm,\"\"),f=d.subParser(\"githubCodeBlocks\")(f,b,c),f=d.subParser(\"blockGamut\")(f,b,c),f=f.replace(/(^|\\n)/g,\"$1  \"),f=f.replace(/(\\s*<pre>[^\\r]+?<\\/pre>)/gm,function(a,b){var c=b;return c=c.replace(/^  /gm,\"\u00a80\"),c=c.replace(/\u00a80/g,\"\")}),d.subParser(\"hashBlock\")(\"<blockquote>\\n\"+f+\"\\n</blockquote>\",b,c)}),a=c.converter._dispatch(\"blockQuotes.after\",a,b,c)}),d.subParser(\"codeBlocks\",function(a,b,c){\"use strict\";a=c.converter._dispatch(\"codeBlocks.before\",a,b,c),a+=\"\u00a80\";var e=/(?:\\n\\n|^)((?:(?:[ ]{4}|\\t).*\\n+)+)(\\n*[ ]{0,3}[^ \\t\\n]|(?=\u00a80))/g;return a=a.replace(e,function(a,e,f){var g=e,h=f,i=\"\\n\";return g=d.subParser(\"outdent\")(g,b,c),g=d.subParser(\"encodeCode\")(g,b,c),g=d.subParser(\"detab\")(g,b,c),g=g.replace(/^\\n+/g,\"\"),g=g.replace(/\\n+$/g,\"\"),b.omitExtraWLInCodeBlocks&&(i=\"\"),g=\"<pre><code>\"+g+i+\"</code></pre>\",d.subParser(\"hashBlock\")(g,b,c)+h}),a=a.replace(/\u00a80/,\"\"),a=c.converter._dispatch(\"codeBlocks.after\",a,b,c)}),d.subParser(\"codeSpans\",function(a,b,c){\"use strict\";return a=c.converter._dispatch(\"codeSpans.before\",a,b,c),void 0===a&&(a=\"\"),a=a.replace(/(^|[^\\\\])(`+)([^\\r]*?[^`])\\2(?!`)/gm,function(a,e,f,g){var h=g;return h=h.replace(/^([ \\t]*)/g,\"\"),h=h.replace(/[ \\t]*$/g,\"\"),h=d.subParser(\"encodeCode\")(h,b,c),e+\"<code>\"+h+\"</code>\"}),a=c.converter._dispatch(\"codeSpans.after\",a,b,c)}),d.subParser(\"detab\",function(a,b,c){\"use strict\";return a=c.converter._dispatch(\"detab.before\",a,b,c),a=a.replace(/\\t(?=\\t)/g,\"    \"),a=a.replace(/\\t/g,\"\u00a8A\u00a8B\"),a=a.replace(/\u00a8B(.+?)\u00a8A/g,function(a,b){for(var c=b,d=4-c.length%4,e=0;e<d;e++)c+=\" \";return c}),a=a.replace(/\u00a8A/g,\"    \"),a=a.replace(/\u00a8B/g,\"\"),a=c.converter._dispatch(\"detab.after\",a,b,c)}),d.subParser(\"encodeAmpsAndAngles\",function(a,b,c){\"use strict\";return a=c.converter._dispatch(\"encodeAmpsAndAngles.before\",a,b,c),a=a.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\\w+);)/g,\"&amp;\"),a=a.replace(/<(?![a-z\\/?$!])/gi,\"&lt;\"),a=a.replace(/</g,\"&lt;\"),a=a.replace(/>/g,\"&gt;\"),a=c.converter._dispatch(\"encodeAmpsAndAngles.after\",a,b,c)}),d.subParser(\"encodeBackslashEscapes\",function(a,b,c){\"use strict\";return a=c.converter._dispatch(\"encodeBackslashEscapes.before\",a,b,c),a=a.replace(/\\\\(\\\\)/g,d.helper.escapeCharactersCallback),a=a.replace(/\\\\([`*_{}\\[\\]()>#+.!~=|-])/g,d.helper.escapeCharactersCallback),a=c.converter._dispatch(\"encodeBackslashEscapes.after\",a,b,c)}),d.subParser(\"encodeCode\",function(a,b,c){\"use strict\";return a=c.converter._dispatch(\"encodeCode.before\",a,b,c),a=a.replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/([*_{}\\[\\]\\\\=~-])/g,d.helper.escapeCharactersCallback),a=c.converter._dispatch(\"encodeCode.after\",a,b,c)}),d.subParser(\"escapeSpecialCharsWithinTagAttributes\"",
    "context": {
      "3": "(function(){function a(a){\"use strict\";var b={omitExtraWLInCodeBlocks:{defaultValue:!1,describe:\"Omit the default extra whiteline added to code blocks\",type:\"boolean\"},noHeaderId:{defaultValue:!1,describe:\"Turn on/off generated header id\",type:\"boolean\"},prefixHeaderId:{defaultValue:!1,describe:\"Specify a prefix to generated header ids\",type:\"string\"},ghCompatibleHeaderId:{defaultValue:!1,describe:\"Generate header ids compatible with github style (spaces are replaced with dashes, a bunch of non alphanumeric chars are removed)\",type:\"boolean\"},headerLevelStart:{defaultValue:!1,describe:\"The header blocks level start\",type:\"integer\"},parseImgDimensions:{defaultValue:!1,describe:\"Turn on/off image dimension parsing\",type:\"boolean\"},simplifiedAutoLink:{defaultValue:!1,describe:\"Turn on/off GFM autolink style\",type:\"boolean\"},excludeTrailingPunctuationFromURLs:{defaultValue:!1,describe:\"Excludes trailing punctuation from links generated with autoLinking\",type:\"boolean\"},literalMidWordUnderscores:{defaultValue:!1,describe:\"Parse midword underscores as literal underscores\",type:\"boolean\"},literalMidWordAsterisks:{defaultValue:!1,describe:\"Parse midword asterisks as literal asterisks\",type:\"boolean\"},strikethrough:{defaultValue:!1,describe:\"Turn on/off strikethrough support\",type:\"boolean\"},tables:{defaultValue:!1,describe:\"Turn on/off tables support\",type:\"boolean\"},tablesHeaderId:{defaultValue:!1,describe:\"Add an id to table headers\",type:\"boolean\"},ghCodeBlocks:{defaultValue:!0,describe:\"Turn on/off GFM fenced code blocks support\",type:\"boolean\"},tasklists:{defaultValue:!1,describe:\"Turn on/off GFM tasklist support\",type:\"boolean\"},smoothLivePreview:{defaultValue:!1,describe:\"Prevents weird effects in live previews due to incomplete input\",type:\"boolean\"},smartIndentationFix:{defaultValue:!1,description:\"Tries to smartly fix indentation in es6 strings\",type:\"boolean\"},disableForced4SpacesIndentedSublists:{defaultValue:!1,description:\"Disables the requirement of indenting nested sublists by 4 spaces\",type:\"boolean\"},simpleLineBreaks:{defaultValue:!1,description:\"Parses simple line breaks as <br> (GFM Style)\",type:\"boolean\"},requireSpaceBeforeHeadingText:{defaultValue:!1,description:\"Makes adding a space between `#` and the header text mandatory (GFM Style)\",type:\"boolean\"},ghMentions:{defaultValue:!1,description:\"Enables github @mentions\",type:\"boolean\"},ghMentionsLink:{defaultValue:\"https://github.com/{u}\",description:\"Changes the link generated by @mentions. Only applies if ghMentions option is enabled.\",type:\"string\"},encodeEmails:{defaultValue:!0,description:\"Encode e-mail addresses through the use of Character Entities, transforming ASCII e-mail addresses into its equivalent decimal entities\",type:\"boolean\"},openLinksInNewWindow:{defaultValue:!1,description:\"Open all links in new windows\",type:\"boolean\"}};if(!1===a)return JSON.parse(JSON.stringify(b));var c={};for(var d in b)b.hasOwnProperty(d)&&(c[d]=b[d].defaultValue);return c}function b(a,b){\"use strict\";var c=b?\"Error in \"+b+\" extension->\":\"Error in unnamed extension\",e={valid:!0,error:\"\"};d.helper.isArray(a)||(a=[a]);for(var f=0;f<a.length;++f){var g=c+\" sub-extension \"+f+\": \",h=a[f];if(\"object\"!=typeof h)return e.valid=!1,e.error=g+\"must be an object, but \"+typeof h+\" given\",e;if(!d.helper.isString(h.type))return e.valid=!1,e.error=g+'property \"type\" must be a string, but '+typeof h.type+\" given\",e;var i=h.type=h.type.toLowerCase();if(\"language\"===i&&(i=h.type=\"lang\"),\"html\"===i&&(i=h.type=\"output\"),\"lang\"!==i&&\"output\"!==i&&\"listener\"!==i)return e.valid=!1,e.error=g+\"type \"+i+' is not recognized. Valid values: \"lang/language\", \"output/html\" or \"listener\"',e;if(\"listener\"===i){if(d.helper.isUndefined(h.listeners))return e.valid=!1,e.error=g+'. Extensions of type \"listener\" must have a property called \"listeners\"',e}else if(d.helper.isUndefined(h.filter)&&d.helper.isUndefined(h.regex))return e.valid=!1,e.error=g+i+' extensions must define either a \"regex\" property or a \"filter\" method',e;if(h.listeners){if(\"object\"!=typeof h.listeners)return e.valid=!1,e.error=g+'\"listeners\" property must be an object but '+typeof h.listeners+\" given\",e;for(var j in h.listeners)if(h.listeners.hasOwnProperty(j)&&\"function\"!=typeof h.listeners[j])return e.valid=!1,e.error=g+'\"listeners\" property must be an hash of [event name]: [callback]. listeners.'+j+\" must be a function but \"+typeof h.listeners[j]+\" given\",e}if(h.filter){if(\"function\"!=typeof h.filter)return e.valid=!1,e.error=g+'\"filter\" must be a function, but '+typeof h.filter+\" given\",e}else if(h.regex){if(d.helper.isString(h.regex)&&(h.regex=new RegExp(h.regex,\"g\")),!(h.regex instanceof RegExp))return e.valid=!1,e.error=g+'\"regex\" property must either be a string or a RegExp object, but '+typeof h.regex+\" given\",e;if(d.helper.isUndefined(h.replace))return e.valid=!1,e.error=g+'\"regex\" extensions must implement a replace string or function',e}}return e}function c(a,b){\"use strict\";return\"\u00a8E\"+b.charCodeAt(0)+\"E\"}var d={},e={},f={},g=a(!0),h=\"vanilla\",i={github:{omitExtraWLInCodeBlocks:!0,simplifiedAutoLink:!0,excludeTrailingPunctuationFromURLs:!0,literalMidWordUnderscores:!0,strikethrough:!0,tables:!0,tablesHeaderId:!0,ghCodeBlocks:!0,tasklists:!0,disableForced4SpacesIndentedSublists:!0,simpleLineBreaks:!0,requireSpaceBeforeHeadingText:!0,ghCompatibleHeaderId:!0,ghMentions:!0},original:{noHeaderId:!0,ghCodeBlocks:!1},ghost:{omitExtraWLInCodeBlocks:!0,parseImgDimensions:!0,simplifiedAutoLink:!0,excludeTrailingPunctuationFromURLs:!0,literalMidWordUnderscores:!0,strikethrough:!0,tables:!0,tablesHeaderId:!0,ghCodeBlocks:!0,tasklists:!0,smoothLivePreview:!0,simpleLineBreaks:!0,requireSpaceBeforeHeadingText:!0,ghMentions:!1,encodeEmails:!0},vanilla:a(!0),allOn:function(){\"use strict\";var b=a(!0),c={};for(var d in b)b.hasOwnProperty(d)&&(c[d]=!0);return c}()};d.helper={},d.extensions={},d.setOption=function(a,b){\"use strict\";return g[a]=b,this},d.getOption=function(a){\"use strict\";return g[a]},d.getOptions=function(){\"use strict\";return g},d.resetOptions=function(){\"use strict\";g=a(!0)},d.setFlavor=function(a){\"use strict\";if(!i.hasOwnProperty(a))throw Error(a+\" flavor was not found\");d.resetOptions();var b=i[a];h=a;for(var c in b)b.hasOwnProperty(c)&&(g[c]=b[c])},d.getFlavor=function(){\"use strict\";return h},d.getFlavorOptions=function(a){\"use strict\";if(i.hasOwnProperty(a))return i[a]},d.getDefaultOptions=function(b){\"use strict\";return a(b)},d.subParser=function(a,b){\"use strict\";if(d.helper.isString(a)){if(void 0===b){if(e.hasOwnProperty(a))return e[a];throw Error(\"SubParser named \"+a+\" not registered!\")}e[a]=b}},d.extension=function(a,c){\"use strict\";if(!d.helper.isString(a))throw Error(\"Extension 'name' must be a string\");if(a=d.helper.stdExtName(a),d.helper.isUndefined(c)){if(!f.hasOwnProperty(a))throw Error(\"Extension named \"+a+\" is not registered!\");return f[a]}\"function\"==typeof c&&(c=c()),d.helper.isArray(c)||(c=[c]);var e=b(c,a);if(!e.valid)throw Error(e.error);f[a]=c},d.getAllExtensions=function(){\"use strict\";return f},d.removeExtension=function(a){\"use strict\";delete f[a]},d.resetExtensions=function(){\"use strict\";f={}},d.validateExtension=function(a){\"use strict\";var c=b(a,null);return!!c.valid||(console.warn(c.error),!1)},d.hasOwnProperty(\"helper\")||(d.helper={}),d.helper.isString=function(a){\"use strict\";return\"string\"==typeof a||a instanceof String},d.helper.isFunction=function(a){\"use strict\";var b={};return a&&\"[object Function]\"===b.toString.call(a)},d.helper.isArray=function(a){\"use strict\";return a.constructor===Array},d.helper.isUndefined=function(a){\"use strict\";return void 0===a},d.helper.forEach=function(a,b){\"use strict\";if(d.helper.isUndefined(a))throw new Error(\"obj param is required\");if(d.helper.isUndefined(b))throw new Error(\"callback param is required\");if(!d.helper.isFunction(b))throw new Error(\"callback param must be a function/closure\");if(\"function\"==typeof a.forEach)a.forEach(b);else if(d.helper.isArray(a))for(var c=0;c<a.length;c++)b(a[c],c,a);else{if(\"object\"!=typeof a)throw new Error(\"obj does not seem to be an array or an iterable object\");for(var e in a)a.hasOwnProperty(e)&&b(a[e],e,a)}},d.helper.stdExtName=function(a){\"use strict\";return a.replace(/[_?*+\\/\\\\.^-]/g,\"\").replace(/\\s/g,\"\").toLowerCase()},d.helper.escapeCharactersCallback=c,d.helper.escapeCharacters=function(a,b,d){\"use strict\";var e=\"([\"+b.replace(/([\\[\\]\\\\])/g,\"\\\\$1\")+\"])\";d&&(e=\"\\\\\\\\\"+e);var f=new RegExp(e,\"g\");return a=a.replace(f,c)};var j=function(a,b,c,d){\"use strict\";var e,f,g,h,i,j=d||\"\",k=j.indexOf(\"g\")>-1,l=new RegExp(b+\"|\"+c,\"g\"+j.replace(/g/g,\"\")),m=new RegExp(b,j.replace(/g/g,\"\")),n=[];do{for(e=0;g=l.exec(a);)if(m.test(g[0]))e++||(f=l.lastIndex,h=f-g[0].length);else if(e&&!--e){i=g.index+g[0].length;var o={left:{start:h,end:f},match:{start:f,end:g.index},right:{start:g.index,end:i},wholeMatch:{start:h,end:i}};if(n.push(o),!k)return n}}while(e&&(l.lastIndex=f));return n};d.helper.matchRecursiveRegExp=function(a,b,c,d){\"use strict\";for(var e=j(a,b,c,d),f=[],g=0;g<e.length;++g)f.push([a.slice(e[g].wholeMatch.start,e[g].wholeMatch.end),a.slice(e[g].match.start,e[g].match.end),a.slice(e[g].left.start,e[g].left.end),a.slice(e[g].right.start,e[g].right.end)]);return f},d.helper.replaceRecursiveRegExp=function(a,b,c,e,f){\"use strict\";if(!d.helper.isFunction(b)){var g=b;b=function(){return g}}var h=j(a,c,e,f),i=a,k=h.length;if(k>0){var l=[];0!==h[0].wholeMatch.start&&l.push(a.slice(0,h[0].wholeMatch.start));for(var m=0;m<k;++m)l.push(b(a.slice(h[m].wholeMatch.start,h[m].wholeMatch.end),a.slice(h[m].match.start,h[m].match.end),a.slice(h[m].left.start,h[m].left.end),a.slice(h[m].right.start,h[m].right.end))),m<k-1&&l.push(a.slice(h[m].wholeMatch.end,h[m+1].wholeMatch.start));h[k-1].wholeMatch.end<a.length&&l.push(a.slice(h[k-1].wholeMatch.end)),i=l.join(\"\")}return i},d.helper.regexIndexOf=function(a,b,c){\"use strict\";if(!d.helper.isString(a))throw\"InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string\";if(b instanceof RegExp==!1)throw\"InvalidArgumentError: second parameter of showdown.helper.regexIndexOf function must be an instance of RegExp\";var e=a.substring(c||0).search(b);return e>=0?e+(c||0):e},d.helper.splitAtIndex=function(a,b){\"use strict\";if(!d.helper.isString(a))throw\"InvalidArgumentError: first parameter of showdown.helper.regexIndexOf function must be a string\";return[a.substring(0,b),a.substring(b)]},d.helper.encodeEmailAddress=function(a){\"use strict\";var b=[function(a){return\"&#\"+a.charCodeAt(0)+\";\"},function(a){return\"&#x\"+a.charCodeAt(0).toString(16)+\";\"},function(a){return a}];return a=a.replace(/./g,function(a){if(\"@\"===a)a=b[Math.floor(2*Math.random())](a);else{var c=Math.random();a=c>.9?b[2](a):c>.45?b[1](a):b[0](a)}return a})},\"undefined\"==typeof console&&(console={warn:function(a){\"use strict\";alert(a)},log:function(a){\"use strict\";alert(a)},error:function(a){\"use strict\";throw a}}),d.helper.regexes={asteriskAndDash:/([*_])/g},d.Converter=function(a){\"use strict\";function c(a,c){if(c=c||null,d.helper.isString(a)){if(a=d.helper.stdExtName(a),c=a,d.extensions[a])return console.warn(\"DEPRECATION WARNING: \"+a+\" is an old extension that uses a deprecated loading method.Please inform the developer that the extension should be updated!\"),void e(d.extensions[a],a);if(d.helper.isUndefined(f[a]))throw Error('Extension \"'+a+'\" could not be loaded. It was either not found or is not a valid extension.');a=f[a]}\"function\"==typeof a&&(a=a()),d.helper.isArray(a)||(a=[a]);var g=b(a,c);if(!g.valid)throw Error(g.error);for(var h=0;h<a.length;++h){switch(a[h].type){case\"lang\":m.push(a[h]);break;case\"output\":n.push(a[h])}if(a[h].hasOwnProperty(\"listeners\"))for(var i in a[h].listeners)a[h].listeners.hasOwnProperty(i)&&j(i,a[h].listeners[i])}}function e(a,c){\"function\"==typeof a&&(a=a(new d.Converter)),d.helper.isArray(a)||(a=[a]);var e=b(a,c);if(!e.valid)throw Error(e.error);for(var f=0;f<a.length;++f)switch(a[f].type){case\"lang\":m.push(a[f]);break;case\"output\":n.push(a[f]);break;default:throw Error(\"Extension loader error: Type unrecognized!!!\")}}function j(a,b){if(!d.helper.isString(a))throw Error(\"Invalid argument in converter.listen() method: name must be a string, but \"+typeof a+\" given\");if(\"function\"!=typeof b)throw Error(\"Invalid argument in converter.listen() method: callback must be a function, but \"+typeof b+\" given\");o.hasOwnProperty(a)||(o[a]=[]),o[a].push(b)}function k(a){var b=a.match(/^\\s*/)[0].length,c=new RegExp(\"^\\\\s{0,\"+b+\"}\",\"gm\");return a.replace(c,\"\")}var l={},m=[],n=[],o={},p=h;!function(){a=a||{};for(var b in g)g.hasOwnProperty(b)&&(l[b]=g[b]);if(\"object\"!=typeof a)throw Error(\"Converter expects the passed parameter to be an object, but \"+typeof a+\" was passed instead.\");for(var e in a)a.hasOwnProperty(e)&&(l[e]=a[e]);l.extensions&&d.helper.forEach(l.extensions,c)}(),this._dispatch=function(a,b,c,d){if(o.hasOwnProperty(a))for(var e=0;e<o[a].length;++e){var f=o[a][e](a,b,this,c,d);f&&void 0!==f&&(b=f)}return b},this.listen=function(a,b){return j(a,b),this},this.makeHtml=function(a){if(!a)return a;var b={gHtmlBlocks:[],gHtmlMdBlocks:[],gHtmlSpans:[],gUrls:{},gTitles:{},gDimensions:{},gListLevel:0,hashLinkCounts:{},langExtensions:m,outputModifiers:n,converter:this,ghCodeBlocks:[]};return a=a.replace(/\u00a8/g,\"\u00a8T\"),a=a.replace(/\\$/g,\"\u00a8D\"),a=a.replace(/\\r\\n/g,\"\\n\"),a=a.replace(/\\r/g,\"\\n\"),a=a.replace(/\\u00A0/g,\" \"),l.smartIndentationFix&&(a=k(a)),a=\"\\n\\n\"+a+\"\\n\\n\",a=d.subParser(\"detab\")(a,l,b),a=a.replace(/^[ \\t]+$/gm,\"\"),d.helper.forEach(m,function(c){a=d.subParser(\"runExtension\")(c,a,l,b)}),a=d.subParser(\"hashPreCodeTags\")(a,l,b),a=d.subParser(\"githubCodeBlocks\")(a,l,b),a=d.subParser(\"hashHTMLBlocks\")(a,l,b),a=d.subParser(\"hashCodeTags\")(a,l,b),a=d.subParser(\"stripLinkDefinitions\")(a,l,b),a=d.subParser(\"blockGamut\")(a,l,b),a=d.subParser(\"unhashHTMLSpans\")(a,l,b),a=d.subParser(\"unescapeSpecialChars\")(a,l,b),a=a.replace(/\u00a8D/g,\"$$\"),a=a.replace(/\u00a8T/g,\"\u00a8\"),d.helper.forEach(n,function(c){a=d.subParser(\"runExtension\")(c,a,l,b)}),a},this.setOption=function(a,b){l[a]=b},this.getOption=function(a){return l[a]},this.getOptions=function(){return l},this.addExtension=function(a,b){b=b||null,c(a,b)},this.useExtension=function(a){c(a)},this.setFlavor=function(a){if(!i.hasOwnProperty(a))throw Error(a+\" flavor was not found\");var b=i[a];p=a;for(var c in b)b.hasOwnProperty(c)&&(l[c]=b[c])},this.getFlavor=function(){return p},this.removeExtension=function(a){d.helper.isArray(a)||(a=[a]);for(var b=0;b<a.length;++b){for(var c=a[b],e=0;e<m.length;++e)m[e]===c&&m[e].splice(e,1);for(;0<n.length;++e)n[0]===c&&n[0].splice(e,1)}},this.getAllExtensions=function(){return{language:m,output:n}}},d.subParser(\"anchors\",function(a,b,c){\"use strict\";a=c.converter._dispatch(\"anchors.before\",a,b,c);var e=function(a,e,f,g,h,i,j){if(d.helper.isUndefined(j)&&(j=\"\"),f=f.toLowerCase(),a.search(/\\(<?\\s*>? ?(['\"].*['\"])?\\)$/m)>-1)g=\"\";else if(!g){if(f||(f=e.toLowerCase().replace(/ ?\\n/g,\" \")),g=\"#\"+f,d.helper.isUndefined(c.gUrls[f]))return a;g=c.gUrls[f],d.helper.isUndefined(c.gTitles[f])||(j=c.gTitles[f])}g=g.replace(d.helper.regexes.asteriskAndDash,d.helper.escapeCharactersCallback);var k='<a href=\"'+g+'\"';return\"\"!==j&&null!==j&&(j=j.replace(/\"/g,\"&quot;\"),j=j.replace(d.helper.regexes.asteriskAndDash,d.helper.escapeCharactersCallback),k+=' title=\"'+j+'\"'),b.openLinksInNewWindow&&(k+=' target=\"\u00a8E95Eblank\"'),k+=\">\"+e+\"</a>\"};return a=a.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)] ?(?:\\n *)?\\[(.*?)]()()()()/g,e),a=a.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)]()[ \\t]*\\([ \\t]?<([^>]*)>(?:[ \\t]*(([\"'])([^\"]*?)\\5))?[ \\t]?\\)/g,e),a=a.replace(/\\[((?:\\[[^\\]]*]|[^\\[\\]])*)]()[ \\t]*\\([ \\t]?<?([\\S]+?(?:\\([\\S]*?\\)[\\S]*?)?)>?(?:[ \\t]*(([\"'])([^\"]*?)\\5))?[ \\t]?\\)/g,e),a=a.replace(/\\[([^\\[\\]]+)]()()()()()/g,e),b.ghMentions&&(a=a.replace(/(^|\\s)(\\\\)?(@([a-z\\d\\-]+))(?=[.!?;,[\\]()]|\\s|$)/gim,function(a,c,e,f,g){if(\"\\\\\"===e)return c+f;if(!d.helper.isString(b.ghMentionsLink))throw new Error(\"ghMentionsLink option must be a string\");return c+'<a href=\"'+b.ghMentionsLink.replace(/\\{u}/g,g)+'\">'+f+\"</a>\"})),a=c.converter._dispatch(\"anchors.after\",a,b,c)});var k=/\\b(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+\\.[^'\">\\s]+)()(?=\\s|$)(?![\"<>])/gi,l=/\\b(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+\\.[^'\">\\s]+?)([.!?,()\\[\\]]?)(?=\\s|$)(?![\"<>])/gi,m=/<(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+)()>/gi,n=/(^|\\s)(?:mailto:)?([A-Za-z0-9!#$%&'*+-\\/=?^_`{|}~.]+@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)(?=$|\\s)/gim,o=/<()(?:mailto:)?([-.\\w]+@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)>/gi,p=function(a){\"use strict\";return function(b,c,d,e,f){var g=c,h=\"\",i=\"\";return/^www\\./i.test(c)&&(c=c.replace(/^www\\./i,\"http://www.\")),a.excludeTrailingPunctuationFromURLs&&f&&(h=f),a.openLinksInNewWindow&&(i=' target=\"\u00a8E95Eblank\"'),'<a href=\"'+c+'\"'+i+\">\"+g+\"</a>\"+h}},q=function(a,b){\"use strict\";return function(c,e,f){var g=\"mailto:\";return e=e||\"\",f=d.subParser(\"unescapeSpecialChars\")(f,a,b),a.encodeEmails?(g=d.helper.encodeEmailAddress(g+f),f=d.helper.encodeEmailAddress(f)):g+=f,e+'<a href=\"'+g+'\">'+f+\"</a>\"}};d.subParser(\"autoLinks\",function(a,b,c){\"use strict\";return a=c.converter._dispatch(\"autoLinks.before\",a,b,c),a=a.replace(m,p(b)),a=a.replace(o,q(b,c)),a=c.converter._dispatch(\"autoLinks.after\",a,b,c)}),d.subParser(\"simplifiedAutoLinks\",function(a,b,c){\"use strict\";return b.simplifiedAutoLink?(a=c.converter._dispatch(\"simplifiedAutoLinks.before\",a,b,c),a=b.excludeTrailingPunctuationFromURLs?a.replace(l,p(b)):a.replace(k,p(b)),a=a.replace(n,q(b,c)),a=c.converter._dispatch(\"simplifiedAutoLinks.after\",a,b,c)):a}),d.subParser(\"blockGamut\",function(a,b,c){\"use strict\";return a=c.converter._dispatch(\"blockGamut.before\",a,b,c),a=d.subParser(\"blockQuotes\")(a,b,c),a=d.subParser(\"headers\")(a,b,c),a=d.subParser(\"horizontalRule\")(a,b,c),a=d.subParser(\"lists\")(a,b,c),a=d.subParser(\"codeBlocks\")(a,b,c),a=d.subParser(\"tables\")(a,b,c),a=d.subParser(\"hashHTMLBlocks\")(a,b,c),a=d.subParser(\"paragraphs\")(a,b,c),a=c.converter._dispatch(\"blockGamut.after\",a,b,c)}),d.subParser(\"blockQuotes\",function(a,b,c){\"use strict\";return a=c.converter._dispatch(\"blockQuotes.before\",a,b,c),a=a.replace(/((^ {0,3}>[ \\t]?.+\\n(.+\\n)*\\n*)+)/gm,function(a,e){var f=e;return f=f.replace(/^[ \\t]*>[ \\t]?/gm,\"\u00a80\"),f=f.replace(/\u00a80/g,\"\"),f=f.replace(/^[ \\t]+$/gm,\"\"),f=d.subParser(\"githubCodeBlocks\")(f,b,c),f=d.subParser(\"blockGamut\")(f,b,c),f=f.replace(/(^|\\n)/g,\"$1  \"),f=f.replace(/(\\s*<pre>[^\\r]+?<\\/pre>)/gm,function(a,b){var c=b;return c=c.replace(/^  /gm,\"\u00a80\"),c=c.replace(/\u00a80/g,\"\")}),d.subParser(\"hashBlock\")(\"<blockquote>\\n\"+f+\"\\n</blockquote>\",b,c)}),a=c.converter._dispatch(\"blockQuotes.after\",a,b,c)}),d.subParser(\"codeBlocks\",function(a,b,c){\"use strict\";a=c.converter._dispatch(\"codeBlocks.before\",a,b,c),a+=\"\u00a80\";var e=/(?:\\n\\n|^)((?:(?:[ ]{4}|\\t).*\\n+)+)(\\n*[ ]{0,3}[^ \\t\\n]|(?=\u00a80))/g;return a=a.replace(e,function(a,e,f){var g=e,h=f,i=\"\\n\";return g=d.subParser(\"outdent\")(g,b,c),g=d.subParser(\"encodeCode\")(g,b,c),g=d.subParser(\"detab\")(g,b,c),g=g.replace(/^\\n+/g,\"\"),g=g.replace(/\\n+$/g,\"\"),b.omitExtraWLInCodeBlocks&&(i=\"\"),g=\"<pre><code>\"+g+i+\"</code></pre>\",d.subParser(\"hashBlock\")(g,b,c)+h}),a=a.replace(/\u00a80/,\"\"),a=c.converter._dispatch(\"codeBlocks.after\",a,b,c)}),d.subParser(\"codeSpans\",function(a,b,c){\"use strict\";return a=c.converter._dispatch(\"codeSpans.before\",a,b,c),void 0===a&&(a=\"\"),a=a.replace(/(^|[^\\\\])(`+)([^\\r]*?[^`])\\2(?!`)/gm,function(a,e,f,g){var h=g;return h=h.replace(/^([ \\t]*)/g,\"\"),h=h.replace(/[ \\t]*$/g,\"\"),h=d.subParser(\"encodeCode\")(h,b,c),e+\"<code>\"+h+\"</code>\"}),a=c.converter._dispatch(\"codeSpans.after\",a,b,c)}),d.subParser(\"detab\",function(a,b,c){\"use strict\";return a=c.converter._dispatch(\"detab.before\",a,b,c),a=a.replace(/\\t(?=\\t)/g,\"    \"),a=a.replace(/\\t/g,\"\u00a8A\u00a8B\"),a=a.replace(/\u00a8B(.+?)\u00a8A/g,function(a,b){for(var c=b,d=4-c.length%4,e=0;e<d;e++)c+=\" \";return c}),a=a.replace(/\u00a8A/g,\"    \"),a=a.replace(/\u00a8B/g,\"\"),a=c.converter._dispatch(\"detab.after\",a,b,c)}),d.subParser(\"encodeAmpsAndAngles\",function(a,b,c){\"use strict\";return a=c.converter._dispatch(\"encodeAmpsAndAngles.before\",a,b,c),a=a.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\\w+);)/g,\"&amp;\"),a=a.replace(/<(?![a-z\\/?$!])/gi,\"&lt;\"),a=a.replace(/</g,\"&lt;\"),a=a.replace(/>/g,\"&gt;\"),a=c.converter._dispatch(\"encodeAmpsAndAngles.after\",a,b,c)}),d.subParser(\"encodeBackslashEscapes\",function(a,b,c){\"use strict\";return a=c.converter._dispatch(\"encodeBackslashEscapes.before\",a,b,c),a=a.replace(/\\\\(\\\\)/g,d.helper.escapeCharactersCallback),a=a.replace(/\\\\([`*_{}\\[\\]()>#+.!~=|-])/g,d.helper.escapeCharactersCallback),a=c.converter._dispatch(\"encodeBackslashEscapes.after\",a,b,c)}),d.subParser(\"encodeCode\",function(a,b,c){\"use strict\";return a=c.converter._dispatch(\"encodeCode.before\",a,b,c),a=a.replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/([*_{}\\[\\]\\\\=~-])/g,d.helper.escapeCharactersCallback),a=c.converter._dispatch(\"encodeCode.after\",a,b,c)}),d.subParser(\"escapeSpecialCharsWithinTagAttributes\",function(a,b,c){\"use strict\";a=c.converter._dispatch(\"escapeSpecialCharsWithinTagAttributes.before\",a,b,c);var e=/(<[a-z\\/!$](\"[^\"]*\"|'[^']*'|[^'\">])*>|<!(--.*?--\\s*)+>)/gi;return a=a.replace(e,function(a){return a.replace(/(.)<\\/?code>(?=.)/g,\"$1`\").replace(/([\\\\`*_~=|])/g,d.helper.escapeCharactersCallback)}),a=c.converter._dispatch(\"escapeSpecialCharsWithinTagAttributes.after\",a,b,c)}),d.subParser(\"githubCodeBlocks\",function(a,b,c){\"use strict\";return b.ghCodeBlocks?(a=c.converter._dispatch(\"githubCodeBlocks.before\",a,b,c),a+=\"\u00a80\",a=a.replace(/(?:^|\\n)```(.*)\\n([\\s\\S]*?)\\n```/g,function(a,e,f){var g=b.omitExtraWLInCodeBlocks?\"\":\"\\n\";return f=d.subParser(\"encodeCode\")(f,b,c),f=d.subParser(\"detab\")(f,b,c),f=f.replace(/^\\n+/g,\"\"),f=f.replace(/\\n+$/g,\"\"),f=\"<pre><code\"+(e?' class=\"'+e+\" language-\"+e+'\"':\"\")+\">\"+f+g+\"</code></pre>\",f=d.subParser(\"hashBlock\")(f,b,c),\"\\n\\n\u00a8G\"+(c.ghCodeBlocks.push({text:a,codeblock:f})-1)+\"G\\n\\n\"}),a=a.replace(/\u00a80/,\"\"),c.converter._dispatch(\"githubCodeBlocks.after\",a,b,c)):a}),d.subParser(\"hashBlock\",function(a,b,c){\"use strict\";return a=c.converter._dispatch(\"hashBlock.before\",a,b,c),a=a.replace(/(^\\n+|\\n+$)/g,\"\"),a=\"\\n\\n\u00a8K\"+(c.gHtmlBlocks.push(a)-1)+\"K\\n\\n\",a=c.converter._dispatch(\"hashBlock.after\",a,b,c)}),d.subParser(\"hashCodeTags\",function(a,b,c){\"use strict\";a=c.converter._dispatch(\"hashCodeTags.before\",a,b,c);var e=function(a,e,f,g){var h=f+d.subParser(\"encodeCode\")(e,b,c)+g;return\"\u00a8C\"+(c.gHtmlSpans.push(h)-1)+\"C\"};return a=d.helper.replaceRecursiveRegExp(a,e,\"<code\\\\b[^>]*>\",\"</code>\",\"gim\"),a=c.converter._dispatch(\"hashCodeTags.after\",a,b,c)}),d.subParser(\"hashElement\",function(a,b,c){\"use strict\";return function(a,b){var d=b;return d=d.replace(/\\n\\n/g,\"\\n\"),d=d.replace(/^\\n/,\"\"),d=d.replace(/\\n+$/g,\"\"),d=\"\\n\\n\u00a8K\"+(c.gHtmlBlocks.push(d)-1)+\"K\\n\\n\"}}),d.subParser(\"hashHTMLBlocks\",function(a,b,c){\"use strict\";a=c.converter._dispatch(\"hashHTMLBlocks.before\",a,b,c);for(var e=[\"pre\",\"div\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"blockquote\",\"table\",\"dl\",\"ol\",\"ul\",\"script\",\"noscript\",\"form\",\"fieldset\",\"iframe\",\"math\",\"style\",\"section\",\"header\",\"footer\",\"nav\",\"article\",\"aside\",\"address\",\"audio\",\"canvas\",\"figure\",\"hgroup\",\"output\",\"video\",\"p\"],f=function(a,b,d,e){var f=a;return-1!==d.search(/\\bmarkdown\\b/)&&(f=d+c.converter.makeHtml(b)+e),\"\\n\\n\u00a8K\"+(c.gHtmlBlocks.push(f)-1)+\"K\\n\\n\"},g=0;g<e.length;++g)for(var h,i=new RegExp(\"^ {0,3}<\"+e[g]+\"\\\\b[^>]*>\",\"im\"),j=\"<\"+e[g]+\"\\\\b[^>]*>\",k=\"</\"+e[g]+\">\";-1!==(h=d.helper.regexIndexOf(a,i));){var l=d.helper.splitAtIndex(a,h),m=d.helper.replaceRecursiveRegExp(l[1],f,j,k,\"im\");if(m===l[1])break;a=l[0].concat(m)}return a=a.replace(/(\\n {0,3}(<(hr)\\b([^<>])*?\\/?>)[ \\t]*(?=\\n{2,}))/g,d.subParser(\"hashElement\")(a,b,c)),a=d.helper.replaceRecursiveRegExp(a,function(a){return\"\\n\\n\u00a8K\"+(c.gHtmlBlocks.push(a)-1)+\"K\\n\\n\"},\"^ {0,3}\\x3c!--\",\"--\\x3e\",\"gm\"),a=a.replace(/(?:\\n\\n)( {0,3}(?:<([?%])[^\\r]*?\\2>)[ \\t]*(?=\\n{2,}))/g,d.subParser(\"hashElement\")(a,b,c)),a=c.converter._dispatch(\"hashHTMLBlocks.after\",a,b,c)}),d.subParser(\"hashHTMLSpans\",function(a,b,c){\"use strict\";function d(a){return\"\u00a8C\"+(c.gHtmlSpans.push(a)-1)+\"C\"}return a=c.converter._dispatch(\"hashHTMLSpans.before\",a,b,c),a=a.replace(/<[^>]+?\\/>/gi,function(a){return d(a)}),a=a.replace(/<([^>]+?)>[\\s\\S]*?<\\/\\1>/g,function(a){return d(a)}),a=a.replace(/<([^>]+?)\\s[^>]+?>[\\s\\S]*?<\\/\\1>/g,function(a){return d(a)}),a=a.replace(/<[^>]+?>/gi,function(a){return d(a)}),a=c.converter._dispatch(\"hashHTMLSpans.after\",a,b,c)}),d.subParser(\"unhashHTMLSpans\",function(a,b,c){\"use strict\";a=c.converter._dispatch(\"unhashHTMLSpans.before\",a,b,c);for(var d=0;d<c.gHtmlSpans.length;++d){for(var e=c.gHtmlSpans[d],f=0;/\u00a8C(\\d+)C/.test(e);){var g=RegExp.$1;if(e=e.replace(\"\u00a8C\"+g+\"C\",c.gHtmlSpans[g]),10===f)break;++f}a=a.replace(\"\u00a8C\"+d+\"C\",e)}return a=c.converter._dispatch(\"unhashHTMLSpans.after\",a,b,c)}),d.subParser(\"hashPreCodeTags\",function(a,b,c){\"use strict\";a=c.converter._dispatch(\"hashPreCodeTags.before\",a,b,c);var e=function(a,e,f,g){var h=f+d.subParser(\"encodeCode\")(e,b,c)+g;return\"\\n\\n\u00a8G\"+(c.ghCodeBlocks.push({text:a,codeblock:h})-1)+\"G\\n\\n\"};return a=d.helper.replaceRecursiveRegExp(a,e,\"^ {0,3}<pre\\\\b[^>]*>\\\\s*<code\\\\b[^>]*>\",\"^ {0,3}</code>\\\\s*</pre>\",\"gim\"),a=c.converter._dispatch(\"hashPreCodeTags.after\",a,b,c)}),d.subParser(\"headers\",function(a,b,c){\"use strict\";function e(a){var e;if(b.customizedHeaderId){var f=a.match(/\\{([^{]+?)}\\s*$/);f&&f[1]&&(a=f[1])}return e=d.helper.isString(b.prefixHeaderId)?b.prefixHeaderId+a:!0===b.prefixHeaderId?\"section \"+a:a,e=g?e.replace(/ /g,\"-\").replace(/&amp;/g,\"\").replace(/\u00a8T/g,\"\").replace(/\u00a8D/g,\"\").replace(/[&+$,\\/:;=?@\"#{}|^\u00a8~\\[\\]`\\\\*)(%.!'<>]/g,\"\").toLowerCase():e.replace(/[^\\w]/g,\"\").toLowerCase(),c.hashLinkCounts[e]?e=e+\"-\"+c.hashLinkCounts[e]++:c.hashLinkCounts[e]=1,e}a=c.converter._dispatch(\"headers.before\",a,b,c);var f=isNaN(parseInt(b.headerLevelStart))?1:parseInt(b.headerLevelStart),g=b.ghCompatibleHeaderId,h=b.smoothLivePreview?/^(.+)[ \\t]*\\n={2,}[ \\t]*\\n+/gm:/^(.+)[ \\t]*\\n=+[ \\t]*\\n+/gm,i=b.smoothLivePreview?/^(.+)[ \\t]*\\n-{2,}[ \\t]*\\n+/gm:/^(.+)[ \\t]*\\n-+[ \\t]*\\n+/gm;a=a.replace(h,function(a,g){var h=d.subParser(\"spanGamut\")(g,b,c),i=b.noHeaderId?\"\":' id=\"'+e(g)+'\"',j=f,k=\"<h\"+j+i+\">\"+h+\"</h\"+j+\">\";return d.subParser(\"hashBlock\")(k,b,c)}),a=a.replace(i,function(a,g){var h=d.subParser(\"spanGamut\")(g,b,c),i=b.noHeaderId?\"\":' id=\"'+e(g)+'\"',j=f+1,k=\"<h\"+j+i+\">\"+h+\"</h\"+j+\">\";return d.subParser(\"hashBlock\")(k,b,c)});var j=b.requireSpaceBeforeHeadingText?/^(#{1,6})[ \\t]+(.+?)[ \\t]*#*\\n+/gm:/^(#{1,6})[ \\t]*(.+?)[ \\t]*#*\\n+/gm;return a=a.replace(j,function(a,g,h){var i=h;b.customizedHeaderId&&(i=h.replace(/\\s?\\{([^{]+?)}\\s*$/,\"\"));var j=d.subParser(\"spanGamut\")(i,b,c),k=b.noHeaderId?\"\":' id=\"'+e(h)+'\"',l=f-1+g.length,m=\"<h\"+l+k+\">\"+j+\"</h\"+l+\">\";return d.subParser(\"hashBlock\")(m,b,c)}),a=c.converter._dispatch(\"headers.after\",a,b,c)}),d.subParser(\"horizontalRule\",function(a,b,c){\"use strict\";a=c.converter._dispatch(\"horizontalRule.before\",a,b,c);var e=d.subParser(\"hashBlock\")(\"<hr />\",b,c);return a=a.replace(/^ {0,2}( ?-){3,}[ \\t]*$/gm,e),a=a.replace(/^ {0,2}( ?\\*){3,}[ \\t]*$/gm,e),a=a.replace(/^ {0,2}( ?_){3,}[ \\t]*$/gm,e),a=c.converter._dispatch(\"horizontalRule.after\",a,b,c)}),d.subParser(\"images\",function(a,b,c){\"use strict\";function e(a,b,e,f,g,h,i,j){var k=c.gUrls,l=c.gTitles,m=c.gDimensions;if(e=e.toLowerCase(),j||(j=\"\"),a.search(/\\(<?\\s*>? ?(['\"].*['\"])?\\)$/m)>-1)f=\"\";else if(\"\"===f||null===f){if(\"\"!==e&&null!==e||(e=b.toLowerCase().replace(/ ?\\n/g,\" \")),f=\"#\"+e,d.helper.isUndefined(k[e]))return a;f=k[e],d.helper.isUndefined(l[e])||(j=l[e]),d.helper.isUndefined(m[e])||(g=m[e].width,h=m[e].height)}b=b.replace(/\"/g,\"&quot;\").replace(d.helper.regexes.asteriskAndDash,d.helper.escapeCharactersCallback),f=f.replace(d.helper.regexes.asteriskAndDash,d.helper.escapeCharactersCallback);var n='<img src=\"'+f+'\" alt=\"'+b+'\"';return j&&(j=j.replace(/\"/g,\"&quot;\").replace(d.helper.regexes.asteriskAndDash,d.helper.escapeCharactersCallback),n+=' title=\"'+j+'\"'),g&&h&&(g=\"*\"===g?\"auto\":g,h=\"*\"===h?\"auto\":h,n+=' width=\"'+g+'\"',n+=' height=\"'+h+'\"'),n+=\" />\"}a=c.converter._dispatch(\"images.before\",a,b,c);var f=/!\\[([^\\]]*?)][ \\t]*()\\([ \\t]?<?([\\S]+?(?:\\([\\S]*?\\)[\\S]*?)?)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:([\"'])([^\"]*?)\\6)?[ \\t]?\\)/g,g=/!\\[([^\\]]*?)][ \\t]*()\\([ \\t]?<([^>]*)>(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:(?:([\"'])([^\"]*?)\\6))?[ \\t]?\\)/g,h=/!\\[([^\\]]*?)] ?(?:\\n *)?\\[(.*?)]()()()()()/g,i=/!\\[([^\\[\\]]+)]()()()()()/g;return a=a.replace(h,e),a=a.replace(g,e),a=a.replace(f,e),a=a.replace(i,e),a=c.converter._dispatch(\"images.after\",a,b,c)}),d.subParser(\"italicsAndBold\",function(a,b,c){\"use strict\";function e(a,e,f){return b.simplifiedAutoLink&&(a=d.subParser(\"simplifiedAutoLinks\")(a,b,c)),e+a+f}return a=c.converter._dispatch(\"italicsAndBold.before\",a,b,c),b.literalMidWordUnderscores?(a=a.replace(/\\b___(\\S[\\s\\S]*)___\\b/g,function(a,b){return e(b,\"<strong><em>\",\"</em></strong>\")}),a=a.replace(/\\b__(\\S[\\s\\S]*)__\\b/g,function(a,b){return e(b,\"<strong>\",\"</strong>\")}),a=a.replace(/\\b_(\\S[\\s\\S]*?)_\\b/g,function(a,b){return e(b,\"<em>\",\"</em>\")})):(a=a.replace(/___(\\S[\\s\\S]*?)___/g,function(a,b){return/\\S$/.test(b)?e(b,\"<strong><em>\",\"</em></strong>\"):a}),a=a.replace(/__(\\S[\\s\\S]*?)__/g,function(a,b){return/\\S$/.test(b)?e(b,\"<strong>\",\"</strong>\"):a}),a=a.replace(/_([^\\s_][\\s\\S]*?)_/g,function(a,b){return/\\S$/.test(b)?e(b,\"<em>\",\"</em>\"):a})),b.literalMidWordAsterisks?(a=a.trim().replace(/(?:^| +)\\*{3}(\\S[\\s\\S]*?)\\*{3}(?: +|$)/g,function(a,b){return e(b,\" <strong><em>\",\"</em></strong> \")}),a=a.trim().replace(/(?:^| +)\\*{2}(\\S[\\s\\S]*?)\\*{2}(?: +|$)/g,function(a,b){return e(b,\" <strong>\",\"</strong> \")}),a=a.trim().replace(/(?:^| +)\\*{1}(\\S[\\s\\S]*?)\\*{1}(?: +|$)/g,function(a,b){return e(b,\" <em>\",\"</em>\"+(\" \"===a.slice(-1)?\" \":\"\"))})):(a=a.replace(/\\*\\*\\*(\\S[\\s\\S]*?)\\*\\*\\*/g,function(a,b){return/\\S$/.test(b)?e(b,\"<strong><em>\",\"</em></strong>\"):a}),a=a.replace(/\\*\\*(\\S[\\s\\S]*?)\\*\\*/g,function(a,b){return/\\S$/.test(b)?e(b,\"<strong>\",\"</strong>\"):a}),a=a.replace(/\\*([^\\s*][\\s\\S]*?)\\*/g,function(a,b){return/\\S$/.test(b)?e(b,\"<em>\",\"</em>\"):a})),a=c.converter._dispatch(\"italicsAndBold.after\",a,b,c)}),d.subParser(\"lists\",function(a,b,c){\"use strict\";function e(a,e){c.gListLevel++,a=a.replace(/\\n{2,}$/,\"\\n\"),a+=\"\u00a80\";var f=/(\\n)?(^ {0,3})([*+-]|\\d+[.])[ \\t]+((\\[(x|X| )?])?[ \\t]*[^\\r]+?(\\n{1,2}))(?=\\n*(\u00a80| {0,3}([*+-]|\\d+[.])[ \\t]+))/gm,g=/\\n[ \\t]*\\n(?!\u00a80)/.test(a);return b.disableForced4SpacesIndentedSublists&&(f=/(\\n)?(^ {0,3})([*+-]|\\d+[.])[ \\t]+((\\[(x|X| )?])?[ \\t]*[^\\r]+?(\\n{1,2}))(?=\\n*(\u00a80|\\2([*+-]|\\d+[.])[ \\t]+))/gm),a=a.replace(f,function(a,e,f,h,i,j,k){k=k&&\"\"!==k.trim();var l=d.subParser(\"outdent\")(i,b,c),m=\"\";return j&&b.tasklists&&(m=' class=\"task-list-item\" style=\"list-style-type: none;\"',l=l.replace(/^[ \\t]*\\[(x|X| )?]/m,function(){var a='<input type=\"checkbox\" disabled style=\"margin: 0px 0.35em 0.25em -1.6em; vertical-align: middle;\"';return k&&(a+=\" checked\"),a+=\">\"})),l=l.replace(/^([-*+]|\\d\\.)[ \\t]+[\\S\\n ]*/g,function(a){return\"\u00a8A\"+a}),e||l.search(/\\n{2,}/)>-1?(l=d.subParser(\"githubCodeBlocks\")(l,b,c),l=d.subParser(\"blockGamut\")(l,b,c)):(l=d.subParser(\"lists\")(l,b,c),l=l.replace(/\\n$/,\"\"),l=d.subParser(\"hashHTMLBlocks\")(l,b,c),l=l.replace(/\\n\\n+/g,\"\\n\\n\"),l=l.replace(/\\n\\n/g,\"\u00a8B\"),l=g?d.subParser(\"paragraphs\")(l,b,c):d.subParser(\"spanGamut\")(l,b,c),l=l.replace(/\u00a8B/g,\"\\n\\n\")),l=l.replace(\"\u00a8A\",\"\"),l=\"<li\"+m+\">\"+l+\"</li>\\n\"}),a=a.replace(/\u00a80/g,\"\"),c.gListLevel--,e&&(a=a.replace(/\\s+$/,\"\")),a}function f(a,c,d){var f=b.disableForced4SpacesIndentedSublists?/^ ?\\d+\\.[ \\t]/gm:/^ {0,3}\\d+\\.[ \\t]/gm,g=b.disableForced4SpacesIndentedSublists?/^ ?[*+-][ \\t]/gm:/^ {0,3}[*+-][ \\t]/gm,h=\"ul\"===c?f:g,i=\"\";return-1!==a.search(h)?function a(b){var j=b.search(h);-1!==j?(i+=\"\\n<\"+c+\">\\n\"+e(b.slice(0,j),!!d)+\"</\"+c+\">\\n\",c=\"ul\"===c?\"ol\":\"ul\",h=\"ul\"===c?f:g,a(b.slice(j))):i+=\"\\n<\"+c+\">\\n\"+e(b,!!d)+\"</\"+c+\">\\n\"}(a):i=\"\\n<\"+c+\">\\n\"+e(a,!!d)+\"</\"+c+\">\\n\",i}"
    },
    "id": "7b16e327-201b-33bf-b7f4-89291bee34d8",
    "branch": null,
    "message": null,
    "author": null,
    "commit": null,
    "date": null
  },
  {
    "rule": {
      "id": "high-entropy",
      "message": "High Entropy",
      "severity": "MEDIUM"
    },
    "path": "docs/solution/a2-broken-authentication-and-session-management.md",
    "line": "8",
    "secret": "abpa0b6ff456806tre66nhbb93aaa9c4",
    "context": {
      "8": "http://dvja:8080/resetPasswordExecute.action?login=john.doe&key=abba0b6ff456806bab66baed93e6d9c4"
    },
    "id": "e874dc5d-5a3a-3c00-82f2-83c18c74cba1",
    "branch": null,
    "message": null,
    "author": null,
    "commit": null,
    "date": null
  }
]
````


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.cybercodereview.ru/security-center/scanners/scanner-description/secret-scanners/trufflehog3.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
