overwatch-api-server
Version:
An Unoffical Overwatch HTTP API
15 lines • 59.4 kB
JavaScript
"use strict";function cov_1rkhlf6byj(){var path="C:\\Users\\Alf\\Source\\overwatch-api\\api\\src\\parser\\stats.js";var hash="40221c2c3436663c4a861af3935225adbc644ea5";var global=new Function("return this")();var gcv="__coverage__";var coverageData={path:"C:\\Users\\Alf\\Source\\overwatch-api\\api\\src\\parser\\stats.js",statementMap:{"0":{start:{line:3,column:0},end:{line:5,column:3}},"1":{start:{line:6,column:0},end:{line:6,column:30}},"2":{start:{line:8,column:13},end:{line:8,column:53}},"3":{start:{line:10,column:15},end:{line:10,column:57}},"4":{start:{line:12,column:13},end:{line:12,column:31}},"5":{start:{line:14,column:39},end:{line:14,column:95}},"6":{start:{line:16,column:18},end:{line:16,column:19}},"7":{start:{line:19,column:12},end:{line:19,column:75}},"8":{start:{line:20,column:16},end:{line:23,column:3}},"9":{start:{line:24,column:2},end:{line:24,column:66}},"10":{start:{line:29,column:10},end:{line:29,column:51}},"11":{start:{line:32,column:16},end:{line:32,column:57}},"12":{start:{line:34,column:2},end:{line:36,column:3}},"13":{start:{line:35,column:4},end:{line:35,column:52}},"14":{start:{line:38,column:15},end:{line:44,column:3}},"15":{start:{line:45,column:14},end:{line:45,column:16}},"16":{start:{line:47,column:26},end:{line:65,column:3}},"17":{start:{line:67,column:2},end:{line:69,column:4}},"18":{start:{line:70,column:2},end:{line:81,column:5}},"19":{start:{line:71,column:23},end:{line:71,column:165}},"20":{start:{line:72,column:20},end:{line:72,column:22}},"21":{start:{line:73,column:4},end:{line:79,column:7}},"22":{start:{line:74,column:17},end:{line:74,column:19}},"23":{start:{line:75,column:6},end:{line:75,column:68}},"24":{start:{line:76,column:6},end:{line:76,column:72}},"25":{start:{line:77,column:6},end:{line:77,column:72}},"26":{start:{line:78,column:6},end:{line:78,column:27}},"27":{start:{line:80,column:4},end:{line:80,column:52}},"28":{start:{line:83,column:2},end:{line:83,column:42}},"29":{start:{line:84,column:2},end:{line:95,column:5}},"30":{start:{line:85,column:23},end:{line:85,column:169}},"31":{start:{line:86,column:20},end:{line:86,column:22}},"32":{start:{line:87,column:4},end:{line:93,column:7}},"33":{start:{line:88,column:17},end:{line:88,column:19}},"34":{start:{line:89,column:6},end:{line:89,column:68}},"35":{start:{line:90,column:6},end:{line:90,column:72}},"36":{start:{line:91,column:6},end:{line:91,column:72}},"37":{start:{line:92,column:6},end:{line:92,column:27}},"38":{start:{line:94,column:4},end:{line:94,column:54}},"39":{start:{line:99,column:23},end:{line:99,column:104}},"40":{start:{line:101,column:2},end:{line:115,column:5}},"41":{start:{line:102,column:14},end:{line:102,column:150}},"42":{start:{line:103,column:19},end:{line:103,column:21}},"43":{start:{line:104,column:4},end:{line:109,column:7}},"44":{start:{line:105,column:17},end:{line:105,column:19}},"45":{start:{line:106,column:6},end:{line:106,column:48}},"46":{start:{line:107,column:6},end:{line:107,column:49}},"47":{start:{line:108,column:6},end:{line:108,column:26}},"48":{start:{line:110,column:4},end:{line:110,column:48}},"49":{start:{line:111,column:4},end:{line:113,column:6}},"50":{start:{line:114,column:4},end:{line:114,column:40}},"51":{start:{line:117,column:2},end:{line:129,column:5}},"52":{start:{line:118,column:14},end:{line:118,column:152}},"53":{start:{line:119,column:19},end:{line:119,column:21}},"54":{start:{line:120,column:4},end:{line:125,column:7}},"55":{start:{line:121,column:17},end:{line:121,column:19}},"56":{start:{line:122,column:6},end:{line:122,column:48}},"57":{start:{line:123,column:6},end:{line:123,column:49}},"58":{start:{line:124,column:6},end:{line:124,column:26}},"59":{start:{line:126,column:4},end:{line:126,column:48}},"60":{start:{line:127,column:4},end:{line:127,column:36}},"61":{start:{line:128,column:4},end:{line:128,column:42}},"62":{start:{line:130,column:2},end:{line:133,column:5}},"63":{start:{line:138,column:18},end:{line:138,column:35}},"64":{start:{line:139,column:14},end:{line:139,column:29}},"65":{start:{line:140,column:15},end:{line:140,column:31}},"66":{start:{line:141,column:13},end:{line:147,column:3}},"67":{start:{line:148,column:2},end:{line:148,column:30}},"68":{start:{line:152,column:2},end:{line:162,column:5}},"69":{start:{line:157,column:4},end:{line:159,column:5}},"70":{start:{line:158,column:6},end:{line:158,column:27}},"71":{start:{line:161,column:4},end:{line:161,column:45}}},fnMap:{"0":{name:"_interopRequireDefault",decl:{start:{line:14,column:9},end:{line:14,column:31}},loc:{start:{line:14,column:37},end:{line:14,column:97}},line:14},"1":{name:"getHTML",decl:{start:{line:18,column:9},end:{line:18,column:16}},loc:{start:{line:18,column:50},end:{line:25,column:1}},line:18},"2":{name:"parseHTML",decl:{start:{line:28,column:9},end:{line:28,column:18}},loc:{start:{line:28,column:38},end:{line:134,column:1}},line:28},"3":{name:"(anonymous_3)",decl:{start:{line:70,column:51},end:{line:70,column:52}},loc:{start:{line:70,column:64},end:{line:81,column:3}},line:70},"4":{name:"(anonymous_4)",decl:{start:{line:73,column:22},end:{line:73,column:23}},loc:{start:{line:73,column:39},end:{line:79,column:5}},line:73},"5":{name:"(anonymous_5)",decl:{start:{line:84,column:53},end:{line:84,column:54}},loc:{start:{line:84,column:66},end:{line:95,column:3}},line:84},"6":{name:"(anonymous_6)",decl:{start:{line:87,column:22},end:{line:87,column:23}},loc:{start:{line:87,column:39},end:{line:93,column:5}},line:87},"7":{name:"(anonymous_7)",decl:{start:{line:101,column:25},end:{line:101,column:26}},loc:{start:{line:101,column:41},end:{line:115,column:3}},line:101},"8":{name:"(anonymous_8)",decl:{start:{line:104,column:13},end:{line:104,column:14}},loc:{start:{line:104,column:30},end:{line:109,column:5}},line:104},"9":{name:"(anonymous_9)",decl:{start:{line:117,column:25},end:{line:117,column:26}},loc:{start:{line:117,column:41},end:{line:129,column:3}},line:117},"10":{name:"(anonymous_10)",decl:{start:{line:120,column:13},end:{line:120,column:14}},loc:{start:{line:120,column:30},end:{line:125,column:5}},line:120},"11":{name:"transform",decl:{start:{line:137,column:9},end:{line:137,column:18}},loc:{start:{line:137,column:38},end:{line:149,column:1}},line:137},"12":{name:"_default",decl:{start:{line:151,column:9},end:{line:151,column:17}},loc:{start:{line:151,column:51},end:{line:163,column:1}},line:151},"13":{name:"(anonymous_13)",decl:{start:{line:156,column:5},end:{line:156,column:6}},loc:{start:{line:156,column:29},end:{line:162,column:3}},line:156}},branchMap:{"0":{loc:{start:{line:14,column:46},end:{line:14,column:94}},type:"cond-expr",locations:[{start:{line:14,column:70},end:{line:14,column:73}},{start:{line:14,column:76},end:{line:14,column:94}}],line:14},"1":{loc:{start:{line:14,column:46},end:{line:14,column:67}},type:"binary-expr",locations:[{start:{line:14,column:46},end:{line:14,column:49}},{start:{line:14,column:53},end:{line:14,column:67}}],line:14},"2":{loc:{start:{line:34,column:2},end:{line:36,column:3}},type:"if",locations:[{start:{line:34,column:2},end:{line:36,column:3}},{start:{line:34,column:2},end:{line:36,column:3}}],line:34},"3":{loc:{start:{line:157,column:4},end:{line:159,column:5}},type:"if",locations:[{start:{line:157,column:4},end:{line:159,column:5}},{start:{line:157,column:4},end:{line:159,column:5}}],line:157}},s:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0},f:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0},b:{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0]},inputSourceMap:{version:3,sources:["stats.js"],names:["MAX_RETRIES","getHTML","platform","region","tag","callback","url","options","uri","encodeURI","encoding","parseHTML","results","$","cheerio","load","isFound","text","Error","parsed","user","portrait","attr","title","permission","endorsementImage","stats","topHeroCategories","quickplay","competitive","Object","keys","forEach","k","topHeroesEls","find","topHeroes","each","i","el","stat","hero","img","push","statCategories","item","els","closest","statsArr","value","replace","toLowerCase","transform","json","username","endorsement","async","auto","apply","err"],mappings:"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",sourceRoot:"C:\\Users\\Alf\\Source\\overwatch-api\\api\\src\\parser\\",sourcesContent:["import async from 'async';\nimport cheerio from 'cheerio';\nimport { retryRequest } from './utils';\n\nconst MAX_RETRIES = 3;\n\n// Get HTML from playoverwatch career page.\nfunction getHTML(platform, region, tag, callback) {\n const url = `https://overwatch.blizzard.com/en-us/career/${tag}/`\n\n const options = {\n uri: encodeURI(url),\n encoding: 'utf8'\n }\n return retryRequest(options, MAX_RETRIES, callback);\n}\n\n// Begin html parsing.\nfunction parseHTML(results, callback) {\n const $ = cheerio.load(results.getHTML);\n\n // Check if profile exists.\n const isFound = $('.heading').text() !== 'Page Not Found';\n if (!isFound) {\n return callback(new Error('Profile not found'));\n }\n\n const parsed = {\n user: $('.Profile-player--name').text(),\n portrait: $('.Profile-player--portrait').attr('src'),\n title: $('.Profile-player---title').text(),\n permission: $('.Profile-private---msg').text(),\n endorsementImage: $('.Profile-playerSummary--endorsement').attr('src'),\n }\n\n const stats = {};\n\n // Top Heroes.\n const topHeroCategories = {\n quickplay: {\n 'played': '0x0860000000000021',\n 'games_won': '0x0860000000000039',\n 'weapon_accuracy': '0x086000000000002F',\n 'eliminations_per_life': '0x08600000000003D2',\n 'multikill_best': '0x0860000000000346',\n 'objective_kills_average': '0x086000000000039C',\n },\n competitive: {\n 'played': '0x0860000000000021',\n 'games_won': '0x0860000000000039',\n 'win_rate': '0x08600000000003D1',\n 'weapon_accuracy': '0x086000000000002F',\n 'eliminations_per_life': '0x08600000000003D2',\n 'multikill_best': '0x0860000000000346',\n 'objective_kills_average': '0x086000000000039C',\n }\n };\n\n // Quickplay.\n stats['top_heroes'] = { quickplay: {} };\n Object.keys(topHeroCategories.quickplay).forEach((k) => {\n const topHeroesEls = $(`.Profile-heroSummary--view.quickPlay-view [data-category-id=\"${topHeroCategories.quickplay[k]}\"]`)\n .find('.Profile-progressBar');\n let topHeroes = [];\n topHeroesEls.each(function(i, el) {\n const stat = {};\n stat.hero = $(this).find('.Profile-progressBar-title').text();\n stat.img = $(this).find('.Profile-progressBar--icon').attr('src');\n stat[k] = $(this).find('.Profile-progressBar-description').text();\n topHeroes.push(stat);\n });\n stats['top_heroes']['quickplay'][k] = topHeroes;\n });\n\n // Competitive.\n stats['top_heroes']['competitive'] = {};\n Object.keys(topHeroCategories.competitive).forEach((k) => {\n const topHeroesEls = $(`.Profile-heroSummary--view.competitive-view [data-category-id=\"${topHeroCategories.competitive[k]}\"]`)\n .find('.Profile-progressBar');\n let topHeroes = [];\n topHeroesEls.each(function(i, el) {\n const stat = {};\n stat.hero = $(this).find('.Profile-progressBar-title').text();\n stat.img = $(this).find('.Profile-progressBar--icon').attr('src');\n stat[k] = $(this).find('.Profile-progressBar-description').text();\n topHeroes.push(stat);\n });\n stats['top_heroes']['competitive'][k] = topHeroes;\n });\n\n //\n // Career Stats\n //\n const statCategories = [\n 'Combat',\n 'Match Awards',\n 'Assists',\n 'Average',\n 'Miscellaneous',\n 'Best',\n 'Game'\n ];\n\n // Quickplay Stats.\n statCategories.forEach(function(item) {\n const els = $(`.stats.quickPlay-view .option-0 .category .content .header p:contains(\"${item}\")`).closest('.content').find('.stat-item');\n let statsArr = [];\n els.each(function(i, el) {\n let stat = {};\n stat.title = $(this).find('.name').text();\n stat.value = $(this).find('.value').text();\n statsArr.push(stat);\n });\n item = item.replace(' ', '_').toLowerCase();\n stats[item] = { quickplay: [] };\n stats[item]['quickplay'] = statsArr;\n });\n\n // Competitive Stats.\n statCategories.forEach(function(item) {\n const els = $(`.stats.competitive-view .option-0 .category .content .header p:contains(\"${item}\")`).closest('.content').find('.stat-item');\n let statsArr = [];\n els.each(function(i, el) {\n let stat = {};\n stat.title = $(this).find('.name').text();\n stat.value = $(this).find('.value').text();\n statsArr.push(stat);\n });\n item = item.replace(' ', '_').toLowerCase();\n stats[item]['competitive'] = [];\n stats[item]['competitive'] = statsArr;\n });\n\n return callback(null, { stats, parsed });\n}\n\n// Transform the data into a json object we can serve.\nfunction transform(results, callback) {\n const { parseHTML } = results;\n const { stats, parsed } = parseHTML;\n\n const json = {\n username: parsed.user,\n portrait: parsed.portrait,\n endorsement: parsed.endorsementImage,\n private: parsed.permission === 'Private Profile',\n stats: stats\n }\n\n return callback(null, json);\n}\n\nexport default function(platform, region, tag, callback) {\n async.auto({\n getHTML: async.apply(getHTML, platform, region, tag),\n parseHTML: ['getHTML', async.apply(parseHTML)],\n transform: ['getHTML', 'parseHTML', async.apply(transform)],\n }, function(err, results) {\n if (err) {\n return callback(err);\n }\n return callback(null, results.transform);\n });\n}"]},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"40221c2c3436663c4a861af3935225adbc644ea5"};var coverage=global[gcv]||(global[gcv]={});if(!coverage[path]||coverage[path].hash!==hash){coverage[path]=coverageData;}var actualCoverage=coverage[path];{// @ts-ignore
cov_1rkhlf6byj=function(){return actualCoverage;};}return actualCoverage;}cov_1rkhlf6byj();cov_1rkhlf6byj().s[0]++;Object.defineProperty(exports,"__esModule",{value:true});cov_1rkhlf6byj().s[1]++;exports["default"]=_default;var _async=(cov_1rkhlf6byj().s[2]++,_interopRequireDefault(require("async")));var _cheerio=(cov_1rkhlf6byj().s[3]++,_interopRequireDefault(require("cheerio")));var _utils=(cov_1rkhlf6byj().s[4]++,require("./utils"));function _interopRequireDefault(obj){cov_1rkhlf6byj().f[0]++;cov_1rkhlf6byj().s[5]++;return(cov_1rkhlf6byj().b[1][0]++,obj)&&(cov_1rkhlf6byj().b[1][1]++,obj.__esModule)?(cov_1rkhlf6byj().b[0][0]++,obj):(cov_1rkhlf6byj().b[0][1]++,{"default":obj});}var MAX_RETRIES=(cov_1rkhlf6byj().s[6]++,3);// Get HTML from playoverwatch career page.
function getHTML(platform,region,tag,callback){cov_1rkhlf6byj().f[1]++;var url=(cov_1rkhlf6byj().s[7]++,"https://overwatch.blizzard.com/en-us/career/".concat(tag,"/"));var options=(cov_1rkhlf6byj().s[8]++,{uri:encodeURI(url),encoding:'utf8'});cov_1rkhlf6byj().s[9]++;return(0,_utils.retryRequest)(options,MAX_RETRIES,callback);}// Begin html parsing.
function parseHTML(results,callback){cov_1rkhlf6byj().f[2]++;var $=(cov_1rkhlf6byj().s[10]++,_cheerio["default"].load(results.getHTML));// Check if profile exists.
var isFound=(cov_1rkhlf6byj().s[11]++,$('.heading').text()!=='Page Not Found');cov_1rkhlf6byj().s[12]++;if(!isFound){cov_1rkhlf6byj().b[2][0]++;cov_1rkhlf6byj().s[13]++;return callback(new Error('Profile not found'));}else{cov_1rkhlf6byj().b[2][1]++;}var parsed=(cov_1rkhlf6byj().s[14]++,{user:$('.Profile-player--name').text(),portrait:$('.Profile-player--portrait').attr('src'),title:$('.Profile-player---title').text(),permission:$('.Profile-private---msg').text(),endorsementImage:$('.Profile-playerSummary--endorsement').attr('src')});var stats=(cov_1rkhlf6byj().s[15]++,{});// Top Heroes.
var topHeroCategories=(cov_1rkhlf6byj().s[16]++,{quickplay:{'played':'0x0860000000000021','games_won':'0x0860000000000039','weapon_accuracy':'0x086000000000002F','eliminations_per_life':'0x08600000000003D2','multikill_best':'0x0860000000000346','objective_kills_average':'0x086000000000039C'},competitive:{'played':'0x0860000000000021','games_won':'0x0860000000000039','win_rate':'0x08600000000003D1','weapon_accuracy':'0x086000000000002F','eliminations_per_life':'0x08600000000003D2','multikill_best':'0x0860000000000346','objective_kills_average':'0x086000000000039C'}});// Quickplay.
cov_1rkhlf6byj().s[17]++;stats['top_heroes']={quickplay:{}};cov_1rkhlf6byj().s[18]++;Object.keys(topHeroCategories.quickplay).forEach(function(k){cov_1rkhlf6byj().f[3]++;var topHeroesEls=(cov_1rkhlf6byj().s[19]++,$(".Profile-heroSummary--view.quickPlay-view [data-category-id=\"".concat(topHeroCategories.quickplay[k],"\"]")).find('.Profile-progressBar'));var topHeroes=(cov_1rkhlf6byj().s[20]++,[]);cov_1rkhlf6byj().s[21]++;topHeroesEls.each(function(i,el){cov_1rkhlf6byj().f[4]++;var stat=(cov_1rkhlf6byj().s[22]++,{});cov_1rkhlf6byj().s[23]++;stat.hero=$(this).find('.Profile-progressBar-title').text();cov_1rkhlf6byj().s[24]++;stat.img=$(this).find('.Profile-progressBar--icon').attr('src');cov_1rkhlf6byj().s[25]++;stat[k]=$(this).find('.Profile-progressBar-description').text();cov_1rkhlf6byj().s[26]++;topHeroes.push(stat);});cov_1rkhlf6byj().s[27]++;stats['top_heroes']['quickplay'][k]=topHeroes;});// Competitive.
cov_1rkhlf6byj().s[28]++;stats['top_heroes']['competitive']={};cov_1rkhlf6byj().s[29]++;Object.keys(topHeroCategories.competitive).forEach(function(k){cov_1rkhlf6byj().f[5]++;var topHeroesEls=(cov_1rkhlf6byj().s[30]++,$(".Profile-heroSummary--view.competitive-view [data-category-id=\"".concat(topHeroCategories.competitive[k],"\"]")).find('.Profile-progressBar'));var topHeroes=(cov_1rkhlf6byj().s[31]++,[]);cov_1rkhlf6byj().s[32]++;topHeroesEls.each(function(i,el){cov_1rkhlf6byj().f[6]++;var stat=(cov_1rkhlf6byj().s[33]++,{});cov_1rkhlf6byj().s[34]++;stat.hero=$(this).find('.Profile-progressBar-title').text();cov_1rkhlf6byj().s[35]++;stat.img=$(this).find('.Profile-progressBar--icon').attr('src');cov_1rkhlf6byj().s[36]++;stat[k]=$(this).find('.Profile-progressBar-description').text();cov_1rkhlf6byj().s[37]++;topHeroes.push(stat);});cov_1rkhlf6byj().s[38]++;stats['top_heroes']['competitive'][k]=topHeroes;});//
// Career Stats
//
var statCategories=(cov_1rkhlf6byj().s[39]++,['Combat','Match Awards','Assists','Average','Miscellaneous','Best','Game']);// Quickplay Stats.
cov_1rkhlf6byj().s[40]++;statCategories.forEach(function(item){cov_1rkhlf6byj().f[7]++;var els=(cov_1rkhlf6byj().s[41]++,$(".stats.quickPlay-view .option-0 .category .content .header p:contains(\"".concat(item,"\")")).closest('.content').find('.stat-item'));var statsArr=(cov_1rkhlf6byj().s[42]++,[]);cov_1rkhlf6byj().s[43]++;els.each(function(i,el){cov_1rkhlf6byj().f[8]++;var stat=(cov_1rkhlf6byj().s[44]++,{});cov_1rkhlf6byj().s[45]++;stat.title=$(this).find('.name').text();cov_1rkhlf6byj().s[46]++;stat.value=$(this).find('.value').text();cov_1rkhlf6byj().s[47]++;statsArr.push(stat);});cov_1rkhlf6byj().s[48]++;item=item.replace(' ','_').toLowerCase();cov_1rkhlf6byj().s[49]++;stats[item]={quickplay:[]};cov_1rkhlf6byj().s[50]++;stats[item]['quickplay']=statsArr;});// Competitive Stats.
cov_1rkhlf6byj().s[51]++;statCategories.forEach(function(item){cov_1rkhlf6byj().f[9]++;var els=(cov_1rkhlf6byj().s[52]++,$(".stats.competitive-view .option-0 .category .content .header p:contains(\"".concat(item,"\")")).closest('.content').find('.stat-item'));var statsArr=(cov_1rkhlf6byj().s[53]++,[]);cov_1rkhlf6byj().s[54]++;els.each(function(i,el){cov_1rkhlf6byj().f[10]++;var stat=(cov_1rkhlf6byj().s[55]++,{});cov_1rkhlf6byj().s[56]++;stat.title=$(this).find('.name').text();cov_1rkhlf6byj().s[57]++;stat.value=$(this).find('.value').text();cov_1rkhlf6byj().s[58]++;statsArr.push(stat);});cov_1rkhlf6byj().s[59]++;item=item.replace(' ','_').toLowerCase();cov_1rkhlf6byj().s[60]++;stats[item]['competitive']=[];cov_1rkhlf6byj().s[61]++;stats[item]['competitive']=statsArr;});cov_1rkhlf6byj().s[62]++;return callback(null,{stats:stats,parsed:parsed});}// Transform the data into a json object we can serve.
function transform(results,callback){cov_1rkhlf6byj().f[11]++;var parseHTML=(cov_1rkhlf6byj().s[63]++,results.parseHTML);var stats=(cov_1rkhlf6byj().s[64]++,parseHTML.stats),parsed=(cov_1rkhlf6byj().s[65]++,parseHTML.parsed);var json=(cov_1rkhlf6byj().s[66]++,{username:parsed.user,portrait:parsed.portrait,endorsement:parsed.endorsementImage,"private":parsed.permission==='Private Profile',stats:stats});cov_1rkhlf6byj().s[67]++;return callback(null,json);}function _default(platform,region,tag,callback){cov_1rkhlf6byj().f[12]++;cov_1rkhlf6byj().s[68]++;_async["default"].auto({getHTML:_async["default"].apply(getHTML,platform,region,tag),parseHTML:['getHTML',_async["default"].apply(parseHTML)],transform:['getHTML','parseHTML',_async["default"].apply(transform)]},function(err,results){cov_1rkhlf6byj().f[13]++;cov_1rkhlf6byj().s[69]++;if(err){cov_1rkhlf6byj().b[3][0]++;cov_1rkhlf6byj().s[70]++;return callback(err);}else{cov_1rkhlf6byj().b[3][1]++;}cov_1rkhlf6byj().s[71]++;return callback(null,results.transform);});}//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0YXRzLmpzIl0sIm5hbWVzIjpbIk1BWF9SRVRSSUVTIiwiZ2V0SFRNTCIsInBsYXRmb3JtIiwicmVnaW9uIiwidGFnIiwiY2FsbGJhY2siLCJ1cmwiLCJvcHRpb25zIiwidXJpIiwiZW5jb2RlVVJJIiwiZW5jb2RpbmciLCJwYXJzZUhUTUwiLCJyZXN1bHRzIiwiJCIsImNoZWVyaW8iLCJsb2FkIiwiaXNGb3VuZCIsInRleHQiLCJFcnJvciIsInBhcnNlZCIsInVzZXIiLCJwb3J0cmFpdCIsImF0dHIiLCJ0aXRsZSIsInBlcm1pc3Npb24iLCJlbmRvcnNlbWVudEltYWdlIiwic3RhdHMiLCJ0b3BIZXJvQ2F0ZWdvcmllcyIsInF1aWNrcGxheSIsImNvbXBldGl0aXZlIiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJrIiwidG9wSGVyb2VzRWxzIiwiZmluZCIsInRvcEhlcm9lcyIsImVhY2giLCJpIiwiZWwiLCJzdGF0IiwiaGVybyIsImltZyIsInB1c2giLCJzdGF0Q2F0ZWdvcmllcyIsIml0ZW0iLCJlbHMiLCJjbG9zZXN0Iiwic3RhdHNBcnIiLCJ2YWx1ZSIsInJlcGxhY2UiLCJ0b0xvd2VyQ2FzZSIsInRyYW5zZm9ybSIsImpzb24iLCJ1c2VybmFtZSIsImVuZG9yc2VtZW50IiwiYXN5bmMiLCJhdXRvIiwiYXBwbHkiLCJlcnIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7OztBQUVBLElBQU1BLFdBQVcsR0FBRyxDQUFwQixDLENBRUE7O0FBQ0EsU0FBU0MsT0FBVCxDQUFpQkMsUUFBakIsRUFBMkJDLE1BQTNCLEVBQW1DQyxHQUFuQyxFQUF3Q0MsUUFBeEMsRUFBa0Q7QUFDaEQsTUFBTUMsR0FBRyx5REFBa0RGLEdBQWxELE1BQVQ7QUFFQSxNQUFNRyxPQUFPLEdBQUc7QUFDZEMsSUFBQUEsR0FBRyxFQUFFQyxTQUFTLENBQUNILEdBQUQsQ0FEQTtBQUVkSSxJQUFBQSxRQUFRLEVBQUU7QUFGSSxHQUFoQjtBQUlBLFNB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cmNlUm9vdCI6IkM6XFxVc2Vyc1xcQWxmXFxTb3VyY2VcXG92ZXJ3YXRjaC1hcGlcXGFwaVxcc3JjXFxwYXJzZXJcXCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3luYyBmcm9tICdhc3luYyc7XG5pbXBvcnQgY2hlZXJpbyBmcm9tICdjaGVlcmlvJztcbmltcG9ydCB7IHJldHJ5UmVxdWVzdCB9IGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCBNQVhfUkVUUklFUyA9IDM7XG5cbi8vIEdldCBIVE1MIGZyb20gcGxheW92ZXJ3YXRjaCBjYXJlZXIgcGFnZS5cbmZ1bmN0aW9uIGdldEhUTUwocGxhdGZvcm0sIHJlZ2lvbiwgdGFnLCBjYWxsYmFjaykge1xuICBjb25zdCB1cmwgPSBgaHR0cHM6Ly9vdmVyd2F0Y2guYmxpenphcmQuY29tL2VuLXVzL2NhcmVlci8ke3RhZ30vYFxuXG4gIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgdXJpOiBlbmNvZGVVUkkodXJsKSxcbiAgICBlbmNvZGluZzogJ3V0ZjgnXG4gIH1cbiAgcmV0dXJuIHJldHJ5UmVxdWVzdChvcHRpb25zLCBNQVhfUkVUUklFUywgY2FsbGJhY2spO1xufVxuXG4vLyBCZWdpbiBodG1sIHBhcnNpbmcuXG5mdW5jdGlvbiBwYXJzZUhUTUwocmVzdWx0cywgY2FsbGJhY2spIHtcbiAgY29uc3QgJCA9IGNoZWVyaW8ubG9hZChyZXN1bHRzLmdldEhUTUwpO1xuXG4gIC8vIENoZWNrIGlmIHByb2ZpbGUgZXhpc3RzLlxuICBjb25zdCBpc0ZvdW5kID0gJCgnLmhlYWRpbmcnKS50ZXh0KCkgIT09ICdQYWdlIE5vdCBGb3VuZCc7XG4gIGlmICghaXNGb3VuZCkge1xuICAgIHJldHVybiBjYWxsYmFjayhuZXcgRXJyb3IoJ1Byb2ZpbGUgbm90IGZvdW5kJykpO1xuICB9XG5cbiAgY29uc3QgcGFyc2VkID0ge1xuICAgIHVzZXI6ICQoJy5Qcm9maWxlLXBsYXllci0tbmFtZScpLnRleHQoKSxcbiAgICBwb3J0cmFpdDogJCgnLlByb2ZpbGUtcGxheWVyLS1wb3J0cmFpdCcpLmF0dHIoJ3NyYycpLFxuICAgIHRpdGxlOiAkKCcuUHJvZmlsZS1wbGF5ZXItLS10aXRsZScpLnRleHQoKSxcbiAgICBwZXJtaXNzaW9uOiAkKCcuUHJvZmlsZS1wcml2YXRlLS0tbXNnJykudGV4dCgpLFxuICAgIGVuZG9yc2VtZW50SW1hZ2U6ICQoJy5Qcm9maWxlLXBsYXllclN1bW1hcnktLWVuZG9yc2VtZW50JykuYXR0cignc3JjJyksXG4gIH1cblxuICBjb25zdCBzdGF0cyA9IHt9O1xuXG4gIC8vIFRvcCBIZXJvZXMuXG4gIGNvbnN0IHRvcEhlcm9DYXRlZ29yaWVzID0ge1xuICAgIHF1aWNrcGxheToge1xuICAgICAgJ3BsYXllZCc6ICcweDA4NjAwMDAwMDAwMDAwMjEnLFxuICAgICAgJ2dhbWVzX3dvbic6ICcweDA4NjAwMDAwMDAwMDAwMzknLFxuICAgICAgJ3dlYXBvbl9hY2N1cmFjeSc6ICcweDA4NjAwMDAwMDAwMDAwMkYnLFxuICAgICAgJ2VsaW1pbmF0aW9uc19wZXJfbGlmZSc6ICcweDA4NjAwMDAwMDAwMDAzRDInLFxuICAgICAgJ211bHRpa2lsbF9iZXN0JzogJzB4MDg2MDAwMDAwMDAwMDM0NicsXG4gICAgICAnb2JqZWN0aXZlX2tpbGxzX2F2ZXJhZ2UnOiAnMHgwODYwMDAwMDAwMDAwMzlDJyxcbiAgICB9LFxuICAgIGNvbXBldGl0aXZlOiB7XG4gICAgICAncGxheWVkJzogJzB4MDg2MDAwMDAwMDAwMDAyMScsXG4gICAgICAnZ2FtZXNfd29uJzogJzB4MDg2MDAwMDAwMDAwMDAzOScsXG4gICAgICAnd2luX3JhdGUnOiAnMHgwODYwMDAwMDAwMDAwM0QxJyxcbiAgICAgICd3ZWFwb25fYWNjdXJhY3knOiAnMHgwODYwMDAwMDAwMDAwMDJGJyxcbiAgICAgICdlbGltaW5hdGlvbnNfcGVyX2xpZmUnOiAnMHgwODYwMDAwMDAwMDAwM0QyJyxcbiAgICAgICdtdWx0aWtpbGxfYmVzdCc6ICcweDA4NjAwMDAwMDAwMDAzNDYnLFxuICAgICAgJ29iamVjdGl2ZV9raWxsc19hdmVyYWdlJzogJzB4MDg2MDAwMDAwMDAwMDM5QycsXG4gICAgfVxuICB9O1xuXG4gIC8vIFF1aWNrcGxheS5cbiAgc3RhdHNbJ3RvcF9oZXJvZXMnXSA9IHsgcXVpY2twbGF5OiB7fSB9O1xuICBPYmplY3Qua2V5cyh0b3BIZXJvQ2F0ZWdvcmllcy5xdWlja3BsYXkpLmZvckVhY2goKGspID0+IHtcbiAgICBjb25zdCB0b3BIZXJvZXNFbHMgPSAkKGAuUHJvZmlsZS1oZXJvU3VtbWFyeS0tdmlldy5xdWlja1BsYXktdmlldyBbZGF0YS1jYXRlZ29yeS1pZD1cIiR7dG9wSGVyb0NhdGVnb3JpZXMucXVpY2twbGF5W2tdfVwiXWApXG4gICAgICAuZmluZCgnLlByb2ZpbGUtcHJvZ3Jlc3NCYXInKTtcbiAgICBsZXQgdG9wSGVyb2VzID0gW107XG4gICAgdG9wSGVyb2VzRWxzLmVhY2goZnVuY3Rpb24oaSwgZWwpIHtcbiAgICAgIGNvbnN0IHN0YXQgPSB7fTtcbiAgICAgIHN0YXQuaGVybyA9ICQodGhpcykuZmluZCgnLlByb2ZpbGUtcHJvZ3Jlc3NCYXItdGl0bGUnKS50ZXh0KCk7XG4gICAgICBzdGF0LmltZyA9ICQodGhpcykuZmluZCgnLlByb2ZpbGUtcHJvZ3Jlc3NCYXItLWljb24nKS5hdHRyKCdzcmMnKTtcbiAgICAgIHN0YXRba10gPSAkKHRoaXMpLmZpbmQoJy5Qcm9maWxlLXByb2dyZXNzQmFyLWRlc2NyaXB0aW9uJykudGV4dCgpO1xuICAgICAgdG9wSGVyb2VzLnB1c2goc3RhdCk7XG4gICAgfSk7XG4gICAgc3RhdHNbJ3RvcF9oZXJvZXMnXVsncXVpY2twbGF5J11ba10gPSB0b3BIZXJvZXM7XG4gIH0pO1xuXG4gIC8vIENvbXBldGl0aXZlLlxuICBzdGF0c1sndG9wX2hlcm9lcyddWydjb21wZXRpdGl2ZSddID0ge307XG4gIE9iamVjdC5rZXlzKHRvcEhlcm9DYXRlZ29yaWVzLmNvbXBldGl0aXZlKS5mb3JFYWNoKChrKSA9PiB7XG4gICAgY29uc3QgdG9wSGVyb2VzRWxzID0gJChgLlByb2ZpbGUtaGVyb1N1bW1hcnktLXZpZXcuY29tcGV0aXRpdmUtdmlldyBbZGF0YS1jYXRlZ29yeS1pZD1cIiR7dG9wSGVyb0NhdGVnb3JpZXMuY29tcGV0aXRpdmVba119XCJdYClcbiAgICAgIC5maW5kKCcuUHJvZmlsZS1wcm9ncmVzc0JhcicpO1xuICAgIGxldCB0b3BIZXJvZXMgPSBbXTtcbiAgICB0b3BIZXJvZXNFbHMuZWFjaChmdW5jdGlvbihpLCBlbCkge1xuICAgICAgY29uc3Qgc3RhdCA9IHt9O1xuICAgICAgc3RhdC5oZXJvID0gJCh0aGlzKS5maW5kKCcuUHJvZmlsZS1wcm9ncmVzc0Jhci10aXRsZScpLnRleHQoKTtcbiAgICAgIHN0YXQuaW1nID0gJCh0aGlzKS5maW5kKCcuUHJvZmlsZS1wcm9ncmVzc0Jhci0taWNvbicpLmF0dHIoJ3NyYycpO1xuICAgICAgc3RhdFtrXSA9ICQodGhpcykuZmluZCgnLlByb2ZpbGUtcHJvZ3Jlc3NCYXItZGVzY3JpcHRpb24nKS50ZXh0KCk7XG4gICAgICB0b3BIZXJvZXMucHVzaChzdGF0KTtcbiAgICB9KTtcbiAgICBzdGF0c1sndG9wX2hlcm9lcyddWydjb21wZXRpdGl2ZSddW2tdID0gdG9wSGVyb2VzO1xuICB9KTtcblxuICAvL1xuICAvLyBDYXJlZXIgU3RhdHNcbiAgLy9cbiAgY29uc3Qgc3RhdENhdGVnb3JpZXMgPSBbXG4gICAgJ0NvbWJhdCcsXG4gICAgJ01hdGNoIEF3YXJkcycsXG4gICAgJ0Fzc2lzdHMnLFxuICAgICdBdmVyYWdlJyxcbiAgICAnTWlzY2VsbGFuZW91cycsXG4gICAgJ0Jlc3QnLFxuICAgICdHYW1lJ1xuICBdO1xuXG4gIC8vIFF1aWNrcGxheSBTdGF0cy5cbiAgc3RhdENhdGVnb3JpZXMuZm9yRWFjaChmdW5jdGlvbihpdGVtKSB7XG4gICAgY29uc3QgZWxzID0gJChgLnN0YXRzLnF1aWNrUGxheS12aWV3IC5vcHRpb24tMCAuY2F0ZWdvcnkgLmNvbnRlbnQgLmhlYWRlciBwOmNvbnRhaW5zKFwiJHtpdGVtfVwiKWApLmNsb3Nlc3QoJy5jb250ZW50JykuZmluZCgnLnN0YXQtaXRlbScpO1xuICAgIGxldCBzdGF0c0FyciA9IFtdO1xuICAgIGVscy5lYWNoKGZ1bmN0aW9uKGksIGVsKSB7XG4gICAgICBsZXQgc3RhdCA9IHt9O1xuICAgICAgc3RhdC50aXRsZSA9ICQodGhpcykuZmluZCgnLm5hbWUnKS50ZXh0KCk7XG4gICAgICBzdGF0LnZhbHVlID0gJCh0aGlzKS5maW5kKCcudmFsdWUnKS50ZXh0KCk7XG4gICAgICBzdGF0c0Fyci5wdXNoKHN0YXQpO1xuICAgIH0pO1xuICAgIGl0ZW0gPSBpdGVtLnJlcGxhY2UoJyAnLCAnXycpLnRvTG93ZXJDYXNlKCk7XG4gICAgc3RhdHNbaXRlbV0gPSB7IHF1aWNrcGxheTogW10gfTtcbiAgICBzdGF0c1tpdGVtXVsncXVpY2twbGF5J10gPSBzdGF0c0FycjtcbiAgfSk7XG5cbiAgLy8gQ29tcGV0aXRpdmUgU3RhdHMuXG4gIHN0YXRDYXRlZ29yaWVzLmZvckVhY2goZnVuY3Rpb24oaXRlbSkge1xuICAgIGNvbnN0IGVscyA9ICQoYC5zdGF0cy5jb21wZXRpdGl2ZS12aWV3IC5vcHRpb24tMCAuY2F0ZWdvcnkgLmNvbnRlbnQgLmhlYWRlciBwOmNvbnRhaW5zKFwiJHtpdGVtfVwiKWApLmNsb3Nlc3QoJy5jb250ZW50JykuZmluZCgnLnN0YXQtaXRlbScpO1xuICAgIGxldCBzdGF0c0FyciA9IFtdO1xuICAgIGVscy5lYWNoKGZ1bmN0aW9uKGksIGVsKSB7XG4gICAgICBsZXQgc3RhdCA9IHt9O1xuICAgICAgc3RhdC50aXRsZSA9ICQodGhpcykuZmluZCgnLm5hbWUnKS50ZXh0KCk7XG4gICAgICBzdGF0LnZhbHVlID0gJCh0aGlzKS5maW5kKCcudmFsdWUnKS50ZXh0KCk7XG4gICAgICBzdGF0c0Fyci5wdXNoKHN0YXQpO1xuICAgIH0pO1xuICAgIGl0ZW0gPSBpdGVtLnJlcGxhY2UoJyAnLCAnXycpLnRvTG93ZXJDYXNlKCk7XG4gICAgc3RhdHNbaXRlbV1bJ2NvbXBldGl0aXZlJ10gPSBbXTtcbiAgICBzdGF0c1tpdGVtXVsnY29tcGV0aXRpdmUnXSA9IHN0YXRzQXJyO1xuICB9KTtcblxuICByZXR1cm4gY2FsbGJhY2sobnVsbCwgeyBzdGF0cywgcGFyc2VkIH0pO1xufVxuXG4vLyBUcmFuc2Zvcm0gdGhlIGRhdGEgaW50byBhIGpzb24gb2JqZWN0IHdlIGNhbiBzZXJ2ZS5cbmZ1bmN0aW9uIHRyYW5zZm9ybShyZXN1bHRzLCBjYWxsYmFjaykge1xuICBjb25zdCB7IHBhcnNlSFRNTCB9ID0gcmVzdWx0cztcbiAgY29uc3QgeyBzdGF0cywgcGFyc2VkIH0gPSBwYXJzZUhUTUw7XG5cbiAgY29uc3QganNvbiA9IHtcbiAgICB1c2VybmFtZTogcGFyc2VkLnVzZXIsXG4gICAgcG9ydHJhaXQ6IHBhcnNlZC5wb3J0cmFpdCxcbiAgICBlbmRvcnNlbWVudDogcGFyc2VkLmVuZG9yc2VtZW50SW1hZ2UsXG4gICAgcHJpdmF0ZTogcGFyc2VkLnBlcm1pc3Npb24gPT09ICdQcml2YXRlIFByb2ZpbGUnLFxuICAgIHN0YXRzOiBzdGF0c1xuICB9XG5cbiAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIGpzb24pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihwbGF0Zm9ybSwgcmVnaW9uLCB0YWcsIGNhbGxiYWNrKSB7XG4gIGFzeW5jLmF1dG8oe1xuICAgIGdldEhUTUw6IGFzeW5jLmFwcGx5KGdldEhUTUwsIHBsYXRmb3JtLCByZWdpb24sIHRhZyksXG4gICAgcGFyc2VIVE1MOiBbJ2dldEhUTUwnLCBhc3luYy5hcHBseShwYXJzZUhUTUwpXSxcbiAgICB0cmFuc2Zvcm06IFsnZ2V0SFRNTCcsICdwYXJzZUhUTUwnLCBhc3luYy5hcHBseSh0cmFuc2Zvcm0pXSxcbiAgfSwgZnVuY3Rpb24oZXJyLCByZXN1bHRzKSB7XG4gICAgaWYgKGVycikge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgfVxuICAgIHJldHVybiBjYWxsYmFjayhudWxsLCByZXN1bHRzLnRyYW5zZm9ybSk7XG4gIH0pO1xufSJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0YXRzLmpzIl0sIm5hbWVzIjpbIk1BWF9SRVRSSUVTIiwidXJsIiwib3B0aW9ucyIsInVyaSIsImVuY29kZVVSSSIsImVuY29kaW5nIiwiJCIsImNoZWVyaW8iLCJyZXN1bHRzIiwiaXNGb3VuZCIsImNhbGxiYWNrIiwicGFyc2VkIiwidXNlciIsInBvcnRyYWl0IiwidGl0bGUiLCJwZXJtaXNzaW9uIiwiZW5kb3JzZW1lbnRJbWFnZSIsInN0YXRzIiwidG9wSGVyb0NhdGVnb3JpZXMiLCJxdWlja3BsYXkiLCJjb21wZXRpdGl2ZSIsIk9iamVjdCIsInRvcEhlcm9lc0VscyIsInRvcEhlcm9lcyIsInN0YXQiLCJzdGF0Q2F0ZWdvcmllcyIsImVscyIsInN0YXRzQXJyIiwiaXRlbSIsInBhcnNlSFRNTCIsImpzb24iLCJ1c2VybmFtZSIsImVuZG9yc2VtZW50IiwiYXN5bmMiLCJnZXRIVE1MIiwidHJhbnNmb3JtIl0sIm1hcHBpbmdzIjoiMmduQkFJTUE7Z09BSk4sR0FBQSxDQUFBLE1BQUEsMEJBQUEsc0JBQUEsQ0FBQSxPQUFBLENBQUEsT0FBQSxDQUFBLENBQUEsQ0FBQSxDQUNBLEdBQUEsQ0FBQSxRQUFBLDBCQUFBLHNCQUFBLENBQUEsT0FBQSxDQUFBLFNBQUEsQ0FBQSxDQUFBLENBQUEsQ0FDQSxHQUFBLENBQUEsTUFBQSwwQkFBQSxPQUFBLENBQUEsU0FBQSxDQUFBLENBQUEsQyx3UEFFQSxHQUFNQSxDQUFBQSxXQUFXLDBCQUFqQixDQUFpQixDQUFqQixDQUVBO0FBQ0EsUUFBQSxDQUFBLE9BQUEsQ0FBQSxRQUFBLENBQUEsTUFBQSxDQUFBLEdBQUEsQ0FBQSxRQUFBLENBQWtELHlCQUNoRCxHQUFNQyxDQUFBQSxHQUFHLDBCQUFBLCtDQUFBLE1BQUEsQ0FBQSxHQUFBLENBQVQsR0FBUyxDQUFBLENBQVQsQ0FFQSxHQUFNQyxDQUFBQSxPQUFPLDBCQUFHLENBQ2RDLEdBQUcsQ0FBRUMsU0FBUyxDQURBLEdBQ0EsQ0FEQSxDQUVkQyxRQUFRLENB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QSxNQUFBLENBQUEsR0FBQSxDQUFBLFFBQUEsQ0FBMEMsbURBQ3ZEdUIsTUFBQUEsQ0FBQUEsU0FBQUEsQ0FBQUEsQ0FBQUEsSUFBQUEsQ0FBVyxDQUNUQyxPQUFPLENBQUVELE1BQUFBLENBQUFBLFNBQUFBLENBQUFBLENBQUFBLEtBQUFBLENBQUFBLE9BQUFBLENBQUFBLFFBQUFBLENBQUFBLE1BQUFBLENBREEsR0FDQUEsQ0FEQSxDQUVUSixTQUFTLENBQUUsQ0FBQSxTQUFBLENBQVlJLE1BQUFBLENBQUFBLFNBQUFBLENBQUFBLENBQUFBLEtBQUFBLENBRmQsU0FFY0EsQ0FBWixDQUZGLENBR1RFLFNBQVMsQ0FBRSxDQUFBLFNBQUEsQ0FBQSxXQUFBLENBQXlCRixNQUFBQSxDQUFBQSxTQUFBQSxDQUFBQSxDQUFBQSxLQUFBQSxDQUF6QixTQUF5QkEsQ0FBekIsQ0FIRixDQUFYQSxDQUlHLFNBQUEsR0FBQSxDQUFBLE9BQUEsQ0FBdUIsbURBQ3hCLEdBQUEsR0FBQSxDQUFTLHFEQUNQLE1BQU92QixDQUFBQSxRQUFRLENBQWYsR0FBZSxDQUFmLENBQ0QsQ0FGRCxpQ0FEd0IseUJBSXhCLE1BQU9BLENBQUFBLFFBQVEsQ0FBQSxJQUFBLENBQU9GLE9BQU8sQ0FBN0IsU0FBZSxDQUFmLENBUkZ5QixDQUFBQSxFQVVELEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXN5bmMgZnJvbSAnYXN5bmMnO1xuaW1wb3J0IGNoZWVyaW8gZnJvbSAnY2hlZXJpbyc7XG5pbXBvcnQgeyByZXRyeVJlcXVlc3QgfSBmcm9tICcuL3V0aWxzJztcblxuY29uc3QgTUFYX1JFVFJJRVMgPSAzO1xuXG4vLyBHZXQgSFRNTCBmcm9tIHBsYXlvdmVyd2F0Y2ggY2FyZWVyIHBhZ2UuXG5mdW5jdGlvbiBnZXRIVE1MKHBsYXRmb3JtLCByZWdpb24sIHRhZywgY2FsbGJhY2spIHtcbiAgY29uc3QgdXJsID0gYGh0dHBzOi8vb3ZlcndhdGNoLmJsaXp6YXJkLmNvbS9lbi11cy9jYXJlZXIvJHt0YWd9L2BcblxuICBjb25zdCBvcHRpb25zID0ge1xuICAgIHVyaTogZW5jb2RlVVJJKHVybCksXG4gICAgZW5jb2Rpbmc6ICd1dGY4J1xuICB9XG4gIHJldHVybiByZXRyeVJlcXVlc3Qob3B0aW9ucywgTUFYX1JFVFJJRVMsIGNhbGxiYWNrKTtcbn1cblxuLy8gQmVnaW4gaHRtbCBwYXJzaW5nLlxuZnVuY3Rpb24gcGFyc2VIVE1MKHJlc3VsdHMsIGNhbGxiYWNrKSB7XG4gIGNvbnN0ICQgPSBjaGVlcmlvLmxvYWQocmVzdWx0cy5nZXRIVE1MKTtcblxuICAvLyBDaGVjayBpZiBwcm9maWxlIGV4aXN0cy5cbiAgY29uc3QgaXNGb3VuZCA9ICQoJy5oZWFkaW5nJykudGV4dCgpICE9PSAnUGFnZSBOb3QgRm91bmQnO1xuICBpZiAoIWlzRm91bmQpIHtcbiAgICByZXR1cm4gY2FsbGJhY2sobmV3IEVycm9yKCdQcm9maWxlIG5vdCBmb3VuZCcpKTtcbiAgfVxuXG4gIGNvbnN0IHBhcnNlZCA9IHtcbiAgICB1c2VyOiAkKCcuUHJvZmlsZS1wbGF5ZXItLW5hbWUnKS50ZXh0KCksXG4gICAgcG9ydHJhaXQ6ICQoJy5Qcm9maWxlLXBsYXllci0tcG9ydHJhaXQnKS5hdHRyKCdzcmMnKSxcbiAgICB0aXRsZTogJCgnLlByb2ZpbGUtcGxheWVyLS0tdGl0bGUnKS50ZXh0KCksXG4gICAgcGVybWlzc2lvbjogJCgnLlByb2ZpbGUtcHJpdmF0ZS0tLW1zZycpLnRleHQoKSxcbiAgICBlbmRvcnNlbWVudEltYWdlOiAkKCcuUHJvZmlsZS1wbGF5ZXJTdW1tYXJ5LS1lbmRvcnNlbWVudCcpLmF0dHIoJ3NyYycpLFxuICB9XG5cbiAgY29uc3Qgc3RhdHMgPSB7fTtcblxuICAvLyBUb3AgSGVyb2VzLlxuICBjb25zdCB0b3BIZXJvQ2F0ZWdvcmllcyA9IHtcbiAgICBxdWlja3BsYXk6IHtcbiAgICAgICdwbGF5ZWQnOiAnMHgwODYwMDAwMDAwMDAwMDIxJyxcbiAgICAgICdnYW1lc193b24nOiAnMHgwODYwMDAwMDAwMDAwMDM5JyxcbiAgICAgICd3ZWFwb25fYWNjdXJhY3knOiAnMHgwODYwMDAwMDAwMDAwMDJGJyxcbiAgICAgICdlbGltaW5hdGlvbnNfcGVyX2xpZmUnOiAnMHgwODYwMDAwMDAwMDAwM0QyJyxcbiAgICAgICdtdWx0aWtpbGxfYmVzdCc6ICcweDA4NjAwMDAwMDAwMDAzNDYnLFxuICAgICAgJ29iamVjdGl2ZV9raWxsc19hdmVyYWdlJzogJzB4MDg2MDAwMDAwMDAwMDM5QycsXG4gICAgfSxcbiAgICBjb21wZXRpdGl2ZToge1xuICAgICAgJ3BsYXllZCc6ICcweDA4NjAwMDAwMDAwMDAwMjEnLFxuICAgICAgJ2dhbWVzX3dvbic6ICcweDA4NjAwMDAwMDAwMDAwMzknLFxuICAgICAgJ3dpbl9yYXRlJzogJzB4MDg2MDAwMDAwMDAwMDNEMScsXG4gICAgICAnd2VhcG9uX2FjY3VyYWN5JzogJzB4MDg2MDAwMDAwMDAwMDAyRicsXG4gICAgICAnZWxpbWluYXRpb25zX3Blcl9saWZlJzogJzB4MDg2MDAwMDAwMDAwMDNEMicsXG4gICAgICAnbXVsdGlraWxsX2Jlc3QnOiAnMHgwODYwMDAwMDAwMDAwMzQ2JyxcbiAgICAgICdvYmplY3RpdmVfa2lsbHNfYXZlcmFnZSc6ICcweDA4NjAwMDAwMDAwMDAzOUMnLFxuICAgIH1cbiAgfTtcblxuICAvLyBRdWlja3BsYXkuXG4gIHN0YXRzWyd0b3BfaGVyb2VzJ10gPSB7IHF1aWNrcGxheToge30gfTtcbiAgT2JqZWN0LmtleXModG9wSGVyb0NhdGVnb3JpZXMucXVpY2twbGF5KS5mb3JFYWNoKChrKSA9PiB7XG4gICAgY29uc3QgdG9wSGVyb2VzRWxzID0gJChgLlByb2ZpbGUtaGVyb1N1bW1hcnktLXZpZXcucXVpY2tQbGF5LXZpZXcgW2RhdGEtY2F0ZWdvcnktaWQ9XCIke3RvcEhlcm9DYXRlZ29yaWVzLnF1aWNrcGxheVtrXX1cIl1gKVxuICAgICAgLmZpbmQoJy5Qcm9maWxlLXByb2dyZXNzQmFyJyk7XG4gICAgbGV0IHRvcEhlcm9lcyA9IFtdO1xuICAgIHRvcEhlcm9lc0Vscy5lYWNoKGZ1bmN0aW9uKGksIGVsKSB7XG4gICAgICBjb25zdCBzdGF0ID0ge307XG4gICAgICBzdGF0Lmhlcm8gPSAkKHRoaXMpLmZpbmQoJy5Qcm9maWxlLXByb2dyZXNzQmFyLXRpdGxlJykudGV4dCgpO1xuICAgICAgc3RhdC5pbWcgPSAkKHRoaXMpLmZpbmQoJy5Qcm9maWxlLXByb2dyZXNzQmFyLS1pY29uJykuYXR0cignc3JjJyk7XG4gICAgICBzdGF0W2tdID0gJCh0aGlzKS5maW5kKCcuUHJvZmlsZS1wcm9ncmVzc0Jhci1kZXNjcmlwdGlvbicpLnRleHQoKTtcbiAgICAgIHRvcEhlcm9lcy5wdXNoKHN0YXQpO1xuICAgIH0pO1xuICAgIHN0YXRzWyd0b3BfaGVyb2VzJ11bJ3F1aWNrcGxheSddW2tdID0gdG9wSGVyb2VzO1xuICB9KTtcblxuICAvLyBDb21wZXRpdGl2ZS5cbiAgc3RhdHNbJ3RvcF9oZXJvZXMnXVsnY29tcGV0aXRpdmUnXSA9IHt9O1xuICBPYmplY3Qua2V5cyh0b3BIZXJvQ2F0ZWdvcmllcy5jb21wZXRpdGl2ZSkuZm9yRWFjaCgoaykgPT4ge1xuICAgIGNvbnN0IHRvcEhlcm9lc0VscyA9ICQoYC5Qcm9maWxlLWhlcm9TdW1tYXJ5LS12aWV3LmNvbXBldGl0aXZlLXZpZXcgW2RhdGEtY2F0ZWdvcnktaWQ9XCIke3RvcEhlcm9DYXRlZ29yaWVzLmNvbXBldGl0aXZlW2tdfVwiXWApXG4gICAgICAuZmluZCgnLlByb2ZpbGUtcHJvZ3Jlc3NCYXInKTtcbiAgICBsZXQgdG9wSGVyb2VzID0gW107XG4gICAgdG9wSGVyb2VzRWxzLmVhY2goZnVuY3Rpb24oaSwgZWwpIHtcbiAgICAgIGNvbnN0IHN0YXQgPSB7fTtcbiAgICAgIHN0YXQuaGVybyA9ICQodGhpcykuZmluZCgnLlByb2ZpbGUtcHJvZ3Jlc3NCYXItdGl0bGUnKS50ZXh0KCk7XG4gICAgICBzdGF0LmltZyA9ICQodGhpcykuZmluZCgnLlByb2ZpbGUtcHJvZ3Jlc3NCYXItLWljb24nKS5hdHRyKCdzcmMnKTtcbiAgICAgIHN0YXRba10gPSAkKHRoaXMpLmZpbmQoJy5Qcm9maWxlLXByb2dyZXNzQmFyLWRlc2NyaXB0aW9uJykudGV4dCgpO1xuICAgICAgdG9wSGVyb2VzLnB1c2goc3RhdCk7XG4gICAgfSk7XG4gICAgc3RhdHNbJ3RvcF9oZXJvZXMnXVsnY29tcGV0aXRpdmUnXVtrXSA9IHRvcEhlcm9lcztcbiAgfSk7XG5cbiAgLy9cbiAgLy8gQ2FyZWVyIFN0YXRzXG4gIC8vXG4gIGNvbnN0IHN0YXRDYXRlZ29yaWVzID0gW1xuICAgICdDb21iYXQnLFxuICAgICdNYXRjaCBBd2FyZHMnLFxuICAgICdBc3Npc3RzJyxcbiAgICAnQXZlcmFnZScsXG4gICAgJ01pc2NlbGxhbmVvdXMnLFxuICAgICdCZXN0JyxcbiAgICAnR2FtZSdcbiAgXTtcblxuICAvLyBRdWlja3BsYXkgU3RhdHMuXG4gIHN0YXRDYXRlZ29yaWVzLmZvckVhY2goZnVuY3Rpb24oaXRlbSkge1xuICAgIGNvbnN0IGVscyA9ICQoYC5zdGF0cy5xdWlja1BsYXktdmlldyAub3B0aW9uLTAgLmNhdGVnb3J5IC5jb250ZW50IC5oZWFkZXIgcDpjb250YWlucyhcIiR7aXRlbX1cIilgKS5jbG9zZXN0KCcuY29udGVudCcpLmZpbmQoJy5zdGF0LWl0ZW0nKTtcbiAgICBsZXQgc3RhdHNBcnIgPSBbXTtcbiAgICBlbHMuZWFjaChmdW5jdGlvbihpLCBlbCkge1xuICAgICAgbGV0IHN0YXQgPSB7fTtcbiAgICAgIHN0YXQudGl0bGUgPSAkKHRoaXMpLmZpbmQoJy5uYW1lJykudGV4dCgpO1xuICAgICAgc3RhdC52YWx1ZSA9ICQodGhpcykuZmluZCgnLnZhbHVlJykudGV4dCgpO1xuICAgICAgc3RhdHNBcnIucHVzaChzdGF0KTtcbiAgICB9KTtcbiAgICBpdGVtID0gaXRlbS5yZXBsYWNlKCcgJywgJ18nKS50b0xvd2VyQ2FzZSgpO1xuICAgIHN0YXRzW2l0ZW1dID0geyBxdWlja3BsYXk6IFtdIH07XG4gICAgc3RhdHNbaXRlbV1bJ3F1aWNrcGxheSddID0gc3RhdHNBcnI7XG4gIH0pO1xuXG4gIC8vIENvbXBldGl0aXZlIFN0YXRzLlxuICBzdGF0Q2F0ZWdvcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICBjb25zdCBlbHMgPSAkKGAuc3RhdHMuY29tcGV0aXRpdmUtdmlldyAub3B0aW9uLTAgLmNhdGVnb3J5IC5jb250ZW50IC5oZWFkZXIgcDpjb250YWlucyhcIiR7aXRlbX1cIilgKS5jbG9zZXN0KCcuY29udGVudCcpLmZpbmQoJy5zdGF0LWl0ZW0nKTtcbiAgICBsZXQgc3RhdHNBcnIgPSBbXTtcbiAgICBlbHMuZWFjaChmdW5jdGlvbihpLCBlbCkge1xuICAgICAgbGV0IHN0YXQgPSB7fTtcbiAgICAgIHN0YXQudGl0bGUgPSAkKHRoaXMpLmZpbmQoJy5uYW1lJykudGV4dCgpO1xuICAgICAgc3RhdC52YWx1ZSA9ICQodGhpcykuZmluZCgnLnZhbHVlJykudGV4dCgpO1xuICAgICAgc3RhdHNBcnIucHVzaChzdGF0KTtcbiAgICB9KTtcbiAgICBpdGVtID0gaXRlbS5yZXBsYWNlKCcgJywgJ18nKS50b0xvd2VyQ2FzZSgpO1xuICAgIHN0YXRzW2l0ZW1dWydjb21wZXRpdGl2ZSddID0gW107XG4gICAgc3RhdHNbaXRlbV1bJ2NvbXBldGl0aXZlJ10gPSBzdGF0c0FycjtcbiAgfSk7XG5cbiAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIHsgc3RhdHMsIHBhcnNlZCB9KTtcbn1cblxuLy8gVHJhbnNmb3JtIHRoZSBkYXRhIGludG8gYSBqc29uIG9iamVjdCB3ZSBjYW4gc2VydmUuXG5mdW5jdGlvbiB0cmFuc2Zvcm0ocmVzdWx0cywgY2FsbGJhY2spIHtcbiAgY29uc3QgeyBwYXJzZUhUTUwgfSA9IHJlc3VsdHM7XG4gIGNvbnN0IHsgc3RhdHMsIHBhcnNlZCB9ID0gcGFyc2VIVE1MO1xuXG4gIGNvbnN0IGpzb24gPSB7XG4gICAgdXNlcm5hbWU6IHBhcnNlZC51c2VyLFxuICAgIHBvcnRyYWl0OiBwYXJzZWQucG9ydHJhaXQsXG4gICAgZW5kb3JzZW1lbnQ6IHBhcnNlZC5lbmRvcnNlbWVudEltYWdlLFxuICAgIHByaXZhdGU6IHBhcnNlZC5wZXJtaXNzaW9uID09PSAnUHJpdmF0ZSBQcm9maWxlJyxcbiAgICBzdGF0czogc3RhdHNcbiAgfVxuXG4gIHJldHVybiBjYWxsYmFjayhudWxsLCBqc29uKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24ocGxhdGZvcm0sIHJlZ2lvbiwgdGFnLCBjYWxsYmFjaykge1xuICBhc3luYy5hdXRvKHtcbiAgICBnZXRIVE1MOiBhc3luYy5hcHBseShnZXRIVE1MLCBwbGF0Zm9ybSwgcmVnaW9uLCB0YWcpLFxuICAgIHBhcnNlSFRNTDogWydnZXRIVE1MJywgYXN5bmMuYXBwbHkocGFyc2VIVE1MKV0sXG4gICAgdHJhbnNmb3JtOiBbJ2dldEhUTUwnLCAncGFyc2VIVE1MJywgYXN5bmMuYXBwbHkodHJhbnNmb3JtKV0sXG4gIH0sIGZ1bmN0aW9uKGVyciwgcmVzdWx0cykge1xuICAgIGlmIChlcnIpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgIH1cbiAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgcmVzdWx0cy50cmFuc2Zvcm0pO1xuICB9KTtcbn0iXSwic291cmNlUm9vdCI6IkM6XFxVc2Vyc1xcQWxmXFxTb3VyY2VcXG92ZXJ3YXRjaC1hcGlcXGFwaVxcc3JjXFxwYXJzZXJcXCJ9