{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layouts/DefaultLayout.vue?4316","webpack:///./src/layouts/DefaultLayout.vue?1dd0","webpack:///src/layouts/DefaultLayout.vue","webpack:///./src/layouts/DefaultLayout.vue?1684","webpack:///./src/layouts/DefaultLayout.vue","webpack:///./src/utils/messages/message.js","webpack:///./src/utils/services/usermanagement.js","webpack:///./src/store/index.js","webpack:///./src/utils/session.js","webpack:///./src/App.vue?131a","webpack:///src/App.vue","webpack:///./src/App.vue?1160","webpack:///./src/App.vue","webpack:///./src/pages/profile-settings/socialConnectSuccess.vue?1e5e","webpack:///./src/components/SocialConnectSuccess.vue?f4b4","webpack:///./src/components/UI/LoadingSpinnerRed.vue?444a","webpack:///src/components/UI/LoadingSpinnerRed.vue","webpack:///./src/components/UI/LoadingSpinnerRed.vue?8b02","webpack:///./src/components/UI/LoadingSpinnerRed.vue","webpack:///src/components/SocialConnectSuccess.vue","webpack:///./src/components/SocialConnectSuccess.vue?04da","webpack:///./src/components/SocialConnectSuccess.vue","webpack:///./src/components/SocialConnectSuccessSwg.vue?b513","webpack:///src/components/SocialConnectSuccessSwg.vue","webpack:///./src/components/SocialConnectSuccessSwg.vue?0dd8","webpack:///./src/components/SocialConnectSuccessSwg.vue","webpack:///src/pages/profile-settings/socialConnectSuccess.vue","webpack:///./src/pages/profile-settings/socialConnectSuccess.vue?97c5","webpack:///./src/pages/profile-settings/socialConnectSuccess.vue","webpack:///./src/pages/profile-settings/socialConnectError.vue?a9f8","webpack:///./src/components/SocialConnectError.vue?d4f5","webpack:///src/components/SocialConnectError.vue","webpack:///./src/components/SocialConnectError.vue?7300","webpack:///./src/components/SocialConnectError.vue","webpack:///src/pages/profile-settings/socialConnectError.vue","webpack:///./src/pages/profile-settings/socialConnectError.vue?b470","webpack:///./src/pages/profile-settings/socialConnectError.vue","webpack:///./src/utils/common/validate-email.js","webpack:///./src/router/index.js","webpack:///./src/utils/validations.js","webpack:///./src/plugins/datalayer.js","webpack:///./src/plugins/analytics.js","webpack:///./src/utils/importRecaptcha.js","webpack:///./src/utils/saveReferrer.js","webpack:///./src/main.js","webpack:///./src/App.vue?165b","webpack:///./src/utils/cookiesEnabled.js","webpack:///./src/utils/storeHelpers.js","webpack:///./src/utils/constants.js","webpack:///./src/vendor/amplitude/index.js","webpack:///./src/components/UI/LoadingSpinnerRed.vue?a150"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","render","_vm","this","_h","$createElement","_c","_self","staticClass","_t","attrs","staticRenderFns","component","emailMessages","CHANGE_EMAIL_SUCCESS","email","CONFIRMATION_EMAIL_SENT","UNAUTHORIZED","campaignCode","VALIDATION","ALREADY_TAKEN","ALREADY_TAKEN_UNVERIFIED_EMAIL","ALREADY_TAKEN_EMAIL_UNDER30D","NOT_EMAIL","changeEmailMessages","GENERIC_ERROR","csrPhoneNumber","BAD_CREDENTIALS","NOTHING_FOUND","genericMessages","GENERIC_ERROR_TRY_AGAIN","Vue","use","VueResource","api","url","credentials","ssoCookie","http","GAMWebMyAccountConfig","USERMANAGEMENTAPI","headers","Authorization","getNoHeaders","getDelego","Accept","DELEGO_JWT_APP_ID","DELEGO_JWT_APP_SECRET","post","payload","params","response","ok","catch","postWithConfig","body","config","postWithConfigV3","postToCheckEntitlements","postPublicV3","put","putWithConfig","delete","deleteV2","Vuex","options","state","userProfile","user","attributes","extra","sapInfo","services","fetched","userAddress","currentDeliveryAddress","futureDeliveryAddress","allowAddressUpdate","editedAttributes","firstName","lastName","deliveryProducts","editDeliveryProducts","editDeliveryAddressResponse","status","requestId","notifications","formFocus","suggestedDisplayNames","newsletterNotifications","userIsAuthenticated","subscriptionVouchers","getters","subscribedNewsletters","newsletters","currentDeliveryProducts","getNotificationByScope","scope","find","item","isGUSubscriber","some","svc","serviceGroup","isGASubscriber","isGAUserAdvisor","GA_SEGMENT","isGAUserInvestor","isGAMSubscriber","isNYTSubscriber","isGroupSubscriber","isGroupSubscription","isPaidSubscriber","communityUsername","mySubscriptionToken","mutations","setFormFocus","form","setUserProfile","setSubscriptionVouchers","setDeliveryAddresses","current","map","address","addressNumber","streetNumber","houseNumber","streetName","street","suiteNumber","secondaryAddrNumber","city","provinceCode","province","countryCode","country","postalCode","phoneNumber","phone","deliveryInstruction","future","startDate","validFromDate","referenceNumber","setUserAddress","updateUserProfile","assign","successfulEditDeliveryAddress","updateDeliveryInstructions","updateEditDeliveryProducts","updateCurrentDeliveryProducts","clearNotificationTimeout","pos","indexOf","timeoutId","addNotification","fade","store","commit","deleteNotification","setSuggestedDisplayNames","setEditedFirstName","setEditedLastName","addNewsletterNotification","removeNewsletterNotification","index","setUserIsAuthenticated","isAuthenticated","actions","getUserProfile","dispatch","log","getSubscriptionVouchers","removeVoucherUser","handleLogout","context","urlData","CPC_URL","token","query","JSON","stringify","dataEnc","location","getDeliveryAddresses","resp","getAddress","getBillingAddress","getCardInfo","cardUpdate","updateExpiry","clearDeliveryAddressResponse","fireErrorLog","errorLog","validateUsername","displayName","grecaptcha","execute","RECAPTCHA_SITE_KEY","action","grecaptchaToken","apiConfig","valid","showNewsletterNotification","duplicateNotification","notification","resendActivationEmail","getGrecaptchaToken","Store","session","localStorage","removeItem","cookies","forEach","cookie","Cookie","set","decodeURI","domain","expires","maxAge","ENV_NAME","sessionEnv","envMatch","removeCookie","remove","COOKIE_DOMAIN","isIE11","MSInputMethodContext","documentMode","created","addEventListener","hashChange","beforeDestroy","removeEventListener","methods","$route","path","currentPath","$router","replace","slot","components","socialProvider","setSocialConnectCookie","getSocialProvider","provider","sendAccessTokenToApi","VLayout","VSocialConnectSuccess","VSocialConnectSuccessSwg","computed","swgRoute","close","VSocialConnectError","validateEmail","to","from","next","emailType","router","text","validateEmailToken","validateEmailError","ProfileSettings","MySubscription","GroupSubscriptions","AdvisorProfileSettings","ProfileHistory","FindMyPrint","ChangeEmail","SfdcCookie2qs","Router","publicRoutes","routes","beforeEnter","hashUrlPatternCheck","userAuthenticationCheck","SocialConnectSuccess","SocialConnectError","multiguard","redirect","base","scrollBehavior","x","y","hasQueryParams","route","keys","nextWithParams","fullPathPattern","hashPattern","isOldUrlPattern","test","fullPath","hash","newFullPath","substring","HOST_URL","extendValidationRules","extend","validate","args","fieldName","field","errorKey","errors","min","max","nums","required","is_not","tgam","datalayer","identity","subscription","page","darwinTests","datalayerInitialIdentity","birthYear","gender","guid","incomeRange","industry","newsletter","position","postal","prizm","role","id","ssvcs","watchlist","resetDataLayer","populateDataLayer","deviceSize","channel","fetchDataLayer","usermanagement","setItem","setRole","isSubscriber","updateUserInfo","userInfo","deviceType","screen","width","athenaReportSuite","defineProperties","$datalayer","AnalyticsPlugin","pageview","pageName","analyticsLayer","contentType","pageLoaded","updateProfile","clickEvent","feature","label","linkAccount","updatePrivacy","clearPersonalData","prop","newsletterEvent","toLowerCase","frequency","updateCreditCard","updateAccountEmail","submitBillingAddressChange","provideDeliveryPostalCode","submitDeliveryAddress","submitDeliveryAddressChange","stepName","confirmDeliveryAddress","lookupSubscription","lookupType","accountEvent","eventAction","loginProvider","analytics","$analytics","importRecaptcha","saveReferrer","cookiesEnabled","sessionStorage","referrer","envName","environment","ampli","load","client","configuration","defaultTracking","setInteractionMode","on","productionTip","DataLayer","Analytics","el","App","h","isCookieEnabled","val","actionLabel","freeze","DISPLAY","DELEGO","BAMBORA","ApiKey","dev","prod","DefaultConfiguration","plan","version","branch","source","versionId","ingestionMetadata","sourceName","sourceVersion","AccountInteraction","properties","event_type","event_properties","AccountLogin","AccountLogout","AccountRegistration","AccountSubscription","ArticleView","AudioComplete","AudioPause","AudioPlay","ButtonClick","CommentPost","CommentReply","CommentRespect","ContentImpressions","HomepageView","LinkClick","NewsletterSignup","NewsletterUnsubscribe","PaywallHit","RegwallHit","SectionView","SiteSearch","VideoComplete","VideoPause","VideoPlay","getVoidPromiseResult","Ampli","amplitude","disabled","isLoaded","apiKey","warn","instance","init","userId","isInitializedAndEnabled","user_id","ampIdentify","eventProperties","entries","identify","flush","track"],"mappings":"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","file":"js/app.60927fdd.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-61a417fb\":\"817eee7a\",\"chunk-2434bc87\":\"ae49d4ab\",\"chunk-3804a9a0\":\"57ea156a\",\"chunk-d43622f8\":\"8a8e7da8\",\"chunk-e85477a0\":\"ff57fa66\",\"chunk-0260ec21\":\"dc22247f\",\"chunk-051cb566\":\"ff02cf90\",\"chunk-25f9a34c\":\"4f60307f\",\"chunk-5a5cae42\":\"d6dd7c2b\",\"chunk-5e95c304\":\"6938d6c2\",\"chunk-65ff2d88\":\"fc12f87b\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"chunk-61a417fb\":1,\"chunk-2434bc87\":1,\"chunk-3804a9a0\":1,\"chunk-d43622f8\":1,\"chunk-e85477a0\":1,\"chunk-0260ec21\":1,\"chunk-051cb566\":1,\"chunk-25f9a34c\":1,\"chunk-5a5cae42\":1,\"chunk-5e95c304\":1,\"chunk-65ff2d88\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-61a417fb\":\"5b8a3faa\",\"chunk-2434bc87\":\"86031516\",\"chunk-3804a9a0\":\"9cf7e5b2\",\"chunk-d43622f8\":\"77373da8\",\"chunk-e85477a0\":\"f14a5de0\",\"chunk-0260ec21\":\"43760fce\",\"chunk-051cb566\":\"a8a3d753\",\"chunk-25f9a34c\":\"c483cd37\",\"chunk-5a5cae42\":\"52748661\",\"chunk-5e95c304\":\"9275a51c\",\"chunk-65ff2d88\":\"c70c5cd6\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/myaccount/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DefaultLayout.vue?vue&type=style&index=0&id=85aab2a8&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DefaultLayout.vue?vue&type=style&index=0&id=85aab2a8&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"dl-container\"},[_c('div',[_vm._t(\"header\")],2),_c('main',{staticClass:\"dl-body myaccount-body\",attrs:{\"aria-label\":\"My Account main\"}},[_vm._t(\"body\")],2),_c('div',[_vm._t(\"footer\")],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DefaultLayout.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DefaultLayout.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DefaultLayout.vue?vue&type=template&id=85aab2a8&scoped=true&\"\nimport script from \"./DefaultLayout.vue?vue&type=script&lang=js&\"\nexport * from \"./DefaultLayout.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DefaultLayout.vue?vue&type=style&index=0&id=85aab2a8&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"85aab2a8\",\n null\n \n)\n\nexport default component.exports","import { csrPhoneNumber } from '@/utils/constants'\n\nconst emailMessages = {\n CHANGE_EMAIL_SUCCESS: email => {\n return `We’ve sent an email to ${email}. You must confirm your new email address.`\n },\n CONFIRMATION_EMAIL_SENT: email => {\n return `We've sent an email to ${email} for you to confirm your email address.`\n },\n UNAUTHORIZED: campaignCode => {\n return `Your session is inactive. Please log in and try again`\n },\n VALIDATION: \"We couldn't process that email address. Please try again.\",\n ALREADY_TAKEN:\n 'That email address is in use. Please choose another email address.',\n ALREADY_TAKEN_UNVERIFIED_EMAIL:\n 'This email is already associated with another Globe and Mail account.',\n ALREADY_TAKEN_EMAIL_UNDER30D:\n 'This email is in use, but has not been confirmed.',\n NOT_EMAIL: 'The email field must be a valid email.'\n}\n\nconst changeEmailMessages = {\n GENERIC_ERROR: `We are currently experiencing technical difficulties. Please contact our Customer Care team at ${csrPhoneNumber}.`,\n ALREADY_TAKEN:\n 'This email is already in use. Please choose a new email address to create an account.',\n NOT_EMAIL: \"We can't process that email address. Please try again.\",\n BAD_CREDENTIALS: `The password you've entered doesn't match that email address`,\n NOTHING_FOUND: `We can't find that email address in our records.`,\n CHANGE_EMAIL_SUCCESS: email =>\n `We've sent an email to ${email}. Please confirm your new email address.`\n}\n\nconst sapLinkMessages = {\n LINK_ACCOUNT_SUCCESS: email => {\n return `We found your newspaper subscription. You may now access your subscription details and manage it online using ${email}.`\n },\n ALREADY_LINKED: scope => {\n const method =\n scope === 'sap-email' ? 'email address' : 'phone number and postal code'\n return `A subscription is already linked to that ${method}. Please call Customer Care at ${csrPhoneNumber}.`\n },\n NOT_LINKED_NONE_FOUND: `No match found. Re-enter and try again or call Customer Care at ${csrPhoneNumber}.`,\n NOT_LINKED_MANY_FOUND: scope => {\n const method =\n scope === 'sap-email' ? 'email address' : 'phone number and postal code'\n return `We recognize that ${method} but require more information. Please call Customer Care at ${csrPhoneNumber}.`\n }\n}\n\nconst findMyPrintMessages = {\n ALREADY_LINKED_TO_SOME_EMAIL: hashedEmail =>\n `

Your Globe and Mail print subscription is already linked to an email.

Please log in below with ${hashedEmail} or call a customer service representative at ${csrPhoneNumber}.

`,\n PRINT_SUBSCRIPTION_NOT_FOUND: `

We could not find your print subscription.

Please call a customer service representative at ${csrPhoneNumber}.

`,\n SET_PASSWORD_EMAIL_SENT: hashedEmail =>\n `

Please create a password

We found your New York Times print subscription. We emailed to you instructions on how to create a password so that you can log in and manage your account.

Please go to your email client and click on the link in the email to create a password.

Email Adress

${hashedEmail}

If that is not your email address please call a customer service representative at ${csrPhoneNumber}.

`\n}\n\nconst loginMessages = {\n BAD_CREDENTIALS: `Invalid Credentials`,\n PASSWORD_EMAIL_SENT: email => {\n return `Password reset instructions have been emailed to ${email}`\n },\n ACCOUNT_NOT_ACTIVE: `You need to confirm your email address before we can log you in`\n}\n\nconst genericMessages = {\n GENERIC_ERROR: `We are currently experiencing technical difficulties. Please contact our Customer Care team at ${csrPhoneNumber}.`,\n GENERIC_ERROR_TRY_AGAIN:\n 'We are currently experiencing technical difficulties. Please try again later.'\n}\n\nexport {\n emailMessages,\n genericMessages,\n changeEmailMessages,\n sapLinkMessages,\n findMyPrintMessages,\n loginMessages\n}\n","import Vue from 'vue'\nimport VueResource from 'vue-resource'\n\nVue.use(VueResource)\n\nconst api = {\n get: function(url, credentials, ssoCookie) {\n return Vue.http.get(\n `${window.GAMWebMyAccountConfig.USERMANAGEMENTAPI}${url}`,\n {\n credentials: credentials,\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `TGAM site=GNEWS gamsso=${ssoCookie}`\n }\n }\n )\n },\n getNoHeaders: function(url, credentials) {\n return Vue.http.get(\n `${window.GAMWebMyAccountConfig.USERMANAGEMENTAPI}${url}`,\n {\n credentials: credentials\n }\n )\n },\n getDelego: function(url) {\n return Vue.http.get(\n `${window.GAMWebMyAccountConfig.USERMANAGEMENTAPI}${url}`,\n {\n headers: {\n Accept: 'application/json',\n 'X-GAM-CLIENT-APP-ID': `${window.GAMWebMyAccountConfig.DELEGO_JWT_APP_ID}`,\n 'X-GAM-CLIENT-APP-SECRET': `${window.GAMWebMyAccountConfig.DELEGO_JWT_APP_SECRET}`\n }\n }\n )\n },\n post: function(url, credentials, payload) {\n let params\n if (payload) {\n params = payload\n } else {\n params = null\n }\n return Vue.http\n .post(\n `${window.GAMWebMyAccountConfig.USERMANAGEMENTAPI}${url}`,\n params || null,\n { credentials: credentials }\n )\n .then(response => {\n if (response.ok) {\n return response\n } else {\n return Promise.reject(response)\n }\n })\n .catch(error => {\n return Promise.reject(error)\n })\n },\n postWithConfig: function(url, body = null, config = {}) {\n return Vue.http\n .post(\n `${window.GAMWebMyAccountConfig.USERMANAGEMENTAPI}${url}`,\n body,\n config\n )\n .then(response => {\n if (response.ok) {\n return response\n } else {\n return Promise.reject(response)\n }\n })\n .catch(error => {\n return Promise.reject(error)\n })\n },\n postWithConfigV3: function(url, body = null, config = {}) {\n return Vue.http\n .post(\n `${window.GAMWebMyAccountConfig.USERMANAGEMENTAPI}api/v3/${url}`,\n body,\n config\n )\n .then(response => {\n if (response.ok) {\n return response\n } else {\n return Promise.reject(response)\n }\n })\n .catch(error => {\n return Promise.reject(error)\n })\n },\n postToCheckEntitlements: function(body = null, config = {}) {\n return Vue.http\n .post(\n `${window.GAMWebMyAccountConfig.USERMANAGEMENTAPI}api/v1/entitlements/google`,\n body,\n config\n )\n .then(response => {\n return response\n })\n .catch(error => {\n return error\n })\n },\n postPublicV3: function(url, credentials, payload = null) {\n return Vue.http\n .post(\n `${window.GAMWebMyAccountConfig.USERMANAGEMENTAPI}public/v3/${url}`,\n payload,\n {\n credentials\n }\n )\n .then(response => {\n if (response.ok) {\n return response\n } else {\n return Promise.reject(response)\n }\n })\n .catch(error => {\n return Promise.reject(error)\n })\n },\n put: function(url, credentials, payload) {\n let params\n if (payload) {\n params = payload\n } else {\n params = null\n }\n return Vue.http\n .put(\n `${window.GAMWebMyAccountConfig.USERMANAGEMENTAPI}${url}`,\n params || null,\n { credentials: credentials }\n )\n .then(response => {\n if (response.ok) {\n return response\n } else {\n return Promise.reject(response)\n }\n })\n .catch(error => {\n return Promise.reject(error.data)\n })\n },\n putWithConfig: function(url, body = null, config = {}) {\n return Vue.http\n .put(\n `${window.GAMWebMyAccountConfig.USERMANAGEMENTAPI}${url}`,\n body,\n config\n )\n .then(response => {\n if (response.ok) {\n return response\n } else {\n return Promise.reject(response)\n }\n })\n .catch(error => {\n return Promise.reject(error)\n })\n },\n delete: function(url, credentials) {\n return Vue.http\n .delete(`${window.GAMWebMyAccountConfig.USERMANAGEMENTAPI}${url}`, {\n credentials: credentials\n })\n .then(response => response)\n .catch(error => error)\n },\n deleteV2: function(url, ssoCookie) {\n return Vue.http\n .post(\n `${window.GAMWebMyAccountConfig.USERMANAGEMENTAPI}api/users/v2/${url}`,\n {},\n {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `TGAM site=GNEWS gamsso=${ssoCookie}`\n }\n }\n )\n .then(response => response)\n .catch(error => error)\n }\n}\n\nexport default api\n","import Vue from 'vue'\nimport Vuex from 'vuex'\nimport api from '../utils/services/usermanagement'\nimport { getGrecaptchaToken } from '@/utils/storeHelpers'\n\nVue.use(Vuex)\n\nexport const options = {\n state: {\n userProfile: {\n user: { attributes: {} },\n extra: {},\n sapInfo: {},\n services: [],\n fetched: false\n },\n userAddress: {\n // product delivery address information for current user\n currentDeliveryAddress: [],\n futureDeliveryAddress: [],\n allowAddressUpdate: false\n },\n editedAttributes: {\n firstName: '',\n lastName: ''\n },\n deliveryProducts: [], // data for products currently subscribed to\n editDeliveryProducts: {}, // data for products available for submitted postal code\n editDeliveryAddressResponse: {\n status: '',\n requestId: ''\n },\n notifications: [],\n formFocus: null,\n suggestedDisplayNames: null,\n newsletterNotifications: [],\n userIsAuthenticated: true,\n subscriptionVouchers: []\n },\n getters: {\n subscriptionVouchers: state => {\n return state.subscriptionVouchers\n },\n subscribedNewsletters: state => {\n return state.userProfile.extra.newsletters\n },\n userAddress: state => {\n return state.userAddress\n },\n editDeliveryAddressResponse: state => {\n return state.editDeliveryAddressResponse\n },\n currentDeliveryProducts: state => {\n return state.deliveryProducts\n },\n editDeliveryProducts: state => {\n return state.editDeliveryProducts\n },\n getNotificationByScope: state => scope => {\n return state.notifications.find(item => {\n return item.scope === scope\n })\n },\n // Globe Unlimited subscriber\n isGUSubscriber: state => {\n return (\n state.userProfile.services &&\n state.userProfile.services.some(svc => {\n return svc.serviceGroup === 'PREMIUM'\n })\n )\n },\n // Globe Advisor subscriber\n isGASubscriber: state => {\n return (\n state.userProfile.services &&\n state.userProfile.services.some(svc => {\n return svc.serviceGroup === 'GA'\n })\n )\n },\n // Is the user a Financial Advisor in the Globe Advisor segment\n isGAUserAdvisor: state => {\n return (\n state.userProfile.services &&\n state.userProfile.services.some(svc => {\n return svc.serviceGroup === 'GA'\n }) &&\n state.userProfile.user.attributes.GA_SEGMENT === 'FINANCIAL_ADVISOR'\n )\n },\n // Is the user an Investor in the Globe Advisor segment\n isGAUserInvestor: state => {\n return (\n state.userProfile.services &&\n state.userProfile.services.some(svc => {\n return svc.serviceGroup === 'GA'\n }) &&\n state.userProfile.user.attributes.GA_SEGMENT === 'INVESTOR'\n )\n },\n // Globe and Mail print subscriber\n isGAMSubscriber: state => {\n return (\n state.userProfile.services &&\n state.userProfile.services.some(svc => {\n return svc.serviceGroup === 'NPGAM'\n })\n )\n },\n // New York Times print subscriber\n isNYTSubscriber: state => {\n return (\n state.userProfile.services &&\n state.userProfile.services.some(svc => {\n return svc.serviceGroup === 'NYT'\n })\n )\n },\n // group subscription subscriber (payer)\n isGroupSubscriber: state => {\n return (\n state.userProfile.services &&\n state.userProfile.services.some(svc => svc.isGroupSubscription)\n )\n },\n isPaidSubscriber: state => {\n const { communityUsername, mySubscriptionToken } = state.userProfile.extra\n return mySubscriptionToken && communityUsername ? true : false\n },\n suggestedDisplayNames: state => state.suggestedDisplayNames,\n editedAttributes: state => state.editedAttributes,\n formFocus: state => state.formFocus\n },\n mutations: {\n setFormFocus: (state, form) => {\n state.formFocus = form\n },\n setUserProfile: (state, data) => {\n state.userProfile = {\n ...data,\n fetched: true\n }\n },\n setSubscriptionVouchers: (state, payload) => {\n state.subscriptionVouchers = payload\n },\n setDeliveryAddresses: (state, data) => {\n state.userAddress.allowAddressUpdate = data.allowAddressUpdate\n if (data.current) {\n state.userAddress.currentDeliveryAddress = data.current.map(address => {\n return {\n addressNumber: address.addressNumber,\n firstName: address.firstName,\n lastName: address.lastName,\n streetNumber: address.houseNumber,\n streetName: address.street,\n suiteNumber: address.secondaryAddrNumber,\n city: address.city,\n provinceCode: address.province,\n countryCode: address.country,\n postalCode: address.postalCode,\n phoneNumber: address.phone,\n deliveryInstruction: address.deliveryInstruction\n }\n })\n }\n if (data.future) {\n state.userAddress.futureDeliveryAddress = data.future.map(address => {\n return {\n firstName: address.firstName,\n lastName: address.lastName,\n streetNumber: address.houseNumber,\n streetName: address.street,\n suiteNumber: address.secondaryAddrNumber,\n city: address.city,\n provinceCode: address.province,\n postalCode: address.postalCode,\n countryCode: address.country,\n phoneNumber: address.phone,\n deliveryInstruction: address.deliveryInstruction,\n startDate: address.validFromDate,\n referenceNumber: address.requestId\n }\n })\n }\n state.deliveryProducts = data.deliveryProducts\n },\n setUserAddress: (state, data) => {\n state.address = data.current[0]\n },\n updateUserProfile: (state, data) => {\n Object.assign(state.userProfile.user, data)\n },\n successfulEditDeliveryAddress: (state, data) => {\n state.editDeliveryAddressResponse = data\n },\n updateDeliveryInstructions: (state, data) => {\n state.userAddress.currentDeliveryAddress[0].deliveryInstruction = data\n },\n updateEditDeliveryProducts: (state, data) => {\n state.editDeliveryProducts = data\n },\n updateCurrentDeliveryProducts: (state, data) => {\n state.deliveryProducts = data\n },\n clearNotificationTimeout(state, data) {\n const pos = state.notifications.indexOf(data)\n if (state.notifications[pos].timeoutId)\n clearTimeout(state.notifications[pos].timeoutId)\n },\n addNotification: (state, data) => {\n if (data.fade) {\n data.timeoutId = setTimeout(() => {\n store.commit('deleteNotification', data)\n store.commit('setFormFocus', null)\n }, 5000)\n }\n state.notifications.push(data)\n },\n deleteNotification(state, data) {\n const pos = state.notifications.indexOf(data)\n if (pos !== -1) {\n state.notifications.splice(pos, 1)\n }\n },\n setSuggestedDisplayNames(state, data) {\n state.suggestedDisplayNames = data\n },\n setEditedFirstName(state, data) {\n state.editedAttributes.firstName = data\n },\n setEditedLastName(state, data) {\n state.editedAttributes.lastName = data\n },\n addNewsletterNotification(state, data) {\n state.newsletterNotifications.push(data)\n },\n removeNewsletterNotification(state, data) {\n const index = state.newsletterNotifications.indexOf(data)\n state.newsletterNotifications.splice(index, 1)\n },\n setUserIsAuthenticated(state, isAuthenticated) {\n state.userIsAuthenticated = isAuthenticated\n }\n },\n actions: {\n setFormFocus({ commit }, payload) {\n commit('setFormFocus', payload)\n },\n addNotification({ commit }, payload) {\n commit('addNotification', payload)\n },\n getUserProfile({ commit, dispatch }) {\n return api\n .get(`api/v3/user`, true)\n .then(response => {\n commit('setUserProfile', response.body)\n })\n .catch(error => {\n console.log(error)\n if (error) {\n if (error.body && error.body.error === 'UNAUTHORIZED') {\n dispatch('handleLogout')\n }\n }\n })\n },\n getSubscriptionVouchers({ commit, dispatch }) {\n return api\n .get(`public/v6/voucherDetails`, true)\n .then(response => {\n commit('setSubscriptionVouchers', response.body)\n })\n .catch(error => {\n if (error && error.status === 401) {\n dispatch('handleLogout')\n } else throw error\n })\n },\n removeVoucherUser({ dispatch }, payload) {\n return api.post(`public/v6/revokeVoucher`, true, payload).catch(error => {\n if (error && error.status === 401) {\n dispatch('handleLogout')\n } else throw error\n })\n },\n async handleLogout(context, urlData) {\n let href = `${window.GAMWebMyAccountConfig.CPC_URL}/login`\n if (urlData && urlData.token) href += `/${urlData.token}`\n if (urlData && urlData.query) {\n try {\n //encrypt url query data using api\n const response = await api.post(`public/v3/encrypt`, true, [\n { data: JSON.stringify(urlData.query) }\n ])\n if (response.ok && response.body[0].dataEnc) {\n href += `?ehash=${response.body[0].dataEnc}`\n }\n } catch (error) {\n console.log(error)\n }\n }\n window.location.href = href\n },\n getDeliveryAddresses(context) {\n return api\n .get(`public/v3/user/address/delivery`, true)\n .then(response => {\n context.commit('setDeliveryAddresses', response.body)\n if (response.body.current) {\n api\n .getNoHeaders(\n `v2/campaign/print?deliveryPostalCode=${response.body.current[0].postalCode}&deliveryProductCode=GAMPRINT`\n )\n .then(resp => {\n context.commit(\n 'updateCurrentDeliveryProducts',\n resp.body.deliveryProducts\n )\n })\n .catch(error => {\n console.log('error', error)\n })\n }\n })\n .catch(error => {\n console.log('error', error)\n })\n },\n getAddress(context) {\n return api\n .get(`public/v3/user/address`, true)\n .then(response => {\n context.commit('setUserAddress', response.body)\n })\n .catch(error => console.log('error', error))\n },\n getBillingAddress() {\n return api.get(`public/v3/user/address/billing`, true)\n },\n updateUserProfile(context, data) {\n return api.put(`api/v3/user`, true, data).then(response => {\n context.commit('updateUserProfile', response.body)\n })\n },\n updateDeliveryInstructions(context, data) {\n context.commit('updateDeliveryInstructions', data)\n },\n successfulEditDeliveryAddress(context, data) {\n return new Promise(resolve => {\n context.commit('successfulEditDeliveryAddress', data)\n resolve()\n })\n },\n updateEditDeliveryProducts(context, data) {\n context.commit('updateEditDeliveryProducts', data)\n },\n getCardInfo() {\n return api.get('public/v3/users/cards', true)\n },\n cardUpdate(context, payload) {\n return api.post('public/v3/cards/info', true, payload)\n },\n updateExpiry(context, payload) {\n return api.put('public/v3/cards/expiry', true, payload)\n },\n clearDeliveryAddressResponse(context) {\n context.commit('successfulEditDeliveryAddress', {\n status: '',\n requestId: ''\n })\n },\n async fireErrorLog(context, errorLog) {\n try {\n await api.post('api/v3/sites/log', true, JSON.stringify(errorLog))\n /*eslint-disable-next-line */\n } catch (error) {}\n },\n async validateUsername({ commit, getters }, displayName) {\n const { firstName, lastName } = getters.editedAttributes\n let grecaptchaToken\n try {\n grecaptchaToken = await window.grecaptcha.execute(\n window.GAMWebMyAccountConfig.RECAPTCHA_SITE_KEY,\n { action: 'validateusername' }\n )\n } catch (error) {\n grecaptchaToken = null\n }\n\n const apiConfig = {\n headers: grecaptchaToken ? { token: grecaptchaToken } : {}\n }\n\n const data = {\n displayName,\n firstName,\n lastName\n }\n\n return api\n .postWithConfig(`/api/v3/user/validate`, data, apiConfig)\n .then(response => {\n if (response.body && response.body.result === true) {\n commit('setSuggestedDisplayNames', null)\n return { valid: true }\n }\n })\n .catch(err => {\n return { valid: false, data: err }\n })\n },\n setEditedFirstName({ commit }, payload) {\n commit('setEditedFirstName', payload)\n },\n setEditedLastName({ commit }, payload) {\n commit('setEditedLastName', payload)\n },\n showNewsletterNotification({ commit, state }, payload) {\n const duplicateNotification = state.newsletterNotifications.find(\n notification => notification.code === payload.code\n )\n if (duplicateNotification) {\n clearTimeout(duplicateNotification.timeoutId)\n commit('removeNewsletterNotification', payload)\n }\n payload.timeoutId = setTimeout(() => {\n commit('removeNewsletterNotification', payload)\n }, 2000)\n commit('addNewsletterNotification', payload)\n },\n async resendActivationEmail(context, params) {\n const grecaptchaToken = await getGrecaptchaToken('resendemail')\n const apiConfig = grecaptchaToken\n ? { credentials: false, headers: { token: grecaptchaToken } }\n : { credentials: false }\n return api.postWithConfigV3('user/activation', params, apiConfig)\n }\n }\n}\n\nlet store = new Vuex.Store(options)\nexport { store }\n","import Cookie from 'js-cookie'\n\nconst session = {\n create: function(response) {\n window.localStorage.removeItem('rawDataLayer')\n response.data.cookies.forEach(function(cookie) {\n Cookie.set(cookie.name, decodeURI(cookie.value), {\n domain: cookie.domain,\n expires: cookie.maxAge > 0 ? cookie.maxAge / 86400 : false\n })\n })\n },\n isAuthenticated: () => {\n // Internal users must have a SESSION_ENV cookie matching the current environment\n // Production users don't need the SESSION_ENV cookie\n const { ENV_NAME } = window.GAMWebMyAccountConfig\n const sessionEnv = Cookie.get('SESSION_ENV')\n const envMatch = ENV_NAME === 'PROD' ? true : sessionEnv === ENV_NAME\n return Cookie.get('SESSION') !== undefined && envMatch\n },\n removeCookie: () => {\n Cookie.remove('SESSION', {\n domain: window.GAMWebMyAccountConfig.COOKIE_DOMAIN\n })\n }\n}\n\nexport default session\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('router-view')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=3f93504c&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-layout',[(_vm.swgRoute)?_c('v-social-connect-success-swg',{attrs:{\"slot\":\"body\"},slot:\"body\"}):_c('v-social-connect-success',{attrs:{\"slot\":\"body\"},slot:\"body\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"l-container home\"},[_c('loading-spinner-red')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"loading-possition\"},[_c('div',{staticClass:\"c-spinner c-spinner-color c-spinner-size\"}),_c('p',{staticClass:\"loading-message\"},[_vm._t(\"default\")],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoadingSpinnerRed.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoadingSpinnerRed.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LoadingSpinnerRed.vue?vue&type=template&id=37c65d2e&scoped=true&\"\nimport script from \"./LoadingSpinnerRed.vue?vue&type=script&lang=js&\"\nexport * from \"./LoadingSpinnerRed.vue?vue&type=script&lang=js&\"\nimport style0 from \"./LoadingSpinnerRed.vue?vue&type=style&index=0&id=37c65d2e&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"37c65d2e\",\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialConnectSuccess.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialConnectSuccess.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SocialConnectSuccess.vue?vue&type=template&id=2af5644c&\"\nimport script from \"./SocialConnectSuccess.vue?vue&type=script&lang=js&\"\nexport * from \"./SocialConnectSuccess.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"l-container home\"},[_c('loading-spinner-red')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialConnectSuccessSwg.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialConnectSuccessSwg.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SocialConnectSuccessSwg.vue?vue&type=template&id=5b766e8c&\"\nimport script from \"./SocialConnectSuccessSwg.vue?vue&type=script&lang=js&\"\nexport * from \"./SocialConnectSuccessSwg.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./socialConnectSuccess.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./socialConnectSuccess.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./socialConnectSuccess.vue?vue&type=template&id=7b000b9c&\"\nimport script from \"./socialConnectSuccess.vue?vue&type=script&lang=js&\"\nexport * from \"./socialConnectSuccess.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-layout',[_c('v-social-connect-error',{attrs:{\"slot\":\"body\"},slot:\"body\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"l-container home\"})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialConnectError.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SocialConnectError.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./SocialConnectError.vue?vue&type=template&id=b260495a&\"\nimport script from \"./SocialConnectError.vue?vue&type=script&lang=js&\"\nexport * from \"./SocialConnectError.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./socialConnectError.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./socialConnectError.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./socialConnectError.vue?vue&type=template&id=6f923d37&\"\nimport script from \"./socialConnectError.vue?vue&type=script&lang=js&\"\nexport * from \"./socialConnectError.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import api from '../services/usermanagement'\nimport { store } from '@/store'\nimport router from '../../router'\nimport session from '@/utils/session'\n\nasync function validateEmail(to, from, next) {\n const emailType = to.params.emailType\n const token = to.params.token\n\n if (emailType === 'email') {\n let grecaptchaToken\n try {\n grecaptchaToken = await window.grecaptcha.execute(\n window.GAMWebMyAccountConfig.RECAPTCHA_SITE_KEY,\n { action: 'validateemail' }\n )\n } catch (err) {\n grecaptchaToken = null\n }\n const apiConfig = {\n credentials: true,\n headers: grecaptchaToken ? { token: grecaptchaToken } : {}\n }\n\n api\n .putWithConfig(`api/v3/user/email`, token, apiConfig)\n .then(() => {\n if (session.isAuthenticated()) {\n router.push(\n {\n name: 'profileSettings'\n },\n () => {\n store.commit('addNotification', {\n type: 'success',\n scope: 'validate-email',\n text: 'Your new email address has been confirmed.',\n fade: false,\n close: true\n })\n }\n )\n } else {\n const query = { ...to.query, validateEmailToken: token }\n store.dispatch('handleLogout', { query })\n }\n })\n .catch(err => {\n console.error(err)\n if (session.isAuthenticated()) {\n router.push(\n {\n name: 'profileSettings'\n },\n () => {\n store.commit('addNotification', {\n type: 'error',\n scope: 'validate-email',\n text:\n \"An error occurred. We couldn't validate the email address. Please try again.\",\n fade: false,\n close: true\n })\n }\n )\n } else {\n const query = { ...to.query, validateEmailError: err.body }\n store.dispatch('handleLogout', { query })\n }\n })\n } else {\n next()\n }\n}\n\nexport default validateEmail\n","import Vue from 'vue'\nimport Router from 'vue-router'\nimport multiguard from 'vue-router-multiguard'\nimport SocialConnectSuccess from '@/pages/profile-settings/socialConnectSuccess'\nimport SocialConnectError from '@/pages/profile-settings/socialConnectError'\nimport session from '@/utils/session'\nimport Cookie from 'js-cookie'\nimport { store } from '@/store'\nimport validateEmail from '@/utils/common/validate-email'\n\n// dynamically-loaded routes\nconst ProfileSettings = () => import('@/pages/profile-settings')\nconst MySubscription = () => import('@/pages/my-subscription')\nconst GroupSubscriptions = () => import('@/pages/group-subscriptions')\nconst AdvisorProfileSettings = () => import('@/pages/advisor-profile-settings')\nconst ProfileHistory = () => import('@/pages/profile-history')\nconst FindMyPrint = () => import('@/pages/find-my-print')\nconst ChangeEmail = () => import('@/pages/change-email')\nconst SfdcCookie2qs = () => import('@/pages/sfdc-cookie2qs')\n\nVue.use(Router)\n\nconst publicRoutes = [\n {\n path: '/find-my-print',\n name: 'findMyPrint',\n component: FindMyPrint\n },\n {\n path: '/change-email',\n name: 'changeEmail',\n component: ChangeEmail\n }\n]\n\nlet routes = [\n {\n path: '/',\n beforeEnter: hashUrlPatternCheck\n },\n {\n path: '/my-subscription',\n name: 'mySubscription',\n beforeEnter: userAuthenticationCheck,\n component: MySubscription\n },\n {\n path: '/group-subscriptions',\n name: 'groupSubscriptions',\n beforeEnter: userAuthenticationCheck,\n component: GroupSubscriptions\n },\n {\n path: '/account-settings',\n name: 'profileSettings',\n beforeEnter: userAuthenticationCheck,\n component: ProfileSettings\n },\n {\n path: '/advisor-profile-settings',\n name: 'advisorProfileSettings',\n beforeEnter: userAuthenticationCheck,\n component: AdvisorProfileSettings\n },\n {\n path: '/profile-settings/social-connect-success',\n name: 'socialConnectSuccess',\n beforeEnter: userAuthenticationCheck,\n component: SocialConnectSuccess\n },\n {\n path: '/profile-settings/social-connect-error',\n name: 'socialConnectError',\n beforeEnter: userAuthenticationCheck,\n component: SocialConnectError\n },\n {\n path: '/profile-settings/social-link/callback',\n name: 'socialLinkCallback',\n beforeEnter: userAuthenticationCheck,\n component: SocialConnectSuccess\n },\n {\n path: '/profile-settings/social-link/callback/swg',\n name: 'socialLinkCallbackSwg',\n beforeEnter: userAuthenticationCheck,\n component: SocialConnectSuccess\n },\n {\n path: '/account-history',\n name: 'profileHistory',\n beforeEnter: userAuthenticationCheck,\n component: ProfileHistory\n },\n {\n path: '/validate-email/:emailType/:token',\n name: 'validateemail',\n beforeEnter: multiguard([userAuthenticationCheck, validateEmail])\n },\n {\n path: '/sfdc-cookie2qs', // New route for Salesforce to redirect to\n name: 'sfdcCookie2qs',\n beforeEnter: userAuthenticationCheck,\n component: SfdcCookie2qs\n },\n ...publicRoutes,\n {\n path: '*',\n redirect: {\n name: 'profileSettings'\n }\n }\n]\n\n// Profile Settings, Privacy settings, Communication settings\nlet router = new Router({\n mode: 'history',\n base: '/myaccount/',\n routes,\n scrollBehavior() {\n return { x: 0, y: 0 }\n }\n})\n\nfunction hasQueryParams(route) {\n return !!Object.keys(route.query).length\n}\n\n// This function can be used to persist query strings across route changes\nfunction nextWithParams(to, from, next) {\n if (!hasQueryParams(to) && hasQueryParams(from)) {\n next({ name: to.name, query: from.query })\n } else {\n next()\n }\n}\n\nfunction hashUrlPatternCheck(to, from, next) {\n const fullPathPattern = /^\\/#\\//\n const hashPattern = /^#\\//\n const isOldUrlPattern =\n fullPathPattern.test(to.fullPath) && hashPattern.test(to.hash)\n if (isOldUrlPattern) {\n const newFullPath = to.fullPath.substring(2)\n next(newFullPath)\n } else {\n next({\n name: 'profileSettings',\n params: to.params,\n query: to.query\n })\n }\n}\n\nfunction userAuthenticationCheck(to, from, next) {\n if (session.isAuthenticated()) {\n if (store.state.userProfile.fetched === false) {\n store\n .dispatch('getUserProfile')\n .then(() => {\n nextWithParams(to, from, next)\n })\n .catch(() => {\n nextWithParams(to, from, next)\n })\n } else {\n nextWithParams(to, from, next)\n }\n } else if (to.name === 'validateemail') {\n nextWithParams(to, from, next)\n } else {\n Cookie.set(\n 'afterLoginGoTo',\n `${window.GAMWebMyAccountConfig.HOST_URL}${to.path.substring(1)}`,\n {\n domain: '.theglobeandmail.com'\n }\n )\n\n let token = to.params.token || null\n let query = Object.keys(to.query).length === 0 ? null : to.query\n const urlData = {\n token,\n query\n }\n store.dispatch('handleLogout', urlData)\n }\n}\n\nexport default router\n","import { email, is_not, required } from 'vee-validate/dist/rules'\nimport { extend } from 'vee-validate'\nimport api from '@/utils/services/usermanagement'\nimport { emailMessages, genericMessages } from '@/utils/messages/message'\nimport { store } from '@/store'\n\nexport const extendValidationRules = () => {\n extend('max', {\n validate(value, args) {\n return value.length <= args.length\n },\n params: ['length'],\n message: (fieldName, { length }) => {\n return `The ${fieldName} field must have less than ${length} characters`\n }\n })\n\n extend('canada_post', {\n message: 'Please enter a valid postal code',\n validate: value => {\n return api\n .get(`public/v3/address-lookup/${value}`)\n .then(() => {\n return { valid: true }\n })\n .catch(err => {\n return { valid: false, data: err }\n })\n }\n })\n\n extend('display_name', {\n message: (field, data) => {\n const errorKey = Object.keys(data.body.data.displayName.errors)[0]\n if (errorKey === 'ALREADY_TAKEN') {\n store.commit(\n 'setSuggestedDisplayNames',\n data.body.data.displayName.extra\n )\n return 'That display name has already been taken.'\n } else if (errorKey === 'WRONG_PARAMETER') {\n store.commit('setSuggestedDisplayNames', null)\n return 'That display name is inappropriate. Please select something different'\n } else if (errorKey === 'WRONG_PATTERN') {\n store.commit('setSuggestedDisplayNames', null)\n return 'This field can contain letters, numbers, dashes, underscores, periods, apostrophes and spaces'\n } else {\n store.commit('setSuggestedDisplayNames', null)\n return genericMessages.GENERIC_ERROR\n }\n },\n validate: value => {\n if (value === store.state.userProfile.user.displayName) return true\n return store.dispatch('validateUsername', value)\n }\n })\n\n extend('email', {\n ...email,\n message: 'The {_field_} field must be a valid email.'\n })\n\n extend('international_postal_code', {\n message: 'Please enter a valid postal code',\n validate: value => {\n return /^[a-zA-z0-9]/.test(value)\n }\n })\n\n extend('phone_number', {\n message: () => {\n return `Please enter a valid phone number`\n },\n validate: value => {\n return /^[\\d()-\\s]+$/.test(value)\n }\n })\n extend('phone_number_minmax', {\n message: () => {\n return `Please enter a valid phone number`\n },\n validate: (value, { min, max }) => {\n const nums = value.replace(/\\D/g, '')\n return min <= nums.length && nums.length <= max\n },\n params: ['min', 'max']\n })\n\n extend('phone_number_10_digits', {\n message: () => {\n return `Please enter a 10-digit phone number`\n },\n validate: value => {\n const nums = value.replace(/\\D/g, '')\n return nums.length === 10\n }\n })\n\n extend('postal_code', {\n message: 'Please enter a valid postal code',\n validate: value => {\n return /^[A-Za-z]\\d[A-Za-z][ -]?\\d[A-Za-z]\\d$/.test(value)\n }\n })\n\n extend('required', {\n ...required,\n message: 'The {_field_} field is required'\n })\n\n extend('unique_email', {\n ...email,\n message(field, data) {\n const errorKey = Object.keys(data.body.data.email.errors)[0]\n return emailMessages[errorKey] || emailMessages.GENERIC_ERROR\n },\n validate: async value => {\n let grecaptchaToken\n try {\n grecaptchaToken = await window.grecaptcha.execute(\n window.GAMWebMyAccountConfig.RECAPTCHA_SITE_KEY,\n { action: 'validateuniqueemail' }\n )\n } catch (err) {\n grecaptchaToken = null\n }\n const apiConfig = {\n headers: grecaptchaToken ? { token: grecaptchaToken } : {}\n }\n\n return api\n .postWithConfig(`api/v3/user/validate`, { email: value }, apiConfig)\n .then(response => {\n if (response.body && response.body.result === true) {\n return { valid: true }\n }\n })\n .catch(err => {\n return { valid: false, data: err }\n })\n }\n })\n\n extend('valid_name', {\n message: field => {\n return `The ${field} should contain only letters, spaces, apostrophes and dashes`\n },\n validate: value => {\n return /^[A-Z-\\s' àâäèéêëîïôœùûüÿçÀÂÄÈÉÊËÎÏÔŒÙÛÜŸÇ]*$/i.test(value)\n }\n })\n\n extend('is_not_current_email', {\n ...is_not,\n message: `The {_field_} cannot be the same as the current email`\n })\n}\n\nexport default extendValidationRules\n","import usermanagement from '../utils/services/usermanagement'\nimport session from '../utils/session'\n\nwindow.tgam = window.tgam || {}\nwindow.tgam.datalayer = window.tgam.datalayer || {}\nwindow.tgam.datalayer.identity = window.tgam.datalayer.identity || {}\nwindow.tgam.datalayer.subscription = window.tgam.datalayer.subscription || {}\nwindow.tgam.datalayer.page = window.tgam.datalayer.page || {}\nwindow.tgam.datalayer.darwinTests = window.tgam.datalayer.darwinTests || ''\n\nconst datalayer = window.tgam.datalayer\nconst datalayerInitialIdentity = {\n birthYear: '',\n country: '',\n gender: '',\n guid: '',\n incomeRange: '',\n industry: '',\n newsletter: '',\n position: '',\n postal: '',\n prizm: '',\n role: { id: 0, name: 'Anonymous' },\n ssvcs: '',\n watchlist: ''\n}\n\nwindow.tgam.datalayer.identity = datalayerInitialIdentity\n\nconst resetDataLayer = () => {\n window.tgam.datalayer.identity = datalayerInitialIdentity\n}\n\nconst populateDataLayer = () => {\n deviceSize()\n window.tgam.datalayer.page.channel = 'globeandmail'\n if (session.isAuthenticated()) {\n fetchDataLayer()\n }\n}\n\nconst fetchDataLayer = () => {\n return usermanagement.get(`api/v3/user/analytics`, true).then(response => {\n window.localStorage.setItem('rawDataLayer', JSON.stringify(response.body))\n Object.assign(datalayer.identity, response.body)\n datalayer.identity.role = setRole(datalayer.identity.ssvcs)\n datalayer.identity.id = datalayer.identity.id || {}\n datalayer.identity.id.hash =\n datalayer.identity.id.hash || datalayer.identity.guid\n return datalayer.identity\n })\n}\n\nfunction setRole(ssvcs) {\n if (session.isAuthenticated()) {\n const isSubscriber = ssvcs.indexOf('PREMIUM') !== -1\n if (isSubscriber) {\n return { id: 2, name: 'Subscribed' }\n } else {\n return { id: 1, name: 'Registered' }\n }\n } else {\n return { id: 0, name: 'Anonymous' }\n }\n}\n\nfunction updateUserInfo(userInfo) {\n Object.assign(window.tgam.datalayer.identity, userInfo)\n}\n\nfunction deviceSize() {\n let deviceType = ''\n if (window.screen.width > 992) {\n deviceType = 'tgam_desktop'\n } else if (window.screen.width < 576) {\n deviceType = 'tgam_mobile'\n } else {\n deviceType = 'tgam_tablet'\n }\n window.tgam.datalayer.page.athenaReportSuite = deviceType\n}\n\nexport default Vue => {\n Vue.datalayer = {\n datalayer,\n populateDataLayer,\n updateUserInfo,\n resetDataLayer\n }\n Object.defineProperties(Vue.prototype, {\n $datalayer: {\n get: () => {\n return Vue.datalayer\n }\n }\n })\n}\n","import Vue from 'vue'\nimport datalayer from './datalayer'\nVue.use(datalayer)\n\nconst AnalyticsPlugin = {\n pageview(pageName) {\n window.analyticsLayer.push({\n event: 'page',\n page: {\n name: pageName,\n type: 'sec',\n contentType: 'my-account',\n url: document.location.href\n }\n })\n },\n pageLoaded() {\n window.analyticsLayer.push({\n event: 'pageLoaded'\n })\n },\n updateProfile(type, pageName) {\n window.analyticsLayer.push({\n event: 'clickEvent',\n clickEvent: {\n type: 'button',\n feature: 'Profile Settings',\n label: type,\n action: 'Update',\n page: pageName\n }\n })\n },\n linkAccount(provider, action, pageName) {\n window.analyticsLayer.push({\n event: 'clickEvent',\n clickEvent: {\n type: 'button',\n feature: 'Link Social Accounts',\n label: provider,\n action: action,\n page: pageName\n }\n })\n },\n updatePrivacy(pageName) {\n window.analyticsLayer.push({\n event: 'clickEvent',\n clickEvent: {\n type: 'button',\n feature: 'Personal Information',\n label: 'Provide Personal Info',\n action: 'Save',\n page: pageName\n }\n })\n },\n clearPersonalData(pageName, prop) {\n window.analyticsLayer.push({\n event: 'clickEvent',\n clickEvent: {\n type: 'button',\n feature: 'Personal Information',\n label: `Clear ${prop} info`,\n action: 'Save',\n page: pageName\n }\n })\n },\n newsletterEvent(newsletter) {\n window.analyticsLayer.push({\n event: 'newsletterEvent',\n newsletterEvent: {\n name: newsletter.name.toLowerCase(),\n type: 'my-account',\n frequency: newsletter.frequency.toLowerCase(),\n action: newsletter.action\n }\n })\n },\n updateCreditCard(type, pageName) {\n window.analyticsLayer.push({\n event: 'clickEvent',\n clickEvent: {\n type: 'button',\n feature: 'Billing Settings',\n label: type,\n action: 'Update',\n page: pageName\n }\n })\n },\n updateAccountEmail(pageName) {\n window.analyticsLayer.push({\n event: 'clickEvent',\n clickEvent: {\n type: 'button',\n feature: 'Yes, I have a Subscription',\n label: 'Update account email',\n action: 'Submit',\n page: pageName\n }\n })\n },\n submitBillingAddressChange(pageName) {\n window.analyticsLayer.push({\n event: 'clickEvent',\n clickEvent: {\n type: 'button',\n feature: 'Billing Settings',\n label: 'Billing Address',\n action: 'Update',\n page: pageName\n }\n })\n },\n updateDeliveryInstructions(deliveryInstruction) {\n window.analyticsLayer.push({\n event: 'clickEvent',\n clickEvent: {\n type: 'button',\n feature: 'Delivery Instructions',\n label: deliveryInstruction,\n action: 'Update',\n page: 'globeandmail:cpc:subscription:section'\n }\n })\n },\n provideDeliveryPostalCode() {\n window.analyticsLayer.push({\n event: 'clickEvent',\n clickEvent: {\n type: 'button',\n feature: 'Delivery Address',\n label: 'Provide New Postal Code',\n action: 'Lookup',\n page: 'globeandmail:cpc:subscription:changeaddress:section'\n }\n })\n },\n submitDeliveryAddress() {\n window.analyticsLayer.push({\n event: 'clickEvent',\n clickEvent: {\n type: 'button',\n feature: 'Delivery Address',\n label: 'Temporarily',\n action: 'Change',\n page: 'globeandmail:cpc:subscription:changeaddress:section'\n }\n })\n },\n submitDeliveryAddressChange(stepName) {\n window.analyticsLayer.push({\n event: 'clickEvent',\n clickEvent: {\n type: 'button',\n feature: 'Delivery Address',\n label: 'Temporarily',\n action: 'Change',\n page: stepName\n }\n })\n },\n confirmDeliveryAddress() {\n window.analyticsLayer.push({\n event: 'clickEvent',\n clickEvent: {\n type: 'button',\n feature: 'Delivery Address',\n label: 'Temporarily',\n action: 'Change',\n page: 'globeandmail:cpc:subscription:changeaddress:section'\n }\n })\n },\n lookupSubscription(pageName, lookupType) {\n window.analyticsLayer.push({\n event: 'clickEvent',\n clickEvent: {\n type: 'button',\n feature: 'Lookup Subscription',\n label: lookupType,\n action: 'Lookup',\n pageName: pageName\n }\n })\n },\n accountEvent(eventAction, label) {\n const event = {\n event: 'accountEvent',\n accountEvent: {\n type: 'account',\n action: eventAction,\n loginProvider: 'tgam'\n }\n }\n if (label) {\n event.accountEvent.label = label\n }\n window.analyticsLayer.push(event)\n }\n}\n\nexport default Vue => {\n Vue.analytics = AnalyticsPlugin\n Object.defineProperties(Vue.prototype, {\n $analytics: {\n get: () => {\n return Vue.analytics\n }\n }\n })\n}\n","const importRecaptcha = function() {\n const src = `https://www.google.com/recaptcha/api.js?render=${window.GAMWebMyAccountConfig.RECAPTCHA_SITE_KEY}`\n const script = document.createElement('script')\n script.setAttribute('src', src)\n document.body.appendChild(script)\n}\n\nexport default importRecaptcha\n","import cookiesEnabled from '@/utils/cookiesEnabled'\n\n// in IE document.referrer is set to \"\" when Vue Router is instantiated\nexport const saveReferrer = () => {\n if (cookiesEnabled()) {\n sessionStorage.setItem('referrer', document.referrer)\n }\n}\n\nexport default saveReferrer\n","// The Vue build version to load with the `import` command\n// (runtime-only or standalone) has been set in webpack.base.conf with an alias.\nimport Vue from 'vue'\nimport App from './App'\nimport { store } from './store'\nimport router from './router'\nimport { extendValidationRules } from '@/utils/validations'\nimport { setInteractionMode } from 'vee-validate'\nimport DataLayer from './plugins/datalayer'\nimport Analytics from './plugins/analytics'\nimport importRecaptcha from '@/utils/importRecaptcha'\nimport saveReferrer from '@/utils/saveReferrer'\nimport { ampli } from './vendor/amplitude'\n\nconst envName = window.GAMWebMyAccountConfig.ENV_NAME.toLowerCase()\nconst environment = envName === 'prod' ? 'prod' : 'dev'\n\nampli.load({\n environment,\n client: {\n configuration: {\n defaultTracking: false\n }\n }\n})\n// vee-validate configuration\nextendValidationRules()\nsetInteractionMode('blur', () => ({ on: ['blur'] }))\n\nVue.config.productionTip = false\nVue.use(DataLayer)\nVue.use(Analytics)\nVue.datalayer.populateDataLayer()\nimportRecaptcha()\nsaveReferrer()\n\n/* eslint-disable no-new */\nnew Vue({\n el: '#app',\n router,\n store,\n components: { App },\n render: h => h('app')\n})\n","import mod from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=scss&\"","export const isCookieEnabled = function() {\n try {\n document.cookie = 'cookietest=1'\n const val = document.cookie.indexOf('cookietest=') !== -1\n document.cookie = 'cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT'\n return val\n } catch (e) {\n return false\n }\n}\n\nexport default isCookieEnabled\n","const getGrecaptchaToken = async actionLabel => {\n let grecaptchaToken\n try {\n // on initial load, wait for the grecaptcha library to be ready\n if (window.grecaptcha.execute === undefined) {\n await window.grecaptcha\n }\n grecaptchaToken = await window.grecaptcha.execute(\n window.GAMWebMyAccountConfig.RECAPTCHA_SITE_KEY,\n { action: actionLabel }\n )\n } catch (err) {\n grecaptchaToken = null\n }\n return grecaptchaToken\n}\n\nexport { getGrecaptchaToken }\n","export const csrPhoneNumber = '1-800-387-5400'\n\nexport default Object.freeze({\n DISPLAY: '9C8Bwo76a6',\n DELEGO: 'TGAM-DELEGO-PAY',\n BAMBORA: 'TGAM-BAMBORA-PAY'\n})\n","/* tslint:disable */\n/* eslint-disable */\n// @ts-nocheck\n/**\n * Ampli - A strong typed wrapper for your Analytics\n *\n * This file is generated by Amplitude.\n * To update run 'ampli pull website'\n *\n * Required dependencies: @amplitude/analytics-browser@^1.3.0\n * Tracking Plan Version: 4\n * Build: 1.0.0\n * Runtime: browser:javascript-ampli-v2\n *\n * [View Tracking Plan](https://data.amplitude.com/the-globe-and-mail/The%20Globe%20and%20Mail/events/main/latest)\n *\n * [Full Setup Instructions](https://data.amplitude.com/the-globe-and-mail/The%20Globe%20and%20Mail/implementation/website)\n */\n\nimport * as amplitude from '@amplitude/analytics-browser';\n\n/**\n * @typedef BaseEvent\n * @type {object}\n * @property {string} event_type\n * @property {Object.} [event_properties]\n */\n\n/**\n * @typedef Plan\n * @type {object}\n * @property {string} [branch]\n * @property {string} [source]\n * @property {string} [version]\n * @property {string} [versionId]\n */\n\n/**\n * @typedef LoadClientOptions\n * @type {object}\n * @property {string} [apiKey]\n * @property {Object} [configuration]\n * @property {BrowserClient} [instance]\n */\n\n/**\n * @typedef LoadOptions\n * @type {object}\n * @property {'dev'|'prod'} [environment]\n * @property {boolean} [disabled]\n * @property {LoadClientOptions} [client]\n */\n\n/**\n * @typedef {Object} EventOptions\n * @type {object}\n */\n\n/**\n * @typedef ApiKey\n * @type {object}\n * @property {string} dev\n * @property {string} prod\n */\nexport const ApiKey = {\n dev: '38534ef89a01423d002a5e25eeff140c',\n prod: '21ef8903bbf33cfc2cf72e381844b699'\n};\n\n/**\n * @typedef {Object} AccountEvents\n * @param {string} [account action] The type of action taken in an account event (ex. email change success, registration initiated, etc.)\n * @param {string} account login provider The login provider in an account event (ex. tgam, GOOGLE, FACEBOOK)\n */\n\n/**\n * @typedef {Object} Article\n * @param {string[]} [article byline] Author or authors of an article\n * @param {string} [article colour] Article colour or access category of an article (ex. red, yellow, green)\n * @param {number} [article content size] Number of words in an article\n * @param {string} [article content type] Type of article (ex. longread, column, etc.)\n * @param {string} [article creditline] Creditline of an article (ex. reuters)\n * @param {string} article headline Headline of an article\n * @param {string} article id The distinct ID of an article\n * @param {string[]} [article keywords] Keywords assigned to an article\n * @param {string} [article last modified date] Modified date of an article\n * @param {string} [article ownership] Source of an article (ex. staff writer, wire, etc.)\n * @param {string} [article publish date] Publish date of an article in EST, ISO date format\n * @param {string[]} [article tags] Story tags of an article (ex. 'folio', 'longread', etc.)\n * @param {string} [article topics] Topics assigned to an article\n * @param {boolean} [is sponsored] Describes whether the content is sponsored or not\n * @param {string[]} [stock tickers] Array of stock tickers that appeared on an article.\n */\n\n/**\n * @typedef {Object} ArticleConversions\n * @param {string[]} [last article byline] The author or authors of the last article read by the user\n * @param {string} [last article colour] The article colour of the last article read by the user\n * @param {string} [last article headline] The headline of the article last read by a user\n * @param {string} [last article id] The article ID of the last article read by the user\n * @param {string[]} [last article keywords] The keywords of the last article read by the user\n * @param {string[]} [last article tags] The article tag of the last article read by a user.\n * @param {string} [last article topics] The article topics associated with the last article read by the user\n * @param {string} [last content type] Type of article (ex. longread, column, etc.) last read by the user\n */\n\n/**\n * @typedef {Object} AudioAndVideoEvents\n * @param {boolean} [is mute] Describes whether the video played was on mute or not\n * @param {string} [media content id] A distinct ID for video or audio content - for audio articles, this would be the article ID.\n * @param {number} [media duration seconds] The length of the video or audio in seconds\n * @param {number} [media elapsed seconds] Elapsed time in seconds for the video or audio\n * @param {string} [media feature type] Placement of the audio or video on the page (ex. page part, article part, main)\n * @param {string} [media player] Name of the video or audio player platform\n * @param {string} media title Title of the video or audio\n */\n\n/**\n * @typedef {Object} Browser\n * @param {number} [browser view height] Height of browser in pixels\n * @param {number} [browser view width] Width of browser in pixels\n */\n\n/**\n * @typedef {Object} ClickEvents\n * @param {string} [click article id] The article ID of the link clicked on by the user.\n * @param {string} [click element content] This is used only to track clicks to the Subscribe with Google pop up banner.\n * @param {string} [click feature] The name of the feature clicked on by the user.\n * @param {string} [click label] The label on the button or link clicked on by the user.\n * @param {string} [click target url] The URL destination of the link or button that was clicked on.\n */\n\n/**\n * @typedef {Object} MarketingConversions\n * @param {string} [first marketing campaign] The first utm campaign the user encountered in their session\n * @param {string} [first marketing content] The first utm content the user encountered in their session\n * @param {string} [first marketing medium] The first utm medium the user encountered in their session\n * @param {string} [first marketing source] The first utm source the user encountered in their session\n * @param {string} [first marketing terms] The first utm_term the user encountered in their session\n * @param {string} [first referrer host] The first referral host that brought a user to the site for a specific session\n * @param {string} [last internal campaign] The last intcmp parameter encountered in the session, used to track conversions from internal campaigns\n * @param {string} [last marketing campaign] The last utm_campaign value passed in the page url that a user clicked on, used to attribute conversions to a marketing campaign\n * @param {string} [last marketing content] The last utm_content value passed in the page url that a user clicked on, used to attribute conversions to specific marketing content\n * @param {string} [last marketing medium] The last utm_medium value passed in the page url that a user clicked on, used to attribute conversions to specific marketing mediums\n * @param {string} [last marketing source] The last utm_source value passed in the page url that a user clicked on, used to attribute conversions to specific marketing sources\n * @param {string} [last marketing terms] The last utm_term value passed in the page url that a user clicked on, used to attribute conversions to a specific marketing term\n */\n\n/**\n * @typedef {Object} NewsletterEvents\n * @param {string} [newsletter frequency] The frequency the newsletter the user subscribed to is sent (ex. sent saturdays, sent weekday mornings, etc.)\n * @param {string} newsletter name Name of newsletter the user subscribed or unsubscribed to\n */\n\n/**\n * @typedef {Object} Page\n * @param {string} app id A unique identifier for the application (ex. theglobeandmail-website, theglobeandmail-app, tgam:theglobeandmail:app_android)\n * @param {string} canonical url Canonical URL of the page (strips all paramters in the URL)\n * @param {string} environment User environment during the session (prod, dev, or stg)\n * @param {string} host name Site or host where content is published\n * @param {string} [internal campaign] The intcmp parameter in the page URL, used to track internal campaigns.\n * @param {string} [marketing campaign] The utm_campaign parameter passed in the page URL, used to track what marketing campaign the user came from.\n * @param {string} [marketing content] The utm_content parameter passed in the page URL, used to track what marketing content the user came from.\n * @param {string} [marketing medium] The utm_medium parameter passed in the page URL, used to track what marketing medium the user came from.\n * @param {string} [marketing source] The utm_source parameter passed in the page URL, used to track what marketing source the user came from.\n * @param {string} [marketing term] The utm_term parameter passed in the page URL, used to track what marketing term the user came from.\n * @param {string} [page layout] Describes the layout of the page (ex. premium-section, article-with-sidebar, page-with-sidebar)\n * @param {string} page name General page name or breadcrumb containing a page's section and subsections. Ex. investing:personalfinance\n * @param {string} page path Part of the URL after the domain and before query paramters and URL fragments. Ex. /canada/article-this-is-an-example/\n * @param {string} [page type] The type of page (ex. article, section, video, etc.)\n * @param {string} page url Page URL of the page a user browsed.\n * @param {string} [press release organization] The press release organization that provided a press release for a stock page.\n * @param {string} referrer host The host name of the referral URL.\n * @param {string} referrer url The previous page's URL, ie where the user came from before landing on the current page URL.\n * @param {string} section The name of the section\n * @param {string} [subsection 1] The first subsection of a page, appears after the section name in the page path (ex. markets in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [subsection 2] The second subsection of a page, appears as the third value in the page path (ex. stocks in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [subsection 3] The third subsection of a page, appears as the fourth value the page path (ex. QQC-F-T in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [subsection 4] The fourth subsection of a page, appears as the fifth value in the page path (ex. pressreleases in /investing/markets/stocks/QQC-F-T/pressreleases/)\n * @param {string} [user agent string] User agent string of a device\n */\n\n/**\n * @typedef {Object} PageConversions\n * @param {string} [last subsection 1] Name of the last subsection 1 viewed by the user\n * @param {string} [last subsection 2] Name of the last subsection 2 viewed by the user\n * @param {string} [last subsection 3] Name of the last subsection 3 viewed by the user\n * @param {string} [last subsection 4] Name of the last subsection 4 viewed by the user\n */\n\n/**\n * @typedef {Object} SiteSearchEvents\n * @param {string[]} [site search filters] Values of the filters applied on the advanced search on the website. This is not available for app.\n * @param {number} [site search results] Number of search page results returned by the search bar\n * @param {string[]} [site search terms] Array of search terms used by a user from the search bar\n */\n\n/**\n * @typedef {Object} SubscriptionEvents\n * @param {string} subscription campaign code Subscription offer (ex. EVERGREEN6, NYT21). Note that this is present on all pages in the subscription funnel, including success pages.\n * @param {string} subscription funnel Type of subscription funnel (ex. GAMDIGITAL3, GAMDIGITALFREE)\n * @param {string} subscription payment method Payment method used to purchase a subscription (ex. VISA, MC, PAYPAL_SUBSCRIPTION)\n * @param {string} subscription type Type of subscription (ex. digital)\n */\n\n/**\n * @typedef {Object} WallConversions\n * @param {string} [last wall name] Name of the latest wall encountered by the user\n * @param {string} [last wall reason] The latest Sophi reason for showing the wall to the user\n * @param {string} [last wall type] The latest wall type shown to a user\n */\n\n/**\n * @typedef {Object} WallEvents\n * @param {string} wall name Name of the wall shown to the user (ex. google regwall, globe advisor regwall, paywall, etc.)\n * @param {*} [wall reason] Sophi algorithm reason for why the user was shown a wall.\n * @param {string} [wall trace id] Wall trace ID from Sophi dynamic paywall API response\n * @param {string} [wall type] Type of wall shown to a user (ex. paywall-hard, regwall-hard, regwall-metered, etc.)\n * @param {string} [wall visibility] Wall visibility from Sophi dynamic paywall API response\n * @param {number} [wall visible paragraphs] Number of visible paragraphs after a user encounters a wall\n */\n\n/**\n * Default Amplitude configuration options. Contains tracking plan information.\n */\nexport const DefaultConfiguration = {\n plan: {\n version: '4',\n branch: 'main',\n source: 'website',\n versionId: '5c274d57-fb1c-46fb-b750-cbaf70d9e0c6'\n },\n ...{\n ingestionMetadata: {\n sourceName: 'browser-javascript-ampli',\n sourceVersion: '2.0.0'\n }\n }\n};\n\nexport class Identify {\n constructor(properties) {\n this.event_type = amplitude.Types.SpecialEventType.IDENTIFY;\n this.event_properties = properties;\n }\n}\n\nexport class AccountInteraction {\n constructor(properties) {\n this.event_type = 'account_interaction';\n this.event_properties = properties;\n }\n}\n\nexport class AccountLogin {\n constructor(properties) {\n this.event_type = 'account_login';\n this.event_properties = properties;\n }\n}\n\nexport class AccountLogout {\n constructor(properties) {\n this.event_type = 'account_logout';\n this.event_properties = properties;\n }\n}\n\nexport class AccountRegistration {\n constructor(properties) {\n this.event_type = 'account_registration';\n this.event_properties = properties;\n }\n}\n\nexport class AccountSubscription {\n constructor(properties) {\n this.event_type = 'account_subscription';\n this.event_properties = properties;\n }\n}\n\nexport class ArticleView {\n constructor(properties) {\n this.event_type = 'article_view';\n this.event_properties = properties;\n }\n}\n\nexport class AudioComplete {\n constructor(properties) {\n this.event_type = 'audio_complete';\n this.event_properties = properties;\n }\n}\n\nexport class AudioPause {\n constructor(properties) {\n this.event_type = 'audio_pause';\n this.event_properties = properties;\n }\n}\n\nexport class AudioPlay {\n constructor(properties) {\n this.event_type = 'audio_play';\n this.event_properties = properties;\n }\n}\n\nexport class ButtonClick {\n constructor(properties) {\n this.event_type = 'button_click';\n this.event_properties = properties;\n }\n}\n\nexport class CommentPost {\n constructor(properties) {\n this.event_type = 'comment_post';\n this.event_properties = properties;\n }\n}\n\nexport class CommentReply {\n constructor(properties) {\n this.event_type = 'comment_reply';\n this.event_properties = properties;\n }\n}\n\nexport class CommentRespect {\n constructor(properties) {\n this.event_type = 'comment_respect';\n this.event_properties = properties;\n }\n}\n\nexport class ContentImpressions {\n constructor(properties) {\n this.event_type = 'content_impressions';\n this.event_properties = properties;\n }\n}\n\nexport class HomepageView {\n constructor(properties) {\n this.event_type = 'homepage_view';\n this.event_properties = properties;\n }\n}\n\nexport class LinkClick {\n constructor(properties) {\n this.event_type = 'link_click';\n this.event_properties = properties;\n }\n}\n\nexport class NewsletterSignup {\n constructor(properties) {\n this.event_type = 'newsletter_signup';\n this.event_properties = properties;\n }\n}\n\nexport class NewsletterUnsubscribe {\n constructor(properties) {\n this.event_type = 'newsletter_unsubscribe';\n this.event_properties = properties;\n }\n}\n\nexport class PaywallHit {\n constructor(properties) {\n this.event_type = 'paywall_hit';\n this.event_properties = properties;\n }\n}\n\nexport class RegwallHit {\n constructor(properties) {\n this.event_type = 'regwall_hit';\n this.event_properties = properties;\n }\n}\n\nexport class SectionView {\n constructor(properties) {\n this.event_type = 'section_view';\n this.event_properties = properties;\n }\n}\n\nexport class SiteSearch {\n constructor(properties) {\n this.event_type = 'site_search';\n this.event_properties = properties;\n }\n}\n\nexport class VideoComplete {\n constructor(properties) {\n this.event_type = 'video_complete';\n this.event_properties = properties;\n }\n}\n\nexport class VideoPause {\n constructor(properties) {\n this.event_type = 'video_pause';\n this.event_properties = properties;\n }\n}\n\nexport class VideoPlay {\n constructor(properties) {\n this.event_type = 'video_play';\n this.event_properties = properties;\n }\n}\n\n/**\n * @typedef PromiseResult\n * @type {object}\n * @property {Promise|undefined} promise\n */\n\nconst getVoidPromiseResult = () => ({ promise: Promise.resolve() });\n\n// prettier-ignore\nexport class Ampli {\n constructor() {\n /* @type {BrowserClient|undefined} */\n this.amplitude = undefined;\n this.disabled = false;\n }\n\n /**\n * @return {BrowserClient}\n */\n get client() {\n this.isInitializedAndEnabled();\n return this.amplitude;\n }\n\n /**\n * @return {boolean}\n */\n get isLoaded() {\n return this.amplitude != null;\n }\n\n /**\n * @private\n * @return {boolean}\n */\n isInitializedAndEnabled() {\n if (!this.isLoaded) {\n console.error('ERROR: Ampli is not yet initialized. Have you called ampli.load() on app start?');\n return false;\n }\n return !this.disabled;\n }\n\n /**\n * Initialize the Ampli SDK. Call once when your application starts.\n *\n * @param {LoadOptions} options Configuration options to initialize the Ampli SDK with. 'environment', 'client.apiKey' or 'client.instance' is required.\n *\n * @return {PromiseResult}\n */\n load(options) {\n this.disabled = options?.disabled ?? false;\n\n if (this.isLoaded) {\n console.warn('WARNING: Ampli is already initialized. Ampli.load() should be called once at application startup.');\n return getVoidPromiseResult();\n }\n\n let apiKey;\n if (options?.client?.apiKey) {\n apiKey = options.client.apiKey;\n } else if (options?.environment) {\n apiKey = ApiKey[options.environment];\n }\n\n if (options?.client?.instance) {\n this.amplitude = options?.client?.instance;\n } else if (apiKey) {\n this.amplitude = amplitude.createInstance();\n return this.amplitude.init(apiKey, undefined, { ...DefaultConfiguration, ...options?.client?.configuration });\n } else {\n console.error(\"ERROR: ampli.load() requires 'environment', 'client.apiKey', or 'client.instance'\");\n }\n\n return getVoidPromiseResult();\n }\n\n /**\n * Identify a user and set or update that user's properties.\n *\n * @param {string|undefined} userId The user's id.\n * @param {Object} properties The user's properties.\n * @param {string} properties.account type Denotes whether the user is subscribed, registered, or anonymous. Users who are not logged in are captured as 'anonymous'.\n * @param {string} [properties.app att status] Tracks permission status set by the user, such as if they consented to allow third party tracking (ex. authorized, restricted, not determined)\n * @param {number} [properties.app bookmarks] Number of bookmarks a user set on the app.\n * @param {string} [properties.app build] App build number\n * @param {boolean} [properties.app dark mode] Denotes whether the user has dark mode on or off on the app.\n * @param {boolean} [properties.app editorial large widget] Indicates whether the large editorial widget was installed in the app.\n * @param {boolean} [properties.app editorial medium widget] Indicates whether the medium editorial widget was installed in the app.\n * @param {string} [properties.app for you status] Indicates the option selected for the Personal Finance For You feature on the app.\n * @param {string} [properties.app push status] Whether the user enabled push notifications\n * @param {boolean} [properties.app stocks small widget] Indicates whether the small stocks widget was installed in the app.\n * @param {string} [properties.app subscription type] How the user bought their subscription\n * @param {boolean} [properties.app voice over] Denotes whether the user has the voice over feature turned on or off on the app.\n * @param {boolean} [properties.app watchlist large widget] Indicates whether the large watchlist widget was installed in the app.\n * @param {number} [properties.app watchlists] Number of watchlists a user created on the app\n * @param {number} [properties.article credits remaining] Number of free articles remaining for a user\n * @param {number} [properties.article credits used] Number of free articles read\n * @param {string} [properties.churn date] Date a user churned or did not renew their subscription\n * @param {string} [properties.device category] Device type from Sophi Paywall SDK\n * @param {string} [properties.device os] Device OS from Sophi Paywall SDK\n * @param {string} [properties.device viewer] Device viewer from Sophi Paywall SDK\n * @param {boolean} [properties.new visitor] Identifies whether a visitor is new based on whether the session is their first session or not.\n * @param {string} [properties.previous subscription service] The previous type of subscription a user had.\n * @param {number} [properties.rfv frequency] Frequency component of the RFV score, ie how many times a user visited during the RFV model's timeframe.\n * @param {number} [properties.rfv recency] Recency component of the RFV score, ie how days since the last user visited during the RFV model's timeframe.\n * @param {number} [properties.rfv score] RFV score of a user provided by TGAM. This is a measure of a user's engagement based on their Recency, Frequency, and Volume (ie consumption).\n * @param {string} [properties.rfv string] Full RFV string value of a user provided by TGAM\n * @param {number} [properties.rfv volume] Volume component of RFV score, ie how many page views a user had based on the RFV model's timeframe. Only available for Subscribers.\n * @param {string[]} [properties.sophi test id] Sophi ID for an A/B test experiment\n * @param {string} [properties.ssvc value] Service code value for a subscriber or registered user, used to distinguish what service the user is subscribed or registered to (ex. GA for Globe Advisor, PREMIUM\\~PREMIUM for GU Digital)\n * @param {string} [properties.subscription end date] End date of a user's subscription\n * @param {string} [properties.subscription name] Name of subscription offer (ex. access_weekly, app annual subscription, etc.)\n * @param {string} [properties.subscription start date] Date a user's subscription started\n * @param {number} [properties.subscription term length] Length of subscription offer (combined with subscription term period)\n * @param {string} [properties.subscription term period] The type of period the user's subscription term length is applied for (ex. week)\n * @param {number} [properties.subscription term price] Amount paid for the subscription term\n * @param {string[]} [properties.test attribution] The attribution period for an AB test (ie 'visit' indicates the test will run the length of a visit, while 'visitor' indicates the test will run while the user has the same cookie ID)\n * @param {string[]} [properties.test id] The distinct ID for an AB test experiment\n * @param {string[]} [properties.test segment] Segment of users targeted by the AB test experiment (ex. fsale, wsj-pencil, etc.)\n * @param {string[]} [properties.test variant] Name of AB test group the user is assigned to (ex. control, expB, experience, variant)\n * @param {number} [properties.wall days since last visit] Number of days since the user last visited from Sophi Paywall SDK\n * @param {string} [properties.wall timezone] Timezone of the user from Sophi Paywall SDK\n * @param {number} [properties.wall visit count] Number of times the user has come to the site from Sophi Paywall SDK\n * @param {string} [properties.zipcode] User's postal code\n * @param {EventOptions} [options] Optional event options.\n *\n * @return {PromiseResult}\n */\n identify(userId, properties, options) {\n if (!this.isInitializedAndEnabled()) {\n return getVoidPromiseResult();\n }\n\n if (userId) {\n options = {...options, user_id: userId};\n }\n\n const ampIdentify = new amplitude.Identify();\n const eventProperties = properties;\n if (eventProperties != null) {\n for (const [key, value] of Object.entries(eventProperties)) {\n ampIdentify.set(key, value);\n }\n }\n return this.amplitude.identify(ampIdentify, options);\n }\n\n /**\n * Flush the event.\n */\n flush() {\n if (!this.isInitializedAndEnabled()) {\n return getVoidPromiseResult();\n }\n\n return this.amplitude.flush();\n }\n\n /**\n * Track event\n *\n * @param {BaseEvent} event The event to track.\n * @param {EventOptions} [options] Optional event options.\n *\n * @return {PromiseResult}\n */\n track(event, options) {\n if (!this.isInitializedAndEnabled()) {\n return getVoidPromiseResult();\n }\n\n return this.amplitude.track(event, undefined, options);\n }\n\n /**\n * account_interaction\n *\n * [View in Tracking Plan](https://data.amplitude.com/the-globe-and-mail/The%20Globe%20and%20Mail/events/main/latest/account_interaction)\n *\n * This event tracks changes made by users with their accounts (ex. changing their email)\n *\n * Owner: Lourdes Santos\n *\n * @param {Object} properties The event's properties.\n * @param {string} [properties.account action] The type of action taken in an account event (ex. email change success, registration initiated, etc.)\n * @param {string} [properties.account login provider] The login provider in an account event (ex. tgam, GOOGLE, FACEBOOK)\n * @param {string} properties.app id A unique identifier for the application (ex. theglobeandmail-website, theglobeandmail-app, tgam:theglobeandmail:app_android)\n * @param {number} [properties.browser view height] Height of browser in pixels\n * @param {number} [properties.browser view width] Width of browser in pixels\n * @param {string} properties.canonical url Canonical URL of the page (strips all paramters in the URL)\n * @param {string} properties.environment User environment during the session (prod, dev, or stg)\n * @param {string} properties.host name Site or host where content is published\n * @param {string} [properties.internal campaign] The intcmp parameter in the page URL, used to track internal campaigns.\n * @param {string} [properties.marketing campaign] The utm_campaign parameter passed in the page URL, used to track what marketing campaign the user came from.\n * @param {string} [properties.marketing content] The utm_content parameter passed in the page URL, used to track what marketing content the user came from.\n * @param {string} [properties.marketing medium] The utm_medium parameter passed in the page URL, used to track what marketing medium the user came from.\n * @param {string} [properties.marketing source] The utm_source parameter passed in the page URL, used to track what marketing source the user came from.\n * @param {string} [properties.marketing term] The utm_term parameter passed in the page URL, used to track what marketing term the user came from.\n * @param {string} [properties.page layout] Describes the layout of the page (ex. premium-section, article-with-sidebar, page-with-sidebar)\n * @param {string} properties.page name General page name or breadcrumb containing a page's section and subsections. Ex. investing:personalfinance\n * @param {string} properties.page path Part of the URL after the domain and before query paramters and URL fragments. Ex. /canada/article-this-is-an-example/\n * @param {string} [properties.page type] The type of page (ex. article, section, video, etc.)\n * @param {string} properties.page url Page URL of the page a user browsed.\n * @param {string} [properties.press release organization] The press release organization that provided a press release for a stock page.\n * @param {string} properties.referrer host The host name of the referral URL.\n * @param {string} properties.referrer url The previous page's URL, ie where the user came from before landing on the current page URL.\n * @param {string} properties.section The name of the section\n * @param {string} [properties.subsection 1] The first subsection of a page, appears after the section name in the page path (ex. markets in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 2] The second subsection of a page, appears as the third value in the page path (ex. stocks in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 3] The third subsection of a page, appears as the fourth value the page path (ex. QQC-F-T in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 4] The fourth subsection of a page, appears as the fifth value in the page path (ex. pressreleases in /investing/markets/stocks/QQC-F-T/pressreleases/)\n * @param {string} [properties.user agent string] User agent string of a device\n * @param {EventOptions} [options] Options for this track call.\n */\n accountInteraction(properties, options) {\n return this.track(new AccountInteraction(properties), options);\n }\n\n /**\n * account_login\n *\n * [View in Tracking Plan](https://data.amplitude.com/the-globe-and-mail/The%20Globe%20and%20Mail/events/main/latest/account_login)\n *\n * This event tracks when a user successfully logs into their account\n *\n * Owner: Lourdes Santos\n *\n * @param {Object} properties The event's properties.\n * @param {string} [properties.account action] The type of action taken in an account event (ex. email change success, registration initiated, etc.)\n * @param {string} properties.account login provider The login provider in an account event (ex. tgam, GOOGLE, FACEBOOK)\n * @param {string} properties.app id A unique identifier for the application (ex. theglobeandmail-website, theglobeandmail-app, tgam:theglobeandmail:app_android)\n * @param {number} [properties.browser view height] Height of browser in pixels\n * @param {number} [properties.browser view width] Width of browser in pixels\n * @param {string} properties.canonical url Canonical URL of the page (strips all paramters in the URL)\n * @param {string} properties.environment User environment during the session (prod, dev, or stg)\n * @param {string} properties.host name Site or host where content is published\n * @param {string} [properties.internal campaign] The intcmp parameter in the page URL, used to track internal campaigns.\n * @param {string} [properties.marketing campaign] The utm_campaign parameter passed in the page URL, used to track what marketing campaign the user came from.\n * @param {string} [properties.marketing content] The utm_content parameter passed in the page URL, used to track what marketing content the user came from.\n * @param {string} [properties.marketing medium] The utm_medium parameter passed in the page URL, used to track what marketing medium the user came from.\n * @param {string} [properties.marketing source] The utm_source parameter passed in the page URL, used to track what marketing source the user came from.\n * @param {string} [properties.marketing term] The utm_term parameter passed in the page URL, used to track what marketing term the user came from.\n * @param {string} [properties.page layout] Describes the layout of the page (ex. premium-section, article-with-sidebar, page-with-sidebar)\n * @param {string} properties.page name General page name or breadcrumb containing a page's section and subsections. Ex. investing:personalfinance\n * @param {string} properties.page path Part of the URL after the domain and before query paramters and URL fragments. Ex. /canada/article-this-is-an-example/\n * @param {string} [properties.page type] The type of page (ex. article, section, video, etc.)\n * @param {string} properties.page url Page URL of the page a user browsed.\n * @param {string} [properties.press release organization] The press release organization that provided a press release for a stock page.\n * @param {string} properties.referrer host The host name of the referral URL.\n * @param {string} properties.referrer url The previous page's URL, ie where the user came from before landing on the current page URL.\n * @param {string} properties.section The name of the section\n * @param {string} [properties.subsection 1] The first subsection of a page, appears after the section name in the page path (ex. markets in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 2] The second subsection of a page, appears as the third value in the page path (ex. stocks in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 3] The third subsection of a page, appears as the fourth value the page path (ex. QQC-F-T in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 4] The fourth subsection of a page, appears as the fifth value in the page path (ex. pressreleases in /investing/markets/stocks/QQC-F-T/pressreleases/)\n * @param {string} [properties.user agent string] User agent string of a device\n * @param {EventOptions} [options] Options for this track call.\n */\n accountLogin(properties, options) {\n return this.track(new AccountLogin(properties), options);\n }\n\n /**\n * account_logout\n *\n * [View in Tracking Plan](https://data.amplitude.com/the-globe-and-mail/The%20Globe%20and%20Mail/events/main/latest/account_logout)\n *\n * This event tracks when a user logs out of their account\n *\n * Owner: Lourdes Santos\n *\n * @param {Object} properties The event's properties.\n * @param {string} properties.app id A unique identifier for the application (ex. theglobeandmail-website, theglobeandmail-app, tgam:theglobeandmail:app_android)\n * @param {number} [properties.browser view height] Height of browser in pixels\n * @param {number} [properties.browser view width] Width of browser in pixels\n * @param {string} properties.canonical url Canonical URL of the page (strips all paramters in the URL)\n * @param {string} properties.environment User environment during the session (prod, dev, or stg)\n * @param {string} properties.host name Site or host where content is published\n * @param {string} [properties.internal campaign] The intcmp parameter in the page URL, used to track internal campaigns.\n * @param {string} [properties.marketing campaign] The utm_campaign parameter passed in the page URL, used to track what marketing campaign the user came from.\n * @param {string} [properties.marketing content] The utm_content parameter passed in the page URL, used to track what marketing content the user came from.\n * @param {string} [properties.marketing medium] The utm_medium parameter passed in the page URL, used to track what marketing medium the user came from.\n * @param {string} [properties.marketing source] The utm_source parameter passed in the page URL, used to track what marketing source the user came from.\n * @param {string} [properties.marketing term] The utm_term parameter passed in the page URL, used to track what marketing term the user came from.\n * @param {string} [properties.page layout] Describes the layout of the page (ex. premium-section, article-with-sidebar, page-with-sidebar)\n * @param {string} properties.page name General page name or breadcrumb containing a page's section and subsections. Ex. investing:personalfinance\n * @param {string} properties.page path Part of the URL after the domain and before query paramters and URL fragments. Ex. /canada/article-this-is-an-example/\n * @param {string} [properties.page type] The type of page (ex. article, section, video, etc.)\n * @param {string} properties.page url Page URL of the page a user browsed.\n * @param {string} [properties.press release organization] The press release organization that provided a press release for a stock page.\n * @param {string} properties.referrer host The host name of the referral URL.\n * @param {string} properties.referrer url The previous page's URL, ie where the user came from before landing on the current page URL.\n * @param {string} properties.section The name of the section\n * @param {string} [properties.subsection 1] The first subsection of a page, appears after the section name in the page path (ex. markets in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 2] The second subsection of a page, appears as the third value in the page path (ex. stocks in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 3] The third subsection of a page, appears as the fourth value the page path (ex. QQC-F-T in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 4] The fourth subsection of a page, appears as the fifth value in the page path (ex. pressreleases in /investing/markets/stocks/QQC-F-T/pressreleases/)\n * @param {string} [properties.user agent string] User agent string of a device\n * @param {EventOptions} [options] Options for this track call.\n */\n accountLogout(properties, options) {\n return this.track(new AccountLogout(properties), options);\n }\n\n /**\n * account_registration\n *\n * [View in Tracking Plan](https://data.amplitude.com/the-globe-and-mail/The%20Globe%20and%20Mail/events/main/latest/account_registration)\n *\n * This event tracks when a user creates a new account\n *\n * Owner: Lourdes Santos\n *\n * @param {Object} properties The event's properties.\n * @param {string} [properties.account action] The type of action taken in an account event (ex. email change success, registration initiated, etc.)\n * @param {string} properties.account login provider The login provider in an account event (ex. tgam, GOOGLE, FACEBOOK)\n * @param {string} properties.app id A unique identifier for the application (ex. theglobeandmail-website, theglobeandmail-app, tgam:theglobeandmail:app_android)\n * @param {number} [properties.browser view height] Height of browser in pixels\n * @param {number} [properties.browser view width] Width of browser in pixels\n * @param {string} properties.canonical url Canonical URL of the page (strips all paramters in the URL)\n * @param {string} properties.environment User environment during the session (prod, dev, or stg)\n * @param {string} [properties.first marketing campaign] The first utm campaign the user encountered in their session\n * @param {string} [properties.first marketing content] The first utm content the user encountered in their session\n * @param {string} [properties.first marketing medium] The first utm medium the user encountered in their session\n * @param {string} [properties.first marketing source] The first utm source the user encountered in their session\n * @param {string} [properties.first marketing terms] The first utm_term the user encountered in their session\n * @param {string} [properties.first referrer host] The first referral host that brought a user to the site for a specific session\n * @param {string} properties.host name Site or host where content is published\n * @param {string} [properties.internal campaign] The intcmp parameter in the page URL, used to track internal campaigns.\n * @param {string[]} [properties.last article byline] The author or authors of the last article read by the user\n * @param {string} [properties.last article colour] The article colour of the last article read by the user\n * @param {string} [properties.last article credit line] Property has no description in tracking plan.\n * @param {string} [properties.last article headline] The headline of the article last read by a user\n * @param {string} [properties.last article id] The article ID of the last article read by the user\n * @param {string[]} [properties.last article keywords] The keywords of the last article read by the user\n * @param {string[]} [properties.last article tags] The article tag of the last article read by a user.\n * @param {string} [properties.last article topics] The article topics associated with the last article read by the user\n * @param {string} [properties.last content type] Type of article (ex. longread, column, etc.) last read by the user\n * @param {string} [properties.last internal campaign] The last intcmp parameter encountered in the session, used to track conversions from internal campaigns\n * @param {string} [properties.last marketing campaign] The last utm_campaign value passed in the page url that a user clicked on, used to attribute conversions to a marketing campaign\n * @param {string} [properties.last marketing content] The last utm_content value passed in the page url that a user clicked on, used to attribute conversions to specific marketing content\n * @param {string} [properties.last marketing medium] The last utm_medium value passed in the page url that a user clicked on, used to attribute conversions to specific marketing mediums\n * @param {string} [properties.last marketing source] The last utm_source value passed in the page url that a user clicked on, used to attribute conversions to specific marketing sources\n * @param {string} [properties.last marketing terms] The last utm_term value passed in the page url that a user clicked on, used to attribute conversions to a specific marketing term\n * @param {string} [properties.last subsection 1] Name of the last subsection 1 viewed by the user\n * @param {string} [properties.last subsection 2] Name of the last subsection 2 viewed by the user\n * @param {string} [properties.last subsection 3] Name of the last subsection 3 viewed by the user\n * @param {string} [properties.last subsection 4] Name of the last subsection 4 viewed by the user\n * @param {string} [properties.last wall name] Name of the latest wall encountered by the user\n * @param {string} [properties.last wall reason] The latest Sophi reason for showing the wall to the user\n * @param {string} [properties.last wall type] The latest wall type shown to a user\n * @param {string} [properties.marketing campaign] The utm_campaign parameter passed in the page URL, used to track what marketing campaign the user came from.\n * @param {string} [properties.marketing content] The utm_content parameter passed in the page URL, used to track what marketing content the user came from.\n * @param {string} [properties.marketing medium] The utm_medium parameter passed in the page URL, used to track what marketing medium the user came from.\n * @param {string} [properties.marketing source] The utm_source parameter passed in the page URL, used to track what marketing source the user came from.\n * @param {string} [properties.marketing term] The utm_term parameter passed in the page URL, used to track what marketing term the user came from.\n * @param {string} [properties.page layout] Describes the layout of the page (ex. premium-section, article-with-sidebar, page-with-sidebar)\n * @param {string} properties.page name General page name or breadcrumb containing a page's section and subsections. Ex. investing:personalfinance\n * @param {string} properties.page path Part of the URL after the domain and before query paramters and URL fragments. Ex. /canada/article-this-is-an-example/\n * @param {string} [properties.page type] The type of page (ex. article, section, video, etc.)\n * @param {string} properties.page url Page URL of the page a user browsed.\n * @param {string} [properties.press release organization] The press release organization that provided a press release for a stock page.\n * @param {string} properties.referrer host The host name of the referral URL.\n * @param {string} properties.referrer url The previous page's URL, ie where the user came from before landing on the current page URL.\n * @param {string} properties.section The name of the section\n * @param {string} [properties.subsection 1] The first subsection of a page, appears after the section name in the page path (ex. markets in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 2] The second subsection of a page, appears as the third value in the page path (ex. stocks in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 3] The third subsection of a page, appears as the fourth value the page path (ex. QQC-F-T in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 4] The fourth subsection of a page, appears as the fifth value in the page path (ex. pressreleases in /investing/markets/stocks/QQC-F-T/pressreleases/)\n * @param {string} [properties.user agent string] User agent string of a device\n * @param {EventOptions} [options] Options for this track call.\n */\n accountRegistration(properties, options) {\n return this.track(new AccountRegistration(properties), options);\n }\n\n /**\n * account_subscription\n *\n * [View in Tracking Plan](https://data.amplitude.com/the-globe-and-mail/The%20Globe%20and%20Mail/events/main/latest/account_subscription)\n *\n * This event tracks when a user successfully purchases a subscription or when a print subscriber activates their digital subscription.\n *\n * Owner: Lourdes Santos\n *\n * @param {Object} properties The event's properties.\n * @param {string} properties.app id A unique identifier for the application (ex. theglobeandmail-website, theglobeandmail-app, tgam:theglobeandmail:app_android)\n * @param {number} [properties.browser view height] Height of browser in pixels\n * @param {number} [properties.browser view width] Width of browser in pixels\n * @param {string} properties.canonical url Canonical URL of the page (strips all paramters in the URL)\n * @param {string} properties.environment User environment during the session (prod, dev, or stg)\n * @param {string} [properties.first marketing campaign] The first utm campaign the user encountered in their session\n * @param {string} [properties.first marketing content] The first utm content the user encountered in their session\n * @param {string} [properties.first marketing medium] The first utm medium the user encountered in their session\n * @param {string} [properties.first marketing source] The first utm source the user encountered in their session\n * @param {string} [properties.first marketing terms] The first utm_term the user encountered in their session\n * @param {string} [properties.first referrer host] The first referral host that brought a user to the site for a specific session\n * @param {string} properties.host name Site or host where content is published\n * @param {string} [properties.internal campaign] The intcmp parameter in the page URL, used to track internal campaigns.\n * @param {string[]} [properties.last article byline] The author or authors of the last article read by the user\n * @param {string} [properties.last article colour] The article colour of the last article read by the user\n * @param {string} [properties.last article credit line] Property has no description in tracking plan.\n * @param {string} [properties.last article headline] The headline of the article last read by a user\n * @param {string} [properties.last article id] The article ID of the last article read by the user\n * @param {string[]} [properties.last article keywords] The keywords of the last article read by the user\n * @param {string[]} [properties.last article tags] The article tag of the last article read by a user.\n * @param {string} [properties.last article topics] The article topics associated with the last article read by the user\n * @param {string} [properties.last content type] Type of article (ex. longread, column, etc.) last read by the user\n * @param {string} [properties.last internal campaign] The last intcmp parameter encountered in the session, used to track conversions from internal campaigns\n * @param {string} [properties.last marketing campaign] The last utm_campaign value passed in the page url that a user clicked on, used to attribute conversions to a marketing campaign\n * @param {string} [properties.last marketing content] The last utm_content value passed in the page url that a user clicked on, used to attribute conversions to specific marketing content\n * @param {string} [properties.last marketing medium] The last utm_medium value passed in the page url that a user clicked on, used to attribute conversions to specific marketing mediums\n * @param {string} [properties.last marketing source] The last utm_source value passed in the page url that a user clicked on, used to attribute conversions to specific marketing sources\n * @param {string} [properties.last marketing terms] The last utm_term value passed in the page url that a user clicked on, used to attribute conversions to a specific marketing term\n * @param {string} [properties.last subsection 1] Name of the last subsection 1 viewed by the user\n * @param {string} [properties.last subsection 2] Name of the last subsection 2 viewed by the user\n * @param {string} [properties.last subsection 3] Name of the last subsection 3 viewed by the user\n * @param {string} [properties.last subsection 4] Name of the last subsection 4 viewed by the user\n * @param {string} [properties.last wall name] Name of the latest wall encountered by the user\n * @param {string} [properties.last wall reason] The latest Sophi reason for showing the wall to the user\n * @param {string} [properties.last wall type] The latest wall type shown to a user\n * @param {string} [properties.marketing campaign] The utm_campaign parameter passed in the page URL, used to track what marketing campaign the user came from.\n * @param {string} [properties.marketing content] The utm_content parameter passed in the page URL, used to track what marketing content the user came from.\n * @param {string} [properties.marketing medium] The utm_medium parameter passed in the page URL, used to track what marketing medium the user came from.\n * @param {string} [properties.marketing source] The utm_source parameter passed in the page URL, used to track what marketing source the user came from.\n * @param {string} [properties.marketing term] The utm_term parameter passed in the page URL, used to track what marketing term the user came from.\n * @param {string} [properties.page layout] Describes the layout of the page (ex. premium-section, article-with-sidebar, page-with-sidebar)\n * @param {string} properties.page name General page name or breadcrumb containing a page's section and subsections. Ex. investing:personalfinance\n * @param {string} properties.page path Part of the URL after the domain and before query paramters and URL fragments. Ex. /canada/article-this-is-an-example/\n * @param {string} [properties.page type] The type of page (ex. article, section, video, etc.)\n * @param {string} properties.page url Page URL of the page a user browsed.\n * @param {string} [properties.press release organization] The press release organization that provided a press release for a stock page.\n * @param {string} properties.referrer host The host name of the referral URL.\n * @param {string} properties.referrer url The previous page's URL, ie where the user came from before landing on the current page URL.\n * @param {string} properties.section The name of the section\n * @param {string} properties.subscription campaign code Subscription offer (ex. EVERGREEN6, NYT21). Note that this is present on all pages in the subscription funnel, including success pages.\n * @param {string} properties.subscription funnel Type of subscription funnel (ex. GAMDIGITAL3, GAMDIGITALFREE)\n * @param {string} properties.subscription payment method Payment method used to purchase a subscription (ex. VISA, MC, PAYPAL_SUBSCRIPTION)\n * @param {string} properties.subscription type Type of subscription (ex. digital)\n * @param {string} [properties.subsection 1] The first subsection of a page, appears after the section name in the page path (ex. markets in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 2] The second subsection of a page, appears as the third value in the page path (ex. stocks in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 3] The third subsection of a page, appears as the fourth value the page path (ex. QQC-F-T in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 4] The fourth subsection of a page, appears as the fifth value in the page path (ex. pressreleases in /investing/markets/stocks/QQC-F-T/pressreleases/)\n * @param {string} [properties.user agent string] User agent string of a device\n * @param {EventOptions} [options] Options for this track call.\n */\n accountSubscription(properties, options) {\n return this.track(new AccountSubscription(properties), options);\n }\n\n /**\n * article_view\n *\n * [View in Tracking Plan](https://data.amplitude.com/the-globe-and-mail/The%20Globe%20and%20Mail/events/main/latest/article_view)\n *\n * This event tracks when a user views an article\n *\n * Owner: Lourdes Santos\n *\n * @param {Object} properties The event's properties.\n * @param {string} properties.app id A unique identifier for the application (ex. theglobeandmail-website, theglobeandmail-app, tgam:theglobeandmail:app_android)\n * @param {string[]} [properties.article byline] Author or authors of an article\n * @param {string} [properties.article colour] Article colour or access category of an article (ex. red, yellow, green)\n * @param {number} [properties.article content size] Number of words in an article\n * @param {string} [properties.article content type] Type of article (ex. longread, column, etc.)\n * @param {string} [properties.article creditline] Creditline of an article (ex. reuters)\n * @param {string} properties.article headline Headline of an article\n * @param {string} properties.article id The distinct ID of an article\n * @param {string[]} [properties.article keywords] Keywords assigned to an article\n * @param {string} [properties.article last modified date] Modified date of an article\n * @param {string} [properties.article ownership] Source of an article (ex. staff writer, wire, etc.)\n * @param {string} [properties.article publish date] Publish date of an article in EST, ISO date format\n * @param {string[]} [properties.article tags] Story tags of an article (ex. 'folio', 'longread', etc.)\n * @param {string} [properties.article topics] Topics assigned to an article\n * @param {number} [properties.browser view height] Height of browser in pixels\n * @param {number} [properties.browser view width] Width of browser in pixels\n * @param {string} properties.canonical url Canonical URL of the page (strips all paramters in the URL)\n * @param {string} properties.environment User environment during the session (prod, dev, or stg)\n * @param {string} [properties.first marketing campaign] The first utm campaign the user encountered in their session\n * @param {string} [properties.first marketing content] The first utm content the user encountered in their session\n * @param {string} [properties.first marketing medium] The first utm medium the user encountered in their session\n * @param {string} [properties.first marketing source] The first utm source the user encountered in their session\n * @param {string} [properties.first marketing terms] The first utm_term the user encountered in their session\n * @param {string} [properties.first referrer host] The first referral host that brought a user to the site for a specific session\n * @param {string} properties.host name Site or host where content is published\n * @param {string} [properties.internal campaign] The intcmp parameter in the page URL, used to track internal campaigns.\n * @param {boolean} [properties.is sponsored] Describes whether the content is sponsored or not\n * @param {string[]} [properties.last article byline] The author or authors of the last article read by the user\n * @param {string} [properties.last article colour] The article colour of the last article read by the user\n * @param {string} [properties.last article credit line] Property has no description in tracking plan.\n * @param {string} [properties.last article headline] The headline of the article last read by a user\n * @param {string} [properties.last article id] The article ID of the last article read by the user\n * @param {string[]} [properties.last article keywords] The keywords of the last article read by the user\n * @param {string[]} [properties.last article tags] The article tag of the last article read by a user.\n * @param {string} [properties.last article topics] The article topics associated with the last article read by the user\n * @param {string} [properties.last content type] Type of article (ex. longread, column, etc.) last read by the user\n * @param {string} [properties.last internal campaign] The last intcmp parameter encountered in the session, used to track conversions from internal campaigns\n * @param {string} [properties.last marketing campaign] The last utm_campaign value passed in the page url that a user clicked on, used to attribute conversions to a marketing campaign\n * @param {string} [properties.last marketing content] The last utm_content value passed in the page url that a user clicked on, used to attribute conversions to specific marketing content\n * @param {string} [properties.last marketing medium] The last utm_medium value passed in the page url that a user clicked on, used to attribute conversions to specific marketing mediums\n * @param {string} [properties.last marketing source] The last utm_source value passed in the page url that a user clicked on, used to attribute conversions to specific marketing sources\n * @param {string} [properties.last marketing terms] The last utm_term value passed in the page url that a user clicked on, used to attribute conversions to a specific marketing term\n * @param {string} [properties.last subsection 1] Name of the last subsection 1 viewed by the user\n * @param {string} [properties.last subsection 2] Name of the last subsection 2 viewed by the user\n * @param {string} [properties.last subsection 3] Name of the last subsection 3 viewed by the user\n * @param {string} [properties.last subsection 4] Name of the last subsection 4 viewed by the user\n * @param {string} [properties.last wall name] Name of the latest wall encountered by the user\n * @param {string} [properties.last wall reason] The latest Sophi reason for showing the wall to the user\n * @param {string} [properties.last wall type] The latest wall type shown to a user\n * @param {string} [properties.marketing campaign] The utm_campaign parameter passed in the page URL, used to track what marketing campaign the user came from.\n * @param {string} [properties.marketing content] The utm_content parameter passed in the page URL, used to track what marketing content the user came from.\n * @param {string} [properties.marketing medium] The utm_medium parameter passed in the page URL, used to track what marketing medium the user came from.\n * @param {string} [properties.marketing source] The utm_source parameter passed in the page URL, used to track what marketing source the user came from.\n * @param {string} [properties.marketing term] The utm_term parameter passed in the page URL, used to track what marketing term the user came from.\n * @param {string} [properties.page layout] Describes the layout of the page (ex. premium-section, article-with-sidebar, page-with-sidebar)\n * @param {string} properties.page name General page name or breadcrumb containing a page's section and subsections. Ex. investing:personalfinance\n * @param {string} properties.page path Part of the URL after the domain and before query paramters and URL fragments. Ex. /canada/article-this-is-an-example/\n * @param {string} [properties.page type] The type of page (ex. article, section, video, etc.)\n * @param {string} properties.page url Page URL of the page a user browsed.\n * @param {string} [properties.press release organization] The press release organization that provided a press release for a stock page.\n * @param {string} properties.referrer host The host name of the referral URL.\n * @param {string} properties.referrer url The previous page's URL, ie where the user came from before landing on the current page URL.\n * @param {string} properties.section The name of the section\n * @param {string[]} [properties.stock tickers] Array of stock tickers that appeared on an article.\n * @param {string} [properties.subsection 1] The first subsection of a page, appears after the section name in the page path (ex. markets in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 2] The second subsection of a page, appears as the third value in the page path (ex. stocks in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 3] The third subsection of a page, appears as the fourth value the page path (ex. QQC-F-T in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 4] The fourth subsection of a page, appears as the fifth value in the page path (ex. pressreleases in /investing/markets/stocks/QQC-F-T/pressreleases/)\n * @param {string} [properties.user agent string] User agent string of a device\n * @param {EventOptions} [options] Options for this track call.\n */\n articleView(properties, options) {\n return this.track(new ArticleView(properties), options);\n }\n\n /**\n * audio_complete\n *\n * [View in Tracking Plan](https://data.amplitude.com/the-globe-and-mail/The%20Globe%20and%20Mail/events/main/latest/audio_complete)\n *\n * This event is triggered when a user completes playing an audio file\n *\n * Owner: Lourdes Santos\n *\n * @param {Object} properties The event's properties.\n * @param {string} properties.app id A unique identifier for the application (ex. theglobeandmail-website, theglobeandmail-app, tgam:theglobeandmail:app_android)\n * @param {string[]} [properties.article byline] Author or authors of an article\n * @param {string} [properties.article colour] Article colour or access category of an article (ex. red, yellow, green)\n * @param {number} [properties.article content size] Number of words in an article\n * @param {string} [properties.article content type] Type of article (ex. longread, column, etc.)\n * @param {string} [properties.article creditline] Creditline of an article (ex. reuters)\n * @param {string} properties.article headline Headline of an article\n * @param {string} properties.article id The distinct ID of an article\n * @param {string[]} [properties.article keywords] Keywords assigned to an article\n * @param {string} [properties.article last modified date] Modified date of an article\n * @param {string} [properties.article ownership] Source of an article (ex. staff writer, wire, etc.)\n * @param {string} [properties.article publish date] Publish date of an article in EST, ISO date format\n * @param {string[]} [properties.article tags] Story tags of an article (ex. 'folio', 'longread', etc.)\n * @param {string} [properties.article topics] Topics assigned to an article\n * @param {number} [properties.browser view height] Height of browser in pixels\n * @param {number} [properties.browser view width] Width of browser in pixels\n * @param {string} properties.canonical url Canonical URL of the page (strips all paramters in the URL)\n * @param {string} properties.environment User environment during the session (prod, dev, or stg)\n * @param {string} [properties.first marketing campaign] The first utm campaign the user encountered in their session\n * @param {string} [properties.first marketing content] The first utm content the user encountered in their session\n * @param {string} [properties.first marketing medium] The first utm medium the user encountered in their session\n * @param {string} [properties.first marketing source] The first utm source the user encountered in their session\n * @param {string} [properties.first marketing terms] The first utm_term the user encountered in their session\n * @param {string} [properties.first referrer host] The first referral host that brought a user to the site for a specific session\n * @param {string} properties.host name Site or host where content is published\n * @param {string} [properties.internal campaign] The intcmp parameter in the page URL, used to track internal campaigns.\n * @param {boolean} [properties.is mute] Describes whether the video played was on mute or not\n * @param {boolean} [properties.is sponsored] Describes whether the content is sponsored or not\n * @param {string[]} [properties.last article byline] The author or authors of the last article read by the user\n * @param {string} [properties.last article colour] The article colour of the last article read by the user\n * @param {string} [properties.last article credit line] Property has no description in tracking plan.\n * @param {string} [properties.last article headline] The headline of the article last read by a user\n * @param {string} [properties.last article id] The article ID of the last article read by the user\n * @param {string[]} [properties.last article keywords] The keywords of the last article read by the user\n * @param {string} [properties.last article topics] The article topics associated with the last article read by the user\n * @param {string} [properties.last content type] Type of article (ex. longread, column, etc.) last read by the user\n * @param {string} [properties.last internal campaign] The last intcmp parameter encountered in the session, used to track conversions from internal campaigns\n * @param {string} [properties.last marketing campaign] The last utm_campaign value passed in the page url that a user clicked on, used to attribute conversions to a marketing campaign\n * @param {string} [properties.last marketing content] The last utm_content value passed in the page url that a user clicked on, used to attribute conversions to specific marketing content\n * @param {string} [properties.last marketing medium] The last utm_medium value passed in the page url that a user clicked on, used to attribute conversions to specific marketing mediums\n * @param {string} [properties.last marketing source] The last utm_source value passed in the page url that a user clicked on, used to attribute conversions to specific marketing sources\n * @param {string} [properties.last marketing terms] The last utm_term value passed in the page url that a user clicked on, used to attribute conversions to a specific marketing term\n * @param {string} [properties.last subsection 1] Name of the last subsection 1 viewed by the user\n * @param {string} [properties.last subsection 2] Name of the last subsection 2 viewed by the user\n * @param {string} [properties.last subsection 3] Name of the last subsection 3 viewed by the user\n * @param {string} [properties.last subsection 4] Name of the last subsection 4 viewed by the user\n * @param {string} [properties.last wall name] Name of the latest wall encountered by the user\n * @param {string} [properties.last wall reason] The latest Sophi reason for showing the wall to the user\n * @param {string} [properties.last wall type] The latest wall type shown to a user\n * @param {string} [properties.marketing campaign] The utm_campaign parameter passed in the page URL, used to track what marketing campaign the user came from.\n * @param {string} [properties.marketing content] The utm_content parameter passed in the page URL, used to track what marketing content the user came from.\n * @param {string} [properties.marketing medium] The utm_medium parameter passed in the page URL, used to track what marketing medium the user came from.\n * @param {string} [properties.marketing source] The utm_source parameter passed in the page URL, used to track what marketing source the user came from.\n * @param {string} [properties.marketing term] The utm_term parameter passed in the page URL, used to track what marketing term the user came from.\n * @param {string} [properties.media content id] A distinct ID for video or audio content - for audio articles, this would be the article ID.\n * @param {number} [properties.media duration seconds] The length of the video or audio in seconds\n * @param {number} [properties.media elapsed seconds] Elapsed time in seconds for the video or audio\n * @param {string} [properties.media feature type] Placement of the audio or video on the page (ex. page part, article part, main)\n * @param {string} [properties.media player] Name of the video or audio player platform\n * @param {string} properties.media title Title of the video or audio\n * @param {string} [properties.page layout] Describes the layout of the page (ex. premium-section, article-with-sidebar, page-with-sidebar)\n * @param {string} properties.page name General page name or breadcrumb containing a page's section and subsections. Ex. investing:personalfinance\n * @param {string} properties.page path Part of the URL after the domain and before query paramters and URL fragments. Ex. /canada/article-this-is-an-example/\n * @param {string} [properties.page type] The type of page (ex. article, section, video, etc.)\n * @param {string} properties.page url Page URL of the page a user browsed.\n * @param {string} [properties.press release organization] The press release organization that provided a press release for a stock page.\n * @param {string} properties.referrer host The host name of the referral URL.\n * @param {string} properties.referrer url The previous page's URL, ie where the user came from before landing on the current page URL.\n * @param {string} properties.section The name of the section\n * @param {string[]} [properties.stock tickers] Array of stock tickers that appeared on an article.\n * @param {string} [properties.subsection 1] The first subsection of a page, appears after the section name in the page path (ex. markets in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 2] The second subsection of a page, appears as the third value in the page path (ex. stocks in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 3] The third subsection of a page, appears as the fourth value the page path (ex. QQC-F-T in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 4] The fourth subsection of a page, appears as the fifth value in the page path (ex. pressreleases in /investing/markets/stocks/QQC-F-T/pressreleases/)\n * @param {string} [properties.user agent string] User agent string of a device\n * @param {EventOptions} [options] Options for this track call.\n */\n audioComplete(properties, options) {\n return this.track(new AudioComplete(properties), options);\n }\n\n /**\n * audio_pause\n *\n * [View in Tracking Plan](https://data.amplitude.com/the-globe-and-mail/The%20Globe%20and%20Mail/events/main/latest/audio_pause)\n *\n * This event is triggered when a user pauses the audio playback\n *\n * Owner: Lourdes Santos\n *\n * @param {Object} properties The event's properties.\n * @param {string} properties.app id A unique identifier for the application (ex. theglobeandmail-website, theglobeandmail-app, tgam:theglobeandmail:app_android)\n * @param {string[]} [properties.article byline] Author or authors of an article\n * @param {string} [properties.article colour] Article colour or access category of an article (ex. red, yellow, green)\n * @param {number} [properties.article content size] Number of words in an article\n * @param {string} [properties.article content type] Type of article (ex. longread, column, etc.)\n * @param {string} [properties.article creditline] Creditline of an article (ex. reuters)\n * @param {string} properties.article headline Headline of an article\n * @param {string} properties.article id The distinct ID of an article\n * @param {string[]} [properties.article keywords] Keywords assigned to an article\n * @param {string} [properties.article last modified date] Modified date of an article\n * @param {string} [properties.article ownership] Source of an article (ex. staff writer, wire, etc.)\n * @param {string} [properties.article publish date] Publish date of an article in EST, ISO date format\n * @param {string[]} [properties.article tags] Story tags of an article (ex. 'folio', 'longread', etc.)\n * @param {string} [properties.article topics] Topics assigned to an article\n * @param {number} [properties.browser view height] Height of browser in pixels\n * @param {number} [properties.browser view width] Width of browser in pixels\n * @param {string} properties.canonical url Canonical URL of the page (strips all paramters in the URL)\n * @param {string} properties.environment User environment during the session (prod, dev, or stg)\n * @param {string} [properties.first marketing campaign] The first utm campaign the user encountered in their session\n * @param {string} [properties.first marketing content] The first utm content the user encountered in their session\n * @param {string} [properties.first marketing medium] The first utm medium the user encountered in their session\n * @param {string} [properties.first marketing source] The first utm source the user encountered in their session\n * @param {string} [properties.first marketing terms] The first utm_term the user encountered in their session\n * @param {string} [properties.first referrer host] The first referral host that brought a user to the site for a specific session\n * @param {string} properties.host name Site or host where content is published\n * @param {string} [properties.internal campaign] The intcmp parameter in the page URL, used to track internal campaigns.\n * @param {boolean} [properties.is mute] Describes whether the video played was on mute or not\n * @param {boolean} [properties.is sponsored] Describes whether the content is sponsored or not\n * @param {string[]} [properties.last article byline] The author or authors of the last article read by the user\n * @param {string} [properties.last article colour] The article colour of the last article read by the user\n * @param {string} [properties.last article credit line] Property has no description in tracking plan.\n * @param {string} [properties.last article headline] The headline of the article last read by a user\n * @param {string} [properties.last article id] The article ID of the last article read by the user\n * @param {string[]} [properties.last article keywords] The keywords of the last article read by the user\n * @param {string} [properties.last article topics] The article topics associated with the last article read by the user\n * @param {string} [properties.last content type] Type of article (ex. longread, column, etc.) last read by the user\n * @param {string} [properties.last internal campaign] The last intcmp parameter encountered in the session, used to track conversions from internal campaigns\n * @param {string} [properties.last marketing campaign] The last utm_campaign value passed in the page url that a user clicked on, used to attribute conversions to a marketing campaign\n * @param {string} [properties.last marketing content] The last utm_content value passed in the page url that a user clicked on, used to attribute conversions to specific marketing content\n * @param {string} [properties.last marketing medium] The last utm_medium value passed in the page url that a user clicked on, used to attribute conversions to specific marketing mediums\n * @param {string} [properties.last marketing source] The last utm_source value passed in the page url that a user clicked on, used to attribute conversions to specific marketing sources\n * @param {string} [properties.last marketing terms] The last utm_term value passed in the page url that a user clicked on, used to attribute conversions to a specific marketing term\n * @param {string} [properties.last subsection 1] Name of the last subsection 1 viewed by the user\n * @param {string} [properties.last subsection 2] Name of the last subsection 2 viewed by the user\n * @param {string} [properties.last subsection 3] Name of the last subsection 3 viewed by the user\n * @param {string} [properties.last subsection 4] Name of the last subsection 4 viewed by the user\n * @param {string} [properties.last wall name] Name of the latest wall encountered by the user\n * @param {string} [properties.last wall reason] The latest Sophi reason for showing the wall to the user\n * @param {string} [properties.last wall type] The latest wall type shown to a user\n * @param {string} [properties.marketing campaign] The utm_campaign parameter passed in the page URL, used to track what marketing campaign the user came from.\n * @param {string} [properties.marketing content] The utm_content parameter passed in the page URL, used to track what marketing content the user came from.\n * @param {string} [properties.marketing medium] The utm_medium parameter passed in the page URL, used to track what marketing medium the user came from.\n * @param {string} [properties.marketing source] The utm_source parameter passed in the page URL, used to track what marketing source the user came from.\n * @param {string} [properties.marketing term] The utm_term parameter passed in the page URL, used to track what marketing term the user came from.\n * @param {string} [properties.media content id] A distinct ID for video or audio content - for audio articles, this would be the article ID.\n * @param {number} [properties.media duration seconds] The length of the video or audio in seconds\n * @param {number} [properties.media elapsed seconds] Elapsed time in seconds for the video or audio\n * @param {string} [properties.media feature type] Placement of the audio or video on the page (ex. page part, article part, main)\n * @param {string} [properties.media player] Name of the video or audio player platform\n * @param {string} properties.media title Title of the video or audio\n * @param {string} [properties.page layout] Describes the layout of the page (ex. premium-section, article-with-sidebar, page-with-sidebar)\n * @param {string} properties.page name General page name or breadcrumb containing a page's section and subsections. Ex. investing:personalfinance\n * @param {string} properties.page path Part of the URL after the domain and before query paramters and URL fragments. Ex. /canada/article-this-is-an-example/\n * @param {string} [properties.page type] The type of page (ex. article, section, video, etc.)\n * @param {string} properties.page url Page URL of the page a user browsed.\n * @param {string} [properties.press release organization] The press release organization that provided a press release for a stock page.\n * @param {string} properties.referrer host The host name of the referral URL.\n * @param {string} properties.referrer url The previous page's URL, ie where the user came from before landing on the current page URL.\n * @param {string} properties.section The name of the section\n * @param {string[]} [properties.stock tickers] Array of stock tickers that appeared on an article.\n * @param {string} [properties.subsection 1] The first subsection of a page, appears after the section name in the page path (ex. markets in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 2] The second subsection of a page, appears as the third value in the page path (ex. stocks in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 3] The third subsection of a page, appears as the fourth value the page path (ex. QQC-F-T in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 4] The fourth subsection of a page, appears as the fifth value in the page path (ex. pressreleases in /investing/markets/stocks/QQC-F-T/pressreleases/)\n * @param {string} [properties.user agent string] User agent string of a device\n * @param {EventOptions} [options] Options for this track call.\n */\n audioPause(properties, options) {\n return this.track(new AudioPause(properties), options);\n }\n\n /**\n * audio_play\n *\n * [View in Tracking Plan](https://data.amplitude.com/the-globe-and-mail/The%20Globe%20and%20Mail/events/main/latest/audio_play)\n *\n * This event tracks when a user starts playing audio content\n *\n * Owner: Lourdes Santos\n *\n * @param {Object} properties The event's properties.\n * @param {string} properties.app id A unique identifier for the application (ex. theglobeandmail-website, theglobeandmail-app, tgam:theglobeandmail:app_android)\n * @param {string[]} [properties.article byline] Author or authors of an article\n * @param {string} [properties.article colour] Article colour or access category of an article (ex. red, yellow, green)\n * @param {number} [properties.article content size] Number of words in an article\n * @param {string} [properties.article content type] Type of article (ex. longread, column, etc.)\n * @param {string} [properties.article creditline] Creditline of an article (ex. reuters)\n * @param {string} properties.article headline Headline of an article\n * @param {string} properties.article id The distinct ID of an article\n * @param {string[]} [properties.article keywords] Keywords assigned to an article\n * @param {string} [properties.article last modified date] Modified date of an article\n * @param {string} [properties.article ownership] Source of an article (ex. staff writer, wire, etc.)\n * @param {string} [properties.article publish date] Publish date of an article in EST, ISO date format\n * @param {string[]} [properties.article tags] Story tags of an article (ex. 'folio', 'longread', etc.)\n * @param {string} [properties.article topics] Topics assigned to an article\n * @param {number} [properties.browser view height] Height of browser in pixels\n * @param {number} [properties.browser view width] Width of browser in pixels\n * @param {string} properties.canonical url Canonical URL of the page (strips all paramters in the URL)\n * @param {string} properties.environment User environment during the session (prod, dev, or stg)\n * @param {string} [properties.first marketing campaign] The first utm campaign the user encountered in their session\n * @param {string} [properties.first marketing content] The first utm content the user encountered in their session\n * @param {string} [properties.first marketing medium] The first utm medium the user encountered in their session\n * @param {string} [properties.first marketing source] The first utm source the user encountered in their session\n * @param {string} [properties.first marketing terms] The first utm_term the user encountered in their session\n * @param {string} [properties.first referrer host] The first referral host that brought a user to the site for a specific session\n * @param {string} properties.host name Site or host where content is published\n * @param {string} [properties.internal campaign] The intcmp parameter in the page URL, used to track internal campaigns.\n * @param {boolean} [properties.is mute] Describes whether the video played was on mute or not\n * @param {boolean} [properties.is sponsored] Describes whether the content is sponsored or not\n * @param {string[]} [properties.last article byline] The author or authors of the last article read by the user\n * @param {string} [properties.last article colour] The article colour of the last article read by the user\n * @param {string} [properties.last article credit line] Property has no description in tracking plan.\n * @param {string} [properties.last article headline] The headline of the article last read by a user\n * @param {string} [properties.last article id] The article ID of the last article read by the user\n * @param {string[]} [properties.last article keywords] The keywords of the last article read by the user\n * @param {string} [properties.last article topics] The article topics associated with the last article read by the user\n * @param {string} [properties.last content type] Type of article (ex. longread, column, etc.) last read by the user\n * @param {string} [properties.last internal campaign] The last intcmp parameter encountered in the session, used to track conversions from internal campaigns\n * @param {string} [properties.last marketing campaign] The last utm_campaign value passed in the page url that a user clicked on, used to attribute conversions to a marketing campaign\n * @param {string} [properties.last marketing content] The last utm_content value passed in the page url that a user clicked on, used to attribute conversions to specific marketing content\n * @param {string} [properties.last marketing medium] The last utm_medium value passed in the page url that a user clicked on, used to attribute conversions to specific marketing mediums\n * @param {string} [properties.last marketing source] The last utm_source value passed in the page url that a user clicked on, used to attribute conversions to specific marketing sources\n * @param {string} [properties.last marketing terms] The last utm_term value passed in the page url that a user clicked on, used to attribute conversions to a specific marketing term\n * @param {string} [properties.last subsection 1] Name of the last subsection 1 viewed by the user\n * @param {string} [properties.last subsection 2] Name of the last subsection 2 viewed by the user\n * @param {string} [properties.last subsection 3] Name of the last subsection 3 viewed by the user\n * @param {string} [properties.last subsection 4] Name of the last subsection 4 viewed by the user\n * @param {string} [properties.last wall name] Name of the latest wall encountered by the user\n * @param {string} [properties.last wall reason] The latest Sophi reason for showing the wall to the user\n * @param {string} [properties.last wall type] The latest wall type shown to a user\n * @param {string} [properties.marketing campaign] The utm_campaign parameter passed in the page URL, used to track what marketing campaign the user came from.\n * @param {string} [properties.marketing content] The utm_content parameter passed in the page URL, used to track what marketing content the user came from.\n * @param {string} [properties.marketing medium] The utm_medium parameter passed in the page URL, used to track what marketing medium the user came from.\n * @param {string} [properties.marketing source] The utm_source parameter passed in the page URL, used to track what marketing source the user came from.\n * @param {string} [properties.marketing term] The utm_term parameter passed in the page URL, used to track what marketing term the user came from.\n * @param {string} [properties.media content id] A distinct ID for video or audio content - for audio articles, this would be the article ID.\n * @param {number} [properties.media duration seconds] The length of the video or audio in seconds\n * @param {number} [properties.media elapsed seconds] Elapsed time in seconds for the video or audio\n * @param {string} [properties.media feature type] Placement of the audio or video on the page (ex. page part, article part, main)\n * @param {string} [properties.media player] Name of the video or audio player platform\n * @param {string} properties.media title Title of the video or audio\n * @param {string} [properties.page layout] Describes the layout of the page (ex. premium-section, article-with-sidebar, page-with-sidebar)\n * @param {string} properties.page name General page name or breadcrumb containing a page's section and subsections. Ex. investing:personalfinance\n * @param {string} properties.page path Part of the URL after the domain and before query paramters and URL fragments. Ex. /canada/article-this-is-an-example/\n * @param {string} [properties.page type] The type of page (ex. article, section, video, etc.)\n * @param {string} properties.page url Page URL of the page a user browsed.\n * @param {string} [properties.press release organization] The press release organization that provided a press release for a stock page.\n * @param {string} properties.referrer host The host name of the referral URL.\n * @param {string} properties.referrer url The previous page's URL, ie where the user came from before landing on the current page URL.\n * @param {string} properties.section The name of the section\n * @param {string[]} [properties.stock tickers] Array of stock tickers that appeared on an article.\n * @param {string} [properties.subsection 1] The first subsection of a page, appears after the section name in the page path (ex. markets in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 2] The second subsection of a page, appears as the third value in the page path (ex. stocks in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 3] The third subsection of a page, appears as the fourth value the page path (ex. QQC-F-T in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 4] The fourth subsection of a page, appears as the fifth value in the page path (ex. pressreleases in /investing/markets/stocks/QQC-F-T/pressreleases/)\n * @param {string} [properties.user agent string] User agent string of a device\n * @param {EventOptions} [options] Options for this track call.\n */\n audioPlay(properties, options) {\n return this.track(new AudioPlay(properties), options);\n }\n\n /**\n * button_click\n *\n * [View in Tracking Plan](https://data.amplitude.com/the-globe-and-mail/The%20Globe%20and%20Mail/events/main/latest/button_click)\n *\n * Triggered when a user clicks on a button\n *\n * Owner: Lourdes Santos\n *\n * @param {Object} properties The event's properties.\n * @param {string} properties.app id A unique identifier for the application (ex. theglobeandmail-website, theglobeandmail-app, tgam:theglobeandmail:app_android)\n * @param {string[]} [properties.article byline] Author or authors of an article\n * @param {string} [properties.article colour] Article colour or access category of an article (ex. red, yellow, green)\n * @param {number} [properties.article content size] Number of words in an article\n * @param {string} [properties.article content type] Type of article (ex. longread, column, etc.)\n * @param {string} [properties.article creditline] Creditline of an article (ex. reuters)\n * @param {string} properties.article headline Headline of an article\n * @param {string} properties.article id The distinct ID of an article\n * @param {string[]} [properties.article keywords] Keywords assigned to an article\n * @param {string} [properties.article last modified date] Modified date of an article\n * @param {string} [properties.article ownership] Source of an article (ex. staff writer, wire, etc.)\n * @param {string} [properties.article publish date] Publish date of an article in EST, ISO date format\n * @param {string[]} [properties.article tags] Story tags of an article (ex. 'folio', 'longread', etc.)\n * @param {string} [properties.article topics] Topics assigned to an article\n * @param {number} [properties.browser view height] Height of browser in pixels\n * @param {number} [properties.browser view width] Width of browser in pixels\n * @param {string} properties.canonical url Canonical URL of the page (strips all paramters in the URL)\n * @param {string} [properties.click article id] The article ID of the link clicked on by the user.\n * @param {string} [properties.click element content] This is used only to track clicks to the Subscribe with Google pop up banner.\n * @param {string} [properties.click feature] The name of the feature clicked on by the user.\n * @param {string} [properties.click label] The label on the button or link clicked on by the user.\n * @param {string} [properties.click target url] The URL destination of the link or button that was clicked on.\n * @param {string} properties.environment User environment during the session (prod, dev, or stg)\n * @param {string} [properties.first marketing campaign] The first utm campaign the user encountered in their session\n * @param {string} [properties.first marketing content] The first utm content the user encountered in their session\n * @param {string} [properties.first marketing medium] The first utm medium the user encountered in their session\n * @param {string} [properties.first marketing source] The first utm source the user encountered in their session\n * @param {string} [properties.first marketing terms] The first utm_term the user encountered in their session\n * @param {string} [properties.first referrer host] The first referral host that brought a user to the site for a specific session\n * @param {string} properties.host name Site or host where content is published\n * @param {string} [properties.internal campaign] The intcmp parameter in the page URL, used to track internal campaigns.\n * @param {boolean} [properties.is sponsored] Describes whether the content is sponsored or not\n * @param {string[]} [properties.last article byline] The author or authors of the last article read by the user\n * @param {string} [properties.last article colour] The article colour of the last article read by the user\n * @param {string} [properties.last article credit line] Property has no description in tracking plan.\n * @param {string} [properties.last article headline] The headline of the article last read by a user\n * @param {string} [properties.last article id] The article ID of the last article read by the user\n * @param {string[]} [properties.last article keywords] The keywords of the last article read by the user\n * @param {string} [properties.last article topics] The article topics associated with the last article read by the user\n * @param {string} [properties.last content type] Type of article (ex. longread, column, etc.) last read by the user\n * @param {string} [properties.last internal campaign] The last intcmp parameter encountered in the session, used to track conversions from internal campaigns\n * @param {string} [properties.last marketing campaign] The last utm_campaign value passed in the page url that a user clicked on, used to attribute conversions to a marketing campaign\n * @param {string} [properties.last marketing content] The last utm_content value passed in the page url that a user clicked on, used to attribute conversions to specific marketing content\n * @param {string} [properties.last marketing medium] The last utm_medium value passed in the page url that a user clicked on, used to attribute conversions to specific marketing mediums\n * @param {string} [properties.last marketing source] The last utm_source value passed in the page url that a user clicked on, used to attribute conversions to specific marketing sources\n * @param {string} [properties.last marketing terms] The last utm_term value passed in the page url that a user clicked on, used to attribute conversions to a specific marketing term\n * @param {string} [properties.last subsection 1] Name of the last subsection 1 viewed by the user\n * @param {string} [properties.last subsection 2] Name of the last subsection 2 viewed by the user\n * @param {string} [properties.last subsection 3] Name of the last subsection 3 viewed by the user\n * @param {string} [properties.last subsection 4] Name of the last subsection 4 viewed by the user\n * @param {string} [properties.last wall name] Name of the latest wall encountered by the user\n * @param {string} [properties.last wall reason] The latest Sophi reason for showing the wall to the user\n * @param {string} [properties.last wall type] The latest wall type shown to a user\n * @param {string} [properties.marketing campaign] The utm_campaign parameter passed in the page URL, used to track what marketing campaign the user came from.\n * @param {string} [properties.marketing content] The utm_content parameter passed in the page URL, used to track what marketing content the user came from.\n * @param {string} [properties.marketing medium] The utm_medium parameter passed in the page URL, used to track what marketing medium the user came from.\n * @param {string} [properties.marketing source] The utm_source parameter passed in the page URL, used to track what marketing source the user came from.\n * @param {string} [properties.marketing term] The utm_term parameter passed in the page URL, used to track what marketing term the user came from.\n * @param {string} [properties.page layout] Describes the layout of the page (ex. premium-section, article-with-sidebar, page-with-sidebar)\n * @param {string} properties.page name General page name or breadcrumb containing a page's section and subsections. Ex. investing:personalfinance\n * @param {string} properties.page path Part of the URL after the domain and before query paramters and URL fragments. Ex. /canada/article-this-is-an-example/\n * @param {string} [properties.page type] The type of page (ex. article, section, video, etc.)\n * @param {string} properties.page url Page URL of the page a user browsed.\n * @param {string} [properties.press release organization] The press release organization that provided a press release for a stock page.\n * @param {string} properties.referrer host The host name of the referral URL.\n * @param {string} properties.referrer url The previous page's URL, ie where the user came from before landing on the current page URL.\n * @param {string} properties.section The name of the section\n * @param {string[]} [properties.stock tickers] Array of stock tickers that appeared on an article.\n * @param {string} [properties.subsection 1] The first subsection of a page, appears after the section name in the page path (ex. markets in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 2] The second subsection of a page, appears as the third value in the page path (ex. stocks in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 3] The third subsection of a page, appears as the fourth value the page path (ex. QQC-F-T in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 4] The fourth subsection of a page, appears as the fifth value in the page path (ex. pressreleases in /investing/markets/stocks/QQC-F-T/pressreleases/)\n * @param {string} [properties.user agent string] User agent string of a device\n * @param {EventOptions} [options] Options for this track call.\n */\n buttonClick(properties, options) {\n return this.track(new ButtonClick(properties), options);\n }\n\n /**\n * comment_post\n *\n * [View in Tracking Plan](https://data.amplitude.com/the-globe-and-mail/The%20Globe%20and%20Mail/events/main/latest/comment_post)\n *\n * This event tracks when a user posts a comment on an article\n *\n * Owner: Lourdes Santos\n *\n * @param {Object} properties The event's properties.\n * @param {string} properties.app id A unique identifier for the application (ex. theglobeandmail-website, theglobeandmail-app, tgam:theglobeandmail:app_android)\n * @param {string[]} [properties.article byline] Author or authors of an article\n * @param {string} [properties.article colour] Article colour or access category of an article (ex. red, yellow, green)\n * @param {number} [properties.article content size] Number of words in an article\n * @param {string} [properties.article content type] Type of article (ex. longread, column, etc.)\n * @param {string} [properties.article creditline] Creditline of an article (ex. reuters)\n * @param {string} properties.article headline Headline of an article\n * @param {string} properties.article id The distinct ID of an article\n * @param {string[]} [properties.article keywords] Keywords assigned to an article\n * @param {string} [properties.article last modified date] Modified date of an article\n * @param {string} [properties.article ownership] Source of an article (ex. staff writer, wire, etc.)\n * @param {string} [properties.article publish date] Publish date of an article in EST, ISO date format\n * @param {string[]} [properties.article tags] Story tags of an article (ex. 'folio', 'longread', etc.)\n * @param {string} [properties.article topics] Topics assigned to an article\n * @param {number} [properties.browser view height] Height of browser in pixels\n * @param {number} [properties.browser view width] Width of browser in pixels\n * @param {string} properties.canonical url Canonical URL of the page (strips all paramters in the URL)\n * @param {string} properties.environment User environment during the session (prod, dev, or stg)\n * @param {string} [properties.first marketing campaign] The first utm campaign the user encountered in their session\n * @param {string} [properties.first marketing content] The first utm content the user encountered in their session\n * @param {string} [properties.first marketing medium] The first utm medium the user encountered in their session\n * @param {string} [properties.first marketing source] The first utm source the user encountered in their session\n * @param {string} [properties.first marketing terms] The first utm_term the user encountered in their session\n * @param {string} [properties.first referrer host] The first referral host that brought a user to the site for a specific session\n * @param {string} properties.host name Site or host where content is published\n * @param {string} [properties.internal campaign] The intcmp parameter in the page URL, used to track internal campaigns.\n * @param {boolean} [properties.is sponsored] Describes whether the content is sponsored or not\n * @param {string[]} [properties.last article byline] The author or authors of the last article read by the user\n * @param {string} [properties.last article colour] The article colour of the last article read by the user\n * @param {string} [properties.last article credit line] Property has no description in tracking plan.\n * @param {string} [properties.last article headline] The headline of the article last read by a user\n * @param {string} [properties.last article id] The article ID of the last article read by the user\n * @param {string[]} [properties.last article keywords] The keywords of the last article read by the user\n * @param {string} [properties.last article topics] The article topics associated with the last article read by the user\n * @param {string} [properties.last content type] Type of article (ex. longread, column, etc.) last read by the user\n * @param {string} [properties.last internal campaign] The last intcmp parameter encountered in the session, used to track conversions from internal campaigns\n * @param {string} [properties.last marketing campaign] The last utm_campaign value passed in the page url that a user clicked on, used to attribute conversions to a marketing campaign\n * @param {string} [properties.last marketing content] The last utm_content value passed in the page url that a user clicked on, used to attribute conversions to specific marketing content\n * @param {string} [properties.last marketing medium] The last utm_medium value passed in the page url that a user clicked on, used to attribute conversions to specific marketing mediums\n * @param {string} [properties.last marketing source] The last utm_source value passed in the page url that a user clicked on, used to attribute conversions to specific marketing sources\n * @param {string} [properties.last marketing terms] The last utm_term value passed in the page url that a user clicked on, used to attribute conversions to a specific marketing term\n * @param {string} [properties.last subsection 1] Name of the last subsection 1 viewed by the user\n * @param {string} [properties.last subsection 2] Name of the last subsection 2 viewed by the user\n * @param {string} [properties.last subsection 3] Name of the last subsection 3 viewed by the user\n * @param {string} [properties.last subsection 4] Name of the last subsection 4 viewed by the user\n * @param {string} [properties.last wall name] Name of the latest wall encountered by the user\n * @param {string} [properties.last wall reason] The latest Sophi reason for showing the wall to the user\n * @param {string} [properties.last wall type] The latest wall type shown to a user\n * @param {string} [properties.marketing campaign] The utm_campaign parameter passed in the page URL, used to track what marketing campaign the user came from.\n * @param {string} [properties.marketing content] The utm_content parameter passed in the page URL, used to track what marketing content the user came from.\n * @param {string} [properties.marketing medium] The utm_medium parameter passed in the page URL, used to track what marketing medium the user came from.\n * @param {string} [properties.marketing source] The utm_source parameter passed in the page URL, used to track what marketing source the user came from.\n * @param {string} [properties.marketing term] The utm_term parameter passed in the page URL, used to track what marketing term the user came from.\n * @param {string} [properties.page layout] Describes the layout of the page (ex. premium-section, article-with-sidebar, page-with-sidebar)\n * @param {string} properties.page name General page name or breadcrumb containing a page's section and subsections. Ex. investing:personalfinance\n * @param {string} properties.page path Part of the URL after the domain and before query paramters and URL fragments. Ex. /canada/article-this-is-an-example/\n * @param {string} [properties.page type] The type of page (ex. article, section, video, etc.)\n * @param {string} properties.page url Page URL of the page a user browsed.\n * @param {string} [properties.press release organization] The press release organization that provided a press release for a stock page.\n * @param {string} properties.referrer host The host name of the referral URL.\n * @param {string} properties.referrer url The previous page's URL, ie where the user came from before landing on the current page URL.\n * @param {string} properties.section The name of the section\n * @param {string[]} [properties.stock tickers] Array of stock tickers that appeared on an article.\n * @param {string} [properties.subsection 1] The first subsection of a page, appears after the section name in the page path (ex. markets in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 2] The second subsection of a page, appears as the third value in the page path (ex. stocks in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 3] The third subsection of a page, appears as the fourth value the page path (ex. QQC-F-T in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 4] The fourth subsection of a page, appears as the fifth value in the page path (ex. pressreleases in /investing/markets/stocks/QQC-F-T/pressreleases/)\n * @param {string} [properties.user agent string] User agent string of a device\n * @param {EventOptions} [options] Options for this track call.\n */\n commentPost(properties, options) {\n return this.track(new CommentPost(properties), options);\n }\n\n /**\n * comment_reply\n *\n * [View in Tracking Plan](https://data.amplitude.com/the-globe-and-mail/The%20Globe%20and%20Mail/events/main/latest/comment_reply)\n *\n * This event tracks when a user replies to a comment\n *\n * Owner: Lourdes Santos\n *\n * @param {Object} properties The event's properties.\n * @param {string} properties.app id A unique identifier for the application (ex. theglobeandmail-website, theglobeandmail-app, tgam:theglobeandmail:app_android)\n * @param {string[]} [properties.article byline] Author or authors of an article\n * @param {string} [properties.article colour] Article colour or access category of an article (ex. red, yellow, green)\n * @param {number} [properties.article content size] Number of words in an article\n * @param {string} [properties.article content type] Type of article (ex. longread, column, etc.)\n * @param {string} [properties.article creditline] Creditline of an article (ex. reuters)\n * @param {string} properties.article headline Headline of an article\n * @param {string} properties.article id The distinct ID of an article\n * @param {string[]} [properties.article keywords] Keywords assigned to an article\n * @param {string} [properties.article last modified date] Modified date of an article\n * @param {string} [properties.article ownership] Source of an article (ex. staff writer, wire, etc.)\n * @param {string} [properties.article publish date] Publish date of an article in EST, ISO date format\n * @param {string[]} [properties.article tags] Story tags of an article (ex. 'folio', 'longread', etc.)\n * @param {string} [properties.article topics] Topics assigned to an article\n * @param {number} [properties.browser view height] Height of browser in pixels\n * @param {number} [properties.browser view width] Width of browser in pixels\n * @param {string} properties.canonical url Canonical URL of the page (strips all paramters in the URL)\n * @param {string} properties.environment User environment during the session (prod, dev, or stg)\n * @param {string} [properties.first marketing campaign] The first utm campaign the user encountered in their session\n * @param {string} [properties.first marketing content] The first utm content the user encountered in their session\n * @param {string} [properties.first marketing medium] The first utm medium the user encountered in their session\n * @param {string} [properties.first marketing source] The first utm source the user encountered in their session\n * @param {string} [properties.first marketing terms] The first utm_term the user encountered in their session\n * @param {string} [properties.first referrer host] The first referral host that brought a user to the site for a specific session\n * @param {string} properties.host name Site or host where content is published\n * @param {string} [properties.internal campaign] The intcmp parameter in the page URL, used to track internal campaigns.\n * @param {boolean} [properties.is sponsored] Describes whether the content is sponsored or not\n * @param {string[]} [properties.last article byline] The author or authors of the last article read by the user\n * @param {string} [properties.last article colour] The article colour of the last article read by the user\n * @param {string} [properties.last article credit line] Property has no description in tracking plan.\n * @param {string} [properties.last article headline] The headline of the article last read by a user\n * @param {string} [properties.last article id] The article ID of the last article read by the user\n * @param {string[]} [properties.last article keywords] The keywords of the last article read by the user\n * @param {string} [properties.last article topics] The article topics associated with the last article read by the user\n * @param {string} [properties.last content type] Type of article (ex. longread, column, etc.) last read by the user\n * @param {string} [properties.last internal campaign] The last intcmp parameter encountered in the session, used to track conversions from internal campaigns\n * @param {string} [properties.last marketing campaign] The last utm_campaign value passed in the page url that a user clicked on, used to attribute conversions to a marketing campaign\n * @param {string} [properties.last marketing content] The last utm_content value passed in the page url that a user clicked on, used to attribute conversions to specific marketing content\n * @param {string} [properties.last marketing medium] The last utm_medium value passed in the page url that a user clicked on, used to attribute conversions to specific marketing mediums\n * @param {string} [properties.last marketing source] The last utm_source value passed in the page url that a user clicked on, used to attribute conversions to specific marketing sources\n * @param {string} [properties.last marketing terms] The last utm_term value passed in the page url that a user clicked on, used to attribute conversions to a specific marketing term\n * @param {string} [properties.last subsection 1] Name of the last subsection 1 viewed by the user\n * @param {string} [properties.last subsection 2] Name of the last subsection 2 viewed by the user\n * @param {string} [properties.last subsection 3] Name of the last subsection 3 viewed by the user\n * @param {string} [properties.last subsection 4] Name of the last subsection 4 viewed by the user\n * @param {string} [properties.last wall name] Name of the latest wall encountered by the user\n * @param {string} [properties.last wall reason] The latest Sophi reason for showing the wall to the user\n * @param {string} [properties.last wall type] The latest wall type shown to a user\n * @param {string} [properties.marketing campaign] The utm_campaign parameter passed in the page URL, used to track what marketing campaign the user came from.\n * @param {string} [properties.marketing content] The utm_content parameter passed in the page URL, used to track what marketing content the user came from.\n * @param {string} [properties.marketing medium] The utm_medium parameter passed in the page URL, used to track what marketing medium the user came from.\n * @param {string} [properties.marketing source] The utm_source parameter passed in the page URL, used to track what marketing source the user came from.\n * @param {string} [properties.marketing term] The utm_term parameter passed in the page URL, used to track what marketing term the user came from.\n * @param {string} [properties.page layout] Describes the layout of the page (ex. premium-section, article-with-sidebar, page-with-sidebar)\n * @param {string} properties.page name General page name or breadcrumb containing a page's section and subsections. Ex. investing:personalfinance\n * @param {string} properties.page path Part of the URL after the domain and before query paramters and URL fragments. Ex. /canada/article-this-is-an-example/\n * @param {string} [properties.page type] The type of page (ex. article, section, video, etc.)\n * @param {string} properties.page url Page URL of the page a user browsed.\n * @param {string} [properties.press release organization] The press release organization that provided a press release for a stock page.\n * @param {string} properties.referrer host The host name of the referral URL.\n * @param {string} properties.referrer url The previous page's URL, ie where the user came from before landing on the current page URL.\n * @param {string} properties.section The name of the section\n * @param {string[]} [properties.stock tickers] Array of stock tickers that appeared on an article.\n * @param {string} [properties.subsection 1] The first subsection of a page, appears after the section name in the page path (ex. markets in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 2] The second subsection of a page, appears as the third value in the page path (ex. stocks in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 3] The third subsection of a page, appears as the fourth value the page path (ex. QQC-F-T in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 4] The fourth subsection of a page, appears as the fifth value in the page path (ex. pressreleases in /investing/markets/stocks/QQC-F-T/pressreleases/)\n * @param {string} [properties.user agent string] User agent string of a device\n * @param {EventOptions} [options] Options for this track call.\n */\n commentReply(properties, options) {\n return this.track(new CommentReply(properties), options);\n }\n\n /**\n * comment_respect\n *\n * [View in Tracking Plan](https://data.amplitude.com/the-globe-and-mail/The%20Globe%20and%20Mail/events/main/latest/comment_respect)\n *\n * This event tracks when a user gives respect to a comment (ie The Globe's version of a thumbs up)\n *\n * Owner: Lourdes Santos\n *\n * @param {Object} properties The event's properties.\n * @param {string} properties.app id A unique identifier for the application (ex. theglobeandmail-website, theglobeandmail-app, tgam:theglobeandmail:app_android)\n * @param {string[]} [properties.article byline] Author or authors of an article\n * @param {string} [properties.article colour] Article colour or access category of an article (ex. red, yellow, green)\n * @param {number} [properties.article content size] Number of words in an article\n * @param {string} [properties.article content type] Type of article (ex. longread, column, etc.)\n * @param {string} [properties.article creditline] Creditline of an article (ex. reuters)\n * @param {string} properties.article headline Headline of an article\n * @param {string} properties.article id The distinct ID of an article\n * @param {string[]} [properties.article keywords] Keywords assigned to an article\n * @param {string} [properties.article last modified date] Modified date of an article\n * @param {string} [properties.article ownership] Source of an article (ex. staff writer, wire, etc.)\n * @param {string} [properties.article publish date] Publish date of an article in EST, ISO date format\n * @param {string[]} [properties.article tags] Story tags of an article (ex. 'folio', 'longread', etc.)\n * @param {string} [properties.article topics] Topics assigned to an article\n * @param {number} [properties.browser view height] Height of browser in pixels\n * @param {number} [properties.browser view width] Width of browser in pixels\n * @param {string} properties.canonical url Canonical URL of the page (strips all paramters in the URL)\n * @param {string} properties.environment User environment during the session (prod, dev, or stg)\n * @param {string} [properties.first marketing campaign] The first utm campaign the user encountered in their session\n * @param {string} [properties.first marketing content] The first utm content the user encountered in their session\n * @param {string} [properties.first marketing medium] The first utm medium the user encountered in their session\n * @param {string} [properties.first marketing source] The first utm source the user encountered in their session\n * @param {string} [properties.first marketing terms] The first utm_term the user encountered in their session\n * @param {string} [properties.first referrer host] The first referral host that brought a user to the site for a specific session\n * @param {string} properties.host name Site or host where content is published\n * @param {string} [properties.internal campaign] The intcmp parameter in the page URL, used to track internal campaigns.\n * @param {boolean} [properties.is sponsored] Describes whether the content is sponsored or not\n * @param {string[]} [properties.last article byline] The author or authors of the last article read by the user\n * @param {string} [properties.last article colour] The article colour of the last article read by the user\n * @param {string} [properties.last article credit line] Property has no description in tracking plan.\n * @param {string} [properties.last article headline] The headline of the article last read by a user\n * @param {string} [properties.last article id] The article ID of the last article read by the user\n * @param {string[]} [properties.last article keywords] The keywords of the last article read by the user\n * @param {string} [properties.last article topics] The article topics associated with the last article read by the user\n * @param {string} [properties.last content type] Type of article (ex. longread, column, etc.) last read by the user\n * @param {string} [properties.last internal campaign] The last intcmp parameter encountered in the session, used to track conversions from internal campaigns\n * @param {string} [properties.last marketing campaign] The last utm_campaign value passed in the page url that a user clicked on, used to attribute conversions to a marketing campaign\n * @param {string} [properties.last marketing content] The last utm_content value passed in the page url that a user clicked on, used to attribute conversions to specific marketing content\n * @param {string} [properties.last marketing medium] The last utm_medium value passed in the page url that a user clicked on, used to attribute conversions to specific marketing mediums\n * @param {string} [properties.last marketing source] The last utm_source value passed in the page url that a user clicked on, used to attribute conversions to specific marketing sources\n * @param {string} [properties.last marketing terms] The last utm_term value passed in the page url that a user clicked on, used to attribute conversions to a specific marketing term\n * @param {string} [properties.last subsection 1] Name of the last subsection 1 viewed by the user\n * @param {string} [properties.last subsection 2] Name of the last subsection 2 viewed by the user\n * @param {string} [properties.last subsection 3] Name of the last subsection 3 viewed by the user\n * @param {string} [properties.last subsection 4] Name of the last subsection 4 viewed by the user\n * @param {string} [properties.last wall name] Name of the latest wall encountered by the user\n * @param {string} [properties.last wall reason] The latest Sophi reason for showing the wall to the user\n * @param {string} [properties.last wall type] The latest wall type shown to a user\n * @param {string} [properties.marketing campaign] The utm_campaign parameter passed in the page URL, used to track what marketing campaign the user came from.\n * @param {string} [properties.marketing content] The utm_content parameter passed in the page URL, used to track what marketing content the user came from.\n * @param {string} [properties.marketing medium] The utm_medium parameter passed in the page URL, used to track what marketing medium the user came from.\n * @param {string} [properties.marketing source] The utm_source parameter passed in the page URL, used to track what marketing source the user came from.\n * @param {string} [properties.marketing term] The utm_term parameter passed in the page URL, used to track what marketing term the user came from.\n * @param {string} [properties.page layout] Describes the layout of the page (ex. premium-section, article-with-sidebar, page-with-sidebar)\n * @param {string} properties.page name General page name or breadcrumb containing a page's section and subsections. Ex. investing:personalfinance\n * @param {string} properties.page path Part of the URL after the domain and before query paramters and URL fragments. Ex. /canada/article-this-is-an-example/\n * @param {string} [properties.page type] The type of page (ex. article, section, video, etc.)\n * @param {string} properties.page url Page URL of the page a user browsed.\n * @param {string} [properties.press release organization] The press release organization that provided a press release for a stock page.\n * @param {string} properties.referrer host The host name of the referral URL.\n * @param {string} properties.referrer url The previous page's URL, ie where the user came from before landing on the current page URL.\n * @param {string} properties.section The name of the section\n * @param {string[]} [properties.stock tickers] Array of stock tickers that appeared on an article.\n * @param {string} [properties.subsection 1] The first subsection of a page, appears after the section name in the page path (ex. markets in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 2] The second subsection of a page, appears as the third value in the page path (ex. stocks in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 3] The third subsection of a page, appears as the fourth value the page path (ex. QQC-F-T in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 4] The fourth subsection of a page, appears as the fifth value in the page path (ex. pressreleases in /investing/markets/stocks/QQC-F-T/pressreleases/)\n * @param {string} [properties.user agent string] User agent string of a device\n * @param {EventOptions} [options] Options for this track call.\n */\n commentRespect(properties, options) {\n return this.track(new CommentRespect(properties), options);\n }\n\n /**\n * content_impressions\n *\n * [View in Tracking Plan](https://data.amplitude.com/the-globe-and-mail/The%20Globe%20and%20Mail/events/main/latest/content_impressions)\n *\n * This event tracks the number of times a marketing container or the Subscribe with Google button is displayed to users (web only)\n *\n * Owner: Lourdes Santos\n *\n * @param {Object} properties The event's properties.\n * @param {string} properties.app id A unique identifier for the application (ex. theglobeandmail-website, theglobeandmail-app, tgam:theglobeandmail:app_android)\n * @param {string[]} [properties.article byline] Author or authors of an article\n * @param {string} [properties.article colour] Article colour or access category of an article (ex. red, yellow, green)\n * @param {number} [properties.article content size] Number of words in an article\n * @param {string} [properties.article content type] Type of article (ex. longread, column, etc.)\n * @param {string} [properties.article creditline] Creditline of an article (ex. reuters)\n * @param {string} [properties.article headline] Headline of an article\n * @param {string} [properties.article id] The distinct ID of an article\n * @param {string[]} [properties.article keywords] Keywords assigned to an article\n * @param {string} [properties.article ownership] Source of an article (ex. staff writer, wire, etc.)\n * @param {string} [properties.article publish date] Publish date of an article in EST, ISO date format\n * @param {string} [properties.article topics] Topics assigned to an article\n * @param {number} [properties.browser view height] Height of browser in pixels\n * @param {number} [properties.browser view width] Width of browser in pixels\n * @param {string} properties.canonical url Canonical URL of the page (strips all paramters in the URL)\n * @param {string} [properties.click feature] The name of the feature clicked on by the user.\n * @param {string} [properties.click label] The label on the button or link clicked on by the user.\n * @param {string} [properties.click target url] The URL destination of the link or button that was clicked on.\n * @param {string} properties.environment User environment during the session (prod, dev, or stg)\n * @param {string} [properties.first marketing campaign] The first utm campaign the user encountered in their session\n * @param {string} [properties.first marketing content] The first utm content the user encountered in their session\n * @param {string} [properties.first marketing medium] The first utm medium the user encountered in their session\n * @param {string} [properties.first marketing source] The first utm source the user encountered in their session\n * @param {string} [properties.first marketing terms] The first utm_term the user encountered in their session\n * @param {string} [properties.first referrer host] The first referral host that brought a user to the site for a specific session\n * @param {string} properties.host name Site or host where content is published\n * @param {string} [properties.internal campaign] The intcmp parameter in the page URL, used to track internal campaigns.\n * @param {boolean} [properties.is sponsored] Describes whether the content is sponsored or not\n * @param {string[]} [properties.last article byline] The author or authors of the last article read by the user\n * @param {string} [properties.last article colour] The article colour of the last article read by the user\n * @param {string} [properties.last article credit line] Property has no description in tracking plan.\n * @param {string} [properties.last article headline] The headline of the article last read by a user\n * @param {string} [properties.last article id] The article ID of the last article read by the user\n * @param {string[]} [properties.last article keywords] The keywords of the last article read by the user\n * @param {string} [properties.last article topics] The article topics associated with the last article read by the user\n * @param {string} [properties.last content type] Type of article (ex. longread, column, etc.) last read by the user\n * @param {string} [properties.last internal campaign] The last intcmp parameter encountered in the session, used to track conversions from internal campaigns\n * @param {string} [properties.last marketing campaign] The last utm_campaign value passed in the page url that a user clicked on, used to attribute conversions to a marketing campaign\n * @param {string} [properties.last marketing content] The last utm_content value passed in the page url that a user clicked on, used to attribute conversions to specific marketing content\n * @param {string} [properties.last marketing medium] The last utm_medium value passed in the page url that a user clicked on, used to attribute conversions to specific marketing mediums\n * @param {string} [properties.last marketing source] The last utm_source value passed in the page url that a user clicked on, used to attribute conversions to specific marketing sources\n * @param {string} [properties.last marketing terms] The last utm_term value passed in the page url that a user clicked on, used to attribute conversions to a specific marketing term\n * @param {string} [properties.last subsection 1] Name of the last subsection 1 viewed by the user\n * @param {string} [properties.last subsection 2] Name of the last subsection 2 viewed by the user\n * @param {string} [properties.last subsection 3] Name of the last subsection 3 viewed by the user\n * @param {string} [properties.last subsection 4] Name of the last subsection 4 viewed by the user\n * @param {string} [properties.last wall name] Name of the latest wall encountered by the user\n * @param {string} [properties.last wall reason] The latest Sophi reason for showing the wall to the user\n * @param {string} [properties.last wall type] The latest wall type shown to a user\n * @param {string} [properties.marketing campaign] The utm_campaign parameter passed in the page URL, used to track what marketing campaign the user came from.\n * @param {string} [properties.marketing content] The utm_content parameter passed in the page URL, used to track what marketing content the user came from.\n * @param {string} [properties.marketing medium] The utm_medium parameter passed in the page URL, used to track what marketing medium the user came from.\n * @param {string} [properties.marketing source] The utm_source parameter passed in the page URL, used to track what marketing source the user came from.\n * @param {string} [properties.marketing term] The utm_term parameter passed in the page URL, used to track what marketing term the user came from.\n * @param {string} [properties.page layout] Describes the layout of the page (ex. premium-section, article-with-sidebar, page-with-sidebar)\n * @param {string} properties.page name General page name or breadcrumb containing a page's section and subsections. Ex. investing:personalfinance\n * @param {string} properties.page path Part of the URL after the domain and before query paramters and URL fragments. Ex. /canada/article-this-is-an-example/\n * @param {string} [properties.page type] The type of page (ex. article, section, video, etc.)\n * @param {string} properties.page url Page URL of the page a user browsed.\n * @param {string} [properties.press release organization] The press release organization that provided a press release for a stock page.\n * @param {string} properties.referrer host The host name of the referral URL.\n * @param {string} properties.referrer url The previous page's URL, ie where the user came from before landing on the current page URL.\n * @param {string} properties.section The name of the section\n * @param {string[]} [properties.stock tickers] Array of stock tickers that appeared on an article.\n * @param {string} [properties.subsection 1] The first subsection of a page, appears after the section name in the page path (ex. markets in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 2] The second subsection of a page, appears as the third value in the page path (ex. stocks in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 3] The third subsection of a page, appears as the fourth value the page path (ex. QQC-F-T in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 4] The fourth subsection of a page, appears as the fifth value in the page path (ex. pressreleases in /investing/markets/stocks/QQC-F-T/pressreleases/)\n * @param {string} [properties.user agent string] User agent string of a device\n * @param {string} [properties.wall name] Name of the wall shown to the user (ex. google regwall, globe advisor regwall, paywall, etc.)\n * @param {*} [properties.wall reason] Sophi algorithm reason for why the user was shown a wall.\n * @param {string} [properties.wall trace id] Wall trace ID from Sophi dynamic paywall API response\n * @param {string} [properties.wall type] Type of wall shown to a user (ex. paywall-hard, regwall-hard, regwall-metered, etc.)\n * @param {string} [properties.wall visibility] Wall visibility from Sophi dynamic paywall API response\n * @param {number} [properties.wall visible paragraphs] Number of visible paragraphs after a user encounters a wall\n * @param {EventOptions} [options] Options for this track call.\n */\n contentImpressions(properties, options) {\n return this.track(new ContentImpressions(properties), options);\n }\n\n /**\n * homepage_view\n *\n * [View in Tracking Plan](https://data.amplitude.com/the-globe-and-mail/The%20Globe%20and%20Mail/events/main/latest/homepage_view)\n *\n * This event tracks when a user views the homepage.\n *\n * Owner: Lourdes Santos\n *\n * @param {Object} properties The event's properties.\n * @param {string} properties.app id A unique identifier for the application (ex. theglobeandmail-website, theglobeandmail-app, tgam:theglobeandmail:app_android)\n * @param {number} [properties.browser view height] Height of browser in pixels\n * @param {number} [properties.browser view width] Width of browser in pixels\n * @param {string} properties.canonical url Canonical URL of the page (strips all paramters in the URL)\n * @param {string} properties.environment User environment during the session (prod, dev, or stg)\n * @param {string} [properties.first marketing campaign] The first utm campaign the user encountered in their session\n * @param {string} [properties.first marketing content] The first utm content the user encountered in their session\n * @param {string} [properties.first marketing medium] The first utm medium the user encountered in their session\n * @param {string} [properties.first marketing source] The first utm source the user encountered in their session\n * @param {string} [properties.first marketing terms] The first utm_term the user encountered in their session\n * @param {string} [properties.first referrer host] The first referral host that brought a user to the site for a specific session\n * @param {string} properties.host name Site or host where content is published\n * @param {string} [properties.internal campaign] The intcmp parameter in the page URL, used to track internal campaigns.\n * @param {string[]} [properties.last article byline] The author or authors of the last article read by the user\n * @param {string} [properties.last article colour] The article colour of the last article read by the user\n * @param {string} [properties.last article credit line] Property has no description in tracking plan.\n * @param {string} [properties.last article headline] The headline of the article last read by a user\n * @param {string} [properties.last article id] The article ID of the last article read by the user\n * @param {string[]} [properties.last article keywords] The keywords of the last article read by the user\n * @param {string} [properties.last article topics] The article topics associated with the last article read by the user\n * @param {string} [properties.last content type] Type of article (ex. longread, column, etc.) last read by the user\n * @param {string} [properties.last internal campaign] The last intcmp parameter encountered in the session, used to track conversions from internal campaigns\n * @param {string} [properties.last marketing campaign] The last utm_campaign value passed in the page url that a user clicked on, used to attribute conversions to a marketing campaign\n * @param {string} [properties.last marketing content] The last utm_content value passed in the page url that a user clicked on, used to attribute conversions to specific marketing content\n * @param {string} [properties.last marketing medium] The last utm_medium value passed in the page url that a user clicked on, used to attribute conversions to specific marketing mediums\n * @param {string} [properties.last marketing source] The last utm_source value passed in the page url that a user clicked on, used to attribute conversions to specific marketing sources\n * @param {string} [properties.last marketing terms] The last utm_term value passed in the page url that a user clicked on, used to attribute conversions to a specific marketing term\n * @param {string} [properties.last subsection 1] Name of the last subsection 1 viewed by the user\n * @param {string} [properties.last subsection 2] Name of the last subsection 2 viewed by the user\n * @param {string} [properties.last subsection 3] Name of the last subsection 3 viewed by the user\n * @param {string} [properties.last subsection 4] Name of the last subsection 4 viewed by the user\n * @param {string} [properties.last wall name] Name of the latest wall encountered by the user\n * @param {string} [properties.last wall reason] The latest Sophi reason for showing the wall to the user\n * @param {string} [properties.last wall type] The latest wall type shown to a user\n * @param {string} [properties.marketing campaign] The utm_campaign parameter passed in the page URL, used to track what marketing campaign the user came from.\n * @param {string} [properties.marketing content] The utm_content parameter passed in the page URL, used to track what marketing content the user came from.\n * @param {string} [properties.marketing medium] The utm_medium parameter passed in the page URL, used to track what marketing medium the user came from.\n * @param {string} [properties.marketing source] The utm_source parameter passed in the page URL, used to track what marketing source the user came from.\n * @param {string} [properties.marketing term] The utm_term parameter passed in the page URL, used to track what marketing term the user came from.\n * @param {string} [properties.page layout] Describes the layout of the page (ex. premium-section, article-with-sidebar, page-with-sidebar)\n * @param {string} properties.page name General page name or breadcrumb containing a page's section and subsections. Ex. investing:personalfinance\n * @param {string} properties.page path Part of the URL after the domain and before query paramters and URL fragments. Ex. /canada/article-this-is-an-example/\n * @param {string} [properties.page type] The type of page (ex. article, section, video, etc.)\n * @param {string} properties.page url Page URL of the page a user browsed.\n * @param {string} [properties.press release organization] The press release organization that provided a press release for a stock page.\n * @param {string} properties.referrer host The host name of the referral URL.\n * @param {string} properties.referrer url The previous page's URL, ie where the user came from before landing on the current page URL.\n * @param {string} properties.section The name of the section\n * @param {string} [properties.subsection 1] The first subsection of a page, appears after the section name in the page path (ex. markets in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 2] The second subsection of a page, appears as the third value in the page path (ex. stocks in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 3] The third subsection of a page, appears as the fourth value the page path (ex. QQC-F-T in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 4] The fourth subsection of a page, appears as the fifth value in the page path (ex. pressreleases in /investing/markets/stocks/QQC-F-T/pressreleases/)\n * @param {string} [properties.user agent string] User agent string of a device\n * @param {EventOptions} [options] Options for this track call.\n */\n homepageView(properties, options) {\n return this.track(new HomepageView(properties), options);\n }\n\n /**\n * link_click\n *\n * [View in Tracking Plan](https://data.amplitude.com/the-globe-and-mail/The%20Globe%20and%20Mail/events/main/latest/link_click)\n *\n * User clicks on a link on the page\n *\n * Owner: Lourdes Santos\n *\n * @param {Object} properties The event's properties.\n * @param {string} properties.app id A unique identifier for the application (ex. theglobeandmail-website, theglobeandmail-app, tgam:theglobeandmail:app_android)\n * @param {string[]} [properties.article byline] Author or authors of an article\n * @param {string} [properties.article colour] Article colour or access category of an article (ex. red, yellow, green)\n * @param {number} [properties.article content size] Number of words in an article\n * @param {string} [properties.article content type] Type of article (ex. longread, column, etc.)\n * @param {string} [properties.article creditline] Creditline of an article (ex. reuters)\n * @param {string} properties.article headline Headline of an article\n * @param {string} properties.article id The distinct ID of an article\n * @param {string[]} [properties.article keywords] Keywords assigned to an article\n * @param {string} [properties.article last modified date] Modified date of an article\n * @param {string} [properties.article ownership] Source of an article (ex. staff writer, wire, etc.)\n * @param {string} [properties.article publish date] Publish date of an article in EST, ISO date format\n * @param {string[]} [properties.article tags] Story tags of an article (ex. 'folio', 'longread', etc.)\n * @param {string} [properties.article topics] Topics assigned to an article\n * @param {number} [properties.browser view height] Height of browser in pixels\n * @param {number} [properties.browser view width] Width of browser in pixels\n * @param {string} properties.canonical url Canonical URL of the page (strips all paramters in the URL)\n * @param {string} [properties.click article id] The article ID of the link clicked on by the user.\n * @param {string} [properties.click element content] This is used only to track clicks to the Subscribe with Google pop up banner.\n * @param {string} [properties.click feature] The name of the feature clicked on by the user.\n * @param {string} [properties.click label] The label on the button or link clicked on by the user.\n * @param {string} [properties.click target url] The URL destination of the link or button that was clicked on.\n * @param {string} properties.environment User environment during the session (prod, dev, or stg)\n * @param {string} [properties.first marketing campaign] The first utm campaign the user encountered in their session\n * @param {string} [properties.first marketing content] The first utm content the user encountered in their session\n * @param {string} [properties.first marketing medium] The first utm medium the user encountered in their session\n * @param {string} [properties.first marketing source] The first utm source the user encountered in their session\n * @param {string} [properties.first marketing terms] The first utm_term the user encountered in their session\n * @param {string} [properties.first referrer host] The first referral host that brought a user to the site for a specific session\n * @param {string} properties.host name Site or host where content is published\n * @param {string} [properties.internal campaign] The intcmp parameter in the page URL, used to track internal campaigns.\n * @param {boolean} [properties.is sponsored] Describes whether the content is sponsored or not\n * @param {string[]} [properties.last article byline] The author or authors of the last article read by the user\n * @param {string} [properties.last article colour] The article colour of the last article read by the user\n * @param {string} [properties.last article credit line] Property has no description in tracking plan.\n * @param {string} [properties.last article headline] The headline of the article last read by a user\n * @param {string} [properties.last article id] The article ID of the last article read by the user\n * @param {string[]} [properties.last article keywords] The keywords of the last article read by the user\n * @param {string} [properties.last article topics] The article topics associated with the last article read by the user\n * @param {string} [properties.last content type] Type of article (ex. longread, column, etc.) last read by the user\n * @param {string} [properties.last internal campaign] The last intcmp parameter encountered in the session, used to track conversions from internal campaigns\n * @param {string} [properties.last marketing campaign] The last utm_campaign value passed in the page url that a user clicked on, used to attribute conversions to a marketing campaign\n * @param {string} [properties.last marketing content] The last utm_content value passed in the page url that a user clicked on, used to attribute conversions to specific marketing content\n * @param {string} [properties.last marketing medium] The last utm_medium value passed in the page url that a user clicked on, used to attribute conversions to specific marketing mediums\n * @param {string} [properties.last marketing source] The last utm_source value passed in the page url that a user clicked on, used to attribute conversions to specific marketing sources\n * @param {string} [properties.last marketing terms] The last utm_term value passed in the page url that a user clicked on, used to attribute conversions to a specific marketing term\n * @param {string} [properties.last subsection 1] Name of the last subsection 1 viewed by the user\n * @param {string} [properties.last subsection 2] Name of the last subsection 2 viewed by the user\n * @param {string} [properties.last subsection 3] Name of the last subsection 3 viewed by the user\n * @param {string} [properties.last subsection 4] Name of the last subsection 4 viewed by the user\n * @param {string} [properties.last wall name] Name of the latest wall encountered by the user\n * @param {string} [properties.last wall reason] The latest Sophi reason for showing the wall to the user\n * @param {string} [properties.last wall type] The latest wall type shown to a user\n * @param {string} [properties.marketing campaign] The utm_campaign parameter passed in the page URL, used to track what marketing campaign the user came from.\n * @param {string} [properties.marketing content] The utm_content parameter passed in the page URL, used to track what marketing content the user came from.\n * @param {string} [properties.marketing medium] The utm_medium parameter passed in the page URL, used to track what marketing medium the user came from.\n * @param {string} [properties.marketing source] The utm_source parameter passed in the page URL, used to track what marketing source the user came from.\n * @param {string} [properties.marketing term] The utm_term parameter passed in the page URL, used to track what marketing term the user came from.\n * @param {string} [properties.page layout] Describes the layout of the page (ex. premium-section, article-with-sidebar, page-with-sidebar)\n * @param {string} properties.page name General page name or breadcrumb containing a page's section and subsections. Ex. investing:personalfinance\n * @param {string} properties.page path Part of the URL after the domain and before query paramters and URL fragments. Ex. /canada/article-this-is-an-example/\n * @param {string} [properties.page type] The type of page (ex. article, section, video, etc.)\n * @param {string} properties.page url Page URL of the page a user browsed.\n * @param {string} [properties.press release organization] The press release organization that provided a press release for a stock page.\n * @param {string} properties.referrer host The host name of the referral URL.\n * @param {string} properties.referrer url The previous page's URL, ie where the user came from before landing on the current page URL.\n * @param {string} properties.section The name of the section\n * @param {string[]} [properties.stock tickers] Array of stock tickers that appeared on an article.\n * @param {string} [properties.subsection 1] The first subsection of a page, appears after the section name in the page path (ex. markets in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 2] The second subsection of a page, appears as the third value in the page path (ex. stocks in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 3] The third subsection of a page, appears as the fourth value the page path (ex. QQC-F-T in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 4] The fourth subsection of a page, appears as the fifth value in the page path (ex. pressreleases in /investing/markets/stocks/QQC-F-T/pressreleases/)\n * @param {string} [properties.user agent string] User agent string of a device\n * @param {EventOptions} [options] Options for this track call.\n */\n linkClick(properties, options) {\n return this.track(new LinkClick(properties), options);\n }\n\n /**\n * newsletter_signup\n *\n * [View in Tracking Plan](https://data.amplitude.com/the-globe-and-mail/The%20Globe%20and%20Mail/events/main/latest/newsletter_signup)\n *\n * This event tracks when a user signs up for a newsletter\n *\n * Owner: Lourdes Santos\n *\n * @param {Object} properties The event's properties.\n * @param {string} properties.app id A unique identifier for the application (ex. theglobeandmail-website, theglobeandmail-app, tgam:theglobeandmail:app_android)\n * @param {string[]} [properties.article byline] Author or authors of an article\n * @param {string} [properties.article colour] Article colour or access category of an article (ex. red, yellow, green)\n * @param {number} [properties.article content size] Number of words in an article\n * @param {string} [properties.article content type] Type of article (ex. longread, column, etc.)\n * @param {string} [properties.article creditline] Creditline of an article (ex. reuters)\n * @param {string} properties.article headline Headline of an article\n * @param {string} properties.article id The distinct ID of an article\n * @param {string[]} [properties.article keywords] Keywords assigned to an article\n * @param {string} [properties.article last modified date] Modified date of an article\n * @param {string} [properties.article ownership] Source of an article (ex. staff writer, wire, etc.)\n * @param {string} [properties.article publish date] Publish date of an article in EST, ISO date format\n * @param {string[]} [properties.article tags] Story tags of an article (ex. 'folio', 'longread', etc.)\n * @param {string} [properties.article topics] Topics assigned to an article\n * @param {number} [properties.browser view height] Height of browser in pixels\n * @param {number} [properties.browser view width] Width of browser in pixels\n * @param {string} properties.canonical url Canonical URL of the page (strips all paramters in the URL)\n * @param {string} properties.environment User environment during the session (prod, dev, or stg)\n * @param {string} [properties.first marketing campaign] The first utm campaign the user encountered in their session\n * @param {string} [properties.first marketing content] The first utm content the user encountered in their session\n * @param {string} [properties.first marketing medium] The first utm medium the user encountered in their session\n * @param {string} [properties.first marketing source] The first utm source the user encountered in their session\n * @param {string} [properties.first marketing terms] The first utm_term the user encountered in their session\n * @param {string} [properties.first referrer host] The first referral host that brought a user to the site for a specific session\n * @param {string} properties.host name Site or host where content is published\n * @param {string} [properties.internal campaign] The intcmp parameter in the page URL, used to track internal campaigns.\n * @param {boolean} [properties.is sponsored] Describes whether the content is sponsored or not\n * @param {string[]} [properties.last article byline] The author or authors of the last article read by the user\n * @param {string} [properties.last article colour] The article colour of the last article read by the user\n * @param {string} [properties.last article credit line] Property has no description in tracking plan.\n * @param {string} [properties.last article headline] The headline of the article last read by a user\n * @param {string} [properties.last article id] The article ID of the last article read by the user\n * @param {string[]} [properties.last article keywords] The keywords of the last article read by the user\n * @param {string[]} [properties.last article tags] The article tag of the last article read by a user.\n * @param {string} [properties.last article topics] The article topics associated with the last article read by the user\n * @param {string} [properties.last content type] Type of article (ex. longread, column, etc.) last read by the user\n * @param {string} [properties.last internal campaign] The last intcmp parameter encountered in the session, used to track conversions from internal campaigns\n * @param {string} [properties.last marketing campaign] The last utm_campaign value passed in the page url that a user clicked on, used to attribute conversions to a marketing campaign\n * @param {string} [properties.last marketing content] The last utm_content value passed in the page url that a user clicked on, used to attribute conversions to specific marketing content\n * @param {string} [properties.last marketing medium] The last utm_medium value passed in the page url that a user clicked on, used to attribute conversions to specific marketing mediums\n * @param {string} [properties.last marketing source] The last utm_source value passed in the page url that a user clicked on, used to attribute conversions to specific marketing sources\n * @param {string} [properties.last marketing terms] The last utm_term value passed in the page url that a user clicked on, used to attribute conversions to a specific marketing term\n * @param {string} [properties.last subsection 1] Name of the last subsection 1 viewed by the user\n * @param {string} [properties.last subsection 2] Name of the last subsection 2 viewed by the user\n * @param {string} [properties.last subsection 3] Name of the last subsection 3 viewed by the user\n * @param {string} [properties.last subsection 4] Name of the last subsection 4 viewed by the user\n * @param {string} [properties.last wall name] Name of the latest wall encountered by the user\n * @param {string} [properties.last wall reason] The latest Sophi reason for showing the wall to the user\n * @param {string} [properties.last wall type] The latest wall type shown to a user\n * @param {string} [properties.marketing campaign] The utm_campaign parameter passed in the page URL, used to track what marketing campaign the user came from.\n * @param {string} [properties.marketing content] The utm_content parameter passed in the page URL, used to track what marketing content the user came from.\n * @param {string} [properties.marketing medium] The utm_medium parameter passed in the page URL, used to track what marketing medium the user came from.\n * @param {string} [properties.marketing source] The utm_source parameter passed in the page URL, used to track what marketing source the user came from.\n * @param {string} [properties.marketing term] The utm_term parameter passed in the page URL, used to track what marketing term the user came from.\n * @param {string} [properties.newsletter frequency] The frequency the newsletter the user subscribed to is sent (ex. sent saturdays, sent weekday mornings, etc.)\n * @param {string} properties.newsletter name Name of newsletter the user subscribed or unsubscribed to\n * @param {string} [properties.page layout] Describes the layout of the page (ex. premium-section, article-with-sidebar, page-with-sidebar)\n * @param {string} properties.page name General page name or breadcrumb containing a page's section and subsections. Ex. investing:personalfinance\n * @param {string} properties.page path Part of the URL after the domain and before query paramters and URL fragments. Ex. /canada/article-this-is-an-example/\n * @param {string} [properties.page type] The type of page (ex. article, section, video, etc.)\n * @param {string} properties.page url Page URL of the page a user browsed.\n * @param {string} [properties.press release organization] The press release organization that provided a press release for a stock page.\n * @param {string} properties.referrer host The host name of the referral URL.\n * @param {string} properties.referrer url The previous page's URL, ie where the user came from before landing on the current page URL.\n * @param {string} properties.section The name of the section\n * @param {string[]} [properties.stock tickers] Array of stock tickers that appeared on an article.\n * @param {string} [properties.subsection 1] The first subsection of a page, appears after the section name in the page path (ex. markets in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 2] The second subsection of a page, appears as the third value in the page path (ex. stocks in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 3] The third subsection of a page, appears as the fourth value the page path (ex. QQC-F-T in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 4] The fourth subsection of a page, appears as the fifth value in the page path (ex. pressreleases in /investing/markets/stocks/QQC-F-T/pressreleases/)\n * @param {string} [properties.user agent string] User agent string of a device\n * @param {EventOptions} [options] Options for this track call.\n */\n newsletterSignup(properties, options) {\n return this.track(new NewsletterSignup(properties), options);\n }\n\n /**\n * newsletter_unsubscribe\n *\n * [View in Tracking Plan](https://data.amplitude.com/the-globe-and-mail/The%20Globe%20and%20Mail/events/main/latest/newsletter_unsubscribe)\n *\n * This event tracks when a user unsubscribes from a newsletter\n *\n * Owner: Lourdes Santos\n *\n * @param {Object} properties The event's properties.\n * @param {string} properties.app id A unique identifier for the application (ex. theglobeandmail-website, theglobeandmail-app, tgam:theglobeandmail:app_android)\n * @param {number} [properties.browser view height] Height of browser in pixels\n * @param {number} [properties.browser view width] Width of browser in pixels\n * @param {string} properties.canonical url Canonical URL of the page (strips all paramters in the URL)\n * @param {string} properties.environment User environment during the session (prod, dev, or stg)\n * @param {string} [properties.first marketing campaign] The first utm campaign the user encountered in their session\n * @param {string} [properties.first marketing content] The first utm content the user encountered in their session\n * @param {string} [properties.first marketing medium] The first utm medium the user encountered in their session\n * @param {string} [properties.first marketing source] The first utm source the user encountered in their session\n * @param {string} [properties.first marketing terms] The first utm_term the user encountered in their session\n * @param {string} [properties.first referrer host] The first referral host that brought a user to the site for a specific session\n * @param {string} properties.host name Site or host where content is published\n * @param {string} [properties.internal campaign] The intcmp parameter in the page URL, used to track internal campaigns.\n * @param {string[]} [properties.last article byline] The author or authors of the last article read by the user\n * @param {string} [properties.last article colour] The article colour of the last article read by the user\n * @param {string} [properties.last article credit line] Property has no description in tracking plan.\n * @param {string} [properties.last article headline] The headline of the article last read by a user\n * @param {string} [properties.last article id] The article ID of the last article read by the user\n * @param {string[]} [properties.last article keywords] The keywords of the last article read by the user\n * @param {string[]} [properties.last article tags] The article tag of the last article read by a user.\n * @param {string} [properties.last article topics] The article topics associated with the last article read by the user\n * @param {string} [properties.last content type] Type of article (ex. longread, column, etc.) last read by the user\n * @param {string} [properties.last internal campaign] The last intcmp parameter encountered in the session, used to track conversions from internal campaigns\n * @param {string} [properties.last marketing campaign] The last utm_campaign value passed in the page url that a user clicked on, used to attribute conversions to a marketing campaign\n * @param {string} [properties.last marketing content] The last utm_content value passed in the page url that a user clicked on, used to attribute conversions to specific marketing content\n * @param {string} [properties.last marketing medium] The last utm_medium value passed in the page url that a user clicked on, used to attribute conversions to specific marketing mediums\n * @param {string} [properties.last marketing source] The last utm_source value passed in the page url that a user clicked on, used to attribute conversions to specific marketing sources\n * @param {string} [properties.last marketing terms] The last utm_term value passed in the page url that a user clicked on, used to attribute conversions to a specific marketing term\n * @param {string} [properties.last subsection 1] Name of the last subsection 1 viewed by the user\n * @param {string} [properties.last subsection 2] Name of the last subsection 2 viewed by the user\n * @param {string} [properties.last subsection 3] Name of the last subsection 3 viewed by the user\n * @param {string} [properties.last subsection 4] Name of the last subsection 4 viewed by the user\n * @param {string} [properties.last wall name] Name of the latest wall encountered by the user\n * @param {string} [properties.last wall reason] The latest Sophi reason for showing the wall to the user\n * @param {string} [properties.last wall type] The latest wall type shown to a user\n * @param {string} [properties.marketing campaign] The utm_campaign parameter passed in the page URL, used to track what marketing campaign the user came from.\n * @param {string} [properties.marketing content] The utm_content parameter passed in the page URL, used to track what marketing content the user came from.\n * @param {string} [properties.marketing medium] The utm_medium parameter passed in the page URL, used to track what marketing medium the user came from.\n * @param {string} [properties.marketing source] The utm_source parameter passed in the page URL, used to track what marketing source the user came from.\n * @param {string} [properties.marketing term] The utm_term parameter passed in the page URL, used to track what marketing term the user came from.\n * @param {string} [properties.newsletter frequency] The frequency the newsletter the user subscribed to is sent (ex. sent saturdays, sent weekday mornings, etc.)\n * @param {string} properties.newsletter name Name of newsletter the user subscribed or unsubscribed to\n * @param {string} [properties.page layout] Describes the layout of the page (ex. premium-section, article-with-sidebar, page-with-sidebar)\n * @param {string} properties.page name General page name or breadcrumb containing a page's section and subsections. Ex. investing:personalfinance\n * @param {string} properties.page path Part of the URL after the domain and before query paramters and URL fragments. Ex. /canada/article-this-is-an-example/\n * @param {string} [properties.page type] The type of page (ex. article, section, video, etc.)\n * @param {string} properties.page url Page URL of the page a user browsed.\n * @param {string} [properties.press release organization] The press release organization that provided a press release for a stock page.\n * @param {string} properties.referrer host The host name of the referral URL.\n * @param {string} properties.referrer url The previous page's URL, ie where the user came from before landing on the current page URL.\n * @param {string} properties.section The name of the section\n * @param {string} [properties.subsection 1] The first subsection of a page, appears after the section name in the page path (ex. markets in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 2] The second subsection of a page, appears as the third value in the page path (ex. stocks in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 3] The third subsection of a page, appears as the fourth value the page path (ex. QQC-F-T in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 4] The fourth subsection of a page, appears as the fifth value in the page path (ex. pressreleases in /investing/markets/stocks/QQC-F-T/pressreleases/)\n * @param {string} [properties.user agent string] User agent string of a device\n * @param {EventOptions} [options] Options for this track call.\n */\n newsletterUnsubscribe(properties, options) {\n return this.track(new NewsletterUnsubscribe(properties), options);\n }\n\n /**\n * paywall_hit\n *\n * [View in Tracking Plan](https://data.amplitude.com/the-globe-and-mail/The%20Globe%20and%20Mail/events/main/latest/paywall_hit)\n *\n * This event is triggered when a user encounters the paywall, indicating that they have reached the limit of free content and are prompted to subscribe or make a purchase to access further content\n *\n * Owner: Lourdes Santos\n *\n * @param {Object} properties The event's properties.\n * @param {string} properties.app id A unique identifier for the application (ex. theglobeandmail-website, theglobeandmail-app, tgam:theglobeandmail:app_android)\n * @param {string[]} [properties.article byline] Author or authors of an article\n * @param {string} [properties.article colour] Article colour or access category of an article (ex. red, yellow, green)\n * @param {number} [properties.article content size] Number of words in an article\n * @param {string} [properties.article content type] Type of article (ex. longread, column, etc.)\n * @param {string} [properties.article creditline] Creditline of an article (ex. reuters)\n * @param {string} properties.article headline Headline of an article\n * @param {string} properties.article id The distinct ID of an article\n * @param {string[]} [properties.article keywords] Keywords assigned to an article\n * @param {string} [properties.article last modified date] Modified date of an article\n * @param {string} [properties.article ownership] Source of an article (ex. staff writer, wire, etc.)\n * @param {string} [properties.article publish date] Publish date of an article in EST, ISO date format\n * @param {string[]} [properties.article tags] Story tags of an article (ex. 'folio', 'longread', etc.)\n * @param {string} [properties.article topics] Topics assigned to an article\n * @param {number} [properties.browser view height] Height of browser in pixels\n * @param {number} [properties.browser view width] Width of browser in pixels\n * @param {string} properties.canonical url Canonical URL of the page (strips all paramters in the URL)\n * @param {string} properties.environment User environment during the session (prod, dev, or stg)\n * @param {string} [properties.first marketing campaign] The first utm campaign the user encountered in their session\n * @param {string} [properties.first marketing content] The first utm content the user encountered in their session\n * @param {string} [properties.first marketing medium] The first utm medium the user encountered in their session\n * @param {string} [properties.first marketing source] The first utm source the user encountered in their session\n * @param {string} [properties.first marketing terms] The first utm_term the user encountered in their session\n * @param {string} [properties.first referrer host] The first referral host that brought a user to the site for a specific session\n * @param {string} properties.host name Site or host where content is published\n * @param {string} [properties.internal campaign] The intcmp parameter in the page URL, used to track internal campaigns.\n * @param {boolean} [properties.is sponsored] Describes whether the content is sponsored or not\n * @param {string[]} [properties.last article byline] The author or authors of the last article read by the user\n * @param {string} [properties.last article colour] The article colour of the last article read by the user\n * @param {string} [properties.last article credit line] Property has no description in tracking plan.\n * @param {string} [properties.last article headline] The headline of the article last read by a user\n * @param {string} [properties.last article id] The article ID of the last article read by the user\n * @param {string[]} [properties.last article keywords] The keywords of the last article read by the user\n * @param {string} [properties.last article topics] The article topics associated with the last article read by the user\n * @param {string} [properties.last content type] Type of article (ex. longread, column, etc.) last read by the user\n * @param {string} [properties.last internal campaign] The last intcmp parameter encountered in the session, used to track conversions from internal campaigns\n * @param {string} [properties.last marketing campaign] The last utm_campaign value passed in the page url that a user clicked on, used to attribute conversions to a marketing campaign\n * @param {string} [properties.last marketing content] The last utm_content value passed in the page url that a user clicked on, used to attribute conversions to specific marketing content\n * @param {string} [properties.last marketing medium] The last utm_medium value passed in the page url that a user clicked on, used to attribute conversions to specific marketing mediums\n * @param {string} [properties.last marketing source] The last utm_source value passed in the page url that a user clicked on, used to attribute conversions to specific marketing sources\n * @param {string} [properties.last marketing terms] The last utm_term value passed in the page url that a user clicked on, used to attribute conversions to a specific marketing term\n * @param {string} [properties.last subsection 1] Name of the last subsection 1 viewed by the user\n * @param {string} [properties.last subsection 2] Name of the last subsection 2 viewed by the user\n * @param {string} [properties.last subsection 3] Name of the last subsection 3 viewed by the user\n * @param {string} [properties.last subsection 4] Name of the last subsection 4 viewed by the user\n * @param {string} [properties.last wall name] Name of the latest wall encountered by the user\n * @param {string} [properties.last wall reason] The latest Sophi reason for showing the wall to the user\n * @param {string} [properties.last wall type] The latest wall type shown to a user\n * @param {string} [properties.marketing campaign] The utm_campaign parameter passed in the page URL, used to track what marketing campaign the user came from.\n * @param {string} [properties.marketing content] The utm_content parameter passed in the page URL, used to track what marketing content the user came from.\n * @param {string} [properties.marketing medium] The utm_medium parameter passed in the page URL, used to track what marketing medium the user came from.\n * @param {string} [properties.marketing source] The utm_source parameter passed in the page URL, used to track what marketing source the user came from.\n * @param {string} [properties.marketing term] The utm_term parameter passed in the page URL, used to track what marketing term the user came from.\n * @param {string} [properties.page layout] Describes the layout of the page (ex. premium-section, article-with-sidebar, page-with-sidebar)\n * @param {string} properties.page name General page name or breadcrumb containing a page's section and subsections. Ex. investing:personalfinance\n * @param {string} properties.page path Part of the URL after the domain and before query paramters and URL fragments. Ex. /canada/article-this-is-an-example/\n * @param {string} [properties.page type] The type of page (ex. article, section, video, etc.)\n * @param {string} properties.page url Page URL of the page a user browsed.\n * @param {string} [properties.press release organization] The press release organization that provided a press release for a stock page.\n * @param {string} properties.referrer host The host name of the referral URL.\n * @param {string} properties.referrer url The previous page's URL, ie where the user came from before landing on the current page URL.\n * @param {string} properties.section The name of the section\n * @param {string[]} [properties.stock tickers] Array of stock tickers that appeared on an article.\n * @param {string} [properties.subsection 1] The first subsection of a page, appears after the section name in the page path (ex. markets in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 2] The second subsection of a page, appears as the third value in the page path (ex. stocks in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 3] The third subsection of a page, appears as the fourth value the page path (ex. QQC-F-T in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 4] The fourth subsection of a page, appears as the fifth value in the page path (ex. pressreleases in /investing/markets/stocks/QQC-F-T/pressreleases/)\n * @param {string} [properties.user agent string] User agent string of a device\n * @param {string} properties.wall name Name of the wall shown to the user (ex. google regwall, globe advisor regwall, paywall, etc.)\n * @param {*} [properties.wall reason] Sophi algorithm reason for why the user was shown a wall.\n * @param {string} [properties.wall trace id] Wall trace ID from Sophi dynamic paywall API response\n * @param {string} [properties.wall type] Type of wall shown to a user (ex. paywall-hard, regwall-hard, regwall-metered, etc.)\n * @param {string} [properties.wall visibility] Wall visibility from Sophi dynamic paywall API response\n * @param {number} [properties.wall visible paragraphs] Number of visible paragraphs after a user encounters a wall\n * @param {string} [properties.wall visit referrer] Page referrer for a paywall event, such as search, internal, direct, etc. (from paywall SDK)\n * @param {EventOptions} [options] Options for this track call.\n */\n paywallHit(properties, options) {\n return this.track(new PaywallHit(properties), options);\n }\n\n /**\n * regwall_hit\n *\n * [View in Tracking Plan](https://data.amplitude.com/the-globe-and-mail/The%20Globe%20and%20Mail/events/main/latest/regwall_hit)\n *\n * This event is triggered when a user encounters a registration wall\n *\n * Owner: Lourdes Santos\n *\n * @param {Object} properties The event's properties.\n * @param {string} properties.app id A unique identifier for the application (ex. theglobeandmail-website, theglobeandmail-app, tgam:theglobeandmail:app_android)\n * @param {string[]} [properties.article byline] Author or authors of an article\n * @param {string} [properties.article colour] Article colour or access category of an article (ex. red, yellow, green)\n * @param {number} [properties.article content size] Number of words in an article\n * @param {string} [properties.article content type] Type of article (ex. longread, column, etc.)\n * @param {string} [properties.article creditline] Creditline of an article (ex. reuters)\n * @param {string} properties.article headline Headline of an article\n * @param {string} properties.article id The distinct ID of an article\n * @param {string[]} [properties.article keywords] Keywords assigned to an article\n * @param {string} [properties.article last modified date] Modified date of an article\n * @param {string} [properties.article ownership] Source of an article (ex. staff writer, wire, etc.)\n * @param {string} [properties.article publish date] Publish date of an article in EST, ISO date format\n * @param {string[]} [properties.article tags] Story tags of an article (ex. 'folio', 'longread', etc.)\n * @param {string} [properties.article topics] Topics assigned to an article\n * @param {number} [properties.browser view height] Height of browser in pixels\n * @param {number} [properties.browser view width] Width of browser in pixels\n * @param {string} properties.canonical url Canonical URL of the page (strips all paramters in the URL)\n * @param {string} properties.environment User environment during the session (prod, dev, or stg)\n * @param {string} [properties.first marketing campaign] The first utm campaign the user encountered in their session\n * @param {string} [properties.first marketing content] The first utm content the user encountered in their session\n * @param {string} [properties.first marketing medium] The first utm medium the user encountered in their session\n * @param {string} [properties.first marketing source] The first utm source the user encountered in their session\n * @param {string} [properties.first marketing terms] The first utm_term the user encountered in their session\n * @param {string} [properties.first referrer host] The first referral host that brought a user to the site for a specific session\n * @param {string} properties.host name Site or host where content is published\n * @param {string} [properties.internal campaign] The intcmp parameter in the page URL, used to track internal campaigns.\n * @param {boolean} [properties.is sponsored] Describes whether the content is sponsored or not\n * @param {string[]} [properties.last article byline] The author or authors of the last article read by the user\n * @param {string} [properties.last article colour] The article colour of the last article read by the user\n * @param {string} [properties.last article credit line] Property has no description in tracking plan.\n * @param {string} [properties.last article headline] The headline of the article last read by a user\n * @param {string} [properties.last article id] The article ID of the last article read by the user\n * @param {string[]} [properties.last article keywords] The keywords of the last article read by the user\n * @param {string} [properties.last article topics] The article topics associated with the last article read by the user\n * @param {string} [properties.last content type] Type of article (ex. longread, column, etc.) last read by the user\n * @param {string} [properties.last internal campaign] The last intcmp parameter encountered in the session, used to track conversions from internal campaigns\n * @param {string} [properties.last marketing campaign] The last utm_campaign value passed in the page url that a user clicked on, used to attribute conversions to a marketing campaign\n * @param {string} [properties.last marketing content] The last utm_content value passed in the page url that a user clicked on, used to attribute conversions to specific marketing content\n * @param {string} [properties.last marketing medium] The last utm_medium value passed in the page url that a user clicked on, used to attribute conversions to specific marketing mediums\n * @param {string} [properties.last marketing source] The last utm_source value passed in the page url that a user clicked on, used to attribute conversions to specific marketing sources\n * @param {string} [properties.last marketing terms] The last utm_term value passed in the page url that a user clicked on, used to attribute conversions to a specific marketing term\n * @param {string} [properties.last subsection 1] Name of the last subsection 1 viewed by the user\n * @param {string} [properties.last subsection 2] Name of the last subsection 2 viewed by the user\n * @param {string} [properties.last subsection 3] Name of the last subsection 3 viewed by the user\n * @param {string} [properties.last subsection 4] Name of the last subsection 4 viewed by the user\n * @param {string} [properties.last wall name] Name of the latest wall encountered by the user\n * @param {string} [properties.last wall reason] The latest Sophi reason for showing the wall to the user\n * @param {string} [properties.last wall type] The latest wall type shown to a user\n * @param {string} [properties.marketing campaign] The utm_campaign parameter passed in the page URL, used to track what marketing campaign the user came from.\n * @param {string} [properties.marketing content] The utm_content parameter passed in the page URL, used to track what marketing content the user came from.\n * @param {string} [properties.marketing medium] The utm_medium parameter passed in the page URL, used to track what marketing medium the user came from.\n * @param {string} [properties.marketing source] The utm_source parameter passed in the page URL, used to track what marketing source the user came from.\n * @param {string} [properties.marketing term] The utm_term parameter passed in the page URL, used to track what marketing term the user came from.\n * @param {string} [properties.page layout] Describes the layout of the page (ex. premium-section, article-with-sidebar, page-with-sidebar)\n * @param {string} properties.page name General page name or breadcrumb containing a page's section and subsections. Ex. investing:personalfinance\n * @param {string} properties.page path Part of the URL after the domain and before query paramters and URL fragments. Ex. /canada/article-this-is-an-example/\n * @param {string} [properties.page type] The type of page (ex. article, section, video, etc.)\n * @param {string} properties.page url Page URL of the page a user browsed.\n * @param {string} [properties.press release organization] The press release organization that provided a press release for a stock page.\n * @param {string} properties.referrer host The host name of the referral URL.\n * @param {string} properties.referrer url The previous page's URL, ie where the user came from before landing on the current page URL.\n * @param {string} properties.section The name of the section\n * @param {string[]} [properties.stock tickers] Array of stock tickers that appeared on an article.\n * @param {string} [properties.subsection 1] The first subsection of a page, appears after the section name in the page path (ex. markets in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 2] The second subsection of a page, appears as the third value in the page path (ex. stocks in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 3] The third subsection of a page, appears as the fourth value the page path (ex. QQC-F-T in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 4] The fourth subsection of a page, appears as the fifth value in the page path (ex. pressreleases in /investing/markets/stocks/QQC-F-T/pressreleases/)\n * @param {string} [properties.user agent string] User agent string of a device\n * @param {string} properties.wall name Name of the wall shown to the user (ex. google regwall, globe advisor regwall, paywall, etc.)\n * @param {*} [properties.wall reason] Sophi algorithm reason for why the user was shown a wall.\n * @param {string} [properties.wall trace id] Wall trace ID from Sophi dynamic paywall API response\n * @param {string} [properties.wall type] Type of wall shown to a user (ex. paywall-hard, regwall-hard, regwall-metered, etc.)\n * @param {string} [properties.wall visibility] Wall visibility from Sophi dynamic paywall API response\n * @param {number} [properties.wall visible paragraphs] Number of visible paragraphs after a user encounters a wall\n * @param {string} [properties.wall visit referrer] Page referrer for a paywall event, such as search, internal, direct, etc. (from paywall SDK)\n * @param {EventOptions} [options] Options for this track call.\n */\n regwallHit(properties, options) {\n return this.track(new RegwallHit(properties), options);\n }\n\n /**\n * section_view\n *\n * [View in Tracking Plan](https://data.amplitude.com/the-globe-and-mail/The%20Globe%20and%20Mail/events/main/latest/section_view)\n *\n * This event tracks when a user views a section page (and any subsection page), excluding the homepage. Article views are tracked separately.\n *\n * Owner: Lourdes Santos\n *\n * @param {Object} properties The event's properties.\n * @param {string} properties.app id A unique identifier for the application (ex. theglobeandmail-website, theglobeandmail-app, tgam:theglobeandmail:app_android)\n * @param {number} [properties.browser view height] Height of browser in pixels\n * @param {number} [properties.browser view width] Width of browser in pixels\n * @param {string} properties.canonical url Canonical URL of the page (strips all paramters in the URL)\n * @param {string} properties.environment User environment during the session (prod, dev, or stg)\n * @param {string} [properties.first marketing campaign] The first utm campaign the user encountered in their session\n * @param {string} [properties.first marketing content] The first utm content the user encountered in their session\n * @param {string} [properties.first marketing medium] The first utm medium the user encountered in their session\n * @param {string} [properties.first marketing source] The first utm source the user encountered in their session\n * @param {string} [properties.first marketing terms] The first utm_term the user encountered in their session\n * @param {string} [properties.first referrer host] The first referral host that brought a user to the site for a specific session\n * @param {string} properties.host name Site or host where content is published\n * @param {string} [properties.internal campaign] The intcmp parameter in the page URL, used to track internal campaigns.\n * @param {string[]} [properties.last article byline] The author or authors of the last article read by the user\n * @param {string} [properties.last article colour] The article colour of the last article read by the user\n * @param {string} [properties.last article credit line] Property has no description in tracking plan.\n * @param {string} [properties.last article headline] The headline of the article last read by a user\n * @param {string} [properties.last article id] The article ID of the last article read by the user\n * @param {string[]} [properties.last article keywords] The keywords of the last article read by the user\n * @param {string} [properties.last article topics] The article topics associated with the last article read by the user\n * @param {string} [properties.last content type] Type of article (ex. longread, column, etc.) last read by the user\n * @param {string} [properties.last internal campaign] The last intcmp parameter encountered in the session, used to track conversions from internal campaigns\n * @param {string} [properties.last marketing campaign] The last utm_campaign value passed in the page url that a user clicked on, used to attribute conversions to a marketing campaign\n * @param {string} [properties.last marketing content] The last utm_content value passed in the page url that a user clicked on, used to attribute conversions to specific marketing content\n * @param {string} [properties.last marketing medium] The last utm_medium value passed in the page url that a user clicked on, used to attribute conversions to specific marketing mediums\n * @param {string} [properties.last marketing source] The last utm_source value passed in the page url that a user clicked on, used to attribute conversions to specific marketing sources\n * @param {string} [properties.last marketing terms] The last utm_term value passed in the page url that a user clicked on, used to attribute conversions to a specific marketing term\n * @param {string} [properties.last subsection 1] Name of the last subsection 1 viewed by the user\n * @param {string} [properties.last subsection 2] Name of the last subsection 2 viewed by the user\n * @param {string} [properties.last subsection 3] Name of the last subsection 3 viewed by the user\n * @param {string} [properties.last subsection 4] Name of the last subsection 4 viewed by the user\n * @param {string} [properties.last wall name] Name of the latest wall encountered by the user\n * @param {string} [properties.last wall reason] The latest Sophi reason for showing the wall to the user\n * @param {string} [properties.last wall type] The latest wall type shown to a user\n * @param {string} [properties.marketing campaign] The utm_campaign parameter passed in the page URL, used to track what marketing campaign the user came from.\n * @param {string} [properties.marketing content] The utm_content parameter passed in the page URL, used to track what marketing content the user came from.\n * @param {string} [properties.marketing medium] The utm_medium parameter passed in the page URL, used to track what marketing medium the user came from.\n * @param {string} [properties.marketing source] The utm_source parameter passed in the page URL, used to track what marketing source the user came from.\n * @param {string} [properties.marketing term] The utm_term parameter passed in the page URL, used to track what marketing term the user came from.\n * @param {string} [properties.page layout] Describes the layout of the page (ex. premium-section, article-with-sidebar, page-with-sidebar)\n * @param {string} properties.page name General page name or breadcrumb containing a page's section and subsections. Ex. investing:personalfinance\n * @param {string} properties.page path Part of the URL after the domain and before query paramters and URL fragments. Ex. /canada/article-this-is-an-example/\n * @param {string} [properties.page type] The type of page (ex. article, section, video, etc.)\n * @param {string} properties.page url Page URL of the page a user browsed.\n * @param {string} [properties.press release organization] The press release organization that provided a press release for a stock page.\n * @param {string} properties.referrer host The host name of the referral URL.\n * @param {string} properties.referrer url The previous page's URL, ie where the user came from before landing on the current page URL.\n * @param {string} properties.section The name of the section\n * @param {string} [properties.subscription campaign code] Subscription offer (ex. EVERGREEN6, NYT21). Note that this is present on all pages in the subscription funnel, including success pages.\n * @param {string} [properties.subsection 1] The first subsection of a page, appears after the section name in the page path (ex. markets in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 2] The second subsection of a page, appears as the third value in the page path (ex. stocks in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 3] The third subsection of a page, appears as the fourth value the page path (ex. QQC-F-T in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 4] The fourth subsection of a page, appears as the fifth value in the page path (ex. pressreleases in /investing/markets/stocks/QQC-F-T/pressreleases/)\n * @param {string} [properties.user agent string] User agent string of a device\n * @param {EventOptions} [options] Options for this track call.\n */\n sectionView(properties, options) {\n return this.track(new SectionView(properties), options);\n }\n\n /**\n * site_search\n *\n * [View in Tracking Plan](https://data.amplitude.com/the-globe-and-mail/The%20Globe%20and%20Mail/events/main/latest/site_search)\n *\n * This event tracks when a user performs a search on the website or app\n *\n * Owner: Lourdes Santos\n *\n * @param {Object} properties The event's properties.\n * @param {string} properties.app id A unique identifier for the application (ex. theglobeandmail-website, theglobeandmail-app, tgam:theglobeandmail:app_android)\n * @param {number} [properties.browser view height] Height of browser in pixels\n * @param {number} [properties.browser view width] Width of browser in pixels\n * @param {string} properties.canonical url Canonical URL of the page (strips all paramters in the URL)\n * @param {string} properties.environment User environment during the session (prod, dev, or stg)\n * @param {string} [properties.first marketing campaign] The first utm campaign the user encountered in their session\n * @param {string} [properties.first marketing content] The first utm content the user encountered in their session\n * @param {string} [properties.first marketing medium] The first utm medium the user encountered in their session\n * @param {string} [properties.first marketing source] The first utm source the user encountered in their session\n * @param {string} [properties.first marketing terms] The first utm_term the user encountered in their session\n * @param {string} [properties.first referrer host] The first referral host that brought a user to the site for a specific session\n * @param {string} properties.host name Site or host where content is published\n * @param {string} [properties.internal campaign] The intcmp parameter in the page URL, used to track internal campaigns.\n * @param {string} [properties.last internal campaign] The last intcmp parameter encountered in the session, used to track conversions from internal campaigns\n * @param {string} [properties.last marketing campaign] The last utm_campaign value passed in the page url that a user clicked on, used to attribute conversions to a marketing campaign\n * @param {string} [properties.last marketing content] The last utm_content value passed in the page url that a user clicked on, used to attribute conversions to specific marketing content\n * @param {string} [properties.last marketing medium] The last utm_medium value passed in the page url that a user clicked on, used to attribute conversions to specific marketing mediums\n * @param {string} [properties.last marketing source] The last utm_source value passed in the page url that a user clicked on, used to attribute conversions to specific marketing sources\n * @param {string} [properties.last marketing terms] The last utm_term value passed in the page url that a user clicked on, used to attribute conversions to a specific marketing term\n * @param {string} [properties.marketing campaign] The utm_campaign parameter passed in the page URL, used to track what marketing campaign the user came from.\n * @param {string} [properties.marketing content] The utm_content parameter passed in the page URL, used to track what marketing content the user came from.\n * @param {string} [properties.marketing medium] The utm_medium parameter passed in the page URL, used to track what marketing medium the user came from.\n * @param {string} [properties.marketing source] The utm_source parameter passed in the page URL, used to track what marketing source the user came from.\n * @param {string} [properties.marketing term] The utm_term parameter passed in the page URL, used to track what marketing term the user came from.\n * @param {string} [properties.page layout] Describes the layout of the page (ex. premium-section, article-with-sidebar, page-with-sidebar)\n * @param {string} properties.page name General page name or breadcrumb containing a page's section and subsections. Ex. investing:personalfinance\n * @param {string} properties.page path Part of the URL after the domain and before query paramters and URL fragments. Ex. /canada/article-this-is-an-example/\n * @param {string} [properties.page type] The type of page (ex. article, section, video, etc.)\n * @param {string} properties.page url Page URL of the page a user browsed.\n * @param {string} [properties.press release organization] The press release organization that provided a press release for a stock page.\n * @param {string} properties.referrer host The host name of the referral URL.\n * @param {string} properties.referrer url The previous page's URL, ie where the user came from before landing on the current page URL.\n * @param {string} properties.section The name of the section\n * @param {string[]} [properties.site search filters] Values of the filters applied on the advanced search on the website. This is not available for app.\n * @param {number} [properties.site search results] Number of search page results returned by the search bar\n * @param {string[]} [properties.site search terms] Array of search terms used by a user from the search bar\n * @param {string} [properties.subsection 1] The first subsection of a page, appears after the section name in the page path (ex. markets in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 2] The second subsection of a page, appears as the third value in the page path (ex. stocks in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 3] The third subsection of a page, appears as the fourth value the page path (ex. QQC-F-T in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 4] The fourth subsection of a page, appears as the fifth value in the page path (ex. pressreleases in /investing/markets/stocks/QQC-F-T/pressreleases/)\n * @param {string} [properties.user agent string] User agent string of a device\n * @param {EventOptions} [options] Options for this track call.\n */\n siteSearch(properties, options) {\n return this.track(new SiteSearch(properties), options);\n }\n\n /**\n * video_complete\n *\n * [View in Tracking Plan](https://data.amplitude.com/the-globe-and-mail/The%20Globe%20and%20Mail/events/main/latest/video_complete)\n *\n * This event tracks when a user completes watching a video\n *\n * Owner: Lourdes Santos\n *\n * @param {Object} properties The event's properties.\n * @param {string} properties.app id A unique identifier for the application (ex. theglobeandmail-website, theglobeandmail-app, tgam:theglobeandmail:app_android)\n * @param {string[]} [properties.article byline] Author or authors of an article\n * @param {string} [properties.article colour] Article colour or access category of an article (ex. red, yellow, green)\n * @param {number} [properties.article content size] Number of words in an article\n * @param {string} [properties.article content type] Type of article (ex. longread, column, etc.)\n * @param {string} [properties.article creditline] Creditline of an article (ex. reuters)\n * @param {string} properties.article headline Headline of an article\n * @param {string} properties.article id The distinct ID of an article\n * @param {string[]} [properties.article keywords] Keywords assigned to an article\n * @param {string} [properties.article last modified date] Modified date of an article\n * @param {string} [properties.article ownership] Source of an article (ex. staff writer, wire, etc.)\n * @param {string} [properties.article publish date] Publish date of an article in EST, ISO date format\n * @param {string[]} [properties.article tags] Story tags of an article (ex. 'folio', 'longread', etc.)\n * @param {string} [properties.article topics] Topics assigned to an article\n * @param {number} [properties.browser view height] Height of browser in pixels\n * @param {number} [properties.browser view width] Width of browser in pixels\n * @param {string} properties.canonical url Canonical URL of the page (strips all paramters in the URL)\n * @param {string} properties.environment User environment during the session (prod, dev, or stg)\n * @param {string} [properties.first marketing campaign] The first utm campaign the user encountered in their session\n * @param {string} [properties.first marketing content] The first utm content the user encountered in their session\n * @param {string} [properties.first marketing medium] The first utm medium the user encountered in their session\n * @param {string} [properties.first marketing source] The first utm source the user encountered in their session\n * @param {string} [properties.first marketing terms] The first utm_term the user encountered in their session\n * @param {string} [properties.first referrer host] The first referral host that brought a user to the site for a specific session\n * @param {string} properties.host name Site or host where content is published\n * @param {string} [properties.internal campaign] The intcmp parameter in the page URL, used to track internal campaigns.\n * @param {boolean} [properties.is mute] Describes whether the video played was on mute or not\n * @param {boolean} [properties.is sponsored] Describes whether the content is sponsored or not\n * @param {string[]} [properties.last article byline] The author or authors of the last article read by the user\n * @param {string} [properties.last article colour] The article colour of the last article read by the user\n * @param {string} [properties.last article credit line] Property has no description in tracking plan.\n * @param {string} [properties.last article headline] The headline of the article last read by a user\n * @param {string} [properties.last article id] The article ID of the last article read by the user\n * @param {string[]} [properties.last article keywords] The keywords of the last article read by the user\n * @param {string} [properties.last article topics] The article topics associated with the last article read by the user\n * @param {string} [properties.last content type] Type of article (ex. longread, column, etc.) last read by the user\n * @param {string} [properties.last internal campaign] The last intcmp parameter encountered in the session, used to track conversions from internal campaigns\n * @param {string} [properties.last marketing campaign] The last utm_campaign value passed in the page url that a user clicked on, used to attribute conversions to a marketing campaign\n * @param {string} [properties.last marketing content] The last utm_content value passed in the page url that a user clicked on, used to attribute conversions to specific marketing content\n * @param {string} [properties.last marketing medium] The last utm_medium value passed in the page url that a user clicked on, used to attribute conversions to specific marketing mediums\n * @param {string} [properties.last marketing source] The last utm_source value passed in the page url that a user clicked on, used to attribute conversions to specific marketing sources\n * @param {string} [properties.last marketing terms] The last utm_term value passed in the page url that a user clicked on, used to attribute conversions to a specific marketing term\n * @param {string} [properties.last subsection 1] Name of the last subsection 1 viewed by the user\n * @param {string} [properties.last subsection 2] Name of the last subsection 2 viewed by the user\n * @param {string} [properties.last subsection 3] Name of the last subsection 3 viewed by the user\n * @param {string} [properties.last subsection 4] Name of the last subsection 4 viewed by the user\n * @param {string} [properties.last wall name] Name of the latest wall encountered by the user\n * @param {string} [properties.last wall reason] The latest Sophi reason for showing the wall to the user\n * @param {string} [properties.last wall type] The latest wall type shown to a user\n * @param {string} [properties.marketing campaign] The utm_campaign parameter passed in the page URL, used to track what marketing campaign the user came from.\n * @param {string} [properties.marketing content] The utm_content parameter passed in the page URL, used to track what marketing content the user came from.\n * @param {string} [properties.marketing medium] The utm_medium parameter passed in the page URL, used to track what marketing medium the user came from.\n * @param {string} [properties.marketing source] The utm_source parameter passed in the page URL, used to track what marketing source the user came from.\n * @param {string} [properties.marketing term] The utm_term parameter passed in the page URL, used to track what marketing term the user came from.\n * @param {string} [properties.media content id] A distinct ID for video or audio content - for audio articles, this would be the article ID.\n * @param {number} [properties.media duration seconds] The length of the video or audio in seconds\n * @param {number} [properties.media elapsed seconds] Elapsed time in seconds for the video or audio\n * @param {string} [properties.media feature type] Placement of the audio or video on the page (ex. page part, article part, main)\n * @param {string} [properties.media player] Name of the video or audio player platform\n * @param {string} properties.media title Title of the video or audio\n * @param {string} [properties.page layout] Describes the layout of the page (ex. premium-section, article-with-sidebar, page-with-sidebar)\n * @param {string} properties.page name General page name or breadcrumb containing a page's section and subsections. Ex. investing:personalfinance\n * @param {string} properties.page path Part of the URL after the domain and before query paramters and URL fragments. Ex. /canada/article-this-is-an-example/\n * @param {string} [properties.page type] The type of page (ex. article, section, video, etc.)\n * @param {string} properties.page url Page URL of the page a user browsed.\n * @param {string} [properties.press release organization] The press release organization that provided a press release for a stock page.\n * @param {string} properties.referrer host The host name of the referral URL.\n * @param {string} properties.referrer url The previous page's URL, ie where the user came from before landing on the current page URL.\n * @param {string} properties.section The name of the section\n * @param {string[]} [properties.stock tickers] Array of stock tickers that appeared on an article.\n * @param {string} [properties.subsection 1] The first subsection of a page, appears after the section name in the page path (ex. markets in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 2] The second subsection of a page, appears as the third value in the page path (ex. stocks in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 3] The third subsection of a page, appears as the fourth value the page path (ex. QQC-F-T in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 4] The fourth subsection of a page, appears as the fifth value in the page path (ex. pressreleases in /investing/markets/stocks/QQC-F-T/pressreleases/)\n * @param {string} [properties.user agent string] User agent string of a device\n * @param {EventOptions} [options] Options for this track call.\n */\n videoComplete(properties, options) {\n return this.track(new VideoComplete(properties), options);\n }\n\n /**\n * video_pause\n *\n * [View in Tracking Plan](https://data.amplitude.com/the-globe-and-mail/The%20Globe%20and%20Mail/events/main/latest/video_pause)\n *\n * This event tracks when a user pauses a video\n *\n * Owner: Lourdes Santos\n *\n * @param {Object} properties The event's properties.\n * @param {string} properties.app id A unique identifier for the application (ex. theglobeandmail-website, theglobeandmail-app, tgam:theglobeandmail:app_android)\n * @param {string[]} [properties.article byline] Author or authors of an article\n * @param {string} [properties.article colour] Article colour or access category of an article (ex. red, yellow, green)\n * @param {number} [properties.article content size] Number of words in an article\n * @param {string} [properties.article content type] Type of article (ex. longread, column, etc.)\n * @param {string} [properties.article creditline] Creditline of an article (ex. reuters)\n * @param {string} properties.article headline Headline of an article\n * @param {string} properties.article id The distinct ID of an article\n * @param {string[]} [properties.article keywords] Keywords assigned to an article\n * @param {string} [properties.article last modified date] Modified date of an article\n * @param {string} [properties.article ownership] Source of an article (ex. staff writer, wire, etc.)\n * @param {string} [properties.article publish date] Publish date of an article in EST, ISO date format\n * @param {string[]} [properties.article tags] Story tags of an article (ex. 'folio', 'longread', etc.)\n * @param {string} [properties.article topics] Topics assigned to an article\n * @param {number} [properties.browser view height] Height of browser in pixels\n * @param {number} [properties.browser view width] Width of browser in pixels\n * @param {string} properties.canonical url Canonical URL of the page (strips all paramters in the URL)\n * @param {string} properties.environment User environment during the session (prod, dev, or stg)\n * @param {string} [properties.first marketing campaign] The first utm campaign the user encountered in their session\n * @param {string} [properties.first marketing content] The first utm content the user encountered in their session\n * @param {string} [properties.first marketing medium] The first utm medium the user encountered in their session\n * @param {string} [properties.first marketing source] The first utm source the user encountered in their session\n * @param {string} [properties.first marketing terms] The first utm_term the user encountered in their session\n * @param {string} [properties.first referrer host] The first referral host that brought a user to the site for a specific session\n * @param {string} properties.host name Site or host where content is published\n * @param {string} [properties.internal campaign] The intcmp parameter in the page URL, used to track internal campaigns.\n * @param {boolean} [properties.is mute] Describes whether the video played was on mute or not\n * @param {boolean} [properties.is sponsored] Describes whether the content is sponsored or not\n * @param {string[]} [properties.last article byline] The author or authors of the last article read by the user\n * @param {string} [properties.last article colour] The article colour of the last article read by the user\n * @param {string} [properties.last article credit line] Property has no description in tracking plan.\n * @param {string} [properties.last article headline] The headline of the article last read by a user\n * @param {string} [properties.last article id] The article ID of the last article read by the user\n * @param {string[]} [properties.last article keywords] The keywords of the last article read by the user\n * @param {string} [properties.last article topics] The article topics associated with the last article read by the user\n * @param {string} [properties.last content type] Type of article (ex. longread, column, etc.) last read by the user\n * @param {string} [properties.last internal campaign] The last intcmp parameter encountered in the session, used to track conversions from internal campaigns\n * @param {string} [properties.last marketing campaign] The last utm_campaign value passed in the page url that a user clicked on, used to attribute conversions to a marketing campaign\n * @param {string} [properties.last marketing content] The last utm_content value passed in the page url that a user clicked on, used to attribute conversions to specific marketing content\n * @param {string} [properties.last marketing medium] The last utm_medium value passed in the page url that a user clicked on, used to attribute conversions to specific marketing mediums\n * @param {string} [properties.last marketing source] The last utm_source value passed in the page url that a user clicked on, used to attribute conversions to specific marketing sources\n * @param {string} [properties.last marketing terms] The last utm_term value passed in the page url that a user clicked on, used to attribute conversions to a specific marketing term\n * @param {string} [properties.last subsection 1] Name of the last subsection 1 viewed by the user\n * @param {string} [properties.last subsection 2] Name of the last subsection 2 viewed by the user\n * @param {string} [properties.last subsection 3] Name of the last subsection 3 viewed by the user\n * @param {string} [properties.last subsection 4] Name of the last subsection 4 viewed by the user\n * @param {string} [properties.last wall name] Name of the latest wall encountered by the user\n * @param {string} [properties.last wall reason] The latest Sophi reason for showing the wall to the user\n * @param {string} [properties.last wall type] The latest wall type shown to a user\n * @param {string} [properties.marketing campaign] The utm_campaign parameter passed in the page URL, used to track what marketing campaign the user came from.\n * @param {string} [properties.marketing content] The utm_content parameter passed in the page URL, used to track what marketing content the user came from.\n * @param {string} [properties.marketing medium] The utm_medium parameter passed in the page URL, used to track what marketing medium the user came from.\n * @param {string} [properties.marketing source] The utm_source parameter passed in the page URL, used to track what marketing source the user came from.\n * @param {string} [properties.marketing term] The utm_term parameter passed in the page URL, used to track what marketing term the user came from.\n * @param {string} [properties.media content id] A distinct ID for video or audio content - for audio articles, this would be the article ID.\n * @param {number} [properties.media duration seconds] The length of the video or audio in seconds\n * @param {number} [properties.media elapsed seconds] Elapsed time in seconds for the video or audio\n * @param {string} [properties.media feature type] Placement of the audio or video on the page (ex. page part, article part, main)\n * @param {string} [properties.media player] Name of the video or audio player platform\n * @param {string} properties.media title Title of the video or audio\n * @param {string} [properties.page layout] Describes the layout of the page (ex. premium-section, article-with-sidebar, page-with-sidebar)\n * @param {string} properties.page name General page name or breadcrumb containing a page's section and subsections. Ex. investing:personalfinance\n * @param {string} properties.page path Part of the URL after the domain and before query paramters and URL fragments. Ex. /canada/article-this-is-an-example/\n * @param {string} [properties.page type] The type of page (ex. article, section, video, etc.)\n * @param {string} properties.page url Page URL of the page a user browsed.\n * @param {string} [properties.press release organization] The press release organization that provided a press release for a stock page.\n * @param {string} properties.referrer host The host name of the referral URL.\n * @param {string} properties.referrer url The previous page's URL, ie where the user came from before landing on the current page URL.\n * @param {string} properties.section The name of the section\n * @param {string[]} [properties.stock tickers] Array of stock tickers that appeared on an article.\n * @param {string} [properties.subsection 1] The first subsection of a page, appears after the section name in the page path (ex. markets in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 2] The second subsection of a page, appears as the third value in the page path (ex. stocks in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 3] The third subsection of a page, appears as the fourth value the page path (ex. QQC-F-T in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 4] The fourth subsection of a page, appears as the fifth value in the page path (ex. pressreleases in /investing/markets/stocks/QQC-F-T/pressreleases/)\n * @param {string} [properties.user agent string] User agent string of a device\n * @param {EventOptions} [options] Options for this track call.\n */\n videoPause(properties, options) {\n return this.track(new VideoPause(properties), options);\n }\n\n /**\n * video_play\n *\n * [View in Tracking Plan](https://data.amplitude.com/the-globe-and-mail/The%20Globe%20and%20Mail/events/main/latest/video_play)\n *\n * This event tracks when a user starts playing a video\n *\n * Owner: Lourdes Santos\n *\n * @param {Object} properties The event's properties.\n * @param {string} properties.app id A unique identifier for the application (ex. theglobeandmail-website, theglobeandmail-app, tgam:theglobeandmail:app_android)\n * @param {string[]} [properties.article byline] Author or authors of an article\n * @param {string} [properties.article colour] Article colour or access category of an article (ex. red, yellow, green)\n * @param {number} [properties.article content size] Number of words in an article\n * @param {string} [properties.article content type] Type of article (ex. longread, column, etc.)\n * @param {string} [properties.article creditline] Creditline of an article (ex. reuters)\n * @param {string} properties.article headline Headline of an article\n * @param {string} properties.article id The distinct ID of an article\n * @param {string[]} [properties.article keywords] Keywords assigned to an article\n * @param {string} [properties.article last modified date] Modified date of an article\n * @param {string} [properties.article ownership] Source of an article (ex. staff writer, wire, etc.)\n * @param {string} [properties.article publish date] Publish date of an article in EST, ISO date format\n * @param {string[]} [properties.article tags] Story tags of an article (ex. 'folio', 'longread', etc.)\n * @param {string} [properties.article topics] Topics assigned to an article\n * @param {number} [properties.browser view height] Height of browser in pixels\n * @param {number} [properties.browser view width] Width of browser in pixels\n * @param {string} properties.canonical url Canonical URL of the page (strips all paramters in the URL)\n * @param {string} properties.environment User environment during the session (prod, dev, or stg)\n * @param {string} [properties.first marketing campaign] The first utm campaign the user encountered in their session\n * @param {string} [properties.first marketing content] The first utm content the user encountered in their session\n * @param {string} [properties.first marketing medium] The first utm medium the user encountered in their session\n * @param {string} [properties.first marketing source] The first utm source the user encountered in their session\n * @param {string} [properties.first marketing terms] The first utm_term the user encountered in their session\n * @param {string} [properties.first referrer host] The first referral host that brought a user to the site for a specific session\n * @param {string} properties.host name Site or host where content is published\n * @param {string} [properties.internal campaign] The intcmp parameter in the page URL, used to track internal campaigns.\n * @param {boolean} [properties.is mute] Describes whether the video played was on mute or not\n * @param {boolean} [properties.is sponsored] Describes whether the content is sponsored or not\n * @param {string[]} [properties.last article byline] The author or authors of the last article read by the user\n * @param {string} [properties.last article colour] The article colour of the last article read by the user\n * @param {string} [properties.last article credit line] Property has no description in tracking plan.\n * @param {string} [properties.last article headline] The headline of the article last read by a user\n * @param {string} [properties.last article id] The article ID of the last article read by the user\n * @param {string[]} [properties.last article keywords] The keywords of the last article read by the user\n * @param {string} [properties.last article topics] The article topics associated with the last article read by the user\n * @param {string} [properties.last content type] Type of article (ex. longread, column, etc.) last read by the user\n * @param {string} [properties.last internal campaign] The last intcmp parameter encountered in the session, used to track conversions from internal campaigns\n * @param {string} [properties.last marketing campaign] The last utm_campaign value passed in the page url that a user clicked on, used to attribute conversions to a marketing campaign\n * @param {string} [properties.last marketing content] The last utm_content value passed in the page url that a user clicked on, used to attribute conversions to specific marketing content\n * @param {string} [properties.last marketing medium] The last utm_medium value passed in the page url that a user clicked on, used to attribute conversions to specific marketing mediums\n * @param {string} [properties.last marketing source] The last utm_source value passed in the page url that a user clicked on, used to attribute conversions to specific marketing sources\n * @param {string} [properties.last marketing terms] The last utm_term value passed in the page url that a user clicked on, used to attribute conversions to a specific marketing term\n * @param {string} [properties.last subsection 1] Name of the last subsection 1 viewed by the user\n * @param {string} [properties.last subsection 2] Name of the last subsection 2 viewed by the user\n * @param {string} [properties.last subsection 3] Name of the last subsection 3 viewed by the user\n * @param {string} [properties.last subsection 4] Name of the last subsection 4 viewed by the user\n * @param {string} [properties.last wall name] Name of the latest wall encountered by the user\n * @param {string} [properties.last wall reason] The latest Sophi reason for showing the wall to the user\n * @param {string} [properties.last wall type] The latest wall type shown to a user\n * @param {string} [properties.marketing campaign] The utm_campaign parameter passed in the page URL, used to track what marketing campaign the user came from.\n * @param {string} [properties.marketing content] The utm_content parameter passed in the page URL, used to track what marketing content the user came from.\n * @param {string} [properties.marketing medium] The utm_medium parameter passed in the page URL, used to track what marketing medium the user came from.\n * @param {string} [properties.marketing source] The utm_source parameter passed in the page URL, used to track what marketing source the user came from.\n * @param {string} [properties.marketing term] The utm_term parameter passed in the page URL, used to track what marketing term the user came from.\n * @param {string} [properties.media content id] A distinct ID for video or audio content - for audio articles, this would be the article ID.\n * @param {number} [properties.media duration seconds] The length of the video or audio in seconds\n * @param {number} [properties.media elapsed seconds] Elapsed time in seconds for the video or audio\n * @param {string} [properties.media feature type] Placement of the audio or video on the page (ex. page part, article part, main)\n * @param {string} [properties.media player] Name of the video or audio player platform\n * @param {string} properties.media title Title of the video or audio\n * @param {string} [properties.page layout] Describes the layout of the page (ex. premium-section, article-with-sidebar, page-with-sidebar)\n * @param {string} properties.page name General page name or breadcrumb containing a page's section and subsections. Ex. investing:personalfinance\n * @param {string} properties.page path Part of the URL after the domain and before query paramters and URL fragments. Ex. /canada/article-this-is-an-example/\n * @param {string} [properties.page type] The type of page (ex. article, section, video, etc.)\n * @param {string} properties.page url Page URL of the page a user browsed.\n * @param {string} [properties.press release organization] The press release organization that provided a press release for a stock page.\n * @param {string} properties.referrer host The host name of the referral URL.\n * @param {string} properties.referrer url The previous page's URL, ie where the user came from before landing on the current page URL.\n * @param {string} properties.section The name of the section\n * @param {string[]} [properties.stock tickers] Array of stock tickers that appeared on an article.\n * @param {string} [properties.subsection 1] The first subsection of a page, appears after the section name in the page path (ex. markets in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 2] The second subsection of a page, appears as the third value in the page path (ex. stocks in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 3] The third subsection of a page, appears as the fourth value the page path (ex. QQC-F-T in /investing/markets/stocks/QQC-F-T/)\n * @param {string} [properties.subsection 4] The fourth subsection of a page, appears as the fifth value in the page path (ex. pressreleases in /investing/markets/stocks/QQC-F-T/pressreleases/)\n * @param {string} [properties.user agent string] User agent string of a device\n * @param {EventOptions} [options] Options for this track call.\n */\n videoPlay(properties, options) {\n return this.track(new VideoPlay(properties), options);\n }\n}\n\nexport const ampli = new Ampli();\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoadingSpinnerRed.vue?vue&type=style&index=0&id=37c65d2e&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoadingSpinnerRed.vue?vue&type=style&index=0&id=37c65d2e&lang=scss&scoped=true&\""],"sourceRoot":""}