{"version":3,"sources":["webpack:///./src/services/profile-service.ts","webpack:///./node_modules/ua-parser-js/src/ua-parser.js","webpack:///./src/pages/profile/profile.scss","webpack:///./src/pages/profile/sections/security/second-factor-options/authenticator.scss","webpack:///./src/pages/profile/profile.scss?961e","webpack:///./src/pages/signin-oidc/signin-oidc.scss?6d15","webpack:///./src/components/date-converters.ts","webpack:///./src/components/list-converters.ts","webpack:///./src/components/qr-code-container/qr-code-container.ts","webpack:///./src/components/qr-code-container/qr-code-container.html","webpack:///./node_modules/qrcodejs/qrcode.js","webpack:///./src/pages/profile/sections/security/second-factor-options/authenticator.scss?c91a","webpack:///(webpack)/buildin/amd-options.js","webpack:///./src/pages/profile/profile.ts","webpack:///./src/pages/profile/profile.html","webpack:///./src/pages/profile/sections/components/audit-event-card.ts","webpack:///./src/pages/profile/sections/components/audit-event-card.html","webpack:///./src/pages/profile/sections/components/option-card.ts","webpack:///./src/pages/profile/sections/components/option-card.html","webpack:///./src/pages/profile/sections/edit-name.ts","webpack:///./src/pages/profile/sections/edit-name.html","webpack:///./src/pages/profile/sections/main.ts","webpack:///./src/pages/profile/sections/main.html","webpack:///./src/pages/profile/sections/security/audit-events.ts","webpack:///./src/pages/profile/sections/security/audit-events.html","webpack:///./src/pages/profile/sections/security/change-password.ts","webpack:///./src/pages/profile/sections/security/change-password.html","webpack:///./src/pages/profile/sections/security/disable-second-factor.ts","webpack:///./src/pages/profile/sections/security/disable-second-factor.html","webpack:///./src/pages/profile/sections/security/second-factor.ts","webpack:///./src/pages/profile/sections/security/second-factor-options/authenticator.ts","webpack:///./src/pages/profile/sections/security/second-factor-options/authenticator.html","webpack:///./src/pages/profile/sections/security/second-factor-options/security-key.ts","webpack:///./src/pages/profile/sections/security/second-factor-options/security-key.html","webpack:///./src/pages/profile/sections/security/second-factor.html","webpack:///./src/pages/signin-oidc/signin-oidc.ts","webpack:///./src/pages/signin-oidc/signin-oidc.html","webpack:///./src/pages/signin-oidc/signin-oidc.scss","webpack:///./src/services/two-factor-auth-service.ts"],"names":["ProfileService","client","_classCallCheck","this","_client","key","value","build","fetch","response","command","useMethod","useBody","code","useQueryString","currentPassword","newPassword","firstName","lastName","query","__WEBPACK_IMPORTED_MODULE_0_tslib__","__WEBPACK_IMPORTED_MODULE_1_aurelia_framework__","__WEBPACK_IMPORTED_MODULE_2__infrastructure_identity_client__","__WEBPACK_AMD_DEFINE_RESULT__","window","undefined","MODEL","NAME","TYPE","VENDOR","VERSION","MOBILE","TABLET","util","extend","regexes","extensions","margedRegexes","i","length","concat","has","str1","str2","toLowerCase","indexOf","lowerize","str","major","version","replace","split","trim","mapper","rgx","ua","arrays","j","k","p","q","matches","match","regex","props","exec","call","test","map","maps","browser","oldsafari","1.0","1.2","1.3","2.0","2.0.2","2.0.3","2.0.4","?","device","amazon","model","Fire Phone","sprint","Evo Shift 4G","vendor","HTC","Sprint","os","windows","ME","NT 3.11","NT 4.0","2000","XP","Vista","7","8","8.1","10","RT","cpu","engine","UAParser","uastring","getResult","navigator","userAgent","rgxmap","getBrowser","name","getCPU","architecture","getDevice","type","getEngine","getOS","getUA","setUA","BROWSER","MAJOR","CPU","ARCHITECTURE","DEVICE","CONSOLE","SMARTTV","WEARABLE","EMBEDDED","ENGINE","OS","module","exports","__webpack_require__","$","jQuery","Zepto","parser","get","set","result","prop","content","options","sourceMap","hmr","transform","insertInto","locals","push","sources","names","mappings","file","sourcesContent","sourceRoot","DateValueConverter","_createClass","format","arguments","__WEBPACK_IMPORTED_MODULE_0_moment__","TimeAgoValueConverter","fromNow","GroupByValueConverter","array","groupBy","groups","forEach","o","group","Object","keys","values","GroupByFuncValueConverter","Map","QRCode","QrCodeContainer","element","_element","_qrCode","useSVG","newValue","oldValue","makeCode","makeImage","__WEBPACK_IMPORTED_MODULE_2_aurelia_framework__","__WEBPACK_IMPORTED_MODULE_1_aurelia_binding__","Element","QR8bitByte","data","mode","QRMode","MODE_8BIT_BYTE","parsedData","l","byteArray","charCodeAt","Array","prototype","apply","unshift","QRCodeModel","typeNumber","errorCorrectLevel","modules","moduleCount","dataCache","dataList","getLength","buffer","write","put","addData","newData","isDark","row","col","Error","getModuleCount","make","makeImpl","getBestMaskPattern","maskPattern","setupPositionProbePattern","setupPositionAdjustPattern","setupTimingPattern","setupTypeInfo","setupTypeNumber","createData","mapData","r","c","minLostPoint","pattern","lostPoint","QRUtil","getLostPoint","createMovieClip","target_mc","instance_name","depth","qr_mc","createEmptyMovieClip","y","x","beginFill","moveTo","lineTo","endFill","pos","getPatternPosition","bits","getBCHTypeNumber","mod","Math","floor","getBCHTypeInfo","inc","bitIndex","byteIndex","dark","getMask","PAD0","PAD1","rsBlocks","QRRSBlock","getRSBlocks","QRBitBuffer","getLengthInBits","totalDataCount","dataCount","putBit","createBytes","offset","maxDcCount","maxEcCount","dcdata","ecdata","dcCount","ecCount","totalCount","max","rsPoly","getErrorCorrectPolynomial","modPoly","QRPolynomial","modIndex","totalCodeCount","index","MODE_NUMBER","MODE_ALPHA_NUM","MODE_KANJI","QRErrorCorrectLevel","L","M","Q","H","QRMaskPattern","PATTERN_POSITION_TABLE","G15","G18","G15_MASK","d","getBCHDigit","digit","errorCorrectLength","a","multiply","QRMath","gexp","qrCode","sameCount","count","darkCount","abs","glog","n","LOG_TABLE","EXP_TABLE","num","shift","e","ratio","RS_BLOCK_TABLE","rsBlock","getRsBlockTable","list","bufIndex","bit","QRCodeLimitLength","_getAndroid","android","sAgent","aMat","toString","parseFloat","svgDrawer","Drawing","el","htOption","_el","_htOption","draw","oQRCode","nCount","width","height","makeSVG","tag","attrs","document","createElementNS","hasOwnProperty","setAttribute","clear","svg","viewBox","String","fill","colorLight","setAttributeNS","appendChild","colorDark","id","child","hasChildNodes","removeChild","lastChild","documentElement","tagName","CanvasRenderingContext2D","nWidth","nHeight","aHTML","innerHTML","join","elTable","childNodes","nLeftMarginTable","offsetWidth","nTopMarginTable","offsetHeight","style","margin","_onMakeImage","_elImage","src","_elCanvas","toDataURL","display","_android","factor","devicePixelRatio","drawImage","image","sx","sy","sw","sh","dx","dy","dw","dh","nodeName","_bIsPainted","createElement","_oContext","getContext","alt","_bSupportDataURI","nRoundedWidth","round","nRoundedHeight","bIsDark","nLeft","nTop","strokeStyle","lineWidth","fillStyle","fillRect","strokeRect","ceil","fSuccess","fFail","self","_fFail","_fSuccess","fOnError","onabort","onerror","onload","isPainted","clearRect","nNumber","_getTypeNumber","sText","nCorrectLevel","nType","replacedText","encodeURI","_getUTF8Length","len","nLimit","vOption","correctLevel","text","getElementById","_oQRCode","_oDrawing","title","CorrectLevel","__webpack_amd_options__","ProfilePage","oidcService","originService","_oidcService","_originService","params","originUrl","url","originName","getUser","user","expired","signIn","redirectForSignIn","config","router","routes","configureRoutes","route","moduleId","__WEBPACK_IMPORTED_MODULE_4__services_oidc_service__","__WEBPACK_IMPORTED_MODULE_5__services_origin_service__","AuditEventCard","action","DescriptionMap","description","getMapping","event","ipAddress","__WEBPACK_IMPORTED_MODULE_3_ua_parser_js__","timestamp","__WEBPACK_IMPORTED_MODULE_2_aurelia_templating__","OptionCard","editable","__WEBPACK_IMPORTED_MODULE_1_aurelia_templating__","EditNameSection","controllerFactory","service","_controller","createForCurrentScope","validateTrigger","__WEBPACK_IMPORTED_MODULE_3_aurelia_validation__","changeOrBlur","_service","_router","validate","valid","hasError","isLoading","updateName","changeResult","navigate","__WEBPACK_IMPORTED_MODULE_4__services_profile_service__","__WEBPACK_IMPORTED_MODULE_2_aurelia_router__","ensure","required","maxLength","withMessage","on","MainSection","returnAction","getProfile","profile","email","passwordChangedOn","intent","getTotpStatus","totpStatus","twoFactorModified","enabledOn","logout","__WEBPACK_IMPORTED_MODULE_6__services_profile_service__","__WEBPACK_IMPORTED_MODULE_3_aurelia_router__","ChangePasswordSection","monthAgo","__WEBPACK_IMPORTED_MODULE_3_moment__","add","load","include","getAuditEvents","events","date","today","startOf","thisWeek","lastWeek","isAfter","endOf","controller","updatePassword","failure","confirmPassword","minLength","satisfies","v","DisableSecondFactor","profileService","_profileService","secondFactorController","create","__WEBPACK_IMPORTED_MODULE_4_aurelia_validation__","addObject","secondFactorRules","addRenderer","__WEBPACK_IMPORTED_MODULE_5__components_bootstrap_form_renderer__","disableTotp","totpCode","totpError","__WEBPACK_IMPORTED_MODULE_3__services_profile_service__","rules","SecondFactorSection","recoveryCode","active","AuthenticatorSetupStage","AuthenticatorSetup","twoFactorAuthService","stage","chooseApp","selectedOs","PhoneOs","authenticatorUri","_twoFactorAuthService","osList","ios","other","__WEBPACK_IMPORTED_MODULE_5_aurelia_validation__","__WEBPACK_IMPORTED_MODULE_6__components_bootstrap_form_renderer__","generateTotpConfiguration","totpConfig","secret","algorithm","digits","period","verificationCode","enableTotp","authorize","segments","slice","__WEBPACK_IMPORTED_MODULE_2_aurelia_binding__","__WEBPACK_IMPORTED_MODULE_3_aurelia_framework__","__WEBPACK_IMPORTED_MODULE_7__services_profile_service__","__WEBPACK_IMPORTED_MODULE_4_aurelia_router__","__WEBPACK_IMPORTED_MODULE_8__services_two_factor_auth_service__","OsSelect","SecurityKeySetup","SigninOidc","navigateToReturnUrl","__WEBPACK_IMPORTED_MODULE_3__services_oidc_service__","TwoFactorAuthService","requestQuery"],"mappings":"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","file":"chunk.profile.d00131f14d658ac4da5b.js","sourcesContent":["import { autoinject } from \"aurelia-framework\";\r\n\r\nimport { IdentityClient } from \"../infrastructure/identity-client\";\r\n\r\n@autoinject\r\nexport class ProfileService {\r\n\r\n private readonly _client: IdentityClient;\r\n\r\n public constructor(client: IdentityClient) {\r\n this._client = client;\r\n }\r\n\r\n public async getProfile() {\r\n let response = await this._client\r\n .build(\"v1/profile\")\r\n .fetch<IGetProfileResult>();\r\n\r\n return response;\r\n }\r\n\r\n public async getTotpStatus() {\r\n let response = await this._client\r\n .build(\"v1/profile/totp\")\r\n .fetch<ITotpStatus>();\r\n\r\n return response;\r\n }\r\n\r\n public async enableTotp(command: IEnableTotpCommand) {\r\n let response = await this._client\r\n .build(\"v1/profile/totp\")\r\n .useMethod(\"POST\")\r\n .useBody(command)\r\n .fetch<IEnableTotpResponse>(false);\r\n\r\n return response;\r\n }\r\n\r\n public async disableTotp(code: string) {\r\n let command: IDisableTotpCommand = {code};\r\n let response = await this._client\r\n .build(\"v1/profile/totp\")\r\n .useMethod(\"DELETE\")\r\n .useQueryString(command)\r\n .fetch<IDisableTotpResponse>(false);\r\n\r\n return response;\r\n }\r\n\r\n public async generateTotpConfiguration() {\r\n let response = await this._client\r\n .build(\"v1/profile/totp/generate\")\r\n .useMethod(\"POST\")\r\n .fetch<IGenerateTotpResponse>();\r\n\r\n return response;\r\n }\r\n\r\n public async updatePassword(currentPassword: string, newPassword: string) {\r\n let response = await this._client\r\n .build(\"v1/profile/password\")\r\n .useMethod(\"PUT\")\r\n .useBody<IChangePasswordCommand>({ currentPassword, newPassword })\r\n .fetch<{}>(false);\r\n\r\n return response;\r\n }\r\n\r\n public async updateName(firstName: string, lastName: string) {\r\n let response = await this._client\r\n .build(\"v1/profile/name\")\r\n .useMethod(\"PUT\")\r\n .useBody<IChangeNameCommand>({ firstName, lastName })\r\n .fetch<{}>(false);\r\n\r\n return response;\r\n }\r\n public async getAuditEvents(query: IGetAuditEventsQuery) {\r\n let response = await this._client\r\n .build(\"v1/profile/events\")\r\n .useQueryString<IGetAuditEventsQuery>(query)\r\n .fetch<IGetAuditEventsResult>(false);\r\n\r\n return response;\r\n }\r\n}\r\n\r\nexport interface ITotpStatus {\r\n active: boolean;\r\n enabledOn: string;\r\n}\r\n\r\nexport interface IDisableTotpCommand {\r\n code: string;\r\n}\r\n\r\nexport interface IDisableTotpResponse {\r\n subjectId: string;\r\n configurationId: string;\r\n}\r\n\r\nexport interface IEnableTotpCommand {\r\n secret: string;\r\n algorithm: string;\r\n digits: number;\r\n period: number;\r\n code: string;\r\n}\r\n\r\nexport interface IEnableTotpResponse {\r\n subjectId: string;\r\n configurationId: string;\r\n}\r\n\r\nexport interface IGenerateTotpResponse {\r\n secret: string;\r\n algorithm: string;\r\n digits: number;\r\n period: number;\r\n}\r\n\r\nexport interface IChangePasswordCommand {\r\n currentPassword: string;\r\n newPassword: string;\r\n}\r\n\r\nexport interface IChangeNameCommand {\r\n firstName: string;\r\n lastName: string;\r\n}\r\n\r\nexport interface IGetProfileResult {\r\n subjectId: string;\r\n firstName: string;\r\n lastName: string;\r\n email: string;\r\n passwordChangedOn: string;\r\n}\r\n\r\nexport interface IGetAuditEventsQuery {\r\n include?: string;\r\n exclude?: string;\r\n}\r\n\r\nexport interface IGetAuditEventsResult {\r\n events: IGetAuditEventsAuditEvent[];\r\n}\r\n\r\nexport interface IGetAuditEventsAuditEvent {\r\n id: string;\r\n action: string;\r\n ipAddress: string;\r\n userAgent: string;\r\n timestamp: string;\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/services/profile-service.ts","/**\n * UAParser.js v0.7.17\n * Lightweight JavaScript-based User-Agent string parser\n * https://github.com/faisalman/ua-parser-js\n *\n * Copyright © 2012-2016 Faisal Salman <fyzlman@gmail.com>\n * Dual licensed under GPLv2 & MIT\n */\n\n(function (window, undefined) {\n\n 'use strict';\n\n //////////////\n // Constants\n /////////////\n\n\n var LIBVERSION = '0.7.17',\n EMPTY = '',\n UNKNOWN = '?',\n FUNC_TYPE = 'function',\n UNDEF_TYPE = 'undefined',\n OBJ_TYPE = 'object',\n STR_TYPE = 'string',\n MAJOR = 'major', // deprecated\n MODEL = 'model',\n NAME = 'name',\n TYPE = 'type',\n VENDOR = 'vendor',\n VERSION = 'version',\n ARCHITECTURE= 'architecture',\n CONSOLE = 'console',\n MOBILE = 'mobile',\n TABLET = 'tablet',\n SMARTTV = 'smarttv',\n WEARABLE = 'wearable',\n EMBEDDED = 'embedded';\n\n\n ///////////\n // Helper\n //////////\n\n\n var util = {\n extend : function (regexes, extensions) {\n var margedRegexes = {};\n for (var i in regexes) {\n if (extensions[i] && extensions[i].length % 2 === 0) {\n margedRegexes[i] = extensions[i].concat(regexes[i]);\n } else {\n margedRegexes[i] = regexes[i];\n }\n }\n return margedRegexes;\n },\n has : function (str1, str2) {\n if (typeof str1 === \"string\") {\n return str2.toLowerCase().indexOf(str1.toLowerCase()) !== -1;\n } else {\n return false;\n }\n },\n lowerize : function (str) {\n return str.toLowerCase();\n },\n major : function (version) {\n return typeof(version) === STR_TYPE ? version.replace(/[^\\d\\.]/g,'').split(\".\")[0] : undefined;\n },\n trim : function (str) {\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n }\n };\n\n\n ///////////////\n // Map helper\n //////////////\n\n\n var mapper = {\n\n rgx : function (ua, arrays) {\n\n //var result = {},\n var i = 0, j, k, p, q, matches, match;//, args = arguments;\n\n /*// construct object barebones\n for (p = 0; p < args[1].length; p++) {\n q = args[1][p];\n result[typeof q === OBJ_TYPE ? q[0] : q] = undefined;\n }*/\n\n // loop through all regexes maps\n while (i < arrays.length && !matches) {\n\n var regex = arrays[i], // even sequence (0,2,4,..)\n props = arrays[i + 1]; // odd sequence (1,3,5,..)\n j = k = 0;\n\n // try matching uastring with regexes\n while (j < regex.length && !matches) {\n\n matches = regex[j++].exec(ua);\n\n if (!!matches) {\n for (p = 0; p < props.length; p++) {\n match = matches[++k];\n q = props[p];\n // check if given property is actually array\n if (typeof q === OBJ_TYPE && q.length > 0) {\n if (q.length == 2) {\n if (typeof q[1] == FUNC_TYPE) {\n // assign modified match\n this[q[0]] = q[1].call(this, match);\n } else {\n // assign given value, ignore regex match\n this[q[0]] = q[1];\n }\n } else if (q.length == 3) {\n // check whether function or regex\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n // call function (usually string mapper)\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n } else {\n // sanitize match using given regex\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n }\n } else if (q.length == 4) {\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n }\n } else {\n this[q] = match ? match : undefined;\n }\n }\n }\n }\n i += 2;\n }\n // console.log(this);\n //return this;\n },\n\n str : function (str, map) {\n\n for (var i in map) {\n // check if array\n if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n for (var j = 0; j < map[i].length; j++) {\n if (util.has(map[i][j], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n } else if (util.has(map[i], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n return str;\n }\n };\n\n\n ///////////////\n // String map\n //////////////\n\n\n var maps = {\n\n browser : {\n oldsafari : {\n version : {\n '1.0' : '/8',\n '1.2' : '/1',\n '1.3' : '/3',\n '2.0' : '/412',\n '2.0.2' : '/416',\n '2.0.3' : '/417',\n '2.0.4' : '/419',\n '?' : '/'\n }\n }\n },\n\n device : {\n amazon : {\n model : {\n 'Fire Phone' : ['SD', 'KF']\n }\n },\n sprint : {\n model : {\n 'Evo Shift 4G' : '7373KT'\n },\n vendor : {\n 'HTC' : 'APA',\n 'Sprint' : 'Sprint'\n }\n }\n },\n\n os : {\n windows : {\n version : {\n 'ME' : '4.90',\n 'NT 3.11' : 'NT3.51',\n 'NT 4.0' : 'NT4.0',\n '2000' : 'NT 5.0',\n 'XP' : ['NT 5.1', 'NT 5.2'],\n 'Vista' : 'NT 6.0',\n '7' : 'NT 6.1',\n '8' : 'NT 6.2',\n '8.1' : 'NT 6.3',\n '10' : ['NT 6.4', 'NT 10.0'],\n 'RT' : 'ARM'\n }\n }\n }\n };\n\n\n //////////////\n // Regex map\n /////////////\n\n\n var regexes = {\n\n browser : [[\n\n // Presto based\n /(opera\\smini)\\/([\\w\\.-]+)/i, // Opera Mini\n /(opera\\s[mobiletab]+).+version\\/([\\w\\.-]+)/i, // Opera Mobi/Tablet\n /(opera).+version\\/([\\w\\.]+)/i, // Opera > 9.80\n /(opera)[\\/\\s]+([\\w\\.]+)/i // Opera < 9.80\n ], [NAME, VERSION], [\n\n /(opios)[\\/\\s]+([\\w\\.]+)/i // Opera mini on iphone >= 8.0\n ], [[NAME, 'Opera Mini'], VERSION], [\n\n /\\s(opr)\\/([\\w\\.]+)/i // Opera Webkit\n ], [[NAME, 'Opera'], VERSION], [\n\n // Mixed\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(lunascape|maxthon|netfront|jasmine|blazer)[\\/\\s]?([\\w\\.]+)*/i,\n // Lunascape/Maxthon/Netfront/Jasmine/Blazer\n\n // Trident based\n /(avant\\s|iemobile|slim|baidu)(?:browser)?[\\/\\s]?([\\w\\.]*)/i,\n // Avant/IEMobile/SlimBrowser/Baidu\n /(?:ms|\\()(ie)\\s([\\w\\.]+)/i, // Internet Explorer\n\n // Webkit/KHTML based\n /(rekonq)\\/([\\w\\.]+)*/i, // Rekonq\n /(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser)\\/([\\w\\.-]+)/i\n // Chromium/Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser\n ], [NAME, VERSION], [\n\n /(trident).+rv[:\\s]([\\w\\.]+).+like\\sgecko/i // IE11\n ], [[NAME, 'IE'], VERSION], [\n\n /(edge)\\/((\\d+)?[\\w\\.]+)/i // Microsoft Edge\n ], [NAME, VERSION], [\n\n /(yabrowser)\\/([\\w\\.]+)/i // Yandex\n ], [[NAME, 'Yandex'], VERSION], [\n\n /(puffin)\\/([\\w\\.]+)/i // Puffin\n ], [[NAME, 'Puffin'], VERSION], [\n\n /((?:[\\s\\/])uc?\\s?browser|(?:juc.+)ucweb)[\\/\\s]?([\\w\\.]+)/i\n // UCBrowser\n ], [[NAME, 'UCBrowser'], VERSION], [\n\n /(comodo_dragon)\\/([\\w\\.]+)/i // Comodo Dragon\n ], [[NAME, /_/g, ' '], VERSION], [\n\n /(micromessenger)\\/([\\w\\.]+)/i // WeChat\n ], [[NAME, 'WeChat'], VERSION], [\n\n /(QQ)\\/([\\d\\.]+)/i // QQ, aka ShouQ\n ], [NAME, VERSION], [\n\n /m?(qqbrowser)[\\/\\s]?([\\w\\.]+)/i // QQBrowser\n ], [NAME, VERSION], [\n\n /xiaomi\\/miuibrowser\\/([\\w\\.]+)/i // MIUI Browser\n ], [VERSION, [NAME, 'MIUI Browser']], [\n\n /;fbav\\/([\\w\\.]+);/i // Facebook App for iOS & Android\n ], [VERSION, [NAME, 'Facebook']], [\n\n /headlesschrome(?:\\/([\\w\\.]+)|\\s)/i // Chrome Headless\n ], [VERSION, [NAME, 'Chrome Headless']], [\n\n /\\swv\\).+(chrome)\\/([\\w\\.]+)/i // Chrome WebView\n ], [[NAME, /(.+)/, '$1 WebView'], VERSION], [\n\n /((?:oculus|samsung)browser)\\/([\\w\\.]+)/i\n ], [[NAME, /(.+(?:g|us))(.+)/, '$1 $2'], VERSION], [ // Oculus / Samsung Browser\n\n /android.+version\\/([\\w\\.]+)\\s+(?:mobile\\s?safari|safari)*/i // Android Browser\n ], [VERSION, [NAME, 'Android Browser']], [\n\n /(chrome|omniweb|arora|[tizenoka]{5}\\s?browser)\\/v?([\\w\\.]+)/i\n // Chrome/OmniWeb/Arora/Tizen/Nokia\n ], [NAME, VERSION], [\n\n /(dolfin)\\/([\\w\\.]+)/i // Dolphin\n ], [[NAME, 'Dolphin'], VERSION], [\n\n /((?:android.+)crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\n ], [[NAME, 'Chrome'], VERSION], [\n\n /(coast)\\/([\\w\\.]+)/i // Opera Coast\n ], [[NAME, 'Opera Coast'], VERSION], [\n\n /fxios\\/([\\w\\.-]+)/i // Firefox for iOS\n ], [VERSION, [NAME, 'Firefox']], [\n\n /version\\/([\\w\\.]+).+?mobile\\/\\w+\\s(safari)/i // Mobile Safari\n ], [VERSION, [NAME, 'Mobile Safari']], [\n\n /version\\/([\\w\\.]+).+?(mobile\\s?safari|safari)/i // Safari & Safari Mobile\n ], [VERSION, NAME], [\n\n /webkit.+?(gsa)\\/([\\w\\.]+).+?(mobile\\s?safari|safari)(\\/[\\w\\.]+)/i // Google Search Appliance on iOS\n ], [[NAME, 'GSA'], VERSION], [\n\n /webkit.+?(mobile\\s?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\n ], [NAME, [VERSION, mapper.str, maps.browser.oldsafari.version]], [\n\n /(konqueror)\\/([\\w\\.]+)/i, // Konqueror\n /(webkit|khtml)\\/([\\w\\.]+)/i\n ], [NAME, VERSION], [\n\n // Gecko based\n /(navigator|netscape)\\/([\\w\\.-]+)/i // Netscape\n ], [[NAME, 'Netscape'], VERSION], [\n /(swiftfox)/i, // Swiftfox\n /(icedragon|iceweasel|camino|chimera|fennec|maemo\\sbrowser|minimo|conkeror)[\\/\\s]?([\\w\\.\\+]+)/i,\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror\n /(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix)\\/([\\w\\.-]+)/i,\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n /(mozilla)\\/([\\w\\.]+).+rv\\:.+gecko\\/\\d+/i, // Mozilla\n\n // Other\n /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir)[\\/\\s]?([\\w\\.]+)/i,\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir\n /(links)\\s\\(([\\w\\.]+)/i, // Links\n /(gobrowser)\\/?([\\w\\.]+)*/i, // GoBrowser\n /(ice\\s?browser)\\/v?([\\w\\._]+)/i, // ICE Browser\n /(mosaic)[\\/\\s]([\\w\\.]+)/i // Mosaic\n ], [NAME, VERSION]\n\n /* /////////////////////\n // Media players BEGIN\n ////////////////////////\n\n , [\n\n /(apple(?:coremedia|))\\/((\\d+)[\\w\\._]+)/i, // Generic Apple CoreMedia\n /(coremedia) v((\\d+)[\\w\\._]+)/i\n ], [NAME, VERSION], [\n\n /(aqualung|lyssna|bsplayer)\\/((\\d+)?[\\w\\.-]+)/i // Aqualung/Lyssna/BSPlayer\n ], [NAME, VERSION], [\n\n /(ares|ossproxy)\\s((\\d+)[\\w\\.-]+)/i // Ares/OSSProxy\n ], [NAME, VERSION], [\n\n /(audacious|audimusicstream|amarok|bass|core|dalvik|gnomemplayer|music on console|nsplayer|psp-internetradioplayer|videos)\\/((\\d+)[\\w\\.-]+)/i,\n // Audacious/AudiMusicStream/Amarok/BASS/OpenCORE/Dalvik/GnomeMplayer/MoC\n // NSPlayer/PSP-InternetRadioPlayer/Videos\n /(clementine|music player daemon)\\s((\\d+)[\\w\\.-]+)/i, // Clementine/MPD\n /(lg player|nexplayer)\\s((\\d+)[\\d\\.]+)/i,\n /player\\/(nexplayer|lg player)\\s((\\d+)[\\w\\.-]+)/i // NexPlayer/LG Player\n ], [NAME, VERSION], [\n /(nexplayer)\\s((\\d+)[\\w\\.-]+)/i // Nexplayer\n ], [NAME, VERSION], [\n\n /(flrp)\\/((\\d+)[\\w\\.-]+)/i // Flip Player\n ], [[NAME, 'Flip Player'], VERSION], [\n\n /(fstream|nativehost|queryseekspider|ia-archiver|facebookexternalhit)/i\n // FStream/NativeHost/QuerySeekSpider/IA Archiver/facebookexternalhit\n ], [NAME], [\n\n /(gstreamer) souphttpsrc (?:\\([^\\)]+\\)){0,1} libsoup\\/((\\d+)[\\w\\.-]+)/i\n // Gstreamer\n ], [NAME, VERSION], [\n\n /(htc streaming player)\\s[\\w_]+\\s\\/\\s((\\d+)[\\d\\.]+)/i, // HTC Streaming Player\n /(java|python-urllib|python-requests|wget|libcurl)\\/((\\d+)[\\w\\.-_]+)/i,\n // Java/urllib/requests/wget/cURL\n /(lavf)((\\d+)[\\d\\.]+)/i // Lavf (FFMPEG)\n ], [NAME, VERSION], [\n\n /(htc_one_s)\\/((\\d+)[\\d\\.]+)/i // HTC One S\n ], [[NAME, /_/g, ' '], VERSION], [\n\n /(mplayer)(?:\\s|\\/)(?:(?:sherpya-){0,1}svn)(?:-|\\s)(r\\d+(?:-\\d+[\\w\\.-]+){0,1})/i\n // MPlayer SVN\n ], [NAME, VERSION], [\n\n /(mplayer)(?:\\s|\\/|[unkow-]+)((\\d+)[\\w\\.-]+)/i // MPlayer\n ], [NAME, VERSION], [\n\n /(mplayer)/i, // MPlayer (no other info)\n /(yourmuze)/i, // YourMuze\n /(media player classic|nero showtime)/i // Media Player Classic/Nero ShowTime\n ], [NAME], [\n\n /(nero (?:home|scout))\\/((\\d+)[\\w\\.-]+)/i // Nero Home/Nero Scout\n ], [NAME, VERSION], [\n\n /(nokia\\d+)\\/((\\d+)[\\w\\.-]+)/i // Nokia\n ], [NAME, VERSION], [\n\n /\\s(songbird)\\/((\\d+)[\\w\\.-]+)/i // Songbird/Philips-Songbird\n ], [NAME, VERSION], [\n\n /(winamp)3 version ((\\d+)[\\w\\.-]+)/i, // Winamp\n /(winamp)\\s((\\d+)[\\w\\.-]+)/i,\n /(winamp)mpeg\\/((\\d+)[\\w\\.-]+)/i\n ], [NAME, VERSION], [\n\n /(ocms-bot|tapinradio|tunein radio|unknown|winamp|inlight radio)/i // OCMS-bot/tap in radio/tunein/unknown/winamp (no other info)\n // inlight radio\n ], [NAME], [\n\n /(quicktime|rma|radioapp|radioclientapplication|soundtap|totem|stagefright|streamium)\\/((\\d+)[\\w\\.-]+)/i\n // QuickTime/RealMedia/RadioApp/RadioClientApplication/\n // SoundTap/Totem/Stagefright/Streamium\n ], [NAME, VERSION], [\n\n /(smp)((\\d+)[\\d\\.]+)/i // SMP\n ], [NAME, VERSION], [\n\n /(vlc) media player - version ((\\d+)[\\w\\.]+)/i, // VLC Videolan\n /(vlc)\\/((\\d+)[\\w\\.-]+)/i,\n /(xbmc|gvfs|xine|xmms|irapp)\\/((\\d+)[\\w\\.-]+)/i, // XBMC/gvfs/Xine/XMMS/irapp\n /(foobar2000)\\/((\\d+)[\\d\\.]+)/i, // Foobar2000\n /(itunes)\\/((\\d+)[\\d\\.]+)/i // iTunes\n ], [NAME, VERSION], [\n\n /(wmplayer)\\/((\\d+)[\\w\\.-]+)/i, // Windows Media Player\n /(windows-media-player)\\/((\\d+)[\\w\\.-]+)/i\n ], [[NAME, /-/g, ' '], VERSION], [\n\n /windows\\/((\\d+)[\\w\\.-]+) upnp\\/[\\d\\.]+ dlnadoc\\/[\\d\\.]+ (home media server)/i\n // Windows Media Server\n ], [VERSION, [NAME, 'Windows']], [\n\n /(com\\.riseupradioalarm)\\/((\\d+)[\\d\\.]*)/i // RiseUP Radio Alarm\n ], [NAME, VERSION], [\n\n /(rad.io)\\s((\\d+)[\\d\\.]+)/i, // Rad.io\n /(radio.(?:de|at|fr))\\s((\\d+)[\\d\\.]+)/i\n ], [[NAME, 'rad.io'], VERSION]\n\n //////////////////////\n // Media players END\n ////////////////////*/\n\n ],\n\n cpu : [[\n\n /(?:(amd|x(?:(?:86|64)[_-])?|wow|win)64)[;\\)]/i // AMD64\n ], [[ARCHITECTURE, 'amd64']], [\n\n /(ia32(?=;))/i // IA32 (quicktime)\n ], [[ARCHITECTURE, util.lowerize]], [\n\n /((?:i[346]|x)86)[;\\)]/i // IA32\n ], [[ARCHITECTURE, 'ia32']], [\n\n // PocketPC mistakenly identified as PowerPC\n /windows\\s(ce|mobile);\\sppc;/i\n ], [[ARCHITECTURE, 'arm']], [\n\n /((?:ppc|powerpc)(?:64)?)(?:\\smac|;|\\))/i // PowerPC\n ], [[ARCHITECTURE, /ower/, '', util.lowerize]], [\n\n /(sun4\\w)[;\\)]/i // SPARC\n ], [[ARCHITECTURE, 'sparc']], [\n\n /((?:avr32|ia64(?=;))|68k(?=\\))|arm(?:64|(?=v\\d+;))|(?=atmel\\s)avr|(?:irix|mips|sparc)(?:64)?(?=;)|pa-risc)/i\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n ], [[ARCHITECTURE, util.lowerize]]\n ],\n\n device : [[\n\n /\\((ipad|playbook);[\\w\\s\\);-]+(rim|apple)/i // iPad/PlayBook\n ], [MODEL, VENDOR, [TYPE, TABLET]], [\n\n /applecoremedia\\/[\\w\\.]+ \\((ipad)/ // iPad\n ], [MODEL, [VENDOR, 'Apple'], [TYPE, TABLET]], [\n\n /(apple\\s{0,1}tv)/i // Apple TV\n ], [[MODEL, 'Apple TV'], [VENDOR, 'Apple']], [\n\n /(archos)\\s(gamepad2?)/i, // Archos\n /(hp).+(touchpad)/i, // HP TouchPad\n /(hp).+(tablet)/i, // HP Tablet\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /\\s(nook)[\\w\\s]+build\\/(\\w+)/i, // Nook\n /(dell)\\s(strea[kpr\\s\\d]*[\\dko])/i // Dell Streak\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(kf[A-z]+)\\sbuild\\/[\\w\\.]+.*silk\\//i // Kindle Fire HD\n ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [\n /(sd|kf)[0349hijorstuw]+\\sbuild\\/[\\w\\.]+.*silk\\//i // Fire Phone\n ], [[MODEL, mapper.str, maps.device.amazon.model], [VENDOR, 'Amazon'], [TYPE, MOBILE]], [\n\n /\\((ip[honed|\\s\\w*]+);.+(apple)/i // iPod/iPhone\n ], [MODEL, VENDOR, [TYPE, MOBILE]], [\n /\\((ip[honed|\\s\\w*]+);/i // iPod/iPhone\n ], [MODEL, [VENDOR, 'Apple'], [TYPE, MOBILE]], [\n\n /(blackberry)[\\s-]?(\\w+)/i, // BlackBerry\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[\\s_-]?([\\w-]+)*/i,\n // BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron\n /(hp)\\s([\\w\\s]+\\w)/i, // HP iPAQ\n /(asus)-?(\\w+)/i // Asus\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /\\(bb10;\\s(\\w+)/i // BlackBerry 10\n ], [MODEL, [VENDOR, 'BlackBerry'], [TYPE, MOBILE]], [\n // Asus Tablets\n /android.+(transfo[prime\\s]{4,10}\\s\\w+|eeepc|slider\\s\\w+|nexus 7|padfone)/i\n ], [MODEL, [VENDOR, 'Asus'], [TYPE, TABLET]], [\n\n /(sony)\\s(tablet\\s[ps])\\sbuild\\//i, // Sony\n /(sony)?(?:sgp.+)\\sbuild\\//i\n ], [[VENDOR, 'Sony'], [MODEL, 'Xperia Tablet'], [TYPE, TABLET]], [\n /android.+\\s([c-g]\\d{4}|so[-l]\\w+)\\sbuild\\//i\n ], [MODEL, [VENDOR, 'Sony'], [TYPE, MOBILE]], [\n\n /\\s(ouya)\\s/i, // Ouya\n /(nintendo)\\s([wids3u]+)/i // Nintendo\n ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n\n /android.+;\\s(shield)\\sbuild/i // Nvidia\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [\n\n /(playstation\\s[34portablevi]+)/i // Playstation\n ], [MODEL, [VENDOR, 'Sony'], [TYPE, CONSOLE]], [\n\n /(sprint\\s(\\w+))/i // Sprint Phones\n ], [[VENDOR, mapper.str, maps.device.sprint.vendor], [MODEL, mapper.str, maps.device.sprint.model], [TYPE, MOBILE]], [\n\n /(lenovo)\\s?(S(?:5000|6000)+(?:[-][\\w+]))/i // Lenovo tablets\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(htc)[;_\\s-]+([\\w\\s]+(?=\\))|\\w+)*/i, // HTC\n /(zte)-(\\w+)*/i, // ZTE\n /(alcatel|geeksphone|lenovo|nexian|panasonic|(?=;\\s)sony)[_\\s-]?([\\w-]+)*/i\n // Alcatel/GeeksPhone/Lenovo/Nexian/Panasonic/Sony\n ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n /(nexus\\s9)/i // HTC Nexus 9\n ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n\n /d\\/huawei([\\w\\s-]+)[;\\)]/i,\n /(nexus\\s6p)/i // Huawei\n ], [MODEL, [VENDOR, 'Huawei'], [TYPE, MOBILE]], [\n\n /(microsoft);\\s(lumia[\\s\\w]+)/i // Microsoft Lumia\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /[\\s\\(;](xbox(?:\\sone)?)[\\s\\);]/i // Microsoft Xbox\n ], [MODEL, [VENDOR, 'Microsoft'], [TYPE, CONSOLE]], [\n /(kin\\.[onetw]{3})/i // Microsoft Kin\n ], [[MODEL, /\\./g, ' '], [VENDOR, 'Microsoft'], [TYPE, MOBILE]], [\n\n // Motorola\n /\\s(milestone|droid(?:[2-4x]|\\s(?:bionic|x2|pro|razr))?(:?\\s4g)?)[\\w\\s]+build\\//i,\n /mot[\\s-]?(\\w+)*/i,\n /(XT\\d{3,4}) build\\//i,\n /(nexus\\s6)/i\n ], [MODEL, [VENDOR, 'Motorola'], [TYPE, MOBILE]], [\n /android.+\\s(mz60\\d|xoom[\\s2]{0,2})\\sbuild\\//i\n ], [MODEL, [VENDOR, 'Motorola'], [TYPE, TABLET]], [\n\n /hbbtv\\/\\d+\\.\\d+\\.\\d+\\s+\\([\\w\\s]*;\\s*(\\w[^;]*);([^;]*)/i // HbbTV devices\n ], [[VENDOR, util.trim], [MODEL, util.trim], [TYPE, SMARTTV]], [\n\n /hbbtv.+maple;(\\d+)/i\n ], [[MODEL, /^/, 'SmartTV'], [VENDOR, 'Samsung'], [TYPE, SMARTTV]], [\n\n /\\(dtv[\\);].+(aquos)/i // Sharp\n ], [MODEL, [VENDOR, 'Sharp'], [TYPE, SMARTTV]], [\n\n /android.+((sch-i[89]0\\d|shw-m380s|gt-p\\d{4}|gt-n\\d+|sgh-t8[56]9|nexus 10))/i,\n /((SM-T\\w+))/i\n ], [[VENDOR, 'Samsung'], MODEL, [TYPE, TABLET]], [ // Samsung\n /smart-tv.+(samsung)/i\n ], [VENDOR, [TYPE, SMARTTV], MODEL], [\n /((s[cgp]h-\\w+|gt-\\w+|galaxy\\snexus|sm-\\w[\\w\\d]+))/i,\n /(sam[sung]*)[\\s-]*(\\w+-?[\\w-]*)*/i,\n /sec-((sgh\\w+))/i\n ], [[VENDOR, 'Samsung'], MODEL, [TYPE, MOBILE]], [\n\n /sie-(\\w+)*/i // Siemens\n ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\n\n /(maemo|nokia).*(n900|lumia\\s\\d+)/i, // Nokia\n /(nokia)[\\s_-]?([\\w-]+)*/i\n ], [[VENDOR, 'Nokia'], MODEL, [TYPE, MOBILE]], [\n\n /android\\s3\\.[\\s\\w;-]{10}(a\\d{3})/i // Acer\n ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n /android.+([vl]k\\-?\\d{3})\\s+build/i // LG Tablet\n ], [MODEL, [VENDOR, 'LG'], [TYPE, TABLET]], [\n /android\\s3\\.[\\s\\w;-]{10}(lg?)-([06cv9]{3,4})/i // LG Tablet\n ], [[VENDOR, 'LG'], MODEL, [TYPE, TABLET]], [\n /(lg) netcast\\.tv/i // LG SmartTV\n ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n /(nexus\\s[45])/i, // LG\n /lg[e;\\s\\/-]+(\\w+)*/i,\n /android.+lg(\\-?[\\d\\w]+)\\s+build/i\n ], [MODEL, [VENDOR, 'LG'], [TYPE, MOBILE]], [\n\n /android.+(ideatab[a-z0-9\\-\\s]+)/i // Lenovo\n ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [\n\n /linux;.+((jolla));/i // Jolla\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /((pebble))app\\/[\\d\\.]+\\s/i // Pebble\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n\n /android.+;\\s(oppo)\\s?([\\w\\s]+)\\sbuild/i // OPPO\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /crkey/i // Google Chromecast\n ], [[MODEL, 'Chromecast'], [VENDOR, 'Google']], [\n\n /android.+;\\s(glass)\\s\\d/i // Google Glass\n ], [MODEL, [VENDOR, 'Google'], [TYPE, WEARABLE]], [\n\n /android.+;\\s(pixel c)\\s/i // Google Pixel C\n ], [MODEL, [VENDOR, 'Google'], [TYPE, TABLET]], [\n\n /android.+;\\s(pixel xl|pixel)\\s/i // Google Pixel\n ], [MODEL, [VENDOR, 'Google'], [TYPE, MOBILE]], [\n\n /android.+(\\w+)\\s+build\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\n /android.+(hm[\\s\\-_]*note?[\\s_]*(?:\\d\\w)?)\\s+build/i, // Xiaomi Hongmi\n /android.+(mi[\\s\\-_]*(?:one|one[\\s_]plus|note lte)?[\\s_]*(?:\\d\\w)?)\\s+build/i, // Xiaomi Mi\n /android.+(redmi[\\s\\-_]*(?:note)?(?:[\\s_]*[\\w\\s]+)?)\\s+build/i // Redmi Phones\n ], [[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, MOBILE]], [\n /android.+(mi[\\s\\-_]*(?:pad)?(?:[\\s_]*[\\w\\s]+)?)\\s+build/i // Mi Pad tablets\n ],[[MODEL, /_/g, ' '], [VENDOR, 'Xiaomi'], [TYPE, TABLET]], [\n /android.+;\\s(m[1-5]\\snote)\\sbuild/i // Meizu Tablet\n ], [MODEL, [VENDOR, 'Meizu'], [TYPE, TABLET]], [\n\n /android.+a000(1)\\s+build/i // OnePlus\n ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [\n\n /android.+[;\\/]\\s*(RCT[\\d\\w]+)\\s+build/i // RCA Tablets\n ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Venue[\\d\\s]*)\\s+build/i // Dell Venue Tablets\n ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Q[T|M][\\d\\w]+)\\s+build/i // Verizon Tablet\n ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s+(Barnes[&\\s]+Noble\\s+|BN[RT])(V?.*)\\s+build/i // Barnes & Noble Tablet\n ], [[VENDOR, 'Barnes & Noble'], MODEL, [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s+(TM\\d{3}.*\\b)\\s+build/i // Barnes & Noble Tablet\n ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(zte)?.+(k\\d{2})\\s+build/i // ZTE K Series Tablet\n ], [[VENDOR, 'ZTE'], MODEL, [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(gen\\d{3})\\s+build.*49h/i // Swiss GEN Mobile\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\n\n /android.+[;\\/]\\s*(zur\\d{3})\\s+build/i // Swiss ZUR Tablet\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*((Zeki)?TB.*\\b)\\s+build/i // Zeki Tablets\n ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\n\n /(android).+[;\\/]\\s+([YR]\\d{2}x?.*)\\s+build/i,\n /android.+[;\\/]\\s+(Dragon[\\-\\s]+Touch\\s+|DT)(.+)\\s+build/i // Dragon Touch Tablet\n ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(NS-?.+)\\s+build/i // Insignia Tablets\n ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*((NX|Next)-?.+)\\s+build/i // NextBook Tablets\n ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Xtreme\\_?)?(V(1[045]|2[015]|30|40|60|7[05]|90))\\s+build/i\n ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [ // Voice Xtreme Phones\n\n /android.+[;\\/]\\s*(LVTEL\\-?)?(V1[12])\\s+build/i // LvTel Phones\n ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\n\n /android.+[;\\/]\\s*(V(100MD|700NA|7011|917G).*\\b)\\s+build/i // Envizen Tablets\n ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Le[\\s\\-]+Pan)[\\s\\-]+(.*\\b)\\s+build/i // Le Pan Tablets\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Trio[\\s\\-]*.*)\\s+build/i // MachSpeed Tablets\n ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*(Trinity)[\\-\\s]*(T\\d{3})\\s+build/i // Trinity Tablets\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /android.+[;\\/]\\s*TU_(1491)\\s+build/i // Rotor Tablets\n ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\n\n /android.+(KS(.+))\\s+build/i // Amazon Kindle Tablets\n ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [\n\n /android.+(Gigaset)[\\s\\-]+(Q.+)\\s+build/i // Gigaset Tablets\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /\\s(tablet|tab)[;\\/]/i, // Unidentifiable Tablet\n /\\s(mobile)(?:[;\\/]|\\ssafari)/i // Unidentifiable Mobile\n ], [[TYPE, util.lowerize], VENDOR, MODEL], [\n\n /(android.+)[;\\/].+build/i // Generic Android Device\n ], [MODEL, [VENDOR, 'Generic']]\n\n\n /*//////////////////////////\n // TODO: move to string map\n ////////////////////////////\n\n /(C6603)/i // Sony Xperia Z C6603\n ], [[MODEL, 'Xperia Z C6603'], [VENDOR, 'Sony'], [TYPE, MOBILE]], [\n /(C6903)/i // Sony Xperia Z 1\n ], [[MODEL, 'Xperia Z 1'], [VENDOR, 'Sony'], [TYPE, MOBILE]], [\n\n /(SM-G900[F|H])/i // Samsung Galaxy S5\n ], [[MODEL, 'Galaxy S5'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\n /(SM-G7102)/i // Samsung Galaxy Grand 2\n ], [[MODEL, 'Galaxy Grand 2'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\n /(SM-G530H)/i // Samsung Galaxy Grand Prime\n ], [[MODEL, 'Galaxy Grand Prime'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\n /(SM-G313HZ)/i // Samsung Galaxy V\n ], [[MODEL, 'Galaxy V'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\n /(SM-T805)/i // Samsung Galaxy Tab S 10.5\n ], [[MODEL, 'Galaxy Tab S 10.5'], [VENDOR, 'Samsung'], [TYPE, TABLET]], [\n /(SM-G800F)/i // Samsung Galaxy S5 Mini\n ], [[MODEL, 'Galaxy S5 Mini'], [VENDOR, 'Samsung'], [TYPE, MOBILE]], [\n /(SM-T311)/i // Samsung Galaxy Tab 3 8.0\n ], [[MODEL, 'Galaxy Tab 3 8.0'], [VENDOR, 'Samsung'], [TYPE, TABLET]], [\n\n /(T3C)/i // Advan Vandroid T3C\n ], [MODEL, [VENDOR, 'Advan'], [TYPE, TABLET]], [\n /(ADVAN T1J\\+)/i // Advan Vandroid T1J+\n ], [[MODEL, 'Vandroid T1J+'], [VENDOR, 'Advan'], [TYPE, TABLET]], [\n /(ADVAN S4A)/i // Advan Vandroid S4A\n ], [[MODEL, 'Vandroid S4A'], [VENDOR, 'Advan'], [TYPE, MOBILE]], [\n\n /(V972M)/i // ZTE V972M\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [\n\n /(i-mobile)\\s(IQ\\s[\\d\\.]+)/i // i-mobile IQ\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /(IQ6.3)/i // i-mobile IQ IQ 6.3\n ], [[MODEL, 'IQ 6.3'], [VENDOR, 'i-mobile'], [TYPE, MOBILE]], [\n /(i-mobile)\\s(i-style\\s[\\d\\.]+)/i // i-mobile i-STYLE\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /(i-STYLE2.1)/i // i-mobile i-STYLE 2.1\n ], [[MODEL, 'i-STYLE 2.1'], [VENDOR, 'i-mobile'], [TYPE, MOBILE]], [\n\n /(mobiistar touch LAI 512)/i // mobiistar touch LAI 512\n ], [[MODEL, 'Touch LAI 512'], [VENDOR, 'mobiistar'], [TYPE, MOBILE]], [\n\n /////////////\n // END TODO\n ///////////*/\n\n ],\n\n engine : [[\n\n /windows.+\\sedge\\/([\\w\\.]+)/i // EdgeHTML\n ], [VERSION, [NAME, 'EdgeHTML']], [\n\n /(presto)\\/([\\w\\.]+)/i, // Presto\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m\n /(khtml|tasman|links)[\\/\\s]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\n /(icab)[\\/\\s]([23]\\.[\\d\\.]+)/i // iCab\n ], [NAME, VERSION], [\n\n /rv\\:([\\w\\.]+).*(gecko)/i // Gecko\n ], [VERSION, NAME]\n ],\n\n os : [[\n\n // Windows based\n /microsoft\\s(windows)\\s(vista|xp)/i // Windows (iTunes)\n ], [NAME, VERSION], [\n /(windows)\\snt\\s6\\.2;\\s(arm)/i, // Windows RT\n /(windows\\sphone(?:\\sos)*)[\\s\\/]?([\\d\\.\\s]+\\w)*/i, // Windows Phone\n /(windows\\smobile|windows)[\\s\\/]?([ntce\\d\\.\\s]+\\w)/i\n ], [NAME, [VERSION, mapper.str, maps.os.windows.version]], [\n /(win(?=3|9|n)|win\\s9x\\s)([nt\\d\\.]+)/i\n ], [[NAME, 'Windows'], [VERSION, mapper.str, maps.os.windows.version]], [\n\n // Mobile/Embedded OS\n /\\((bb)(10);/i // BlackBerry 10\n ], [[NAME, 'BlackBerry'], VERSION], [\n /(blackberry)\\w*\\/?([\\w\\.]+)*/i, // Blackberry\n /(tizen)[\\/\\s]([\\w\\.]+)/i, // Tizen\n /(android|webos|palm\\sos|qnx|bada|rim\\stablet\\sos|meego|contiki)[\\/\\s-]?([\\w\\.]+)*/i,\n // Android/WebOS/Palm/QNX/Bada/RIM/MeeGo/Contiki\n /linux;.+(sailfish);/i // Sailfish OS\n ], [NAME, VERSION], [\n /(symbian\\s?os|symbos|s60(?=;))[\\/\\s-]?([\\w\\.]+)*/i // Symbian\n ], [[NAME, 'Symbian'], VERSION], [\n /\\((series40);/i // Series 40\n ], [NAME], [\n /mozilla.+\\(mobile;.+gecko.+firefox/i // Firefox OS\n ], [[NAME, 'Firefox OS'], VERSION], [\n\n // Console\n /(nintendo|playstation)\\s([wids34portablevu]+)/i, // Nintendo/Playstation\n\n // GNU/Linux based\n /(mint)[\\/\\s\\(]?(\\w+)*/i, // Mint\n /(mageia|vectorlinux)[;\\s]/i, // Mageia/VectorLinux\n /(joli|[kxln]?ubuntu|debian|[open]*suse|gentoo|(?=\\s)arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\\/\\s-]?(?!chrom)([\\w\\.-]+)*/i,\n // Joli/Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware\n // Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus\n /(hurd|linux)\\s?([\\w\\.]+)*/i, // Hurd/Linux\n /(gnu)\\s?([\\w\\.]+)*/i // GNU\n ], [NAME, VERSION], [\n\n /(cros)\\s[\\w]+\\s([\\w\\.]+\\w)/i // Chromium OS\n ], [[NAME, 'Chromium OS'], VERSION],[\n\n // Solaris\n /(sunos)\\s?([\\w\\.]+\\d)*/i // Solaris\n ], [[NAME, 'Solaris'], VERSION], [\n\n // BSD based\n /\\s([frentopc-]{0,4}bsd|dragonfly)\\s?([\\w\\.]+)*/i // FreeBSD/NetBSD/OpenBSD/PC-BSD/DragonFly\n ], [NAME, VERSION],[\n\n /(haiku)\\s(\\w+)/i // Haiku\n ], [NAME, VERSION],[\n\n /cfnetwork\\/.+darwin/i,\n /ip[honead]+(?:.*os\\s([\\w]+)\\slike\\smac|;\\sopera)/i // iOS\n ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n\n /(mac\\sos\\sx)\\s?([\\w\\s\\.]+\\w)*/i,\n /(macintosh|mac(?=_powerpc)\\s)/i // Mac OS\n ], [[NAME, 'Mac OS'], [VERSION, /_/g, '.']], [\n\n // Other\n /((?:open)?solaris)[\\/\\s-]?([\\w\\.]+)*/i, // Solaris\n /(aix)\\s((\\d)(?=\\.|\\)|\\s)[\\w\\.]*)*/i, // AIX\n /(plan\\s9|minix|beos|os\\/2|amigaos|morphos|risc\\sos|openvms)/i,\n // Plan9/Minix/BeOS/OS2/AmigaOS/MorphOS/RISCOS/OpenVMS\n /(unix)\\s?([\\w\\.]+)*/i // UNIX\n ], [NAME, VERSION]\n ]\n };\n\n\n /////////////////\n // Constructor\n ////////////////\n /*\n var Browser = function (name, version) {\n this[NAME] = name;\n this[VERSION] = version;\n };\n var CPU = function (arch) {\n this[ARCHITECTURE] = arch;\n };\n var Device = function (vendor, model, type) {\n this[VENDOR] = vendor;\n this[MODEL] = model;\n this[TYPE] = type;\n };\n var Engine = Browser;\n var OS = Browser;\n */\n var UAParser = function (uastring, extensions) {\n\n if (typeof uastring === 'object') {\n extensions = uastring;\n uastring = undefined;\n }\n\n if (!(this instanceof UAParser)) {\n return new UAParser(uastring, extensions).getResult();\n }\n\n var ua = uastring || ((window && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY);\n var rgxmap = extensions ? util.extend(regexes, extensions) : regexes;\n //var browser = new Browser();\n //var cpu = new CPU();\n //var device = new Device();\n //var engine = new Engine();\n //var os = new OS();\n\n this.getBrowser = function () {\n var browser = { name: undefined, version: undefined };\n mapper.rgx.call(browser, ua, rgxmap.browser);\n browser.major = util.major(browser.version); // deprecated\n return browser;\n };\n this.getCPU = function () {\n var cpu = { architecture: undefined };\n mapper.rgx.call(cpu, ua, rgxmap.cpu);\n return cpu;\n };\n this.getDevice = function () {\n var device = { vendor: undefined, model: undefined, type: undefined };\n mapper.rgx.call(device, ua, rgxmap.device);\n return device;\n };\n this.getEngine = function () {\n var engine = { name: undefined, version: undefined };\n mapper.rgx.call(engine, ua, rgxmap.engine);\n return engine;\n };\n this.getOS = function () {\n var os = { name: undefined, version: undefined };\n mapper.rgx.call(os, ua, rgxmap.os);\n return os;\n };\n this.getResult = function () {\n return {\n ua : this.getUA(),\n browser : this.getBrowser(),\n engine : this.getEngine(),\n os : this.getOS(),\n device : this.getDevice(),\n cpu : this.getCPU()\n };\n };\n this.getUA = function () {\n return ua;\n };\n this.setUA = function (uastring) {\n ua = uastring;\n //browser = new Browser();\n //cpu = new CPU();\n //device = new Device();\n //engine = new Engine();\n //os = new OS();\n return this;\n };\n return this;\n };\n\n UAParser.VERSION = LIBVERSION;\n UAParser.BROWSER = {\n NAME : NAME,\n MAJOR : MAJOR, // deprecated\n VERSION : VERSION\n };\n UAParser.CPU = {\n ARCHITECTURE : ARCHITECTURE\n };\n UAParser.DEVICE = {\n MODEL : MODEL,\n VENDOR : VENDOR,\n TYPE : TYPE,\n CONSOLE : CONSOLE,\n MOBILE : MOBILE,\n SMARTTV : SMARTTV,\n TABLET : TABLET,\n WEARABLE: WEARABLE,\n EMBEDDED: EMBEDDED\n };\n UAParser.ENGINE = {\n NAME : NAME,\n VERSION : VERSION\n };\n UAParser.OS = {\n NAME : NAME,\n VERSION : VERSION\n };\n //UAParser.Utils = util;\n\n ///////////\n // Export\n //////////\n\n\n // check js environment\n if (typeof(exports) !== UNDEF_TYPE) {\n // nodejs env\n if (typeof module !== UNDEF_TYPE && module.exports) {\n exports = module.exports = UAParser;\n }\n // TODO: test!!!!!!!!\n /*\n if (require && require.main === module && process) {\n // cli\n var jsonize = function (arr) {\n var res = [];\n for (var i in arr) {\n res.push(new UAParser(arr[i]).getResult());\n }\n process.stdout.write(JSON.stringify(res, null, 2) + '\\n');\n };\n if (process.stdin.isTTY) {\n // via args\n jsonize(process.argv.slice(2));\n } else {\n // via pipe\n var str = '';\n process.stdin.on('readable', function() {\n var read = process.stdin.read();\n if (read !== null) {\n str += read;\n }\n });\n process.stdin.on('end', function () {\n jsonize(str.replace(/\\n$/, '').split('\\n'));\n });\n }\n }\n */\n exports.UAParser = UAParser;\n } else {\n // requirejs env (optional)\n if (typeof(define) === FUNC_TYPE && define.amd) {\n define(function () {\n return UAParser;\n });\n } else if (window) {\n // browser env\n window.UAParser = UAParser;\n }\n }\n\n // jQuery/Zepto specific (optional)\n // Note:\n // In AMD env the global scope should be kept clean, but jQuery is an exception.\n // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\n // and we should catch that.\n var $ = window && (window.jQuery || window.Zepto);\n if (typeof $ !== UNDEF_TYPE) {\n var parser = new UAParser();\n $.ua = parser.getResult();\n $.ua.get = function () {\n return parser.getUA();\n };\n $.ua.set = function (uastring) {\n parser.setUA(uastring);\n var result = parser.getResult();\n for (var prop in result) {\n $.ua[prop] = result[prop];\n }\n };\n }\n\n})(typeof window === 'object' ? window : this);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/ua-parser-js/src/ua-parser.js\n// module id = GCDA\n// module chunks = 0","\nvar content = require(\"!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??ref--1-2!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/lib/loader.js??ref--1-4!./profile.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"sourceMap\":true,\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??ref--1-2!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/lib/loader.js??ref--1-4!./profile.scss\", function() {\n\t\tvar newContent = require(\"!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??ref--1-2!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/lib/loader.js??ref--1-4!./profile.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/profile/profile.scss\n// module id = MvmY\n// module chunks = 0","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--1-1!../../../../../../node_modules/postcss-loader/lib/index.js??ref--1-2!../../../../../../node_modules/resolve-url-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js??ref--1-4!./authenticator.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"sourceMap\":true,\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--1-1!../../../../../../node_modules/postcss-loader/lib/index.js??ref--1-2!../../../../../../node_modules/resolve-url-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js??ref--1-4!./authenticator.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--1-1!../../../../../../node_modules/postcss-loader/lib/index.js??ref--1-2!../../../../../../node_modules/resolve-url-loader/index.js!../../../../../../node_modules/sass-loader/lib/loader.js??ref--1-4!./authenticator.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/profile/sections/security/second-factor-options/authenticator.scss\n// module id = Xuzf\n// module chunks = 0","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(true);\n// imports\n\n\n// module\nexports.push([module.id, \".profile .logo {\\n height: 60px;\\n margin: 0 auto;\\n}\\n\\n.profile .card {\\n max-width: 720px;\\n}\\n\\n.profile .card.main-card {\\n margin-top: 50px;\\n}\\n\\n.profile .row {\\n margin: 15px 0;\\n}\\n\\n.profile .row > div {\\n margin: 5px 0;\\n}\\n\\n.profile .text-small {\\n font-size: .75em;\\n}\\n\\n.profile .text-tiny {\\n font-size: .3em;\\n}\\n\\n.profile .two-factor-option {\\n width: 40px;\\n height: 40px;\\n background-color: #EEE;\\n display: -webkit-box;\\n display: -ms-flexbox;\\n display: flex;\\n -webkit-box-align: center;\\n -ms-flex-align: center;\\n align-items: center;\\n -webkit-box-pack: center;\\n -ms-flex-pack: center;\\n justify-content: center;\\n}\\n\\n.profile .two-factor-option span {\\n font-size: 18px;\\n max-width: 50%;\\n}\\n\\n.profile .list-group-item-action {\\n color: #212529;\\n}\\n\\n.profile-footer {\\n display: none;\\n}\\n\\n\", \"\", {\"version\":3,\"sources\":[\"C:/BuildAgent/work/6539509c47328133/src/Axxess.Identity.Website/src/pages/profile/C:/BuildAgent/work/6539509c47328133/src/Axxess.Identity.Website/src/pages/profile/C:/BuildAgent/work/6539509c47328133/src/Axxess.Identity.Website/src/pages/profile/profile.scss\",\"C:/BuildAgent/work/6539509c47328133/src/Axxess.Identity.Website/src/pages/profile/C:/BuildAgent/work/6539509c47328133/src/Axxess.Identity.Website/profile.scss\"],\"names\":[],\"mappings\":\"AACI;EACI,aAAA;EACA,eAAA;CCAP;;ADHD;EAMQ,iBAAA;CCCP;;ADAO;EACI,iBAAA;CCGX;;ADXD;EAYQ,eAAA;CCGP;;ADFO;EACI,cAAA;CCKX;;ADnBD;EAkBQ,iBAAA;CCKP;;ADvBD;EAqBQ,gBAAA;CCMP;;AD3BD;EAwBQ,YAAA;EACA,aAAA;EACA,uBAAA;EACA,qBAAA;EAAA,qBAAA;EAAA,cAAA;EACA,0BAAA;MAAA,uBAAA;UAAA,oBAAA;EACA,yBAAA;MAAA,sBAAA;UAAA,wBAAA;CCOP;;ADpCD;EA+BY,gBAAA;EACA,eAAA;CCSX;;ADzCD;EAoCQ,eAAA;CCSP;;ADLD;EACI,cAAA;CCQH\",\"file\":\"profile.scss\",\"sourcesContent\":[\".profile {\\r\\n .logo {\\r\\n height: 60px;\\r\\n margin: 0 auto;\\r\\n }\\r\\n .card {\\r\\n max-width: 720px;\\r\\n &.main-card {\\r\\n margin-top: 50px;\\r\\n }\\r\\n }\\r\\n .row {\\r\\n margin: 15px 0;\\r\\n > div {\\r\\n margin: 5px 0;\\r\\n }\\r\\n }\\r\\n .text-small {\\r\\n font-size: .75em;\\r\\n }\\r\\n .text-tiny {\\r\\n font-size: .3em;\\r\\n }\\r\\n .two-factor-option {\\r\\n width: 40px;\\r\\n height: 40px;\\r\\n background-color: #EEE;\\r\\n display: flex;\\r\\n align-items: center;\\r\\n justify-content: center;\\r\\n span {\\r\\n font-size: 18px;\\r\\n max-width: 50%;\\r\\n }\\r\\n }\\r\\n .list-group-item-action {\\r\\n color: #212529;\\r\\n }\\r\\n}\\r\\n\\r\\n.profile-footer {\\r\\n display: none;\\r\\n}\",\".profile .logo {\\n height: 60px;\\n margin: 0 auto;\\n}\\n\\n.profile .card {\\n max-width: 720px;\\n}\\n\\n.profile .card.main-card {\\n margin-top: 50px;\\n}\\n\\n.profile .row {\\n margin: 15px 0;\\n}\\n\\n.profile .row > div {\\n margin: 5px 0;\\n}\\n\\n.profile .text-small {\\n font-size: .75em;\\n}\\n\\n.profile .text-tiny {\\n font-size: .3em;\\n}\\n\\n.profile .two-factor-option {\\n width: 40px;\\n height: 40px;\\n background-color: #EEE;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n}\\n\\n.profile .two-factor-option span {\\n font-size: 18px;\\n max-width: 50%;\\n}\\n\\n.profile .list-group-item-action {\\n color: #212529;\\n}\\n\\n.profile-footer {\\n display: none;\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?{\"importLoaders\":1,\"sourceMap\":true}!./node_modules/postcss-loader/lib?{\"sourceMap\":true}!./node_modules/resolve-url-loader!./node_modules/sass-loader/lib/loader.js?{\"sourceMap\":true,\"includePaths\":[\"C://BuildAgent//work//6539509c47328133//src//Axxess.Identity.Website//node_modules\"]}!./src/pages/profile/profile.scss\n// module id = Yo+0\n// module chunks = 0","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(true);\n// imports\n\n\n// module\nexports.push([module.id, \"footer {\\n opacity: 0;\\n}\\n\\n\", \"\", {\"version\":3,\"sources\":[\"C:/BuildAgent/work/6539509c47328133/src/Axxess.Identity.Website/src/pages/signin-oidc/C:/BuildAgent/work/6539509c47328133/src/Axxess.Identity.Website/src/pages/signin-oidc/C:/BuildAgent/work/6539509c47328133/src/Axxess.Identity.Website/src/pages/signin-oidc/signin-oidc.scss\",\"C:/BuildAgent/work/6539509c47328133/src/Axxess.Identity.Website/src/pages/signin-oidc/C:/BuildAgent/work/6539509c47328133/src/Axxess.Identity.Website/signin-oidc.scss\"],\"names\":[],\"mappings\":\"AAAA;EACI,WAAA;CCCH\",\"file\":\"signin-oidc.scss\",\"sourcesContent\":[\"footer {\\r\\n opacity: 0;\\r\\n}\",\"footer {\\n opacity: 0;\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?{\"importLoaders\":1,\"sourceMap\":true}!./node_modules/postcss-loader/lib?{\"sourceMap\":true}!./node_modules/resolve-url-loader!./node_modules/sass-loader/lib/loader.js?{\"sourceMap\":true,\"includePaths\":[\"C://BuildAgent//work//6539509c47328133//src//Axxess.Identity.Website//node_modules\"]}!./src/pages/signin-oidc/signin-oidc.scss\n// module id = Z38V\n// module chunks = 0","import * as moment from \"moment\";\r\n\r\nexport class DateValueConverter {\r\n public toView(value: string, format: string = \"MM/DD/YYYY\") {\r\n return moment(value).format(format);\r\n }\r\n}\r\n\r\nexport class TimeAgoValueConverter {\r\n public toView(value: string) {\r\n return moment(value).fromNow();\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/date-converters.ts","// https://stackoverflow.com/a/35802605/2001966\r\n\r\nexport class GroupByValueConverter {\r\n public toView(array: any[], groupBy: string) {\r\n\r\n let groups: any = {};\r\n\r\n array.forEach((o) => {\r\n let group = o[groupBy];\r\n groups[group] = groups[group] || [];\r\n groups[group].push(o);\r\n });\r\n\r\n return Object.keys(groups).map((group) => {\r\n return {\r\n group,\r\n values: groups[group]\r\n };\r\n });\r\n }\r\n}\r\n\r\nexport class GroupByFuncValueConverter {\r\n public toView(array: any[], groupBy: (value: string) => string) {\r\n\r\n let map = new Map<string, any[]>();\r\n\r\n (array || []).forEach((o) => {\r\n let group = groupBy(o);\r\n map.set(group, map.get(group) || []);\r\n map.get(group).push(o);\r\n });\r\n\r\n return map;\r\n }\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/components/list-converters.ts","import { observable } from \"aurelia-binding\";\r\nimport { autoinject, bindable } from \"aurelia-framework\";\r\n\r\n// tslint:disable-next-line:no-var-requires\r\nconst QRCode = require(\"exports-loader?QRCode!qrcodejs/qrcode\");\r\n\r\n@autoinject()\r\nexport class QrCodeContainer {\r\n private readonly _element: HTMLElement;\r\n private readonly _qrCode: QRCode;\r\n\r\n @bindable()\r\n @observable()\r\n public code: string;\r\n\r\n public constructor(element: Element) {\r\n this._element = element as HTMLElement;\r\n this._qrCode = new QRCode(this._element, {useSVG: true});\r\n }\r\n\r\n public codeChanged(newValue: string, oldValue: string) {\r\n this._qrCode.makeCode(newValue);\r\n this._qrCode.makeImage();\r\n }\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/components/qr-code-container/qr-code-container.ts","module.exports = \"<template>\\r\\n</template>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/qr-code-container/qr-code-container.html\n// module id = components/qr-code-container/qr-code-container.html\n// module chunks = 0","/**\r\n * @fileoverview\r\n * - Using the 'QRCode for Javascript library'\r\n * - Fixed dataset of 'QRCode for Javascript library' for support full-spec.\r\n * - this library has no dependencies.\r\n * \r\n * @author davidshimjs\r\n * @see <a href=\"http://www.d-project.com/\" target=\"_blank\">http://www.d-project.com/</a>\r\n * @see <a href=\"http://jeromeetienne.github.com/jquery-qrcode/\" target=\"_blank\">http://jeromeetienne.github.com/jquery-qrcode/</a>\r\n */\r\nvar QRCode;\r\n\r\n(function () {\r\n\t//---------------------------------------------------------------------\r\n\t// QRCode for JavaScript\r\n\t//\r\n\t// Copyright (c) 2009 Kazuhiko Arase\r\n\t//\r\n\t// URL: http://www.d-project.com/\r\n\t//\r\n\t// Licensed under the MIT license:\r\n\t// http://www.opensource.org/licenses/mit-license.php\r\n\t//\r\n\t// The word \"QR Code\" is registered trademark of \r\n\t// DENSO WAVE INCORPORATED\r\n\t// http://www.denso-wave.com/qrcode/faqpatent-e.html\r\n\t//\r\n\t//---------------------------------------------------------------------\r\n\tfunction QR8bitByte(data) {\r\n\t\tthis.mode = QRMode.MODE_8BIT_BYTE;\r\n\t\tthis.data = data;\r\n\t\tthis.parsedData = [];\r\n\r\n\t\t// Added to support UTF-8 Characters\r\n\t\tfor (var i = 0, l = this.data.length; i < l; i++) {\r\n\t\t\tvar byteArray = [];\r\n\t\t\tvar code = this.data.charCodeAt(i);\r\n\r\n\t\t\tif (code > 0x10000) {\r\n\t\t\t\tbyteArray[0] = 0xF0 | ((code & 0x1C0000) >>> 18);\r\n\t\t\t\tbyteArray[1] = 0x80 | ((code & 0x3F000) >>> 12);\r\n\t\t\t\tbyteArray[2] = 0x80 | ((code & 0xFC0) >>> 6);\r\n\t\t\t\tbyteArray[3] = 0x80 | (code & 0x3F);\r\n\t\t\t} else if (code > 0x800) {\r\n\t\t\t\tbyteArray[0] = 0xE0 | ((code & 0xF000) >>> 12);\r\n\t\t\t\tbyteArray[1] = 0x80 | ((code & 0xFC0) >>> 6);\r\n\t\t\t\tbyteArray[2] = 0x80 | (code & 0x3F);\r\n\t\t\t} else if (code > 0x80) {\r\n\t\t\t\tbyteArray[0] = 0xC0 | ((code & 0x7C0) >>> 6);\r\n\t\t\t\tbyteArray[1] = 0x80 | (code & 0x3F);\r\n\t\t\t} else {\r\n\t\t\t\tbyteArray[0] = code;\r\n\t\t\t}\r\n\r\n\t\t\tthis.parsedData.push(byteArray);\r\n\t\t}\r\n\r\n\t\tthis.parsedData = Array.prototype.concat.apply([], this.parsedData);\r\n\r\n\t\tif (this.parsedData.length != this.data.length) {\r\n\t\t\tthis.parsedData.unshift(191);\r\n\t\t\tthis.parsedData.unshift(187);\r\n\t\t\tthis.parsedData.unshift(239);\r\n\t\t}\r\n\t}\r\n\r\n\tQR8bitByte.prototype = {\r\n\t\tgetLength: function (buffer) {\r\n\t\t\treturn this.parsedData.length;\r\n\t\t},\r\n\t\twrite: function (buffer) {\r\n\t\t\tfor (var i = 0, l = this.parsedData.length; i < l; i++) {\r\n\t\t\t\tbuffer.put(this.parsedData[i], 8);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tfunction QRCodeModel(typeNumber, errorCorrectLevel) {\r\n\t\tthis.typeNumber = typeNumber;\r\n\t\tthis.errorCorrectLevel = errorCorrectLevel;\r\n\t\tthis.modules = null;\r\n\t\tthis.moduleCount = 0;\r\n\t\tthis.dataCache = null;\r\n\t\tthis.dataList = [];\r\n\t}\r\n\r\n\tQRCodeModel.prototype={addData:function(data){var newData=new QR8bitByte(data);this.dataList.push(newData);this.dataCache=null;},isDark:function(row,col){if(row<0||this.moduleCount<=row||col<0||this.moduleCount<=col){throw new Error(row+\",\"+col);}\r\n\treturn this.modules[row][col];},getModuleCount:function(){return this.moduleCount;},make:function(){this.makeImpl(false,this.getBestMaskPattern());},makeImpl:function(test,maskPattern){this.moduleCount=this.typeNumber*4+17;this.modules=new Array(this.moduleCount);for(var row=0;row<this.moduleCount;row++){this.modules[row]=new Array(this.moduleCount);for(var col=0;col<this.moduleCount;col++){this.modules[row][col]=null;}}\r\n\tthis.setupPositionProbePattern(0,0);this.setupPositionProbePattern(this.moduleCount-7,0);this.setupPositionProbePattern(0,this.moduleCount-7);this.setupPositionAdjustPattern();this.setupTimingPattern();this.setupTypeInfo(test,maskPattern);if(this.typeNumber>=7){this.setupTypeNumber(test);}\r\n\tif(this.dataCache==null){this.dataCache=QRCodeModel.createData(this.typeNumber,this.errorCorrectLevel,this.dataList);}\r\n\tthis.mapData(this.dataCache,maskPattern);},setupPositionProbePattern:function(row,col){for(var r=-1;r<=7;r++){if(row+r<=-1||this.moduleCount<=row+r)continue;for(var c=-1;c<=7;c++){if(col+c<=-1||this.moduleCount<=col+c)continue;if((0<=r&&r<=6&&(c==0||c==6))||(0<=c&&c<=6&&(r==0||r==6))||(2<=r&&r<=4&&2<=c&&c<=4)){this.modules[row+r][col+c]=true;}else{this.modules[row+r][col+c]=false;}}}},getBestMaskPattern:function(){var minLostPoint=0;var pattern=0;for(var i=0;i<8;i++){this.makeImpl(true,i);var lostPoint=QRUtil.getLostPoint(this);if(i==0||minLostPoint>lostPoint){minLostPoint=lostPoint;pattern=i;}}\r\n\treturn pattern;},createMovieClip:function(target_mc,instance_name,depth){var qr_mc=target_mc.createEmptyMovieClip(instance_name,depth);var cs=1;this.make();for(var row=0;row<this.modules.length;row++){var y=row*cs;for(var col=0;col<this.modules[row].length;col++){var x=col*cs;var dark=this.modules[row][col];if(dark){qr_mc.beginFill(0,100);qr_mc.moveTo(x,y);qr_mc.lineTo(x+cs,y);qr_mc.lineTo(x+cs,y+cs);qr_mc.lineTo(x,y+cs);qr_mc.endFill();}}}\r\n\treturn qr_mc;},setupTimingPattern:function(){for(var r=8;r<this.moduleCount-8;r++){if(this.modules[r][6]!=null){continue;}\r\n\tthis.modules[r][6]=(r%2==0);}\r\n\tfor(var c=8;c<this.moduleCount-8;c++){if(this.modules[6][c]!=null){continue;}\r\n\tthis.modules[6][c]=(c%2==0);}},setupPositionAdjustPattern:function(){var pos=QRUtil.getPatternPosition(this.typeNumber);for(var i=0;i<pos.length;i++){for(var j=0;j<pos.length;j++){var row=pos[i];var col=pos[j];if(this.modules[row][col]!=null){continue;}\r\n\tfor(var r=-2;r<=2;r++){for(var c=-2;c<=2;c++){if(r==-2||r==2||c==-2||c==2||(r==0&&c==0)){this.modules[row+r][col+c]=true;}else{this.modules[row+r][col+c]=false;}}}}}},setupTypeNumber:function(test){var bits=QRUtil.getBCHTypeNumber(this.typeNumber);for(var i=0;i<18;i++){var mod=(!test&&((bits>>i)&1)==1);this.modules[Math.floor(i/3)][i%3+this.moduleCount-8-3]=mod;}\r\n\tfor(var i=0;i<18;i++){var mod=(!test&&((bits>>i)&1)==1);this.modules[i%3+this.moduleCount-8-3][Math.floor(i/3)]=mod;}},setupTypeInfo:function(test,maskPattern){var data=(this.errorCorrectLevel<<3)|maskPattern;var bits=QRUtil.getBCHTypeInfo(data);for(var i=0;i<15;i++){var mod=(!test&&((bits>>i)&1)==1);if(i<6){this.modules[i][8]=mod;}else if(i<8){this.modules[i+1][8]=mod;}else{this.modules[this.moduleCount-15+i][8]=mod;}}\r\n\tfor(var i=0;i<15;i++){var mod=(!test&&((bits>>i)&1)==1);if(i<8){this.modules[8][this.moduleCount-i-1]=mod;}else if(i<9){this.modules[8][15-i-1+1]=mod;}else{this.modules[8][15-i-1]=mod;}}\r\n\tthis.modules[this.moduleCount-8][8]=(!test);},mapData:function(data,maskPattern){var inc=-1;var row=this.moduleCount-1;var bitIndex=7;var byteIndex=0;for(var col=this.moduleCount-1;col>0;col-=2){if(col==6)col--;while(true){for(var c=0;c<2;c++){if(this.modules[row][col-c]==null){var dark=false;if(byteIndex<data.length){dark=(((data[byteIndex]>>>bitIndex)&1)==1);}\r\n\tvar mask=QRUtil.getMask(maskPattern,row,col-c);if(mask){dark=!dark;}\r\n\tthis.modules[row][col-c]=dark;bitIndex--;if(bitIndex==-1){byteIndex++;bitIndex=7;}}}\r\n\trow+=inc;if(row<0||this.moduleCount<=row){row-=inc;inc=-inc;break;}}}}};QRCodeModel.PAD0=0xEC;QRCodeModel.PAD1=0x11;QRCodeModel.createData=function(typeNumber,errorCorrectLevel,dataList){var rsBlocks=QRRSBlock.getRSBlocks(typeNumber,errorCorrectLevel);var buffer=new QRBitBuffer();for(var i=0;i<dataList.length;i++){var data=dataList[i];buffer.put(data.mode,4);buffer.put(data.getLength(),QRUtil.getLengthInBits(data.mode,typeNumber));data.write(buffer);}\r\n\tvar totalDataCount=0;for(var i=0;i<rsBlocks.length;i++){totalDataCount+=rsBlocks[i].dataCount;}\r\n\tif(buffer.getLengthInBits()>totalDataCount*8){throw new Error(\"code length overflow. (\"\r\n\t+buffer.getLengthInBits()\r\n\t+\">\"\r\n\t+totalDataCount*8\r\n\t+\")\");}\r\n\tif(buffer.getLengthInBits()+4<=totalDataCount*8){buffer.put(0,4);}\r\n\twhile(buffer.getLengthInBits()%8!=0){buffer.putBit(false);}\r\n\twhile(true){if(buffer.getLengthInBits()>=totalDataCount*8){break;}\r\n\tbuffer.put(QRCodeModel.PAD0,8);if(buffer.getLengthInBits()>=totalDataCount*8){break;}\r\n\tbuffer.put(QRCodeModel.PAD1,8);}\r\n\treturn QRCodeModel.createBytes(buffer,rsBlocks);};QRCodeModel.createBytes=function(buffer,rsBlocks){var offset=0;var maxDcCount=0;var maxEcCount=0;var dcdata=new Array(rsBlocks.length);var ecdata=new Array(rsBlocks.length);for(var r=0;r<rsBlocks.length;r++){var dcCount=rsBlocks[r].dataCount;var ecCount=rsBlocks[r].totalCount-dcCount;maxDcCount=Math.max(maxDcCount,dcCount);maxEcCount=Math.max(maxEcCount,ecCount);dcdata[r]=new Array(dcCount);for(var i=0;i<dcdata[r].length;i++){dcdata[r][i]=0xff&buffer.buffer[i+offset];}\r\n\toffset+=dcCount;var rsPoly=QRUtil.getErrorCorrectPolynomial(ecCount);var rawPoly=new QRPolynomial(dcdata[r],rsPoly.getLength()-1);var modPoly=rawPoly.mod(rsPoly);ecdata[r]=new Array(rsPoly.getLength()-1);for(var i=0;i<ecdata[r].length;i++){var modIndex=i+modPoly.getLength()-ecdata[r].length;ecdata[r][i]=(modIndex>=0)?modPoly.get(modIndex):0;}}\r\n\tvar totalCodeCount=0;for(var i=0;i<rsBlocks.length;i++){totalCodeCount+=rsBlocks[i].totalCount;}\r\n\tvar data=new Array(totalCodeCount);var index=0;for(var i=0;i<maxDcCount;i++){for(var r=0;r<rsBlocks.length;r++){if(i<dcdata[r].length){data[index++]=dcdata[r][i];}}}\r\n\tfor(var i=0;i<maxEcCount;i++){for(var r=0;r<rsBlocks.length;r++){if(i<ecdata[r].length){data[index++]=ecdata[r][i];}}}\r\n\treturn data;};var QRMode={MODE_NUMBER:1<<0,MODE_ALPHA_NUM:1<<1,MODE_8BIT_BYTE:1<<2,MODE_KANJI:1<<3};var QRErrorCorrectLevel={L:1,M:0,Q:3,H:2};var QRMaskPattern={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var QRUtil={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:(1<<10)|(1<<8)|(1<<5)|(1<<4)|(1<<2)|(1<<1)|(1<<0),G18:(1<<12)|(1<<11)|(1<<10)|(1<<9)|(1<<8)|(1<<5)|(1<<2)|(1<<0),G15_MASK:(1<<14)|(1<<12)|(1<<10)|(1<<4)|(1<<1),getBCHTypeInfo:function(data){var d=data<<10;while(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G15)>=0){d^=(QRUtil.G15<<(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G15)));}\r\n\treturn((data<<10)|d)^QRUtil.G15_MASK;},getBCHTypeNumber:function(data){var d=data<<12;while(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G18)>=0){d^=(QRUtil.G18<<(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G18)));}\r\n\treturn(data<<12)|d;},getBCHDigit:function(data){var digit=0;while(data!=0){digit++;data>>>=1;}\r\n\treturn digit;},getPatternPosition:function(typeNumber){return QRUtil.PATTERN_POSITION_TABLE[typeNumber-1];},getMask:function(maskPattern,i,j){switch(maskPattern){case QRMaskPattern.PATTERN000:return(i+j)%2==0;case QRMaskPattern.PATTERN001:return i%2==0;case QRMaskPattern.PATTERN010:return j%3==0;case QRMaskPattern.PATTERN011:return(i+j)%3==0;case QRMaskPattern.PATTERN100:return(Math.floor(i/2)+Math.floor(j/3))%2==0;case QRMaskPattern.PATTERN101:return(i*j)%2+(i*j)%3==0;case QRMaskPattern.PATTERN110:return((i*j)%2+(i*j)%3)%2==0;case QRMaskPattern.PATTERN111:return((i*j)%3+(i+j)%2)%2==0;default:throw new Error(\"bad maskPattern:\"+maskPattern);}},getErrorCorrectPolynomial:function(errorCorrectLength){var a=new QRPolynomial([1],0);for(var i=0;i<errorCorrectLength;i++){a=a.multiply(new QRPolynomial([1,QRMath.gexp(i)],0));}\r\n\treturn a;},getLengthInBits:function(mode,type){if(1<=type&&type<10){switch(mode){case QRMode.MODE_NUMBER:return 10;case QRMode.MODE_ALPHA_NUM:return 9;case QRMode.MODE_8BIT_BYTE:return 8;case QRMode.MODE_KANJI:return 8;default:throw new Error(\"mode:\"+mode);}}else if(type<27){switch(mode){case QRMode.MODE_NUMBER:return 12;case QRMode.MODE_ALPHA_NUM:return 11;case QRMode.MODE_8BIT_BYTE:return 16;case QRMode.MODE_KANJI:return 10;default:throw new Error(\"mode:\"+mode);}}else if(type<41){switch(mode){case QRMode.MODE_NUMBER:return 14;case QRMode.MODE_ALPHA_NUM:return 13;case QRMode.MODE_8BIT_BYTE:return 16;case QRMode.MODE_KANJI:return 12;default:throw new Error(\"mode:\"+mode);}}else{throw new Error(\"type:\"+type);}},getLostPoint:function(qrCode){var moduleCount=qrCode.getModuleCount();var lostPoint=0;for(var row=0;row<moduleCount;row++){for(var col=0;col<moduleCount;col++){var sameCount=0;var dark=qrCode.isDark(row,col);for(var r=-1;r<=1;r++){if(row+r<0||moduleCount<=row+r){continue;}\r\n\tfor(var c=-1;c<=1;c++){if(col+c<0||moduleCount<=col+c){continue;}\r\n\tif(r==0&&c==0){continue;}\r\n\tif(dark==qrCode.isDark(row+r,col+c)){sameCount++;}}}\r\n\tif(sameCount>5){lostPoint+=(3+sameCount-5);}}}\r\n\tfor(var row=0;row<moduleCount-1;row++){for(var col=0;col<moduleCount-1;col++){var count=0;if(qrCode.isDark(row,col))count++;if(qrCode.isDark(row+1,col))count++;if(qrCode.isDark(row,col+1))count++;if(qrCode.isDark(row+1,col+1))count++;if(count==0||count==4){lostPoint+=3;}}}\r\n\tfor(var row=0;row<moduleCount;row++){for(var col=0;col<moduleCount-6;col++){if(qrCode.isDark(row,col)&&!qrCode.isDark(row,col+1)&&qrCode.isDark(row,col+2)&&qrCode.isDark(row,col+3)&&qrCode.isDark(row,col+4)&&!qrCode.isDark(row,col+5)&&qrCode.isDark(row,col+6)){lostPoint+=40;}}}\r\n\tfor(var col=0;col<moduleCount;col++){for(var row=0;row<moduleCount-6;row++){if(qrCode.isDark(row,col)&&!qrCode.isDark(row+1,col)&&qrCode.isDark(row+2,col)&&qrCode.isDark(row+3,col)&&qrCode.isDark(row+4,col)&&!qrCode.isDark(row+5,col)&&qrCode.isDark(row+6,col)){lostPoint+=40;}}}\r\n\tvar darkCount=0;for(var col=0;col<moduleCount;col++){for(var row=0;row<moduleCount;row++){if(qrCode.isDark(row,col)){darkCount++;}}}\r\n\tvar ratio=Math.abs(100*darkCount/moduleCount/moduleCount-50)/5;lostPoint+=ratio*10;return lostPoint;}};var QRMath={glog:function(n){if(n<1){throw new Error(\"glog(\"+n+\")\");}\r\n\treturn QRMath.LOG_TABLE[n];},gexp:function(n){while(n<0){n+=255;}\r\n\twhile(n>=256){n-=255;}\r\n\treturn QRMath.EXP_TABLE[n];},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)};for(var i=0;i<8;i++){QRMath.EXP_TABLE[i]=1<<i;}\r\n\tfor(var i=8;i<256;i++){QRMath.EXP_TABLE[i]=QRMath.EXP_TABLE[i-4]^QRMath.EXP_TABLE[i-5]^QRMath.EXP_TABLE[i-6]^QRMath.EXP_TABLE[i-8];}\r\n\tfor(var i=0;i<255;i++){QRMath.LOG_TABLE[QRMath.EXP_TABLE[i]]=i;}\r\n\tfunction QRPolynomial(num,shift){if(num.length==undefined){throw new Error(num.length+\"/\"+shift);}\r\n\tvar offset=0;while(offset<num.length&&num[offset]==0){offset++;}\r\n\tthis.num=new Array(num.length-offset+shift);for(var i=0;i<num.length-offset;i++){this.num[i]=num[i+offset];}}\r\n\tQRPolynomial.prototype={get:function(index){return this.num[index];},getLength:function(){return this.num.length;},multiply:function(e){var num=new Array(this.getLength()+e.getLength()-1);for(var i=0;i<this.getLength();i++){for(var j=0;j<e.getLength();j++){num[i+j]^=QRMath.gexp(QRMath.glog(this.get(i))+QRMath.glog(e.get(j)));}}\r\n\treturn new QRPolynomial(num,0);},mod:function(e){if(this.getLength()-e.getLength()<0){return this;}\r\n\tvar ratio=QRMath.glog(this.get(0))-QRMath.glog(e.get(0));var num=new Array(this.getLength());for(var i=0;i<this.getLength();i++){num[i]=this.get(i);}\r\n\tfor(var i=0;i<e.getLength();i++){num[i]^=QRMath.gexp(QRMath.glog(e.get(i))+ratio);}\r\n\treturn new QRPolynomial(num,0).mod(e);}};function QRRSBlock(totalCount,dataCount){this.totalCount=totalCount;this.dataCount=dataCount;}\r\n\tQRRSBlock.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]];QRRSBlock.getRSBlocks=function(typeNumber,errorCorrectLevel){var rsBlock=QRRSBlock.getRsBlockTable(typeNumber,errorCorrectLevel);if(rsBlock==undefined){throw new Error(\"bad rs block @ typeNumber:\"+typeNumber+\"/errorCorrectLevel:\"+errorCorrectLevel);}\r\n\tvar length=rsBlock.length/3;var list=[];for(var i=0;i<length;i++){var count=rsBlock[i*3+0];var totalCount=rsBlock[i*3+1];var dataCount=rsBlock[i*3+2];for(var j=0;j<count;j++){list.push(new QRRSBlock(totalCount,dataCount));}}\r\n\treturn list;};QRRSBlock.getRsBlockTable=function(typeNumber,errorCorrectLevel){switch(errorCorrectLevel){case QRErrorCorrectLevel.L:return QRRSBlock.RS_BLOCK_TABLE[(typeNumber-1)*4+0];case QRErrorCorrectLevel.M:return QRRSBlock.RS_BLOCK_TABLE[(typeNumber-1)*4+1];case QRErrorCorrectLevel.Q:return QRRSBlock.RS_BLOCK_TABLE[(typeNumber-1)*4+2];case QRErrorCorrectLevel.H:return QRRSBlock.RS_BLOCK_TABLE[(typeNumber-1)*4+3];default:return undefined;}};function QRBitBuffer(){this.buffer=[];this.length=0;}\r\n\tQRBitBuffer.prototype={get:function(index){var bufIndex=Math.floor(index/8);return((this.buffer[bufIndex]>>>(7-index%8))&1)==1;},put:function(num,length){for(var i=0;i<length;i++){this.putBit(((num>>>(length-i-1))&1)==1);}},getLengthInBits:function(){return this.length;},putBit:function(bit){var bufIndex=Math.floor(this.length/8);if(this.buffer.length<=bufIndex){this.buffer.push(0);}\r\n\tif(bit){this.buffer[bufIndex]|=(0x80>>>(this.length%8));}\r\n\tthis.length++;}};var QRCodeLimitLength=[[17,14,11,7],[32,26,20,14],[53,42,32,24],[78,62,46,34],[106,84,60,44],[134,106,74,58],[154,122,86,64],[192,152,108,84],[230,180,130,98],[271,213,151,119],[321,251,177,137],[367,287,203,155],[425,331,241,177],[458,362,258,194],[520,412,292,220],[586,450,322,250],[644,504,364,280],[718,560,394,310],[792,624,442,338],[858,666,482,382],[929,711,509,403],[1003,779,565,439],[1091,857,611,461],[1171,911,661,511],[1273,997,715,535],[1367,1059,751,593],[1465,1125,805,625],[1528,1190,868,658],[1628,1264,908,698],[1732,1370,982,742],[1840,1452,1030,790],[1952,1538,1112,842],[2068,1628,1168,898],[2188,1722,1228,958],[2303,1809,1283,983],[2431,1911,1351,1051],[2563,1989,1423,1093],[2699,2099,1499,1139],[2809,2213,1579,1219],[2953,2331,1663,1273]];\r\n\t\r\n\tfunction _isSupportCanvas() {\r\n\t\treturn typeof CanvasRenderingContext2D != \"undefined\";\r\n\t}\r\n\t\r\n\t// android 2.x doesn't support Data-URI spec\r\n\tfunction _getAndroid() {\r\n\t\tvar android = false;\r\n\t\tvar sAgent = navigator.userAgent;\r\n\t\t\r\n\t\tif (/android/i.test(sAgent)) { // android\r\n\t\t\tandroid = true;\r\n\t\t\tvar aMat = sAgent.toString().match(/android ([0-9]\\.[0-9])/i);\r\n\t\t\t\r\n\t\t\tif (aMat && aMat[1]) {\r\n\t\t\t\tandroid = parseFloat(aMat[1]);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn android;\r\n\t}\r\n\t\r\n\tvar svgDrawer = (function() {\r\n\r\n\t\tvar Drawing = function (el, htOption) {\r\n\t\t\tthis._el = el;\r\n\t\t\tthis._htOption = htOption;\r\n\t\t};\r\n\r\n\t\tDrawing.prototype.draw = function (oQRCode) {\r\n\t\t\tvar _htOption = this._htOption;\r\n\t\t\tvar _el = this._el;\r\n\t\t\tvar nCount = oQRCode.getModuleCount();\r\n\t\t\tvar nWidth = Math.floor(_htOption.width / nCount);\r\n\t\t\tvar nHeight = Math.floor(_htOption.height / nCount);\r\n\r\n\t\t\tthis.clear();\r\n\r\n\t\t\tfunction makeSVG(tag, attrs) {\r\n\t\t\t\tvar el = document.createElementNS('http://www.w3.org/2000/svg', tag);\r\n\t\t\t\tfor (var k in attrs)\r\n\t\t\t\t\tif (attrs.hasOwnProperty(k)) el.setAttribute(k, attrs[k]);\r\n\t\t\t\treturn el;\r\n\t\t\t}\r\n\r\n\t\t\tvar svg = makeSVG(\"svg\" , {'viewBox': '0 0 ' + String(nCount) + \" \" + String(nCount), 'width': '100%', 'height': '100%', 'fill': _htOption.colorLight});\r\n\t\t\tsvg.setAttributeNS(\"http://www.w3.org/2000/xmlns/\", \"xmlns:xlink\", \"http://www.w3.org/1999/xlink\");\r\n\t\t\t_el.appendChild(svg);\r\n\r\n\t\t\tsvg.appendChild(makeSVG(\"rect\", {\"fill\": _htOption.colorLight, \"width\": \"100%\", \"height\": \"100%\"}));\r\n\t\t\tsvg.appendChild(makeSVG(\"rect\", {\"fill\": _htOption.colorDark, \"width\": \"1\", \"height\": \"1\", \"id\": \"template\"}));\r\n\r\n\t\t\tfor (var row = 0; row < nCount; row++) {\r\n\t\t\t\tfor (var col = 0; col < nCount; col++) {\r\n\t\t\t\t\tif (oQRCode.isDark(row, col)) {\r\n\t\t\t\t\t\tvar child = makeSVG(\"use\", {\"x\": String(col), \"y\": String(row)});\r\n\t\t\t\t\t\tchild.setAttributeNS(\"http://www.w3.org/1999/xlink\", \"href\", \"#template\")\r\n\t\t\t\t\t\tsvg.appendChild(child);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t\tDrawing.prototype.clear = function () {\r\n\t\t\twhile (this._el.hasChildNodes())\r\n\t\t\t\tthis._el.removeChild(this._el.lastChild);\r\n\t\t};\r\n\t\treturn Drawing;\r\n\t})();\r\n\r\n\tvar useSVG = document.documentElement.tagName.toLowerCase() === \"svg\";\r\n\r\n\t// Drawing in DOM by using Table tag\r\n\tvar Drawing = useSVG ? svgDrawer : !_isSupportCanvas() ? (function () {\r\n\t\tvar Drawing = function (el, htOption) {\r\n\t\t\tthis._el = el;\r\n\t\t\tthis._htOption = htOption;\r\n\t\t};\r\n\t\t\t\r\n\t\t/**\r\n\t\t * Draw the QRCode\r\n\t\t * \r\n\t\t * @param {QRCode} oQRCode\r\n\t\t */\r\n\t\tDrawing.prototype.draw = function (oQRCode) {\r\n var _htOption = this._htOption;\r\n var _el = this._el;\r\n\t\t\tvar nCount = oQRCode.getModuleCount();\r\n\t\t\tvar nWidth = Math.floor(_htOption.width / nCount);\r\n\t\t\tvar nHeight = Math.floor(_htOption.height / nCount);\r\n\t\t\tvar aHTML = ['<table style=\"border:0;border-collapse:collapse;\">'];\r\n\t\t\t\r\n\t\t\tfor (var row = 0; row < nCount; row++) {\r\n\t\t\t\taHTML.push('<tr>');\r\n\t\t\t\t\r\n\t\t\t\tfor (var col = 0; col < nCount; col++) {\r\n\t\t\t\t\taHTML.push('<td style=\"border:0;border-collapse:collapse;padding:0;margin:0;width:' + nWidth + 'px;height:' + nHeight + 'px;background-color:' + (oQRCode.isDark(row, col) ? _htOption.colorDark : _htOption.colorLight) + ';\"></td>');\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\taHTML.push('</tr>');\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\taHTML.push('</table>');\r\n\t\t\t_el.innerHTML = aHTML.join('');\r\n\t\t\t\r\n\t\t\t// Fix the margin values as real size.\r\n\t\t\tvar elTable = _el.childNodes[0];\r\n\t\t\tvar nLeftMarginTable = (_htOption.width - elTable.offsetWidth) / 2;\r\n\t\t\tvar nTopMarginTable = (_htOption.height - elTable.offsetHeight) / 2;\r\n\t\t\t\r\n\t\t\tif (nLeftMarginTable > 0 && nTopMarginTable > 0) {\r\n\t\t\t\telTable.style.margin = nTopMarginTable + \"px \" + nLeftMarginTable + \"px\";\t\r\n\t\t\t}\r\n\t\t};\r\n\t\t\r\n\t\t/**\r\n\t\t * Clear the QRCode\r\n\t\t */\r\n\t\tDrawing.prototype.clear = function () {\r\n\t\t\tthis._el.innerHTML = '';\r\n\t\t};\r\n\t\t\r\n\t\treturn Drawing;\r\n\t})() : (function () { // Drawing in Canvas\r\n\t\tfunction _onMakeImage() {\r\n\t\t\tthis._elImage.src = this._elCanvas.toDataURL(\"image/png\");\r\n\t\t\tthis._elImage.style.display = \"block\";\r\n\t\t\tthis._elCanvas.style.display = \"none\";\t\t\t\r\n\t\t}\r\n\t\t\r\n\t\t// Android 2.1 bug workaround\r\n\t\t// http://code.google.com/p/android/issues/detail?id=5141\r\n\t\tif (this._android && this._android <= 2.1) {\r\n\t \tvar factor = 1 / window.devicePixelRatio;\r\n\t var drawImage = CanvasRenderingContext2D.prototype.drawImage; \r\n\t \tCanvasRenderingContext2D.prototype.drawImage = function (image, sx, sy, sw, sh, dx, dy, dw, dh) {\r\n\t \t\tif ((\"nodeName\" in image) && /img/i.test(image.nodeName)) {\r\n\t\t \tfor (var i = arguments.length - 1; i >= 1; i--) {\r\n\t\t \targuments[i] = arguments[i] * factor;\r\n\t\t \t}\r\n\t \t\t} else if (typeof dw == \"undefined\") {\r\n\t \t\t\targuments[1] *= factor;\r\n\t \t\t\targuments[2] *= factor;\r\n\t \t\t\targuments[3] *= factor;\r\n\t \t\t\targuments[4] *= factor;\r\n\t \t\t}\r\n\t \t\t\r\n\t \tdrawImage.apply(this, arguments); \r\n\t \t};\r\n\t\t}\r\n\t\t\r\n\t\t/**\r\n\t\t * Check whether the user's browser supports Data URI or not\r\n\t\t * \r\n\t\t * @private\r\n\t\t * @param {Function} fSuccess Occurs if it supports Data URI\r\n\t\t * @param {Function} fFail Occurs if it doesn't support Data URI\r\n\t\t */\r\n\t\tfunction _safeSetDataURI(fSuccess, fFail) {\r\n var self = this;\r\n self._fFail = fFail;\r\n self._fSuccess = fSuccess;\r\n\r\n // Check it just once\r\n if (self._bSupportDataURI === null) {\r\n var el = document.createElement(\"img\");\r\n var fOnError = function() {\r\n self._bSupportDataURI = false;\r\n\r\n if (self._fFail) {\r\n self._fFail.call(self);\r\n }\r\n };\r\n var fOnSuccess = function() {\r\n self._bSupportDataURI = true;\r\n\r\n if (self._fSuccess) {\r\n self._fSuccess.call(self);\r\n }\r\n };\r\n\r\n el.onabort = fOnError;\r\n el.onerror = fOnError;\r\n el.onload = fOnSuccess;\r\n el.src = \"data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==\"; // the Image contains 1px data.\r\n return;\r\n } else if (self._bSupportDataURI === true && self._fSuccess) {\r\n self._fSuccess.call(self);\r\n } else if (self._bSupportDataURI === false && self._fFail) {\r\n self._fFail.call(self);\r\n }\r\n\t\t};\r\n\t\t\r\n\t\t/**\r\n\t\t * Drawing QRCode by using canvas\r\n\t\t * \r\n\t\t * @constructor\r\n\t\t * @param {HTMLElement} el\r\n\t\t * @param {Object} htOption QRCode Options \r\n\t\t */\r\n\t\tvar Drawing = function (el, htOption) {\r\n \t\tthis._bIsPainted = false;\r\n \t\tthis._android = _getAndroid();\r\n\t\t\r\n\t\t\tthis._htOption = htOption;\r\n\t\t\tthis._elCanvas = document.createElement(\"canvas\");\r\n\t\t\tthis._elCanvas.width = htOption.width;\r\n\t\t\tthis._elCanvas.height = htOption.height;\r\n\t\t\tel.appendChild(this._elCanvas);\r\n\t\t\tthis._el = el;\r\n\t\t\tthis._oContext = this._elCanvas.getContext(\"2d\");\r\n\t\t\tthis._bIsPainted = false;\r\n\t\t\tthis._elImage = document.createElement(\"img\");\r\n\t\t\tthis._elImage.alt = \"Scan me!\";\r\n\t\t\tthis._elImage.style.display = \"none\";\r\n\t\t\tthis._el.appendChild(this._elImage);\r\n\t\t\tthis._bSupportDataURI = null;\r\n\t\t};\r\n\t\t\t\r\n\t\t/**\r\n\t\t * Draw the QRCode\r\n\t\t * \r\n\t\t * @param {QRCode} oQRCode \r\n\t\t */\r\n\t\tDrawing.prototype.draw = function (oQRCode) {\r\n var _elImage = this._elImage;\r\n var _oContext = this._oContext;\r\n var _htOption = this._htOption;\r\n \r\n\t\t\tvar nCount = oQRCode.getModuleCount();\r\n\t\t\tvar nWidth = _htOption.width / nCount;\r\n\t\t\tvar nHeight = _htOption.height / nCount;\r\n\t\t\tvar nRoundedWidth = Math.round(nWidth);\r\n\t\t\tvar nRoundedHeight = Math.round(nHeight);\r\n\r\n\t\t\t_elImage.style.display = \"none\";\r\n\t\t\tthis.clear();\r\n\t\t\t\r\n\t\t\tfor (var row = 0; row < nCount; row++) {\r\n\t\t\t\tfor (var col = 0; col < nCount; col++) {\r\n\t\t\t\t\tvar bIsDark = oQRCode.isDark(row, col);\r\n\t\t\t\t\tvar nLeft = col * nWidth;\r\n\t\t\t\t\tvar nTop = row * nHeight;\r\n\t\t\t\t\t_oContext.strokeStyle = bIsDark ? _htOption.colorDark : _htOption.colorLight;\r\n\t\t\t\t\t_oContext.lineWidth = 1;\r\n\t\t\t\t\t_oContext.fillStyle = bIsDark ? _htOption.colorDark : _htOption.colorLight;\t\t\t\t\t\r\n\t\t\t\t\t_oContext.fillRect(nLeft, nTop, nWidth, nHeight);\r\n\t\t\t\t\t\r\n\t\t\t\t\t// 안티 앨리어싱 방지 처리\r\n\t\t\t\t\t_oContext.strokeRect(\r\n\t\t\t\t\t\tMath.floor(nLeft) + 0.5,\r\n\t\t\t\t\t\tMath.floor(nTop) + 0.5,\r\n\t\t\t\t\t\tnRoundedWidth,\r\n\t\t\t\t\t\tnRoundedHeight\r\n\t\t\t\t\t);\r\n\t\t\t\t\t\r\n\t\t\t\t\t_oContext.strokeRect(\r\n\t\t\t\t\t\tMath.ceil(nLeft) - 0.5,\r\n\t\t\t\t\t\tMath.ceil(nTop) - 0.5,\r\n\t\t\t\t\t\tnRoundedWidth,\r\n\t\t\t\t\t\tnRoundedHeight\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis._bIsPainted = true;\r\n\t\t};\r\n\t\t\t\r\n\t\t/**\r\n\t\t * Make the image from Canvas if the browser supports Data URI.\r\n\t\t */\r\n\t\tDrawing.prototype.makeImage = function () {\r\n\t\t\tif (this._bIsPainted) {\r\n\t\t\t\t_safeSetDataURI.call(this, _onMakeImage);\r\n\t\t\t}\r\n\t\t};\r\n\t\t\t\r\n\t\t/**\r\n\t\t * Return whether the QRCode is painted or not\r\n\t\t * \r\n\t\t * @return {Boolean}\r\n\t\t */\r\n\t\tDrawing.prototype.isPainted = function () {\r\n\t\t\treturn this._bIsPainted;\r\n\t\t};\r\n\t\t\r\n\t\t/**\r\n\t\t * Clear the QRCode\r\n\t\t */\r\n\t\tDrawing.prototype.clear = function () {\r\n\t\t\tthis._oContext.clearRect(0, 0, this._elCanvas.width, this._elCanvas.height);\r\n\t\t\tthis._bIsPainted = false;\r\n\t\t};\r\n\t\t\r\n\t\t/**\r\n\t\t * @private\r\n\t\t * @param {Number} nNumber\r\n\t\t */\r\n\t\tDrawing.prototype.round = function (nNumber) {\r\n\t\t\tif (!nNumber) {\r\n\t\t\t\treturn nNumber;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\treturn Math.floor(nNumber * 1000) / 1000;\r\n\t\t};\r\n\t\t\r\n\t\treturn Drawing;\r\n\t})();\r\n\t\r\n\t/**\r\n\t * Get the type by string length\r\n\t * \r\n\t * @private\r\n\t * @param {String} sText\r\n\t * @param {Number} nCorrectLevel\r\n\t * @return {Number} type\r\n\t */\r\n\tfunction _getTypeNumber(sText, nCorrectLevel) {\t\t\t\r\n\t\tvar nType = 1;\r\n\t\tvar length = _getUTF8Length(sText);\r\n\t\t\r\n\t\tfor (var i = 0, len = QRCodeLimitLength.length; i <= len; i++) {\r\n\t\t\tvar nLimit = 0;\r\n\t\t\t\r\n\t\t\tswitch (nCorrectLevel) {\r\n\t\t\t\tcase QRErrorCorrectLevel.L :\r\n\t\t\t\t\tnLimit = QRCodeLimitLength[i][0];\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase QRErrorCorrectLevel.M :\r\n\t\t\t\t\tnLimit = QRCodeLimitLength[i][1];\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase QRErrorCorrectLevel.Q :\r\n\t\t\t\t\tnLimit = QRCodeLimitLength[i][2];\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase QRErrorCorrectLevel.H :\r\n\t\t\t\t\tnLimit = QRCodeLimitLength[i][3];\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif (length <= nLimit) {\r\n\t\t\t\tbreak;\r\n\t\t\t} else {\r\n\t\t\t\tnType++;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif (nType > QRCodeLimitLength.length) {\r\n\t\t\tthrow new Error(\"Too long data\");\r\n\t\t}\r\n\t\t\r\n\t\treturn nType;\r\n\t}\r\n\r\n\tfunction _getUTF8Length(sText) {\r\n\t\tvar replacedText = encodeURI(sText).toString().replace(/\\%[0-9a-fA-F]{2}/g, 'a');\r\n\t\treturn replacedText.length + (replacedText.length != sText ? 3 : 0);\r\n\t}\r\n\t\r\n\t/**\r\n\t * @class QRCode\r\n\t * @constructor\r\n\t * @example \r\n\t * new QRCode(document.getElementById(\"test\"), \"http://jindo.dev.naver.com/collie\");\r\n\t *\r\n\t * @example\r\n\t * var oQRCode = new QRCode(\"test\", {\r\n\t * text : \"http://naver.com\",\r\n\t * width : 128,\r\n\t * height : 128\r\n\t * });\r\n\t * \r\n\t * oQRCode.clear(); // Clear the QRCode.\r\n\t * oQRCode.makeCode(\"http://map.naver.com\"); // Re-create the QRCode.\r\n\t *\r\n\t * @param {HTMLElement|String} el target element or 'id' attribute of element.\r\n\t * @param {Object|String} vOption\r\n\t * @param {String} vOption.text QRCode link data\r\n\t * @param {Number} [vOption.width=256]\r\n\t * @param {Number} [vOption.height=256]\r\n\t * @param {String} [vOption.colorDark=\"#000000\"]\r\n\t * @param {String} [vOption.colorLight=\"#ffffff\"]\r\n\t * @param {QRCode.CorrectLevel} [vOption.correctLevel=QRCode.CorrectLevel.H] [L|M|Q|H] \r\n\t */\r\n\tQRCode = function (el, vOption) {\r\n\t\tthis._htOption = {\r\n\t\t\twidth : 256, \r\n\t\t\theight : 256,\r\n\t\t\ttypeNumber : 4,\r\n\t\t\tcolorDark : \"#000000\",\r\n\t\t\tcolorLight : \"#ffffff\",\r\n\t\t\tcorrectLevel : QRErrorCorrectLevel.H\r\n\t\t};\r\n\t\t\r\n\t\tif (typeof vOption === 'string') {\r\n\t\t\tvOption\t= {\r\n\t\t\t\ttext : vOption\r\n\t\t\t};\r\n\t\t}\r\n\t\t\r\n\t\t// Overwrites options\r\n\t\tif (vOption) {\r\n\t\t\tfor (var i in vOption) {\r\n\t\t\t\tthis._htOption[i] = vOption[i];\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tif (typeof el == \"string\") {\r\n\t\t\tel = document.getElementById(el);\r\n\t\t}\r\n\r\n\t\tif (this._htOption.useSVG) {\r\n\t\t\tDrawing = svgDrawer;\r\n\t\t}\r\n\t\t\r\n\t\tthis._android = _getAndroid();\r\n\t\tthis._el = el;\r\n\t\tthis._oQRCode = null;\r\n\t\tthis._oDrawing = new Drawing(this._el, this._htOption);\r\n\t\t\r\n\t\tif (this._htOption.text) {\r\n\t\t\tthis.makeCode(this._htOption.text);\t\r\n\t\t}\r\n\t};\r\n\t\r\n\t/**\r\n\t * Make the QRCode\r\n\t * \r\n\t * @param {String} sText link data\r\n\t */\r\n\tQRCode.prototype.makeCode = function (sText) {\r\n\t\tthis._oQRCode = new QRCodeModel(_getTypeNumber(sText, this._htOption.correctLevel), this._htOption.correctLevel);\r\n\t\tthis._oQRCode.addData(sText);\r\n\t\tthis._oQRCode.make();\r\n\t\tthis._el.title = sText;\r\n\t\tthis._oDrawing.draw(this._oQRCode);\t\t\t\r\n\t\tthis.makeImage();\r\n\t};\r\n\t\r\n\t/**\r\n\t * Make the Image from Canvas element\r\n\t * - It occurs automatically\r\n\t * - Android below 3 doesn't support Data-URI spec.\r\n\t * \r\n\t * @private\r\n\t */\r\n\tQRCode.prototype.makeImage = function () {\r\n\t\tif (typeof this._oDrawing.makeImage == \"function\" && (!this._android || this._android >= 3)) {\r\n\t\t\tthis._oDrawing.makeImage();\r\n\t\t}\r\n\t};\r\n\t\r\n\t/**\r\n\t * Clear the QRCode\r\n\t */\r\n\tQRCode.prototype.clear = function () {\r\n\t\tthis._oDrawing.clear();\r\n\t};\r\n\t\r\n\t/**\r\n\t * @name QRCode.CorrectLevel\r\n\t */\r\n\tQRCode.CorrectLevel = QRErrorCorrectLevel;\r\n})();\r\n\n\n/*** EXPORTS FROM exports-loader ***/\nmodule.exports = QRCode;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/exports-loader?QRCode!./node_modules/qrcodejs/qrcode.js\n// module id = cqUo\n// module chunks = 0","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(true);\n// imports\n\n\n// module\nexports.push([module.id, \".authenticator qr-code-container svg {\\n padding: 0px 15px 5px 15px;\\n width: 190px;\\n}\\n\\n.authenticator input.hidden {\\n display: none;\\n}\\n\\n.authenticator .form-check.list-group {\\n margin: 0;\\n}\\n\\n.authenticator .list-group-item.active {\\n background-color: #af1e2d;\\n border-color: #dae0e5;\\n}\\n\\n.authenticator .secret .segment {\\n font-weight: bold;\\n font-family: Consolas,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New;\\n}\\n\\n\", \"\", {\"version\":3,\"sources\":[\"C:/BuildAgent/work/6539509c47328133/src/Axxess.Identity.Website/src/pages/profile/sections/security/second-factor-options/C:/BuildAgent/work/6539509c47328133/src/Axxess.Identity.Website/src/pages/profile/sections/security/second-factor-options/C:/BuildAgent/work/6539509c47328133/src/Axxess.Identity.Website/src/pages/profile/sections/security/second-factor-options/authenticator.scss\",\"C:/BuildAgent/work/6539509c47328133/src/Axxess.Identity.Website/src/pages/profile/sections/security/second-factor-options/C:/BuildAgent/work/6539509c47328133/src/Axxess.Identity.Website/authenticator.scss\"],\"names\":[],\"mappings\":\"AAEQ;EACI,2BAAA;EACA,aAAA;CCDX;;ADKG;EACI,cAAA;CCFP;;ADPD;EAcY,UAAA;CCHX;;ADQO;EACI,0BAAA;EACA,sBAAA;CCLX;;ADhBD;EA2BY,kBAAA;EACA,kHAAA;CCPX\",\"file\":\"authenticator.scss\",\"sourcesContent\":[\".authenticator {\\r\\n qr-code-container {\\r\\n svg {\\r\\n padding:0px 15px 5px 15px;\\r\\n width:190px;\\r\\n }\\r\\n }\\r\\n \\r\\n input.hidden {\\r\\n display: none;\\r\\n }\\r\\n\\r\\n .form-check {\\r\\n &.list-group {\\r\\n margin:0;\\r\\n }\\r\\n }\\r\\n\\r\\n .list-group-item {\\r\\n &.active {\\r\\n background-color: #af1e2d;\\r\\n border-color: #dae0e5;\\r\\n }\\r\\n }\\r\\n\\r\\n .secret {\\r\\n .segment {\\r\\n font-weight: bold;\\r\\n font-family:Consolas,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New;\\r\\n }\\r\\n }\\r\\n}\\r\\n\",\".authenticator qr-code-container svg {\\n padding: 0px 15px 5px 15px;\\n width: 190px;\\n}\\n\\n.authenticator input.hidden {\\n display: none;\\n}\\n\\n.authenticator .form-check.list-group {\\n margin: 0;\\n}\\n\\n.authenticator .list-group-item.active {\\n background-color: #af1e2d;\\n border-color: #dae0e5;\\n}\\n\\n.authenticator .secret .segment {\\n font-weight: bold;\\n font-family: Consolas,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New;\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?{\"importLoaders\":1,\"sourceMap\":true}!./node_modules/postcss-loader/lib?{\"sourceMap\":true}!./node_modules/resolve-url-loader!./node_modules/sass-loader/lib/loader.js?{\"sourceMap\":true,\"includePaths\":[\"C://BuildAgent//work//6539509c47328133//src//Axxess.Identity.Website//node_modules\"]}!./src/pages/profile/sections/security/second-factor-options/authenticator.scss\n// module id = kTVp\n// module chunks = 0","/* globals __webpack_amd_options__ */\r\nmodule.exports = __webpack_amd_options__;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/amd-options.js\n// module id = nErl\n// module chunks = 0","import \"./profile.scss\";\r\n\r\nimport { autoinject } from \"aurelia-framework\";\r\nimport { PLATFORM } from \"aurelia-pal\";\r\nimport { RouteConfig, Router, RouterConfiguration } from \"aurelia-router\";\r\nimport { User } from \"oidc-client\";\r\n\r\nimport { OidcService } from \"./../../services/oidc-service\";\r\nimport { OriginService } from \"./../../services/origin-service\";\r\n\r\n@autoinject\r\nexport class ProfilePage {\r\n\r\n private readonly _oidcService: OidcService;\r\n private readonly _originService: OriginService;\r\n\r\n public router: Router;\r\n public user: User;\r\n\r\n public constructor(oidcService: OidcService, originService: OriginService) {\r\n this._oidcService = oidcService;\r\n this._originService = originService;\r\n }\r\n\r\n public async activate(params: any) {\r\n params = params || {};\r\n if (params.originUrl) {\r\n this._originService.url = params.originUrl;\r\n if (params.originName) {\r\n this._originService.name = params.originName;\r\n }\r\n }\r\n\r\n this.user = await this._oidcService.getUser();\r\n\r\n if (this.user == null || this.user.expired) {\r\n this.signIn();\r\n }\r\n }\r\n\r\n public async signIn() {\r\n let user = await this._oidcService.redirectForSignIn();\r\n }\r\n\r\n public configureRouter(config: RouterConfiguration, router: Router) {\r\n this.router = router;\r\n let routes = this.configureRoutes();\r\n config.map(routes);\r\n }\r\n\r\n private configureRoutes(): RouteConfig[] {\r\n return [\r\n { route: [\"\"], name: \"profile-main\", moduleId: PLATFORM.moduleName(\"./sections/main\") },\r\n { route: [\"edit-name\"], name: \"profile-edit-name\", moduleId: PLATFORM.moduleName(\"./sections/edit-name\") },\r\n { route: [\"security/audit-events\"], name: \"profile-security-audit-events\", moduleId: PLATFORM.moduleName(\"./sections/security/audit-events\") },\r\n { route: [\"security/change-password\"], name: \"profile-security-change-password\", moduleId: PLATFORM.moduleName(\"./sections/security/change-password\") },\r\n { route: [\"security/second-factor\"], name: \"profile-security-second-factor\", moduleId: PLATFORM.moduleName(\"./sections/security/second-factor\") },\r\n { route: [\"security/second-factor/turn-off\"], name: \"profile-security-second-factor-turn-off\", moduleId: PLATFORM.moduleName(\"./sections/security/disable-second-factor\") },\r\n { route: [\"security/second-factor/authenticator\"], name: \"profile-security-second-factor-authenticator\", moduleId: PLATFORM.moduleName(\"./sections/security/second-factor-options/authenticator\") },\r\n { route: [\"security/second-factor/security-key\"], name: \"profile-security-second-factor-security-key\", moduleId: PLATFORM.moduleName(\"./sections/security/second-factor-options/security-key\") },\r\n ];\r\n }\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/pages/profile/profile.ts","module.exports = \"<template>\\r\\n <require from=\\\"../../components/card-layout\\\"></require>\\r\\n <card-layout class=\\\"profile\\\">\\r\\n <h4 class=\\\"logo mt-3 mb-4\\\"></h4>\\r\\n <router-view class=\\\"w-100\\\"></router-view>\\r\\n </card-layout>\\r\\n</template>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/profile/profile.html\n// module id = pages/profile/profile.html\n// module chunks = 0","import { computedFrom } from \"aurelia-framework\";\r\nimport { bindable } from \"aurelia-templating\";\r\nimport { UAParser } from \"ua-parser-js\";\r\n\r\nimport { IGetAuditEventsAuditEvent } from \"./../../../../services/profile-service\";\r\n\r\nexport class AuditEventCard {\r\n\r\n @bindable\r\n public event: IGetAuditEventsAuditEvent;\r\n\r\n @computedFrom(\"event\")\r\n public get title() {\r\n let map = this.getMapping(this.event.action);\r\n return map.title;\r\n }\r\n\r\n @computedFrom(\"event\")\r\n public get description() {\r\n let map = this.getMapping(this.event.action);\r\n return map.description;\r\n }\r\n\r\n @computedFrom(\"event\")\r\n public get ipAddress() {\r\n return this.event.ipAddress || \"Unknown\";\r\n }\r\n\r\n @computedFrom(\"event\")\r\n public get userAgent() {\r\n return this.event.userAgent;\r\n }\r\n\r\n @computedFrom(\"event\")\r\n public get browser() {\r\n let parser = new UAParser(this.event.userAgent);\r\n let browser = parser.getBrowser();\r\n return browser.name + \" \" + browser.major;\r\n }\r\n\r\n @computedFrom(\"event\")\r\n public get os() {\r\n let parser = new UAParser(this.event.userAgent);\r\n let os = parser.getOS();\r\n return os.name + \" \" + os.version;\r\n }\r\n\r\n @computedFrom(\"event\")\r\n public get device() {\r\n let parser = new UAParser(this.event.userAgent);\r\n let device = parser.getDevice();\r\n return device.type;\r\n }\r\n\r\n @computedFrom(\"event\")\r\n public get timestamp() {\r\n return this.event.timestamp;\r\n }\r\n\r\n public getMapping(action: string) {\r\n let map = DescriptionMap.get(action);\r\n if (map == null) {\r\n map = {\r\n title: action,\r\n description: \"This is an unknown event and should not be seen.\"\r\n };\r\n }\r\n return map;\r\n }\r\n}\r\n\r\nconst DescriptionMap = new Map<string, { title: string, description: string }>();\r\n\r\nDescriptionMap.set(\"PasswordChanged\", {\r\n title: \"Password Changed\",\r\n description: \"Your account password was changed.\"\r\n});\r\n\r\nDescriptionMap.set(\"TwoFactorEnabled\", {\r\n title: \"2-Factor Enabled\",\r\n description: \"2-Factor protection was enabled on your account.\"\r\n});\r\n\r\nDescriptionMap.set(\"TwoFactorDisabled\", {\r\n title: \"2-Factor Disabled\",\r\n description: \"2-Factor protection was removed on your account.\"\r\n});\n\n\n// WEBPACK FOOTER //\n// ./src/pages/profile/sections/components/audit-event-card.ts","module.exports = \"<template>\\r\\n <require from=\\\"../../../../components/date-converters\\\"></require>\\r\\n <div class=\\\"d-flex justify-content-between align-items-center\\\" title.bind=\\\"description\\\">\\r\\n <div class=\\\"d-flex flex-column\\\">\\r\\n <div class=\\\"d-flex align-items-end font-weight-light\\\">\\r\\n <span class=\\\"mb-0 h5 pr-3\\\">${title}</span>\\r\\n </div>\\r\\n <div class=\\\"text-muted mt-1 text-small\\\">\\r\\n <span>OS:\\r\\n <strong>${os}</strong>\\r\\n </span>\\r\\n <span class=\\\"ml-1\\\"> Browser:\\r\\n <strong>${browser}</strong>\\r\\n </span>\\r\\n <span class=\\\"ml-1\\\"> IP Address:\\r\\n <strong>${ipAddress}</strong>\\r\\n </span>\\r\\n </div>\\r\\n </div>\\r\\n <div class=\\\"d-flex flex-column align-items-center\\\">\\r\\n <div class=\\\"mb-0 text-muted\\\">\\r\\n <span title.bind=\\\"timestamp\\\">${timestamp | timeAgo}</span>\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n</template>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/profile/sections/components/audit-event-card.html\n// module id = pages/profile/sections/components/audit-event-card.html\n// module chunks = 0","import { bindable } from \"aurelia-templating\";\r\nexport class OptionCard {\r\n\r\n @bindable\r\n public title: string;\r\n\r\n @bindable\r\n public description: string;\r\n\r\n @bindable\r\n public editable: boolean = false;\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/pages/profile/sections/components/option-card.ts","module.exports = \"<template>\\r\\n <div class=\\\"d-flex justify-content-between align-items-center\\\">\\r\\n <div class=\\\"title\\\">\\r\\n <div class=\\\"mb-0 h5 font-weight-light\\\">${title}</div>\\r\\n <span class=\\\"text-muted d-none d-sm-block\\\">\\r\\n <small>${description}</small>\\r\\n </span>\\r\\n </div>\\r\\n <div class=\\\"d-flex align-items-center\\\">\\r\\n <div class=\\\"value h6 mb-0\\\">\\r\\n <slot></slot>\\r\\n </div>\\r\\n <div class=\\\"ml-2\\\" if.bind=\\\"editable\\\">\\r\\n <i class=\\\"fas fa-chevron-right fa-sm\\\"></i>\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n</template>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/profile/sections/components/option-card.html\n// module id = pages/profile/sections/components/option-card.html\n// module chunks = 0","import { computedFrom } from \"aurelia-binding\";\r\nimport { autoinject } from \"aurelia-framework\";\r\nimport { Router } from \"aurelia-router\";\r\nimport { validateTrigger, ValidationController, ValidationControllerFactory, ValidationRules } from \"aurelia-validation\";\r\n\r\nimport { ProfileService } from \"../../../services/profile-service\";\r\n\r\n@autoinject\r\nexport class EditNameSection {\r\n\r\n private _service: ProfileService;\r\n private _router: Router;\r\n private _controller: ValidationController;\r\n\r\n public isLoading: boolean;\r\n public hasError: boolean;\r\n public firstName: string;\r\n public lastName: string;\r\n\r\n public constructor(controllerFactory: ValidationControllerFactory, service: ProfileService, router: Router) {\r\n this._controller = controllerFactory.createForCurrentScope();\r\n this._controller.validateTrigger = validateTrigger.changeOrBlur;\r\n this._service = service;\r\n this._router = router;\r\n }\r\n\r\n public activate(params: any) {\r\n params = params || {};\r\n this.firstName = params.firstName;\r\n this.lastName = params.lastName;\r\n }\r\n\r\n public async submit() {\r\n let result = await this._controller.validate();\r\n if (!result.valid) {\r\n this.hasError = true;\r\n return;\r\n }\r\n\r\n this.isLoading = true;\r\n let changeResult = await this._service.updateName(this.firstName, this.lastName);\r\n this.isLoading = false;\r\n let success = changeResult != null;\r\n if (success) {\r\n await this._router.navigate(\"/profile?returnAction=nameChanged\");\r\n } else {\r\n this.hasError = true;\r\n }\r\n }\r\n}\r\n\r\nValidationRules\r\n .ensure((x: EditNameSection) => x.firstName).required().maxLength(16)\r\n .ensure((x: EditNameSection) => x.firstName).matches(/^\\w*$/).withMessage(\"First name cannot contain any special characters or spaces.\")\r\n .ensure((x: EditNameSection) => x.lastName).required().maxLength(16)\r\n .ensure((x: EditNameSection) => x.lastName).matches(/^\\w*$/).withMessage(\"Last name cannot contain any special characters or spaces.\")\r\n .on(EditNameSection);\n\n\n// WEBPACK FOOTER //\n// ./src/pages/profile/sections/edit-name.ts","module.exports = \"<template>\\r\\n <div class=\\\"slide-animate\\\">\\r\\n <h3 class=\\\"text-center\\\">Edit Name</h3>\\r\\n\\r\\n <div if.bind=\\\"hasError\\\" class=\\\"alert alert-danger\\\" role=\\\"alert\\\">\\r\\n Some of your info isn't valid. Please try again.\\r\\n </div>\\r\\n\\r\\n <form submit.delegate=\\\"submit()\\\" validation-renderer=\\\"bootstrap-form\\\">\\r\\n <div class=\\\"form-group\\\">\\r\\n <label>First Name</label>\\r\\n <input type=\\\"text\\\" autocomplete=\\\"given-name\\\" class=\\\"form-control\\\" value.bind=\\\"firstName & validate\\\">\\r\\n </div>\\r\\n <div class=\\\"form-group\\\">\\r\\n <label>Last Name</label>\\r\\n <input type=\\\"text\\\" autocomplete=\\\"family-name\\\" class=\\\"form-control\\\" value.bind=\\\"lastName & validate\\\">\\r\\n </div>\\r\\n <input type=\\\"submit\\\" class=\\\"btn btn-block btn-axxess\\\" disabled.bind=\\\"isLoading\\\" value=\\\"Save Changes\\\">\\r\\n </form>\\r\\n\\r\\n <hr class=\\\"my-4\\\">\\r\\n\\r\\n <a href=\\\"/profile?returnAction=cancel\\\" class=\\\"btn btn-light\\\" role=\\\"button\\\">\\r\\n <i class=\\\"fa fa-arrow-alt-circle-left\\\"></i> Back to Profile\\r\\n </a>\\r\\n </div>\\r\\n</template>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/profile/sections/edit-name.html\n// module id = pages/profile/sections/edit-name.html\n// module chunks = 0","import { computedFrom } from \"aurelia-binding\";\r\nimport { autoinject } from \"aurelia-framework\";\r\nimport { Router } from \"aurelia-router\";\r\n\r\nimport { OidcService } from \"./../../../services/oidc-service\";\r\nimport { OriginService } from \"./../../../services/origin-service\";\r\nimport { ProfileService } from \"./../../../services/profile-service\";\r\n\r\n@autoinject\r\nexport class MainSection {\r\n\r\n public readonly _router: Router;\r\n private readonly _service: ProfileService;\r\n private readonly _oidcService: OidcService;\r\n private readonly _originService: OriginService;\r\n\r\n public returnAction: string;\r\n\r\n public originName: string;\r\n public originUrl: string;\r\n\r\n public firstName: string;\r\n public lastName: string;\r\n public email: string;\r\n public passwordChangedOn: string;\r\n public twoFactorModified: string;\r\n\r\n @computedFrom(\"firstName\", \"lastName\")\r\n public get fullName() {\r\n return `${this.firstName || \"\"} ${this.lastName || \"\"}`;\r\n }\r\n\r\n public constructor(service: ProfileService, oidcService: OidcService, router: Router, originService: OriginService) {\r\n this._service = service;\r\n this._oidcService = oidcService;\r\n this._originService = originService;\r\n this._router = router;\r\n }\r\n\r\n public async activate(params: any) {\r\n params = params || {};\r\n this.returnAction = params.returnAction;\r\n\r\n let profile = await this._service.getProfile();\r\n\r\n this.firstName = profile.firstName;\r\n this.lastName = profile.lastName;\r\n this.email = profile.email;\r\n this.passwordChangedOn = profile.passwordChangedOn;\r\n this.originName = this._originService.name;\r\n this.originUrl = this._originService.url;\r\n\r\n let intent = params.intent;\r\n if (intent != null) {\r\n switch (intent) {\r\n case \"changePassword\":\r\n this._router.navigate(`/profile/security/change-password?email=${this.email}`);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n\r\n public async attached() {\r\n let totpStatus = await this._service.getTotpStatus();\r\n this.twoFactorModified = totpStatus.enabledOn;\r\n }\r\n\r\n public async logout() {\r\n await this._oidcService.logout();\r\n }\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/pages/profile/sections/main.ts","module.exports = \"<template>\\r\\n <div class=\\\"${returnAction ? 'slide-animate' : ''}\\\">\\r\\n <h3 class=\\\"text-center\\\">Profile Management</h3>\\r\\n\\r\\n <div if.bind=\\\"returnAction == 'passwordChanged'\\\" class=\\\"alert alert-success alert-dismissible fade show\\\" role=\\\"alert\\\">\\r\\n <h5 class=\\\"alert-heading\\\">Password Updated</h5>\\r\\n <p class=\\\"mb-0\\\">You have successfully updated your password.</p>\\r\\n <button type=\\\"button\\\" class=\\\"close\\\" data-dismiss=\\\"alert\\\" aria-label=\\\"Close\\\">\\r\\n <span aria-hidden=\\\"true\\\">×</span>\\r\\n </button>\\r\\n </div>\\r\\n\\r\\n <div if.bind=\\\"returnAction == 'nameChanged'\\\" class=\\\"alert alert-success alert-dismissible fade show\\\" role=\\\"alert\\\">\\r\\n <h5 class=\\\"alert-heading\\\">Name Updated</h5>\\r\\n <p class=\\\"mb-0\\\">You have successfully updated your name.</p>\\r\\n <button type=\\\"button\\\" class=\\\"close\\\" data-dismiss=\\\"alert\\\" aria-label=\\\"Close\\\">\\r\\n <span aria-hidden=\\\"true\\\">×</span>\\r\\n </button>\\r\\n </div>\\r\\n\\r\\n <require from=\\\"../sections/components/option-card\\\"></require>\\r\\n <require from=\\\"../../../components/date-converters\\\"></require>\\r\\n\\r\\n <h3 class=\\\"font-weight-light\\\">About You</h3>\\r\\n <div class=\\\"card\\\">\\r\\n <ul class=\\\"list-group list-group-flush\\\">\\r\\n <li class=\\\"list-group-item\\\">\\r\\n <option-card title=\\\"Email\\\" description=\\\"The email address associated with your account.\\\">\\r\\n <a class=\\\"link-light\\\" href=\\\"mailto:${email}\\\">${email}</a>\\r\\n </option-card>\\r\\n </li>\\r\\n <a class=\\\"list-group-item list-group-item-action\\\" href=\\\"/profile/edit-name?firstName=${firstName}&lastName=${lastName}\\\">\\r\\n <option-card title=\\\"Name\\\" description=\\\"The name that other users will see in the system.\\\" editable=\\\"true\\\">\\r\\n <span class=\\\"text-capitalize\\\">${fullName}</span>\\r\\n </option-card>\\r\\n </a>\\r\\n </ul>\\r\\n </div>\\r\\n\\r\\n <h3 class=\\\"font-weight-light mt-4\\\">Security</h3>\\r\\n <div class=\\\"card\\\">\\r\\n <div class=\\\"list-group list-group-flush\\\">\\r\\n <a class=\\\"list-group-item list-group-item-action\\\" href=\\\"/profile/security/change-password?email=${email}\\\">\\r\\n <option-card title=\\\"Password\\\" description=\\\"Choose a strong password to protect your account.\\\" editable=\\\"true\\\">\\r\\n <template if.bind=\\\"passwordChangedOn\\\">\\r\\n <span>Updated</span> ${ passwordChangedOn | timeAgo }\\r\\n </template>\\r\\n <template if.bind=\\\"!passwordChangedOn\\\">\\r\\n Updated over a month ago\\r\\n </template>\\r\\n </option-card>\\r\\n </a>\\r\\n <a class=\\\"list-group-item list-group-item-action\\\" href=\\\"/profile/security/second-factor?email=${email}\\\">\\r\\n <option-card title=\\\"2-Factor Verification\\\" description=\\\"Another layer of security to protect your account.\\\" editable=\\\"true\\\">\\r\\n <template if.bind=\\\"twoFactorModified\\\">\\r\\n <span>Updated</span> ${ twoFactorModified | timeAgo }\\r\\n </template>\\r\\n <template if.bind=\\\"!twoFactorModified\\\">\\r\\n Not enabled\\r\\n </template>\\r\\n </option-card>\\r\\n </a>\\r\\n <a class=\\\"list-group-item list-group-item-action\\\" href=\\\"/profile/security/audit-events\\\">\\r\\n <option-card title=\\\"Audit Events\\\" description=\\\"Review security-related events on your account.\\\" editable=\\\"true\\\">\\r\\n View now\\r\\n </option-card>\\r\\n </a>\\r\\n </div>\\r\\n </div>\\r\\n\\r\\n <div class=\\\"d-flex justify-content-between mt-4\\\">\\r\\n <div>\\r\\n <a if.bind=\\\"originUrl && originName\\\" class=\\\"btn btn-light\\\" href=\\\"${originUrl}\\\">\\r\\n <i class=\\\"fa fa-arrow-alt-circle-left\\\"></i> Back to ${originName}\\r\\n </a>\\r\\n </div>\\r\\n <div>\\r\\n <button class=\\\"btn btn-light\\\" click.delegate=\\\"logout()\\\">\\r\\n <i class=\\\"fas fa-sign-out-alt\\\"></i> Log Out\\r\\n </button>\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n\\r\\n</template>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/profile/sections/main.html\n// module id = pages/profile/sections/main.html\n// module chunks = 0","import { autoinject } from \"aurelia-framework\";\r\nimport { Router } from \"aurelia-router\";\r\nimport * as moment from \"moment\";\r\n\r\nimport { IGetAuditEventsAuditEvent, IGetAuditEventsResult, ProfileService } from \"../../../../services/profile-service\";\r\n\r\n@autoinject\r\nexport class ChangePasswordSection {\r\n\r\n private _service: ProfileService;\r\n private _router: Router;\r\n public isLoading = false;\r\n public monthAgo = moment().add(-30, \"d\").format(\"MM/DD/YYYY\");\r\n public events: IGetAuditEventsResult;\r\n\r\n public constructor(service: ProfileService, router: Router) {\r\n this._service = service;\r\n this._router = router;\r\n }\r\n\r\n public async activate() {\r\n await this.load();\r\n }\r\n\r\n public async load() {\r\n let supportedEventTypes = [\r\n \"TwoFactorEnabled\",\r\n \"TwoFactorDisabled\",\r\n \"PasswordChanged\",\r\n \"PasswordResetRequested\",\r\n \"PasswordResetSuccess\"\r\n ];\r\n let include = supportedEventTypes.join(\",\");\r\n this.events = await this._service.getAuditEvents({ include });\r\n }\r\n\r\n public groupByDate(event: IGetAuditEventsAuditEvent): string {\r\n let date = moment(event.timestamp);\r\n\r\n let today = moment().startOf(\"d\");\r\n let thisWeek = moment().startOf(\"w\");\r\n let lastWeek = moment().startOf(\"w\").add(-1, \"w\");\r\n\r\n const format = \"MM/DD/YYYY\";\r\n\r\n if (date.isAfter(today)) {\r\n return `Today (${today.format(format)})`;\r\n }\r\n if (date.isAfter(thisWeek)) {\r\n return `This Week (${thisWeek.format(format)} - ${thisWeek.endOf(\"W\").format(format)})`;\r\n }\r\n if (date.isAfter(thisWeek)) {\r\n return `This Week (${thisWeek.format(format)} - ${thisWeek.endOf(\"W\").format(format)})`;\r\n }\r\n if (date.isAfter(lastWeek)) {\r\n return `Last Week (${lastWeek.format(format)} - ${lastWeek.endOf(\"W\").format(format)})`;\r\n }\r\n return \"Over Two Weeks Ago\";\r\n }\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/pages/profile/sections/security/audit-events.ts","module.exports = \"<template>\\r\\n <div class=\\\"slide-animate\\\">\\r\\n <h3 class=\\\"text-center\\\">Review Audit Events</h3>\\r\\n\\r\\n <require from=\\\"../../sections/components/audit-event-card\\\"></require>\\r\\n <require from=\\\"../../../../components/date-converters\\\"></require>\\r\\n <require from=\\\"../../../../components/list-converters\\\"></require>\\r\\n\\r\\n <div class=\\\"border border-secondary rounded p-3 mt-3\\\" role=\\\"alert\\\" if.bind=\\\"events.events.length != 0\\\">\\r\\n <div class=\\\"d-flex justify-content-center align-items-center\\\">\\r\\n <div class=\\\"mr-4\\\">\\r\\n <i class=\\\"fas fa-shield-alt fa-3x\\\"></i>\\r\\n </div>\\r\\n <div>\\r\\n Notice anything suspicious?\\r\\n <br>\\r\\n <a class=\\\"link-light\\\" href=\\\"/profile?intent=changePassword\\\">Secure your account</a> or\\r\\n <a class=\\\"link-light\\\" href=\\\"https://www.axxess.com/support\\\">contact us</a>.\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n\\r\\n <ul class=\\\"list-group mt-4\\\">\\r\\n <template repeat.for=\\\"[week, group] of events.events | groupByFunc:groupByDate\\\">\\r\\n\\r\\n <div>\\r\\n <h5 class=\\\"text-center mb-2\\\">\\r\\n ${week}\\r\\n </h5>\\r\\n <template repeat.for=\\\"event of group\\\">\\r\\n <li class=\\\"list-group-item\\\">\\r\\n <audit-event-card event.bind=\\\"event\\\"></audit-event-card>\\r\\n </li>\\r\\n </template>\\r\\n <div class=\\\"text-center text-tiny mt-3\\\">\\r\\n <i class=\\\"fas fa-circle\\\"></i>\\r\\n </div>\\r\\n <div class=\\\"text-center text-tiny mb-3\\\">\\r\\n <i class=\\\"fas fa-circle\\\"></i>\\r\\n </div>\\r\\n </div>\\r\\n\\r\\n </template>\\r\\n </ul>\\r\\n\\r\\n <h5 class=\\\"text-center text-muted mb-0\\\" if.bind=\\\"events.events.length != 0\\\">\\r\\n No other events after ${monthAgo}.\\r\\n </h5>\\r\\n\\r\\n <h5 class=\\\"text-center mt-4\\\" if.bind=\\\"events.events.length == 0\\\">\\r\\n <div>\\r\\n <i class=\\\"fas fa-shield-alt fa-4x\\\"></i>\\r\\n </div>\\r\\n <div class=\\\"text-muted mt-3\\\">\\r\\n No recent audit events.\\r\\n </div>\\r\\n </h5>\\r\\n\\r\\n <hr class=\\\"my-4\\\">\\r\\n\\r\\n <a href=\\\"/profile?returnAction=cancel\\\" class=\\\"btn btn-light\\\" role=\\\"button\\\">\\r\\n <i class=\\\"fa fa-arrow-alt-circle-left\\\"></i> Back to Profile\\r\\n </a>\\r\\n </div>\\r\\n</template>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/profile/sections/security/audit-events.html\n// module id = pages/profile/sections/security/audit-events.html\n// module chunks = 0","import { autoinject } from \"aurelia-framework\";\r\nimport { Router } from \"aurelia-router\";\r\nimport { validateTrigger, ValidationController, ValidationControllerFactory, ValidationRules } from \"aurelia-validation\";\r\n\r\nimport { ProfileService } from \"../../../../services/profile-service\";\r\n\r\n@autoinject\r\nexport class ChangePasswordSection {\r\n\r\n private _service: ProfileService;\r\n private _router: Router;\r\n public controller: ValidationController;\r\n public isLoading = false;\r\n public hasError = false;\r\n\r\n public email: string;\r\n public currentPassword: string;\r\n public newPassword: string;\r\n public confirmPassword: string;\r\n\r\n public constructor(controllerFactory: ValidationControllerFactory, service: ProfileService, router: Router) {\r\n this.controller = controllerFactory.createForCurrentScope();\r\n this.controller.validateTrigger = validateTrigger.changeOrBlur;\r\n this._service = service;\r\n this._router = router;\r\n }\r\n\r\n public async activate(params: any) {\r\n params = params || {};\r\n this.email = params.email;\r\n }\r\n\r\n public async submit() {\r\n this.isLoading = true;\r\n let result = await this._service.updatePassword(this.currentPassword, this.newPassword);\r\n this.isLoading = false;\r\n let failure = result == null;\r\n this.hasError = failure;\r\n if (!failure) {\r\n this._router.navigate(\"/profile?returnAction=passwordChanged\");\r\n } else {\r\n this.currentPassword = null;\r\n this.newPassword = null;\r\n this.confirmPassword = null;\r\n }\r\n }\r\n}\r\n\r\nValidationRules\r\n .ensure((x: ChangePasswordSection) => x.currentPassword).required().minLength(8).maxLength(256)\r\n .ensure((x: ChangePasswordSection) => x.newPassword).required().minLength(8).maxLength(256)\r\n .ensure((x: ChangePasswordSection) => x.confirmPassword).satisfies((v, p) => v == p.newPassword).withMessage(\"Passwords must match.\")\r\n .on(ChangePasswordSection);\n\n\n// WEBPACK FOOTER //\n// ./src/pages/profile/sections/security/change-password.ts","module.exports = \"<template>\\r\\n <div class=\\\"slide-animate\\\">\\r\\n <h3 class=\\\"text-center\\\">Change Password</h3>\\r\\n\\r\\n <div if.bind=\\\"hasError\\\" class=\\\"alert alert-danger\\\" role=\\\"alert\\\">\\r\\n Some of your info isn't valid. Please try again.\\r\\n </div>\\r\\n\\r\\n <form submit.delegate=\\\"submit()\\\" validation-renderer=\\\"bootstrap-form\\\">\\r\\n <input show.bind=\\\"false\\\" if.bind=\\\"email\\\" type=\\\"text\\\" autocomplete=\\\"username\\\" value.bind=\\\"email\\\">\\r\\n <div class=\\\"form-group\\\">\\r\\n <label>Current Password</label>\\r\\n <input type=\\\"password\\\" placeholder=\\\"Current Password\\\" autocomplete=\\\"current-password\\\" class=\\\"form-control\\\" value.bind=\\\"currentPassword & validate\\\">\\r\\n </div>\\r\\n <div class=\\\"form-group\\\">\\r\\n <label>Password</label>\\r\\n <input type=\\\"password\\\" placeholder=\\\"Password\\\" autocomplete=\\\"new-password\\\" class=\\\"form-control\\\" value.bind=\\\"newPassword & validate\\\">\\r\\n </div>\\r\\n <div class=\\\"form-group\\\">\\r\\n <label>Confirm Password</label>\\r\\n <input type=\\\"password\\\" placeholder=\\\"Confirm Password\\\" autocomplete=\\\"new-password\\\" class=\\\"form-control\\\" value.bind=\\\"confirmPassword & validate\\\">\\r\\n </div>\\r\\n <input type=\\\"submit\\\" class=\\\"btn btn-block btn-axxess\\\" disabled.bind=\\\"isLoading\\\" value=\\\"Change Password\\\">\\r\\n </form>\\r\\n\\r\\n <hr class=\\\"my-4\\\">\\r\\n\\r\\n <a href=\\\"/profile?returnAction=cancel\\\" class=\\\"btn btn-light\\\" role=\\\"button\\\">\\r\\n <i class=\\\"fa fa-arrow-alt-circle-left\\\"></i> Back to Profile\\r\\n </a>\\r\\n </div>\\r\\n</template>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/profile/sections/security/change-password.html\n// module id = pages/profile/sections/security/change-password.html\n// module chunks = 0","import { autoinject } from \"aurelia-framework\";\r\nimport { Router } from \"aurelia-router\";\r\n\r\nimport { ITotpStatus, ProfileService } from \"../../../../services/profile-service\";\r\nimport { ValidationRules, ValidationController, ValidationControllerFactory, validateTrigger } from \"aurelia-validation\";\r\nimport { BootstrapFormRenderer } from \"../../../../components/bootstrap-form-renderer\";\r\n\r\n@autoinject()\r\nexport class DisableSecondFactor {\r\n\r\n private readonly _profileService: ProfileService;\r\n private readonly _router: Router;\r\n\r\n public secondFactorController: ValidationController;\r\n\r\n public totpStatus: ITotpStatus;\r\n\r\n public email: string;\r\n public isLoading: boolean = false;\r\n\r\n public totpCode: string;\r\n public totpError: boolean;\r\n\r\n public constructor(profileService: ProfileService, router: Router, controllerFactory: ValidationControllerFactory) {\r\n this._profileService = profileService;\r\n this._router = router;\r\n\r\n this.secondFactorController = controllerFactory.create();\r\n this.secondFactorController.validateTrigger = validateTrigger.changeOrBlur;\r\n this.secondFactorController.addObject(this, secondFactorRules);\r\n this.secondFactorController.addRenderer(new BootstrapFormRenderer());\r\n }\r\n\r\n public async activate(params: any) {\r\n params = params || {};\r\n this.email = params.email;\r\n\r\n if (!this.email || this.email == \"\") {\r\n this._router.navigate(`/profile`);\r\n throw Error(\"Email param missing.\");\r\n }\r\n\r\n this.totpStatus = await this._profileService.getTotpStatus();\r\n }\r\n\r\n public async disableTotp() {\r\n let validationResult = await this.secondFactorController.validate();\r\n if (!validationResult.valid) {\r\n return;\r\n }\r\n\r\n this.isLoading = true;\r\n let disableResult = await this._profileService.disableTotp(this.totpCode);\r\n if (disableResult) {\r\n this._router.navigate(`/profile/security/second-factor?email=${this.email}&returnAction=twoFactorDisabled`);\r\n } else {\r\n this.totpError = true;\r\n }\r\n this.isLoading = false;\r\n }\r\n}\r\n\r\nconst secondFactorRules = ValidationRules\r\n .ensure((x: DisableSecondFactor) => x.totpCode)\r\n .required().withMessage(\"Code is required.\")\r\n .matches(/^\\d{6}$/).withMessage(\"Code must be 6 digits.\")\r\n .rules;\n\n\n// WEBPACK FOOTER //\n// ./src/pages/profile/sections/security/disable-second-factor.ts","module.exports = \"<template>\\r\\n <div class=\\\"slide-animate\\\">\\r\\n <h5>Are you sure that you want to turn off 2-Factor verification?</h5>\\r\\n\\r\\n <div if.bind=\\\"totpStatus.active\\\">\\r\\n <div if.bind=\\\"totpError\\\" class=\\\"alert alert-danger fade show text-center\\\" role=\\\"alert\\\">\\r\\n <p class=\\\"mb-0\\\">Unable to turn off 2-Factor. Please ensure that the code given is valid.</p>\\r\\n </div>\\r\\n <form submit.trigger=\\\"disableTotp()\\\">\\r\\n <div class=\\\"form-row mt-4\\\">\\r\\n <div class=\\\"col-7 mt-2\\\">\\r\\n <b>Enter the 6-digit code you see in the app.</b>\\r\\n </div>\\r\\n <div class=\\\"col-4\\\">\\r\\n <div class=\\\"input-group form-group\\\">\\r\\n <div class=\\\"input-group-prepend\\\">\\r\\n <span class=\\\"input-group-text\\\">\\r\\n <i class=\\\"fas fa-mobile-alt\\\"></i>\\r\\n </span>\\r\\n </div>\\r\\n <input type=\\\"text\\\" value.bind=\\\"totpCode & validate:secondFactorController\\\" class=\\\"form-control text-center\\\"\\r\\n disabled.bind=\\\"isLoading\\\" focus.bind=\\\"twoFactorFocused\\\">\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n </form>\\r\\n \\r\\n <hr class=\\\"my-4\\\">\\r\\n <div class=\\\"d-flex justify-content-between mt-4\\\">\\r\\n <div>\\r\\n <a href=\\\"/profile/security/second-factor?email=${email}\\\" class=\\\"btn btn-light\\\" role=\\\"button\\\">\\r\\n No, take me back\\r\\n </a>\\r\\n </div>\\r\\n <div>\\r\\n <button class=\\\"btn btn-axxess\\\" click.delegate=\\\"disableTotp()\\\">Yes, turn it off</button>\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n</template>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/profile/sections/security/disable-second-factor.html\n// module id = pages/profile/sections/security/disable-second-factor.html\n// module chunks = 0","import { autoinject } from \"aurelia-framework\";\r\nimport { Router } from \"aurelia-router\";\r\n\r\nimport { ITotpStatus, ProfileService } from \"./../../../../services/profile-service\";\r\n\r\n@autoinject\r\nexport class SecondFactorSection {\r\n\r\n private readonly _profileService: ProfileService;\r\n private readonly _router: Router;\r\n\r\n public totpStatus: ITotpStatus;\r\n\r\n public email: string;\r\n\r\n public returnAction: string;\r\n public recoveryCode: string;\r\n\r\n public constructor(profileService: ProfileService, router: Router) {\r\n this._profileService = profileService;\r\n this._router = router;\r\n }\r\n\r\n public async activate(params: any) {\r\n params = params || {};\r\n this.email = params.email;\r\n this.recoveryCode = params.code;\r\n\r\n if (!this.email || this.email == \"\") {\r\n this._router.navigate(`/profile`);\r\n throw Error(\"email param missing\");\r\n }\r\n\r\n this.returnAction = params.returnAction;\r\n this.totpStatus = await this._profileService.getTotpStatus();\r\n }\r\n\r\n public get twoFactorEnabled() {\r\n return this.totpStatus.active; // || securityKey.active // In the future, this should also check the other 2FA methods\r\n }\r\n\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/pages/profile/sections/security/second-factor.ts","import \"./authenticator.scss\";\r\n\r\nimport { computedFrom } from \"aurelia-binding\";\r\nimport { autoinject } from \"aurelia-framework\";\r\nimport { Router } from \"aurelia-router\";\r\nimport { validateTrigger, ValidationController, ValidationControllerFactory, ValidationRules } from \"aurelia-validation\";\r\n\r\nimport { BootstrapFormRenderer } from \"../../../../../components/bootstrap-form-renderer\";\r\nimport { IEnableTotpCommand, IGenerateTotpResponse, ProfileService } from \"./../../../../../services/profile-service\";\r\nimport { TwoFactorAuthService } from \"../../../../../services/two-factor-auth-service\";\r\n\r\nconst issuer: string = \"Axxess\";\r\n\r\n@autoinject()\r\nexport class AuthenticatorSetup {\r\n\r\n private readonly _profileService: ProfileService;\r\n private readonly _router: Router;\r\n private totpConfig: IGenerateTotpResponse;\r\n\r\n public secondFactorController: ValidationController;\r\n public stage: AuthenticatorSetupStage = AuthenticatorSetupStage.chooseApp;\r\n\r\n public osList: OsSelect[];\r\n\r\n public selectedOs: OsSelect = {value: PhoneOs.android, name: \"Android\"};\r\n\r\n public email: string;\r\n public authenticatorUri: string = \"\";\r\n public verificationCode: string;\r\n public isLoading: boolean = false;\r\n public hasError: boolean;\r\n public _twoFactorAuthService: TwoFactorAuthService;\r\n\r\n @computedFrom(\"totpConfig\")\r\n public get secretSegments() {\r\n if (!this.totpConfig) {\r\n return \"\";\r\n }\r\n\r\n let secret = this.totpConfig.secret;\r\n let grouping = 4;\r\n let segments = [];\r\n\r\n for (let i = 0; i < secret.length; i += grouping) {\r\n segments.push(secret.slice(i, i + grouping));\r\n }\r\n\r\n return segments;\r\n }\r\n\r\n public constructor(profileService: ProfileService, router: Router, controllerFactory: ValidationControllerFactory, twoFactorAuthService: TwoFactorAuthService) {\r\n this._profileService = profileService;\r\n this._router = router;\r\n this._twoFactorAuthService = twoFactorAuthService;\r\n\r\n this.osList = [\r\n this.selectedOs,\r\n {value: PhoneOs.ios, name: \"iPhone\"},\r\n {value: PhoneOs.other, name: \"Other\"}\r\n ];\r\n\r\n this.secondFactorController = controllerFactory.create();\r\n this.secondFactorController.validateTrigger = validateTrigger.changeOrBlur;\r\n this.secondFactorController.addObject(this, secondFactorRules);\r\n this.secondFactorController.addRenderer(new BootstrapFormRenderer());\r\n }\r\n\r\n public async activate(params: any) {\r\n params = params || {};\r\n this.email = params.email;\r\n\r\n if (!this.email || this.email == \"\") {\r\n this._router.navigate(`/profile`);\r\n throw Error(\"Email param missing.\");\r\n }\r\n\r\n this.totpConfig = await this._profileService.generateTotpConfiguration();\r\n\r\n this.authenticatorUri = `otpauth://totp/${issuer}:${this.email}?` +\r\n `secret=${this.totpConfig.secret}&` +\r\n `issuer=${issuer}&` +\r\n `algorithm=${this.totpConfig.algorithm}&` +\r\n `digits=${this.totpConfig.digits}&` +\r\n `period=${this.totpConfig.period}`;\r\n }\r\n\r\n public async enableTotp() {\r\n let validationResult = await this.secondFactorController.validate();\r\n if (!validationResult.valid) {\r\n return;\r\n }\r\n\r\n this.isLoading = true;\r\n\r\n let command: IEnableTotpCommand = {\r\n secret: this.totpConfig.secret,\r\n algorithm: this.totpConfig.algorithm,\r\n digits: this.totpConfig.digits,\r\n period: this.totpConfig.period,\r\n code: this.verificationCode\r\n };\r\n\r\n let result = await this._profileService.enableTotp(command);\r\n \r\n\r\n if (result) {\r\n let response = await this._twoFactorAuthService.authorize();\r\n if(response.code){\r\n this._router.navigate(`/profile/security/second-factor?email=${this.email}&code=${response.code}&returnAction=twoFactorEnabled`);\r\n } \r\n } else {\r\n this.hasError = true;\r\n this.isLoading = false;\r\n }\r\n\r\n this.isLoading = false;\r\n }\r\n}\r\n\r\nenum AuthenticatorSetupStage {\r\n chooseApp = \"choose-app\" as any,\r\n scanCode = \"scan-code\" as any,\r\n manualCodeEntry = \"manual-code-entry\" as any,\r\n completeSetup = \"complete-setup\" as any\r\n}\r\n\r\nexport class OsSelect {\r\n public value: PhoneOs;\r\n public name: string;\r\n}\r\n\r\nenum PhoneOs {\r\n android = \"android\" as any,\r\n ios = \"ios\" as any,\r\n other = \"other\" as any\r\n}\r\n\r\nconst secondFactorRules = ValidationRules\r\n .ensure((x: AuthenticatorSetup) => x.verificationCode)\r\n .required().withMessage(\"Code is required.\")\r\n .matches(/^\\d{6}$/).withMessage(\"Code must be 6 digits.\")\r\n .rules;\n\n\n// WEBPACK FOOTER //\n// ./src/pages/profile/sections/security/second-factor-options/authenticator.ts","module.exports = \"<template>\\r\\n <div class=\\\"slide-animate authenticator\\\">\\r\\n <require from=\\\"../../../../../components/qr-code-container/qr-code-container\\\"></require>\\r\\n\\r\\n <h3 class=\\\"text-center\\\">Set Up Authenticator</h3>\\r\\n\\r\\n <!-- Choose app -->\\r\\n <div class=\\\"slide-animate\\\" if.bind=\\\"stage == 'choose-app'\\\">\\r\\n <p class=\\\"my-4\\\">Instead of waiting for text messages, get verification codes for free from the Authenticator App. It works even if your phone is offline.</p>\\r\\n \\r\\n <div class=\\\"row\\\">\\r\\n <div class=\\\"col-6 mt-3\\\">\\r\\n <b>What kind of phone do you have?</b>\\r\\n </div>\\r\\n <div class=\\\"col-5\\\">\\r\\n <div class=\\\"form-check list-group\\\" repeat.for=\\\"osSelect of osList\\\">\\r\\n <label class=\\\"form-check-label list-group-item ${ osSelect.value == selectedOs.value ? 'active' : ''}\\\" for=\\\"${osSelect.value}\\\">\\r\\n ${osSelect.name}\\r\\n </label>\\r\\n <input class=\\\"form-check-input hidden\\\" type=\\\"radio\\\" name=\\\"osGroup\\\" id=\\\"${osSelect.value}\\\" model.bind=\\\"osSelect\\\" checked.bind=\\\"selectedOs\\\" />\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n \\r\\n <hr class=\\\"my-4\\\">\\r\\n <div class=\\\"d-flex justify-content-between mt-4\\\">\\r\\n <div>\\r\\n <a href=\\\"/profile/security/second-factor?email=${email}\\\" class=\\\"btn btn-light\\\" role=\\\"button\\\">\\r\\n Cancel\\r\\n </a>\\r\\n </div>\\r\\n <div>\\r\\n <button class=\\\"btn btn-light btn-axxess\\\" role=\\\"button\\\" click.delegate=\\\"stage = 'scan-code'\\\">\\r\\n Next\\r\\n </button>\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n\\r\\n <!-- Scan Code -->\\r\\n <div class=\\\"slide-animate\\\" if.bind=\\\"stage == 'scan-code'\\\">\\r\\n <div class=\\\"row mt-4\\\">\\r\\n <div class=\\\"col-8\\\">\\r\\n <ul class=\\\"list-group\\\">\\r\\n <li class=\\\"list-group-item\\\" if.bind=\\\"selectedOs.value == 'ios'\\\">\\r\\n Get the Authenticator App from the <a target=\\\"_blank\\\" href=\\\"https://itunes.apple.com/us/app/google-authenticator/id388497605\\\">App Store</a>.\\r\\n </li>\\r\\n <li class=\\\"list-group-item\\\" if.bind=\\\"selectedOs.value == 'android'\\\">\\r\\n Get the Authenticator App from the <a target=\\\"_blank\\\" href=\\\"https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2\\\">Play Store</a>.\\r\\n </li>\\r\\n <li class=\\\"list-group-item\\\" if.bind=\\\"selectedOs.value == 'other'\\\">\\r\\n Get the Google Authenticator App from your preferred <b>App Store</b>.\\r\\n </li>\\r\\n <li class=\\\"list-group-item\\\">\\r\\n In the App, select <b>Set Up account</b>.\\r\\n </li>\\r\\n <li class=\\\"list-group-item\\\">\\r\\n Choose <b>Scan a barcode</b>.\\r\\n </li>\\r\\n </ul>\\r\\n </div>\\r\\n \\r\\n <div class=\\\"col-4 text-center\\\">\\r\\n <div>\\r\\n <qr-code-container code.bind=\\\"authenticatorUri\\\"></qr-code>\\r\\n </div>\\r\\n <span class=\\\"text-uppercase text-small\\\">\\r\\n <a href=\\\"#\\\" click.delegate=\\\"stage = 'manual-code-entry'\\\" role=\\\"button\\\">Can't scan it?</a>\\r\\n </span>\\r\\n </div>\\r\\n </div>\\r\\n\\r\\n <hr class=\\\"my-4\\\">\\r\\n <div class=\\\"d-flex justify-content-between mt-4\\\">\\r\\n <div>\\r\\n <a href=\\\"/profile/security/second-factor?email=${email}\\\" class=\\\"btn btn-light\\\" role=\\\"button\\\">\\r\\n Cancel\\r\\n </a>\\r\\n </div>\\r\\n <div>\\r\\n <button class=\\\"btn btn-light btn-axxess\\\" role=\\\"button\\\" click.delegate=\\\"stage = 'complete-setup'\\\">\\r\\n Next\\r\\n </button>\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n\\r\\n <!-- Manually Enter Code -->\\r\\n <div class=\\\"slide-animate\\\" if.bind=\\\"stage == 'manual-code-entry'\\\">\\r\\n <ul class=\\\"list-group mt-4\\\">\\r\\n <li class=\\\"list-group-item\\\" if.bind=\\\"selectedOs.value == 'ios'\\\">\\r\\n Get the Authenticator App from the <a target=\\\"_blank\\\" href=\\\"https://itunes.apple.com/us/app/google-authenticator/id388497605\\\">App Store</a>.\\r\\n </li>\\r\\n <li class=\\\"list-group-item\\\" if.bind=\\\"selectedOs.value == 'android'\\\">\\r\\n Get the Authenticator App from the <a target=\\\"_blank\\\" href=\\\"https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2\\\">Play Store</a>.\\r\\n </li>\\r\\n <li class=\\\"list-group-item\\\" if.bind=\\\"selectedOs.value == 'other'\\\">\\r\\n Get the Google Authenticator App from your preferred <b>App Store</b>.\\r\\n </li>\\r\\n <li class=\\\"list-group-item\\\">\\r\\n In the App, select <b>Set Up account</b>.\\r\\n </li>\\r\\n <li class=\\\"list-group-item\\\">\\r\\n Tap <b>Enter provided key</b>.\\r\\n </li>\\r\\n <li class=\\\"list-group-item\\\">\\r\\n Enter the account name and key below.\\r\\n <div class=\\\"text-center mt-4 mb-4\\\">\\r\\n <div>\\r\\n <b>Axxess (${email})</b>\\r\\n </div>\\r\\n <div class=\\\"secret\\\">\\r\\n <span class=\\\"segment\\\" repeat.for=\\\"segment of secretSegments\\\">\\r\\n ${segment} \\r\\n </span>\\r\\n <br>\\r\\n <span class=\\\"text-muted text-small\\\">spaces don't matter</span>\\r\\n </div>\\r\\n </div>\\r\\n </li>\\r\\n <li class=\\\"list-group-item\\\">\\r\\n Make sure <b>Time based</b> is turned on, then tap <b>Add</b> to finish.\\r\\n </li>\\r\\n </ul>\\r\\n\\r\\n <hr class=\\\"my-4\\\">\\r\\n <div class=\\\"d-flex justify-content-between mt-4\\\">\\r\\n <div>\\r\\n <button click.delegate=\\\"stage = 'scan-code'\\\" class=\\\"btn btn-light\\\" role=\\\"button\\\">\\r\\n Back to scan barcode\\r\\n </button>\\r\\n </div>\\r\\n <div>\\r\\n <button class=\\\"btn btn-light btn-axxess\\\" role=\\\"button\\\" click.delegate=\\\"stage = 'complete-setup'\\\">\\r\\n Next\\r\\n </button>\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n\\r\\n <!-- Complete Setup -->\\r\\n <div class=\\\"slide-animate\\\" if.bind=\\\"stage == 'complete-setup'\\\">\\r\\n <div if.bind=\\\"hasError\\\" class=\\\"alert alert-danger fade show text-center\\\" role=\\\"alert\\\">\\r\\n <p class=\\\"mb-0\\\">Ensure that the code given is valid and that TOTP has not already been enabled.</p>\\r\\n </div>\\r\\n <form submit.trigger=\\\"enableTotp()\\\">\\r\\n <div class=\\\"form-row mt-4\\\">\\r\\n <div class=\\\"col-7 mt-2\\\">\\r\\n <b>Enter the 6-digit code you see in the app.</b>\\r\\n </div>\\r\\n <div class=\\\"col-4\\\">\\r\\n <div class=\\\"input-group form-group\\\">\\r\\n <div class=\\\"input-group-prepend\\\">\\r\\n <span class=\\\"input-group-text\\\">\\r\\n <i class=\\\"fas fa-mobile-alt\\\"></i>\\r\\n </span>\\r\\n </div>\\r\\n <input type=\\\"text\\\" value.bind=\\\"verificationCode & validate:secondFactorController\\\" class=\\\"form-control text-center\\\"\\r\\n disabled.bind=\\\"isLoading\\\" focus.bind=\\\"twoFactorFocused\\\">\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n </form>\\r\\n \\r\\n <hr class=\\\"my-4\\\">\\r\\n <div class=\\\"d-flex justify-content-between mt-4\\\">\\r\\n <div>\\r\\n <a href=\\\"/profile/security/second-factor?email=${email}\\\" class=\\\"btn btn-light\\\" role=\\\"button\\\">\\r\\n Cancel\\r\\n </a>\\r\\n </div>\\r\\n <div>\\r\\n <button class=\\\"btn btn-axxess\\\" if.bind=\\\"isLoading == false\\\" click.delegate=\\\"enableTotp()\\\" >Complete Setup</button>\\r\\n <button class=\\\"btn btn-axxess\\\" else disabled.bind=\\\"isLoading\\\">Loading..</button>\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n \\r\\n </div>\\r\\n</template>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/profile/sections/security/second-factor-options/authenticator.html\n// module id = pages/profile/sections/security/second-factor-options/authenticator.html\n// module chunks = 0","import { autoinject } from \"aurelia-framework\";\r\nimport { Router } from \"aurelia-router\";\r\n\r\n@autoinject()\r\nexport class SecurityKeySetup {\r\n\r\n private readonly _router: Router;\r\n private email: string;\r\n\r\n public constructor(router: Router) {\r\n this._router = router;\r\n }\r\n\r\n public async activate(params: any) {\r\n params = params || {};\r\n this.email = params.email;\r\n\r\n if (!this.email || this.email == \"\") {\r\n this._router.navigate(`/profile`);\r\n throw Error(\"email param missing\");\r\n }\r\n }\r\n\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/pages/profile/sections/security/second-factor-options/security-key.ts","module.exports = \"<template>\\r\\n <div class=\\\"slide-animate\\\">\\r\\n <h3 class=\\\"text-center\\\">Set up a security key</h3>\\r\\n \\r\\n <!-- <p>Make sure your key is with you, but not connected to your computer yet.</p> -->\\r\\n\\r\\n <div class=\\\"alert alert-warning fade show\\\" role=\\\"alert\\\">\\r\\n <p class=\\\"mb-0\\\">Security key support coming soon. Check back soon.</p>\\r\\n </div>\\r\\n\\r\\n <hr class=\\\"my-4\\\">\\r\\n <div class=\\\"text-right\\\">\\r\\n <a href=\\\"/profile/security/second-factor?email=${email}\\\" class=\\\"btn btn-light\\\" role=\\\"button\\\">\\r\\n Cancel\\r\\n </a>\\r\\n </div>\\r\\n </div>\\r\\n</template>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/profile/sections/security/second-factor-options/security-key.html\n// module id = pages/profile/sections/security/second-factor-options/security-key.html\n// module chunks = 0","module.exports = \"<template>\\r\\n <div class=\\\"slide-animate\\\">\\r\\n <h3 class=\\\"text-center\\\">2-Factor Verification</h3>\\r\\n\\r\\n <require from=\\\"../../sections/components/option-card\\\"></require>\\r\\n <require from=\\\"../../../../components/date-converters\\\"></require>\\r\\n\\r\\n <div\\r\\n if.bind=\\\"returnAction == 'twoFactorEnabled' && twoFactorEnabled\\\"\\r\\n class=\\\"alert alert-success alert-dismissible fade show\\\"\\r\\n role=\\\"alert\\\"\\r\\n >\\r\\n <p class=\\\"mb-0\\\">2-Factor Verification has been enabled.</p>\\r\\n <button\\r\\n type=\\\"button\\\"\\r\\n class=\\\"close\\\"\\r\\n data-dismiss=\\\"alert\\\"\\r\\n aria-label=\\\"Close\\\"\\r\\n >\\r\\n <span aria-hidden=\\\"true\\\">×</span>\\r\\n </button>\\r\\n </div>\\r\\n\\r\\n <div\\r\\n if.bind=\\\"returnAction == 'twoFactorDisabled' && !twoFactorEnabled\\\"\\r\\n class=\\\"alert alert-success alert-dismissible fade show\\\"\\r\\n role=\\\"alert\\\"\\r\\n >\\r\\n <p class=\\\"mb-0\\\">2-Factor Verification has been turned off.</p>\\r\\n <button\\r\\n type=\\\"button\\\"\\r\\n class=\\\"close\\\"\\r\\n data-dismiss=\\\"alert\\\"\\r\\n aria-label=\\\"Close\\\"\\r\\n >\\r\\n <span aria-hidden=\\\"true\\\">×</span>\\r\\n </button>\\r\\n </div>\\r\\n\\r\\n <div class=\\\"card\\\">\\r\\n <ul class=\\\"list-group list-group-flush\\\">\\r\\n <li class=\\\"list-group-item\\\" if.bind=\\\"!twoFactorEnabled\\\">\\r\\n <option-card\\r\\n title=\\\"2-Factor Status\\\"\\r\\n description=\\\"Enable 2-Factor Verification to add extra security to your account.\\\"\\r\\n >\\r\\n Not enabled\\r\\n </option-card>\\r\\n </li>\\r\\n <li class=\\\"list-group-item\\\" if.bind=\\\"twoFactorEnabled\\\">\\r\\n <option-card\\r\\n title=\\\"2-Factor Verification Enabled\\\"\\r\\n description=\\\"2-Factor Verification will add extra security on your account.\\\"\\r\\n >\\r\\n <a\\r\\n href=\\\"/profile/security/second-factor/turn-off?email=${email}\\\"\\r\\n class=\\\"btn btn-sm btn-axxess\\\"\\r\\n role=\\\"button\\\"\\r\\n >Turn off</a\\r\\n >\\r\\n </option-card>\\r\\n </li>\\r\\n </ul>\\r\\n </div>\\r\\n\\r\\n <h3 class=\\\"font-weight-light mt-4\\\" if.bind=\\\"twoFactorEnabled\\\">\\r\\n Your second step\\r\\n </h3>\\r\\n <div class=\\\"card\\\" if.bind=\\\"twoFactorEnabled\\\">\\r\\n <ul class=\\\"list-group list-group-flush\\\">\\r\\n <li class=\\\"list-group-item\\\" if.bind=\\\"totpStatus.active\\\">\\r\\n <option-card\\r\\n title=\\\"Authenticator app\\\"\\r\\n description=\\\"Use your mobile device for 2-Factor Verification.\\\"\\r\\n >\\r\\n <span class=\\\"text-capitalize\\\">Enabled</span> ${ totpStatus.enabledOn\\r\\n | timeAgo }\\r\\n </option-card>\\r\\n </li>\\r\\n <li class=\\\"list-group-item\\\">\\r\\n <option-card\\r\\n title=\\\"Recovery code\\\"\\r\\n description=\\\"Please save this emergency recovery code for disabling your Two Factor Authentication in case you lose your device !\\\"\\r\\n >\\r\\n <span class=\\\"text-capitalize\\\">${recoveryCode}</span>\\r\\n </option-card>\\r\\n </li>\\r\\n </ul>\\r\\n </div>\\r\\n\\r\\n <h3 class=\\\"font-weight-light mt-4\\\">\\r\\n ${ twoFactorEnabled ? 'Set up alternative second step' : 'Choose your\\r\\n second step' }\\r\\n </h3>\\r\\n <div class=\\\"card\\\">\\r\\n <div class=\\\"list-group list-group-flush\\\">\\r\\n <a\\r\\n class=\\\"list-group-item list-group-item-action\\\"\\r\\n href=\\\"/profile/security/second-factor/authenticator?email=${email}\\\"\\r\\n if.bind=\\\"!totpStatus.active\\\"\\r\\n >\\r\\n <option-card\\r\\n title=\\\"Authenticator App\\\"\\r\\n description=\\\"Use your mobile device for 2-Factor Verification.\\\"\\r\\n editable=\\\"true\\\"\\r\\n >\\r\\n Set Up\\r\\n </option-card>\\r\\n </a>\\r\\n <a\\r\\n class=\\\"list-group-item list-group-item-action\\\"\\r\\n href=\\\"/profile/security/second-factor/security-key?email=${email}\\\"\\r\\n >\\r\\n <option-card\\r\\n title=\\\"Security Key\\\"\\r\\n description=\\\"A Security Key is a small physical device used for signing in.\\\"\\r\\n editable=\\\"true\\\"\\r\\n >\\r\\n Set Up\\r\\n </option-card>\\r\\n </a>\\r\\n </div>\\r\\n </div>\\r\\n\\r\\n <div class=\\\"d-flex justify-content-between mt-4\\\">\\r\\n <div>\\r\\n <a\\r\\n href=\\\"/profile?returnAction=cancel\\\"\\r\\n class=\\\"btn btn-light\\\"\\r\\n role=\\\"button\\\"\\r\\n >\\r\\n <i class=\\\"fa fa-arrow-alt-circle-left\\\"></i> Back to Profile\\r\\n </a>\\r\\n </div>\\r\\n </div>\\r\\n </div>\\r\\n</template>\\r\\n\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/profile/sections/security/second-factor.html\n// module id = pages/profile/sections/security/second-factor.html\n// module chunks = 0","import \"./signin-oidc.scss\";\r\n\r\nimport { autoinject } from \"aurelia-framework\";\r\n\r\nimport { OidcService } from \"./../../services/oidc-service\";\r\n\r\n@autoinject()\r\nexport class SigninOidc {\r\n\r\n private readonly _oidcService: OidcService;\r\n\r\n public constructor(oidcService: OidcService) {\r\n this._oidcService = oidcService;\r\n }\r\n\r\n public async activate() {\r\n this._oidcService.navigateToReturnUrl();\r\n }\r\n}\n\n\n// WEBPACK FOOTER //\n// ./src/pages/signin-oidc/signin-oidc.ts","module.exports = \"<template>\\r\\n \\r\\n</template>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/signin-oidc/signin-oidc.html\n// module id = pages/signin-oidc/signin-oidc.html\n// module chunks = 0","\nvar content = require(\"!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??ref--1-2!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/lib/loader.js??ref--1-4!./signin-oidc.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"sourceMap\":true,\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??ref--1-2!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/lib/loader.js??ref--1-4!./signin-oidc.scss\", function() {\n\t\tvar newContent = require(\"!!../../../node_modules/css-loader/index.js??ref--1-1!../../../node_modules/postcss-loader/lib/index.js??ref--1-2!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/lib/loader.js??ref--1-4!./signin-oidc.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/signin-oidc/signin-oidc.scss\n// module id = tbyw\n// module chunks = 0","import { autoinject } from \"aurelia-framework\";\r\nimport { IdentityClient } from \"../infrastructure/identity-client\";\r\n\r\n@autoinject()\r\nexport class TwoFactorAuthService {\r\n private readonly _client: IdentityClient;\r\n\r\n public constructor(client: IdentityClient) {\r\n this._client = client;\r\n }\r\n\r\n public async authorize() {\r\n let response = await this._client\r\n .build(\"v1/recovery/authorize\")\r\n .useMethod(\"POST\")\r\n .fetch<IRequestQuery>();\r\n return response;\r\n }\r\n\r\n public async verify(requestQuery: IRequestQuery) {\r\n let response = await this._client\r\n .build(\"v1/recovery/verify\")\r\n .useMethod(\"POST\")\r\n .useQueryString(requestQuery)\r\n .fetch<IVerifyResponse>();\r\n return response;\r\n }\r\n}\r\n\r\nexport interface IRequestQuery {\r\n code: string;\r\n}\r\n\r\nexport interface IVerifyResponse {\r\n disabled: boolean\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/services/two-factor-auth-service.ts"],"sourceRoot":""}