{"version":3,"file":"774e4fe3-72bb73ea4f209b4555b6.js","mappings":"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","sources":["webpack://baziigram/./node_modules/gameanalytics/dist/GameAnalytics.node.js"],"sourcesContent":["'use strict';\n/*\nCryptoJS v3.1.2\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n\nrequire(\"core-js/modules/esnext.global-this.js\");\n\nvar CryptoJS = CryptoJS || function (h, s) {\n var f = {},\n g = f.lib = {},\n q = function q() {},\n m = g.Base = {\n extend: function extend(a) {\n q.prototype = this;\n var c = new q();\n a && c.mixIn(a);\n c.hasOwnProperty(\"init\") || (c.init = function () {\n c.$super.init.apply(this, arguments);\n });\n c.init.prototype = c;\n c.$super = this;\n return c;\n },\n create: function create() {\n var a = this.extend();\n a.init.apply(a, arguments);\n return a;\n },\n init: function init() {},\n mixIn: function mixIn(a) {\n for (var c in a) {\n a.hasOwnProperty(c) && (this[c] = a[c]);\n }\n\n a.hasOwnProperty(\"toString\") && (this.toString = a.toString);\n },\n clone: function clone() {\n return this.init.prototype.extend(this);\n }\n },\n r = g.WordArray = m.extend({\n init: function init(a, c) {\n a = this.words = a || [];\n this.sigBytes = c != s ? c : 4 * a.length;\n },\n toString: function toString(a) {\n return (a || k).stringify(this);\n },\n concat: function concat(a) {\n var c = this.words,\n d = a.words,\n b = this.sigBytes;\n a = a.sigBytes;\n this.clamp();\n if (b % 4) for (var e = 0; e < a; e++) {\n c[b + e >>> 2] |= (d[e >>> 2] >>> 24 - 8 * (e % 4) & 255) << 24 - 8 * ((b + e) % 4);\n } else if (65535 < d.length) for (e = 0; e < a; e += 4) {\n c[b + e >>> 2] = d[e >>> 2];\n } else c.push.apply(c, d);\n this.sigBytes += a;\n return this;\n },\n clamp: function clamp() {\n var a = this.words,\n c = this.sigBytes;\n a[c >>> 2] &= 4294967295 << 32 - 8 * (c % 4);\n a.length = h.ceil(c / 4);\n },\n clone: function clone() {\n var a = m.clone.call(this);\n a.words = this.words.slice(0);\n return a;\n },\n random: function random(a) {\n for (var c = [], d = 0; d < a; d += 4) {\n c.push(4294967296 * h.random() | 0);\n }\n\n return new r.init(c, a);\n }\n }),\n l = f.enc = {},\n k = l.Hex = {\n stringify: function stringify(a) {\n var c = a.words;\n a = a.sigBytes;\n\n for (var d = [], b = 0; b < a; b++) {\n var e = c[b >>> 2] >>> 24 - 8 * (b % 4) & 255;\n d.push((e >>> 4).toString(16));\n d.push((e & 15).toString(16));\n }\n\n return d.join(\"\");\n },\n parse: function parse(a) {\n for (var c = a.length, d = [], b = 0; b < c; b += 2) {\n d[b >>> 3] |= parseInt(a.substr(b, 2), 16) << 24 - 4 * (b % 8);\n }\n\n return new r.init(d, c / 2);\n }\n },\n n = l.Latin1 = {\n stringify: function stringify(a) {\n var c = a.words;\n a = a.sigBytes;\n\n for (var d = [], b = 0; b < a; b++) {\n d.push(String.fromCharCode(c[b >>> 2] >>> 24 - 8 * (b % 4) & 255));\n }\n\n return d.join(\"\");\n },\n parse: function parse(a) {\n for (var c = a.length, d = [], b = 0; b < c; b++) {\n d[b >>> 2] |= (a.charCodeAt(b) & 255) << 24 - 8 * (b % 4);\n }\n\n return new r.init(d, c);\n }\n },\n j = l.Utf8 = {\n stringify: function stringify(a) {\n try {\n return decodeURIComponent(escape(n.stringify(a)));\n } catch (c) {\n throw Error(\"Malformed UTF-8 data\");\n }\n },\n parse: function parse(a) {\n return n.parse(unescape(encodeURIComponent(a)));\n }\n },\n u = g.BufferedBlockAlgorithm = m.extend({\n reset: function reset() {\n this._data = new r.init();\n this._nDataBytes = 0;\n },\n _append: function _append(a) {\n \"string\" == typeof a && (a = j.parse(a));\n\n this._data.concat(a);\n\n this._nDataBytes += a.sigBytes;\n },\n _process: function _process(a) {\n var c = this._data,\n d = c.words,\n b = c.sigBytes,\n e = this.blockSize,\n f = b / (4 * e),\n f = a ? h.ceil(f) : h.max((f | 0) - this._minBufferSize, 0);\n a = f * e;\n b = h.min(4 * a, b);\n\n if (a) {\n for (var g = 0; g < a; g += e) {\n this._doProcessBlock(d, g);\n }\n\n g = d.splice(0, a);\n c.sigBytes -= b;\n }\n\n return new r.init(g, b);\n },\n clone: function clone() {\n var a = m.clone.call(this);\n a._data = this._data.clone();\n return a;\n },\n _minBufferSize: 0\n });\n\n g.Hasher = u.extend({\n cfg: m.extend(),\n init: function init(a) {\n this.cfg = this.cfg.extend(a);\n this.reset();\n },\n reset: function reset() {\n u.reset.call(this);\n\n this._doReset();\n },\n update: function update(a) {\n this._append(a);\n\n this._process();\n\n return this;\n },\n finalize: function finalize(a) {\n a && this._append(a);\n return this._doFinalize();\n },\n blockSize: 16,\n _createHelper: function _createHelper(a) {\n return function (c, d) {\n return new a.init(d).finalize(c);\n };\n },\n _createHmacHelper: function _createHmacHelper(a) {\n return function (c, d) {\n return new t.HMAC.init(a, d).finalize(c);\n };\n }\n });\n var t = f.algo = {};\n return f;\n}(Math);\n\n(function (h) {\n for (var s = CryptoJS, f = s.lib, g = f.WordArray, q = f.Hasher, f = s.algo, m = [], r = [], l = function l(a) {\n return 4294967296 * (a - (a | 0)) | 0;\n }, k = 2, n = 0; 64 > n;) {\n var j;\n\n a: {\n j = k;\n\n for (var u = h.sqrt(j), t = 2; t <= u; t++) {\n if (!(j % t)) {\n j = !1;\n break a;\n }\n }\n\n j = !0;\n }\n\n j && (8 > n && (m[n] = l(h.pow(k, 0.5))), r[n] = l(h.pow(k, 1 / 3)), n++);\n k++;\n }\n\n var a = [],\n f = f.SHA256 = q.extend({\n _doReset: function _doReset() {\n this._hash = new g.init(m.slice(0));\n },\n _doProcessBlock: function _doProcessBlock(c, d) {\n for (var b = this._hash.words, e = b[0], f = b[1], g = b[2], j = b[3], h = b[4], m = b[5], n = b[6], q = b[7], p = 0; 64 > p; p++) {\n if (16 > p) a[p] = c[d + p] | 0;else {\n var k = a[p - 15],\n l = a[p - 2];\n a[p] = ((k << 25 | k >>> 7) ^ (k << 14 | k >>> 18) ^ k >>> 3) + a[p - 7] + ((l << 15 | l >>> 17) ^ (l << 13 | l >>> 19) ^ l >>> 10) + a[p - 16];\n }\n k = q + ((h << 26 | h >>> 6) ^ (h << 21 | h >>> 11) ^ (h << 7 | h >>> 25)) + (h & m ^ ~h & n) + r[p] + a[p];\n l = ((e << 30 | e >>> 2) ^ (e << 19 | e >>> 13) ^ (e << 10 | e >>> 22)) + (e & f ^ e & g ^ f & g);\n q = n;\n n = m;\n m = h;\n h = j + k | 0;\n j = g;\n g = f;\n f = e;\n e = k + l | 0;\n }\n\n b[0] = b[0] + e | 0;\n b[1] = b[1] + f | 0;\n b[2] = b[2] + g | 0;\n b[3] = b[3] + j | 0;\n b[4] = b[4] + h | 0;\n b[5] = b[5] + m | 0;\n b[6] = b[6] + n | 0;\n b[7] = b[7] + q | 0;\n },\n _doFinalize: function _doFinalize() {\n var a = this._data,\n d = a.words,\n b = 8 * this._nDataBytes,\n e = 8 * a.sigBytes;\n d[e >>> 5] |= 128 << 24 - e % 32;\n d[(e + 64 >>> 9 << 4) + 14] = h.floor(b / 4294967296);\n d[(e + 64 >>> 9 << 4) + 15] = b;\n a.sigBytes = 4 * d.length;\n\n this._process();\n\n return this._hash;\n },\n clone: function clone() {\n var a = q.clone.call(this);\n a._hash = this._hash.clone();\n return a;\n }\n });\n s.SHA256 = q._createHelper(f);\n s.HmacSHA256 = q._createHmacHelper(f);\n})(Math);\n\n(function () {\n var h = CryptoJS,\n s = h.enc.Utf8;\n h.algo.HMAC = h.lib.Base.extend({\n init: function init(f, g) {\n f = this._hasher = new f.init();\n \"string\" == typeof g && (g = s.parse(g));\n var h = f.blockSize,\n m = 4 * h;\n g.sigBytes > m && (g = f.finalize(g));\n g.clamp();\n\n for (var r = this._oKey = g.clone(), l = this._iKey = g.clone(), k = r.words, n = l.words, j = 0; j < h; j++) {\n k[j] ^= 1549556828, n[j] ^= 909522486;\n }\n\n r.sigBytes = l.sigBytes = m;\n this.reset();\n },\n reset: function reset() {\n var f = this._hasher;\n f.reset();\n f.update(this._iKey);\n },\n update: function update(f) {\n this._hasher.update(f);\n\n return this;\n },\n finalize: function finalize(f) {\n var g = this._hasher;\n f = g.finalize(f);\n g.reset();\n return g.finalize(this._oKey.clone().concat(f));\n }\n });\n})();\n/*\nCryptoJS v3.1.2\ncode.google.com/p/crypto-js\n(c) 2009-2013 by Jeff Mott. All rights reserved.\ncode.google.com/p/crypto-js/wiki/License\n*/\n\n\n(function () {\n var h = CryptoJS,\n j = h.lib.WordArray;\n h.enc.Base64 = {\n stringify: function stringify(b) {\n var e = b.words,\n f = b.sigBytes,\n c = this._map;\n b.clamp();\n b = [];\n\n for (var a = 0; a < f; a += 3) {\n for (var d = (e[a >>> 2] >>> 24 - 8 * (a % 4) & 255) << 16 | (e[a + 1 >>> 2] >>> 24 - 8 * ((a + 1) % 4) & 255) << 8 | e[a + 2 >>> 2] >>> 24 - 8 * ((a + 2) % 4) & 255, g = 0; 4 > g && a + 0.75 * g < f; g++) {\n b.push(c.charAt(d >>> 6 * (3 - g) & 63));\n }\n }\n\n if (e = c.charAt(64)) for (; b.length % 4;) {\n b.push(e);\n }\n return b.join(\"\");\n },\n parse: function parse(b) {\n var e = b.length,\n f = this._map,\n c = f.charAt(64);\n c && (c = b.indexOf(c), -1 != c && (e = c));\n\n for (var c = [], a = 0, d = 0; d < e; d++) {\n if (d % 4) {\n var g = f.indexOf(b.charAt(d - 1)) << 2 * (d % 4),\n h = f.indexOf(b.charAt(d)) >>> 6 - 2 * (d % 4);\n c[a >>> 2] |= (g | h) << 24 - 8 * (a % 4);\n a++;\n }\n }\n\n return j.create(c, a);\n },\n _map: \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\"\n };\n})();\n\nvar gameanalytics;\n\n(function (gameanalytics) {\n var EGAErrorSeverity;\n\n (function (EGAErrorSeverity) {\n EGAErrorSeverity[EGAErrorSeverity[\"Undefined\"] = 0] = \"Undefined\";\n EGAErrorSeverity[EGAErrorSeverity[\"Debug\"] = 1] = \"Debug\";\n EGAErrorSeverity[EGAErrorSeverity[\"Info\"] = 2] = \"Info\";\n EGAErrorSeverity[EGAErrorSeverity[\"Warning\"] = 3] = \"Warning\";\n EGAErrorSeverity[EGAErrorSeverity[\"Error\"] = 4] = \"Error\";\n EGAErrorSeverity[EGAErrorSeverity[\"Critical\"] = 5] = \"Critical\";\n })(EGAErrorSeverity = gameanalytics.EGAErrorSeverity || (gameanalytics.EGAErrorSeverity = {}));\n\n var EGAProgressionStatus;\n\n (function (EGAProgressionStatus) {\n EGAProgressionStatus[EGAProgressionStatus[\"Undefined\"] = 0] = \"Undefined\";\n EGAProgressionStatus[EGAProgressionStatus[\"Start\"] = 1] = \"Start\";\n EGAProgressionStatus[EGAProgressionStatus[\"Complete\"] = 2] = \"Complete\";\n EGAProgressionStatus[EGAProgressionStatus[\"Fail\"] = 3] = \"Fail\";\n })(EGAProgressionStatus = gameanalytics.EGAProgressionStatus || (gameanalytics.EGAProgressionStatus = {}));\n\n var EGAResourceFlowType;\n\n (function (EGAResourceFlowType) {\n EGAResourceFlowType[EGAResourceFlowType[\"Undefined\"] = 0] = \"Undefined\";\n EGAResourceFlowType[EGAResourceFlowType[\"Source\"] = 1] = \"Source\";\n EGAResourceFlowType[EGAResourceFlowType[\"Sink\"] = 2] = \"Sink\";\n })(EGAResourceFlowType = gameanalytics.EGAResourceFlowType || (gameanalytics.EGAResourceFlowType = {}));\n\n var EGAAdAction;\n\n (function (EGAAdAction) {\n EGAAdAction[EGAAdAction[\"Undefined\"] = 0] = \"Undefined\";\n EGAAdAction[EGAAdAction[\"Clicked\"] = 1] = \"Clicked\";\n EGAAdAction[EGAAdAction[\"Show\"] = 2] = \"Show\";\n EGAAdAction[EGAAdAction[\"FailedShow\"] = 3] = \"FailedShow\";\n EGAAdAction[EGAAdAction[\"RewardReceived\"] = 4] = \"RewardReceived\";\n })(EGAAdAction = gameanalytics.EGAAdAction || (gameanalytics.EGAAdAction = {}));\n\n var EGAAdError;\n\n (function (EGAAdError) {\n EGAAdError[EGAAdError[\"Undefined\"] = 0] = \"Undefined\";\n EGAAdError[EGAAdError[\"Unknown\"] = 1] = \"Unknown\";\n EGAAdError[EGAAdError[\"Offline\"] = 2] = \"Offline\";\n EGAAdError[EGAAdError[\"NoFill\"] = 3] = \"NoFill\";\n EGAAdError[EGAAdError[\"InternalError\"] = 4] = \"InternalError\";\n EGAAdError[EGAAdError[\"InvalidRequest\"] = 5] = \"InvalidRequest\";\n EGAAdError[EGAAdError[\"UnableToPrecache\"] = 6] = \"UnableToPrecache\";\n })(EGAAdError = gameanalytics.EGAAdError || (gameanalytics.EGAAdError = {}));\n\n var EGAAdType;\n\n (function (EGAAdType) {\n EGAAdType[EGAAdType[\"Undefined\"] = 0] = \"Undefined\";\n EGAAdType[EGAAdType[\"Video\"] = 1] = \"Video\";\n EGAAdType[EGAAdType[\"RewardedVideo\"] = 2] = \"RewardedVideo\";\n EGAAdType[EGAAdType[\"Playable\"] = 3] = \"Playable\";\n EGAAdType[EGAAdType[\"Interstitial\"] = 4] = \"Interstitial\";\n EGAAdType[EGAAdType[\"OfferWall\"] = 5] = \"OfferWall\";\n EGAAdType[EGAAdType[\"Banner\"] = 6] = \"Banner\";\n })(EGAAdType = gameanalytics.EGAAdType || (gameanalytics.EGAAdType = {}));\n\n var http;\n\n (function (http) {\n var EGAHTTPApiResponse;\n\n (function (EGAHTTPApiResponse) {\n EGAHTTPApiResponse[EGAHTTPApiResponse[\"NoResponse\"] = 0] = \"NoResponse\";\n EGAHTTPApiResponse[EGAHTTPApiResponse[\"BadResponse\"] = 1] = \"BadResponse\";\n EGAHTTPApiResponse[EGAHTTPApiResponse[\"RequestTimeout\"] = 2] = \"RequestTimeout\";\n EGAHTTPApiResponse[EGAHTTPApiResponse[\"JsonEncodeFailed\"] = 3] = \"JsonEncodeFailed\";\n EGAHTTPApiResponse[EGAHTTPApiResponse[\"JsonDecodeFailed\"] = 4] = \"JsonDecodeFailed\";\n EGAHTTPApiResponse[EGAHTTPApiResponse[\"InternalServerError\"] = 5] = \"InternalServerError\";\n EGAHTTPApiResponse[EGAHTTPApiResponse[\"BadRequest\"] = 6] = \"BadRequest\";\n EGAHTTPApiResponse[EGAHTTPApiResponse[\"Unauthorized\"] = 7] = \"Unauthorized\";\n EGAHTTPApiResponse[EGAHTTPApiResponse[\"UnknownResponseCode\"] = 8] = \"UnknownResponseCode\";\n EGAHTTPApiResponse[EGAHTTPApiResponse[\"Ok\"] = 9] = \"Ok\";\n EGAHTTPApiResponse[EGAHTTPApiResponse[\"Created\"] = 10] = \"Created\";\n })(EGAHTTPApiResponse = http.EGAHTTPApiResponse || (http.EGAHTTPApiResponse = {}));\n })(http = gameanalytics.http || (gameanalytics.http = {}));\n\n var events;\n\n (function (events) {\n var EGASdkErrorCategory;\n\n (function (EGASdkErrorCategory) {\n EGASdkErrorCategory[EGASdkErrorCategory[\"Undefined\"] = 0] = \"Undefined\";\n EGASdkErrorCategory[EGASdkErrorCategory[\"EventValidation\"] = 1] = \"EventValidation\";\n EGASdkErrorCategory[EGASdkErrorCategory[\"Database\"] = 2] = \"Database\";\n EGASdkErrorCategory[EGASdkErrorCategory[\"Init\"] = 3] = \"Init\";\n EGASdkErrorCategory[EGASdkErrorCategory[\"Http\"] = 4] = \"Http\";\n EGASdkErrorCategory[EGASdkErrorCategory[\"Json\"] = 5] = \"Json\";\n })(EGASdkErrorCategory = events.EGASdkErrorCategory || (events.EGASdkErrorCategory = {}));\n\n var EGASdkErrorArea;\n\n (function (EGASdkErrorArea) {\n EGASdkErrorArea[EGASdkErrorArea[\"Undefined\"] = 0] = \"Undefined\";\n EGASdkErrorArea[EGASdkErrorArea[\"BusinessEvent\"] = 1] = \"BusinessEvent\";\n EGASdkErrorArea[EGASdkErrorArea[\"ResourceEvent\"] = 2] = \"ResourceEvent\";\n EGASdkErrorArea[EGASdkErrorArea[\"ProgressionEvent\"] = 3] = \"ProgressionEvent\";\n EGASdkErrorArea[EGASdkErrorArea[\"DesignEvent\"] = 4] = \"DesignEvent\";\n EGASdkErrorArea[EGASdkErrorArea[\"ErrorEvent\"] = 5] = \"ErrorEvent\";\n EGASdkErrorArea[EGASdkErrorArea[\"InitHttp\"] = 9] = \"InitHttp\";\n EGASdkErrorArea[EGASdkErrorArea[\"EventsHttp\"] = 10] = \"EventsHttp\";\n EGASdkErrorArea[EGASdkErrorArea[\"ProcessEvents\"] = 11] = \"ProcessEvents\";\n EGASdkErrorArea[EGASdkErrorArea[\"AddEventsToStore\"] = 12] = \"AddEventsToStore\";\n EGASdkErrorArea[EGASdkErrorArea[\"AdEvent\"] = 20] = \"AdEvent\";\n })(EGASdkErrorArea = events.EGASdkErrorArea || (events.EGASdkErrorArea = {}));\n\n var EGASdkErrorAction;\n\n (function (EGASdkErrorAction) {\n EGASdkErrorAction[EGASdkErrorAction[\"Undefined\"] = 0] = \"Undefined\";\n EGASdkErrorAction[EGASdkErrorAction[\"InvalidCurrency\"] = 1] = \"InvalidCurrency\";\n EGASdkErrorAction[EGASdkErrorAction[\"InvalidShortString\"] = 2] = \"InvalidShortString\";\n EGASdkErrorAction[EGASdkErrorAction[\"InvalidEventPartLength\"] = 3] = \"InvalidEventPartLength\";\n EGASdkErrorAction[EGASdkErrorAction[\"InvalidEventPartCharacters\"] = 4] = \"InvalidEventPartCharacters\";\n EGASdkErrorAction[EGASdkErrorAction[\"InvalidStore\"] = 5] = \"InvalidStore\";\n EGASdkErrorAction[EGASdkErrorAction[\"InvalidFlowType\"] = 6] = \"InvalidFlowType\";\n EGASdkErrorAction[EGASdkErrorAction[\"StringEmptyOrNull\"] = 7] = \"StringEmptyOrNull\";\n EGASdkErrorAction[EGASdkErrorAction[\"NotFoundInAvailableCurrencies\"] = 8] = \"NotFoundInAvailableCurrencies\";\n EGASdkErrorAction[EGASdkErrorAction[\"InvalidAmount\"] = 9] = \"InvalidAmount\";\n EGASdkErrorAction[EGASdkErrorAction[\"NotFoundInAvailableItemTypes\"] = 10] = \"NotFoundInAvailableItemTypes\";\n EGASdkErrorAction[EGASdkErrorAction[\"WrongProgressionOrder\"] = 11] = \"WrongProgressionOrder\";\n EGASdkErrorAction[EGASdkErrorAction[\"InvalidEventIdLength\"] = 12] = \"InvalidEventIdLength\";\n EGASdkErrorAction[EGASdkErrorAction[\"InvalidEventIdCharacters\"] = 13] = \"InvalidEventIdCharacters\";\n EGASdkErrorAction[EGASdkErrorAction[\"InvalidProgressionStatus\"] = 15] = \"InvalidProgressionStatus\";\n EGASdkErrorAction[EGASdkErrorAction[\"InvalidSeverity\"] = 16] = \"InvalidSeverity\";\n EGASdkErrorAction[EGASdkErrorAction[\"InvalidLongString\"] = 17] = \"InvalidLongString\";\n EGASdkErrorAction[EGASdkErrorAction[\"DatabaseTooLarge\"] = 18] = \"DatabaseTooLarge\";\n EGASdkErrorAction[EGASdkErrorAction[\"DatabaseOpenOrCreate\"] = 19] = \"DatabaseOpenOrCreate\";\n EGASdkErrorAction[EGASdkErrorAction[\"JsonError\"] = 25] = \"JsonError\";\n EGASdkErrorAction[EGASdkErrorAction[\"FailHttpJsonDecode\"] = 29] = \"FailHttpJsonDecode\";\n EGASdkErrorAction[EGASdkErrorAction[\"FailHttpJsonEncode\"] = 30] = \"FailHttpJsonEncode\";\n EGASdkErrorAction[EGASdkErrorAction[\"InvalidAdAction\"] = 31] = \"InvalidAdAction\";\n EGASdkErrorAction[EGASdkErrorAction[\"InvalidAdType\"] = 32] = \"InvalidAdType\";\n EGASdkErrorAction[EGASdkErrorAction[\"InvalidString\"] = 33] = \"InvalidString\";\n })(EGASdkErrorAction = events.EGASdkErrorAction || (events.EGASdkErrorAction = {}));\n\n var EGASdkErrorParameter;\n\n (function (EGASdkErrorParameter) {\n EGASdkErrorParameter[EGASdkErrorParameter[\"Undefined\"] = 0] = \"Undefined\";\n EGASdkErrorParameter[EGASdkErrorParameter[\"Currency\"] = 1] = \"Currency\";\n EGASdkErrorParameter[EGASdkErrorParameter[\"CartType\"] = 2] = \"CartType\";\n EGASdkErrorParameter[EGASdkErrorParameter[\"ItemType\"] = 3] = \"ItemType\";\n EGASdkErrorParameter[EGASdkErrorParameter[\"ItemId\"] = 4] = \"ItemId\";\n EGASdkErrorParameter[EGASdkErrorParameter[\"Store\"] = 5] = \"Store\";\n EGASdkErrorParameter[EGASdkErrorParameter[\"FlowType\"] = 6] = \"FlowType\";\n EGASdkErrorParameter[EGASdkErrorParameter[\"Amount\"] = 7] = \"Amount\";\n EGASdkErrorParameter[EGASdkErrorParameter[\"Progression01\"] = 8] = \"Progression01\";\n EGASdkErrorParameter[EGASdkErrorParameter[\"Progression02\"] = 9] = \"Progression02\";\n EGASdkErrorParameter[EGASdkErrorParameter[\"Progression03\"] = 10] = \"Progression03\";\n EGASdkErrorParameter[EGASdkErrorParameter[\"EventId\"] = 11] = \"EventId\";\n EGASdkErrorParameter[EGASdkErrorParameter[\"ProgressionStatus\"] = 12] = \"ProgressionStatus\";\n EGASdkErrorParameter[EGASdkErrorParameter[\"Severity\"] = 13] = \"Severity\";\n EGASdkErrorParameter[EGASdkErrorParameter[\"Message\"] = 14] = \"Message\";\n EGASdkErrorParameter[EGASdkErrorParameter[\"AdAction\"] = 15] = \"AdAction\";\n EGASdkErrorParameter[EGASdkErrorParameter[\"AdType\"] = 16] = \"AdType\";\n EGASdkErrorParameter[EGASdkErrorParameter[\"AdSdkName\"] = 17] = \"AdSdkName\";\n EGASdkErrorParameter[EGASdkErrorParameter[\"AdPlacement\"] = 18] = \"AdPlacement\";\n })(EGASdkErrorParameter = events.EGASdkErrorParameter || (events.EGASdkErrorParameter = {}));\n })(events = gameanalytics.events || (gameanalytics.events = {}));\n})(gameanalytics || (gameanalytics = {}));\n\nvar public_enums;\n\n(function (public_enums) {\n var EGAErrorSeverity;\n\n (function (EGAErrorSeverity) {\n EGAErrorSeverity[EGAErrorSeverity[\"Undefined\"] = 0] = \"Undefined\";\n EGAErrorSeverity[EGAErrorSeverity[\"Debug\"] = 1] = \"Debug\";\n EGAErrorSeverity[EGAErrorSeverity[\"Info\"] = 2] = \"Info\";\n EGAErrorSeverity[EGAErrorSeverity[\"Warning\"] = 3] = \"Warning\";\n EGAErrorSeverity[EGAErrorSeverity[\"Error\"] = 4] = \"Error\";\n EGAErrorSeverity[EGAErrorSeverity[\"Critical\"] = 5] = \"Critical\";\n })(EGAErrorSeverity = public_enums.EGAErrorSeverity || (public_enums.EGAErrorSeverity = {}));\n\n var EGAProgressionStatus;\n\n (function (EGAProgressionStatus) {\n EGAProgressionStatus[EGAProgressionStatus[\"Undefined\"] = 0] = \"Undefined\";\n EGAProgressionStatus[EGAProgressionStatus[\"Start\"] = 1] = \"Start\";\n EGAProgressionStatus[EGAProgressionStatus[\"Complete\"] = 2] = \"Complete\";\n EGAProgressionStatus[EGAProgressionStatus[\"Fail\"] = 3] = \"Fail\";\n })(EGAProgressionStatus = public_enums.EGAProgressionStatus || (public_enums.EGAProgressionStatus = {}));\n\n var EGAResourceFlowType;\n\n (function (EGAResourceFlowType) {\n EGAResourceFlowType[EGAResourceFlowType[\"Undefined\"] = 0] = \"Undefined\";\n EGAResourceFlowType[EGAResourceFlowType[\"Source\"] = 1] = \"Source\";\n EGAResourceFlowType[EGAResourceFlowType[\"Sink\"] = 2] = \"Sink\";\n })(EGAResourceFlowType = public_enums.EGAResourceFlowType || (public_enums.EGAResourceFlowType = {}));\n\n var EGAAdAction;\n\n (function (EGAAdAction) {\n EGAAdAction[EGAAdAction[\"Undefined\"] = 0] = \"Undefined\";\n EGAAdAction[EGAAdAction[\"Clicked\"] = 1] = \"Clicked\";\n EGAAdAction[EGAAdAction[\"Show\"] = 2] = \"Show\";\n EGAAdAction[EGAAdAction[\"FailedShow\"] = 3] = \"FailedShow\";\n EGAAdAction[EGAAdAction[\"RewardReceived\"] = 4] = \"RewardReceived\";\n })(EGAAdAction = public_enums.EGAAdAction || (public_enums.EGAAdAction = {}));\n\n var EGAAdError;\n\n (function (EGAAdError) {\n EGAAdError[EGAAdError[\"Undefined\"] = 0] = \"Undefined\";\n EGAAdError[EGAAdError[\"Unknown\"] = 1] = \"Unknown\";\n EGAAdError[EGAAdError[\"Offline\"] = 2] = \"Offline\";\n EGAAdError[EGAAdError[\"NoFill\"] = 3] = \"NoFill\";\n EGAAdError[EGAAdError[\"InternalError\"] = 4] = \"InternalError\";\n EGAAdError[EGAAdError[\"InvalidRequest\"] = 5] = \"InvalidRequest\";\n EGAAdError[EGAAdError[\"UnableToPrecache\"] = 6] = \"UnableToPrecache\";\n })(EGAAdError = public_enums.EGAAdError || (public_enums.EGAAdError = {}));\n\n var EGAAdType;\n\n (function (EGAAdType) {\n EGAAdType[EGAAdType[\"Undefined\"] = 0] = \"Undefined\";\n EGAAdType[EGAAdType[\"Video\"] = 1] = \"Video\";\n EGAAdType[EGAAdType[\"RewardedVideo\"] = 2] = \"RewardedVideo\";\n EGAAdType[EGAAdType[\"Playable\"] = 3] = \"Playable\";\n EGAAdType[EGAAdType[\"Interstitial\"] = 4] = \"Interstitial\";\n EGAAdType[EGAAdType[\"OfferWall\"] = 5] = \"OfferWall\";\n EGAAdType[EGAAdType[\"Banner\"] = 6] = \"Banner\";\n })(EGAAdType = public_enums.EGAAdType || (public_enums.EGAAdType = {}));\n})(public_enums || (public_enums = {}));\n\nvar gameanalytics;\n\n(function (gameanalytics) {\n var logging;\n\n (function (logging) {\n var EGALoggerMessageType;\n\n (function (EGALoggerMessageType) {\n EGALoggerMessageType[EGALoggerMessageType[\"Error\"] = 0] = \"Error\";\n EGALoggerMessageType[EGALoggerMessageType[\"Warning\"] = 1] = \"Warning\";\n EGALoggerMessageType[EGALoggerMessageType[\"Info\"] = 2] = \"Info\";\n EGALoggerMessageType[EGALoggerMessageType[\"Debug\"] = 3] = \"Debug\";\n })(EGALoggerMessageType || (EGALoggerMessageType = {}));\n\n var GALogger = function () {\n function GALogger() {\n GALogger.debugEnabled = false;\n }\n\n GALogger.setInfoLog = function (value) {\n GALogger.instance.infoLogEnabled = value;\n };\n\n GALogger.setVerboseLog = function (value) {\n GALogger.instance.infoLogVerboseEnabled = value;\n };\n\n GALogger.i = function (format) {\n if (!GALogger.instance.infoLogEnabled) {\n return;\n }\n\n var message = \"Info/\" + GALogger.Tag + \": \" + format;\n GALogger.instance.sendNotificationMessage(message, EGALoggerMessageType.Info);\n };\n\n GALogger.w = function (format) {\n var message = \"Warning/\" + GALogger.Tag + \": \" + format;\n GALogger.instance.sendNotificationMessage(message, EGALoggerMessageType.Warning);\n };\n\n GALogger.e = function (format) {\n var message = \"Error/\" + GALogger.Tag + \": \" + format;\n GALogger.instance.sendNotificationMessage(message, EGALoggerMessageType.Error);\n };\n\n GALogger.ii = function (format) {\n if (!GALogger.instance.infoLogVerboseEnabled) {\n return;\n }\n\n var message = \"Verbose/\" + GALogger.Tag + \": \" + format;\n GALogger.instance.sendNotificationMessage(message, EGALoggerMessageType.Info);\n };\n\n GALogger.d = function (format) {\n if (!GALogger.debugEnabled) {\n return;\n }\n\n var message = \"Debug/\" + GALogger.Tag + \": \" + format;\n GALogger.instance.sendNotificationMessage(message, EGALoggerMessageType.Debug);\n };\n\n GALogger.prototype.sendNotificationMessage = function (message, type) {\n switch (type) {\n case EGALoggerMessageType.Error:\n {\n console.error(message);\n }\n break;\n\n case EGALoggerMessageType.Warning:\n {\n console.warn(message);\n }\n break;\n\n case EGALoggerMessageType.Debug:\n {\n if (typeof console.debug === \"function\") {\n console.debug(message);\n } else {\n console.log(message);\n }\n }\n break;\n\n case EGALoggerMessageType.Info:\n {\n console.log(message);\n }\n break;\n }\n };\n\n GALogger.instance = new GALogger();\n GALogger.Tag = \"GameAnalytics\";\n return GALogger;\n }();\n\n logging.GALogger = GALogger;\n })(logging = gameanalytics.logging || (gameanalytics.logging = {}));\n})(gameanalytics || (gameanalytics = {}));\n\nvar gameanalytics;\n\n(function (gameanalytics) {\n var utilities;\n\n (function (utilities) {\n var GALogger = gameanalytics.logging.GALogger;\n\n var GAUtilities = function () {\n function GAUtilities() {}\n\n GAUtilities.getHmac = function (key, data) {\n var encryptedMessage = CryptoJS.HmacSHA256(data, key);\n return CryptoJS.enc.Base64.stringify(encryptedMessage);\n };\n\n GAUtilities.stringMatch = function (s, pattern) {\n if (!s || !pattern) {\n return false;\n }\n\n return pattern.test(s);\n };\n\n GAUtilities.joinStringArray = function (v, delimiter) {\n var result = \"\";\n\n for (var i = 0, il = v.length; i < il; i++) {\n if (i > 0) {\n result += delimiter;\n }\n\n result += v[i];\n }\n\n return result;\n };\n\n GAUtilities.stringArrayContainsString = function (array, search) {\n if (array.length === 0) {\n return false;\n }\n\n for (var s in array) {\n if (array[s] === search) {\n return true;\n }\n }\n\n return false;\n };\n\n GAUtilities.encode64 = function (input) {\n input = encodeURI(input);\n var output = \"\";\n var chr1,\n chr2,\n chr3 = 0;\n var enc1,\n enc2,\n enc3,\n enc4 = 0;\n var i = 0;\n\n do {\n chr1 = input.charCodeAt(i++);\n chr2 = input.charCodeAt(i++);\n chr3 = input.charCodeAt(i++);\n enc1 = chr1 >> 2;\n enc2 = (chr1 & 3) << 4 | chr2 >> 4;\n enc3 = (chr2 & 15) << 2 | chr3 >> 6;\n enc4 = chr3 & 63;\n\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n\n output = output + GAUtilities.keyStr.charAt(enc1) + GAUtilities.keyStr.charAt(enc2) + GAUtilities.keyStr.charAt(enc3) + GAUtilities.keyStr.charAt(enc4);\n chr1 = chr2 = chr3 = 0;\n enc1 = enc2 = enc3 = enc4 = 0;\n } while (i < input.length);\n\n return output;\n };\n\n GAUtilities.decode64 = function (input) {\n var output = \"\";\n var chr1,\n chr2,\n chr3 = 0;\n var enc1,\n enc2,\n enc3,\n enc4 = 0;\n var i = 0;\n var base64test = /[^A-Za-z0-9\\+\\/\\=]/g;\n\n if (base64test.exec(input)) {\n GALogger.w(\"There were invalid base64 characters in the input text. Valid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='. Expect errors in decoding.\");\n }\n\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\n\n do {\n enc1 = GAUtilities.keyStr.indexOf(input.charAt(i++));\n enc2 = GAUtilities.keyStr.indexOf(input.charAt(i++));\n enc3 = GAUtilities.keyStr.indexOf(input.charAt(i++));\n enc4 = GAUtilities.keyStr.indexOf(input.charAt(i++));\n chr1 = enc1 << 2 | enc2 >> 4;\n chr2 = (enc2 & 15) << 4 | enc3 >> 2;\n chr3 = (enc3 & 3) << 6 | enc4;\n output = output + String.fromCharCode(chr1);\n\n if (enc3 != 64) {\n output = output + String.fromCharCode(chr2);\n }\n\n if (enc4 != 64) {\n output = output + String.fromCharCode(chr3);\n }\n\n chr1 = chr2 = chr3 = 0;\n enc1 = enc2 = enc3 = enc4 = 0;\n } while (i < input.length);\n\n return decodeURI(output);\n };\n\n GAUtilities.timeIntervalSince1970 = function () {\n var date = new Date();\n return Math.round(date.getTime() / 1000);\n };\n\n GAUtilities.createGuid = function () {\n return \"10000000-1000-4000-8000-100000000000\".replace(/[018]/g, function (c) {\n return (+c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> +c / 4).toString(16);\n });\n };\n\n GAUtilities.keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n return GAUtilities;\n }();\n\n utilities.GAUtilities = GAUtilities;\n })(utilities = gameanalytics.utilities || (gameanalytics.utilities = {}));\n})(gameanalytics || (gameanalytics = {}));\n\nvar gameanalytics;\n\n(function (gameanalytics) {\n var validators;\n\n (function (validators) {\n var GALogger = gameanalytics.logging.GALogger;\n var GAUtilities = gameanalytics.utilities.GAUtilities;\n var EGASdkErrorCategory = gameanalytics.events.EGASdkErrorCategory;\n var EGASdkErrorArea = gameanalytics.events.EGASdkErrorArea;\n var EGASdkErrorAction = gameanalytics.events.EGASdkErrorAction;\n var EGASdkErrorParameter = gameanalytics.events.EGASdkErrorParameter;\n\n var ValidationResult = function () {\n function ValidationResult(category, area, action, parameter, reason) {\n this.category = category;\n this.area = area;\n this.action = action;\n this.parameter = parameter;\n this.reason = reason;\n }\n\n return ValidationResult;\n }();\n\n validators.ValidationResult = ValidationResult;\n\n var GAValidator = function () {\n function GAValidator() {}\n\n GAValidator.validateBusinessEvent = function (currency, amount, cartType, itemType, itemId) {\n if (!GAValidator.validateCurrency(currency)) {\n GALogger.w(\"Validation fail - business event - currency: Cannot be (null) and need to be A-Z, 3 characters and in the standard at openexchangerates.org. Failed currency: \" + currency);\n return new ValidationResult(EGASdkErrorCategory.EventValidation, EGASdkErrorArea.BusinessEvent, EGASdkErrorAction.InvalidCurrency, EGASdkErrorParameter.Currency, currency);\n }\n\n if (amount < 0) {\n GALogger.w(\"Validation fail - business event - amount. Cannot be less than 0. Failed amount: \" + amount);\n return new ValidationResult(EGASdkErrorCategory.EventValidation, EGASdkErrorArea.BusinessEvent, EGASdkErrorAction.InvalidAmount, EGASdkErrorParameter.Amount, amount + \"\");\n }\n\n if (!GAValidator.validateShortString(cartType, true)) {\n GALogger.w(\"Validation fail - business event - cartType. Cannot be above 32 length. String: \" + cartType);\n return new ValidationResult(EGASdkErrorCategory.EventValidation, EGASdkErrorArea.BusinessEvent, EGASdkErrorAction.InvalidShortString, EGASdkErrorParameter.CartType, cartType);\n }\n\n if (!GAValidator.validateEventPartLength(itemType, false)) {\n GALogger.w(\"Validation fail - business event - itemType: Cannot be (null), empty or above 64 characters. String: \" + itemType);\n return new ValidationResult(EGASdkErrorCategory.EventValidation, EGASdkErrorArea.BusinessEvent, EGASdkErrorAction.InvalidEventPartLength, EGASdkErrorParameter.ItemType, itemType);\n }\n\n if (!GAValidator.validateEventPartCharacters(itemType)) {\n GALogger.w(\"Validation fail - business event - itemType: Cannot contain other characters than A-z, 0-9, -_., ()!?. String: \" + itemType);\n return new ValidationResult(EGASdkErrorCategory.EventValidation, EGASdkErrorArea.BusinessEvent, EGASdkErrorAction.InvalidEventPartCharacters, EGASdkErrorParameter.ItemType, itemType);\n }\n\n if (!GAValidator.validateEventPartLength(itemId, false)) {\n GALogger.w(\"Validation fail - business event - itemId. Cannot be (null), empty or above 64 characters. String: \" + itemId);\n return new ValidationResult(EGASdkErrorCategory.EventValidation, EGASdkErrorArea.BusinessEvent, EGASdkErrorAction.InvalidEventPartLength, EGASdkErrorParameter.ItemId, itemId);\n }\n\n if (!GAValidator.validateEventPartCharacters(itemId)) {\n GALogger.w(\"Validation fail - business event - itemId: Cannot contain other characters than A-z, 0-9, -_., ()!?. String: \" + itemId);\n return new ValidationResult(EGASdkErrorCategory.EventValidation, EGASdkErrorArea.BusinessEvent, EGASdkErrorAction.InvalidEventPartCharacters, EGASdkErrorParameter.ItemId, itemId);\n }\n\n return null;\n };\n\n GAValidator.validateResourceEvent = function (flowType, currency, amount, itemType, itemId, availableCurrencies, availableItemTypes) {\n if (flowType == gameanalytics.EGAResourceFlowType.Undefined) {\n GALogger.w(\"Validation fail - resource event - flowType: Invalid flow type.\");\n return new ValidationResult(EGASdkErrorCategory.EventValidation, EGASdkErrorArea.ResourceEvent, EGASdkErrorAction.InvalidFlowType, EGASdkErrorParameter.FlowType, \"\");\n }\n\n if (!currency) {\n GALogger.w(\"Validation fail - resource event - currency: Cannot be (null)\");\n return new ValidationResult(EGASdkErrorCategory.EventValidation, EGASdkErrorArea.ResourceEvent, EGASdkErrorAction.StringEmptyOrNull, EGASdkErrorParameter.Currency, \"\");\n }\n\n if (!GAUtilities.stringArrayContainsString(availableCurrencies, currency)) {\n GALogger.w(\"Validation fail - resource event - currency: Not found in list of pre-defined available resource currencies. String: \" + currency);\n return new ValidationResult(EGASdkErrorCategory.EventValidation, EGASdkErrorArea.ResourceEvent, EGASdkErrorAction.NotFoundInAvailableCurrencies, EGASdkErrorParameter.Currency, currency);\n }\n\n if (!(amount > 0)) {\n GALogger.w(\"Validation fail - resource event - amount: Float amount cannot be 0 or negative. Value: \" + amount);\n return new ValidationResult(EGASdkErrorCategory.EventValidation, EGASdkErrorArea.ResourceEvent, EGASdkErrorAction.InvalidAmount, EGASdkErrorParameter.Amount, amount + \"\");\n }\n\n if (!itemType) {\n GALogger.w(\"Validation fail - resource event - itemType: Cannot be (null)\");\n return new ValidationResult(EGASdkErrorCategory.EventValidation, EGASdkErrorArea.ResourceEvent, EGASdkErrorAction.StringEmptyOrNull, EGASdkErrorParameter.ItemType, \"\");\n }\n\n if (!GAValidator.validateEventPartLength(itemType, false)) {\n GALogger.w(\"Validation fail - resource event - itemType: Cannot be (null), empty or above 64 characters. String: \" + itemType);\n return new ValidationResult(EGASdkErrorCategory.EventValidation, EGASdkErrorArea.ResourceEvent, EGASdkErrorAction.InvalidEventPartLength, EGASdkErrorParameter.ItemType, itemType);\n }\n\n if (!GAValidator.validateEventPartCharacters(itemType)) {\n GALogger.w(\"Validation fail - resource event - itemType: Cannot contain other characters than A-z, 0-9, -_., ()!?. String: \" + itemType);\n return new ValidationResult(EGASdkErrorCategory.EventValidation, EGASdkErrorArea.ResourceEvent, EGASdkErrorAction.InvalidEventPartCharacters, EGASdkErrorParameter.ItemType, itemType);\n }\n\n if (!GAUtilities.stringArrayContainsString(availableItemTypes, itemType)) {\n GALogger.w(\"Validation fail - resource event - itemType: Not found in list of pre-defined available resource itemTypes. String: \" + itemType);\n return new ValidationResult(EGASdkErrorCategory.EventValidation, EGASdkErrorArea.ResourceEvent, EGASdkErrorAction.NotFoundInAvailableItemTypes, EGASdkErrorParameter.ItemType, itemType);\n }\n\n if (!GAValidator.validateEventPartLength(itemId, false)) {\n GALogger.w(\"Validation fail - resource event - itemId: Cannot be (null), empty or above 64 characters. String: \" + itemId);\n return new ValidationResult(EGASdkErrorCategory.EventValidation, EGASdkErrorArea.ResourceEvent, EGASdkErrorAction.InvalidEventPartLength, EGASdkErrorParameter.ItemId, itemId);\n }\n\n if (!GAValidator.validateEventPartCharacters(itemId)) {\n GALogger.w(\"Validation fail - resource event - itemId: Cannot contain other characters than A-z, 0-9, -_., ()!?. String: \" + itemId);\n return new ValidationResult(EGASdkErrorCategory.EventValidation, EGASdkErrorArea.ResourceEvent, EGASdkErrorAction.InvalidEventPartCharacters, EGASdkErrorParameter.ItemId, itemId);\n }\n\n return null;\n };\n\n GAValidator.validateProgressionEvent = function (progressionStatus, progression01, progression02, progression03) {\n if (progressionStatus == gameanalytics.EGAProgressionStatus.Undefined) {\n GALogger.w(\"Validation fail - progression event: Invalid progression status.\");\n return new ValidationResult(EGASdkErrorCategory.EventValidation, EGASdkErrorArea.ProgressionEvent, EGASdkErrorAction.InvalidProgressionStatus, EGASdkErrorParameter.ProgressionStatus, \"\");\n }\n\n if (progression03 && !(progression02 || !progression01)) {\n GALogger.w(\"Validation fail - progression event: 03 found but 01+02 are invalid. Progression must be set as either 01, 01+02 or 01+02+03.\");\n return new ValidationResult(EGASdkErrorCategory.EventValidation, EGASdkErrorArea.ProgressionEvent, EGASdkErrorAction.WrongProgressionOrder, EGASdkErrorParameter.Undefined, progression01 + \":\" + progression02 + \":\" + progression03);\n } else if (progression02 && !progression01) {\n GALogger.w(\"Validation fail - progression event: 02 found but not 01. Progression must be set as either 01, 01+02 or 01+02+03\");\n return new ValidationResult(EGASdkErrorCategory.EventValidation, EGASdkErrorArea.ProgressionEvent, EGASdkErrorAction.WrongProgressionOrder, EGASdkErrorParameter.Undefined, progression01 + \":\" + progression02 + \":\" + progression03);\n } else if (!progression01) {\n GALogger.w(\"Validation fail - progression event: progression01 not valid. Progressions must be set as either 01, 01+02 or 01+02+03\");\n return new ValidationResult(EGASdkErrorCategory.EventValidation, EGASdkErrorArea.ProgressionEvent, EGASdkErrorAction.WrongProgressionOrder, EGASdkErrorParameter.Undefined, (progression01 ? progression01 : \"\") + \":\" + (progression02 ? progression02 : \"\") + \":\" + (progression03 ? progression03 : \"\"));\n }\n\n if (!GAValidator.validateEventPartLength(progression01, false)) {\n GALogger.w(\"Validation fail - progression event - progression01: Cannot be (null), empty or above 64 characters. String: \" + progression01);\n return new ValidationResult(EGASdkErrorCategory.EventValidation, EGASdkErrorArea.ProgressionEvent, EGASdkErrorAction.InvalidEventPartLength, EGASdkErrorParameter.Progression01, progression01);\n }\n\n if (!GAValidator.validateEventPartCharacters(progression01)) {\n GALogger.w(\"Validation fail - progression event - progression01: Cannot contain other characters than A-z, 0-9, -_., ()!?. String: \" + progression01);\n return new ValidationResult(EGASdkErrorCategory.EventValidation, EGASdkErrorArea.ProgressionEvent, EGASdkErrorAction.InvalidEventPartCharacters, EGASdkErrorParameter.Progression01, progression01);\n }\n\n if (progression02) {\n if (!GAValidator.validateEventPartLength(progression02, true)) {\n GALogger.w(\"Validation fail - progression event - progression02: Cannot be empty or above 64 characters. String: \" + progression02);\n return new ValidationResult(EGASdkErrorCategory.EventValidation, EGASdkErrorArea.ProgressionEvent, EGASdkErrorAction.InvalidEventPartLength, EGASdkErrorParameter.Progression02, progression02);\n }\n\n if (!GAValidator.validateEventPartCharacters(progression02)) {\n GALogger.w(\"Validation fail - progression event - progression02: Cannot contain other characters than A-z, 0-9, -_., ()!?. String: \" + progression02);\n return new ValidationResult(EGASdkErrorCategory.EventValidation, EGASdkErrorArea.ProgressionEvent, EGASdkErrorAction.InvalidEventPartCharacters, EGASdkErrorParameter.Progression02, progression02);\n }\n }\n\n if (progression03) {\n if (!GAValidator.validateEventPartLength(progression03, true)) {\n GALogger.w(\"Validation fail - progression event - progression03: Cannot be empty or above 64 characters. String: \" + progression03);\n return new ValidationResult(EGASdkErrorCategory.EventValidation, EGASdkErrorArea.ProgressionEvent, EGASdkErrorAction.InvalidEventPartLength, EGASdkErrorParameter.Progression03, progression03);\n }\n\n if (!GAValidator.validateEventPartCharacters(progression03)) {\n GALogger.w(\"Validation fail - progression event - progression03: Cannot contain other characters than A-z, 0-9, -_., ()!?. String: \" + progression03);\n return new ValidationResult(EGASdkErrorCategory.EventValidation, EGASdkErrorArea.ProgressionEvent, EGASdkErrorAction.InvalidEventPartCharacters, EGASdkErrorParameter.Progression03, progression03);\n }\n }\n\n return null;\n };\n\n GAValidator.validateDesignEvent = function (eventId) {\n if (!GAValidator.validateEventIdLength(eventId)) {\n GALogger.w(\"Validation fail - design event - eventId: Cannot be (null) or empty. Only 5 event parts allowed seperated by :. Each part need to be 64 characters or less. String: \" + eventId);\n return new ValidationResult(EGASdkErrorCategory.EventValidation, EGASdkErrorArea.DesignEvent, EGASdkErrorAction.InvalidEventIdLength, EGASdkErrorParameter.EventId, eventId);\n }\n\n if (!GAValidator.validateEventIdCharacters(eventId)) {\n GALogger.w(\"Validation fail - design event - eventId: Non valid characters. Only allowed A-z, 0-9, -_., ()!?. String: \" + eventId);\n return new ValidationResult(EGASdkErrorCategory.EventValidation, EGASdkErrorArea.DesignEvent, EGASdkErrorAction.InvalidEventIdCharacters, EGASdkErrorParameter.EventId, eventId);\n }\n\n return null;\n };\n\n GAValidator.validateErrorEvent = function (severity, message) {\n if (severity == gameanalytics.EGAErrorSeverity.Undefined) {\n GALogger.w(\"Validation fail - error event - severity: Severity was unsupported value.\");\n return new ValidationResult(EGASdkErrorCategory.EventValidation, EGASdkErrorArea.ErrorEvent, EGASdkErrorAction.InvalidSeverity, EGASdkErrorParameter.Severity, \"\");\n }\n\n if (!GAValidator.validateLongString(message, true)) {\n GALogger.w(\"Validation fail - error event - message: Message cannot be above 8192 characters.\");\n return new ValidationResult(EGASdkErrorCategory.EventValidation, EGASdkErrorArea.ErrorEvent, EGASdkErrorAction.InvalidLongString, EGASdkErrorParameter.Message, message);\n }\n\n return null;\n };\n\n GAValidator.validateAdEvent = function (adAction, adType, adSdkName, adPlacement) {\n if (adAction == gameanalytics.EGAAdAction.Undefined) {\n GALogger.w(\"Validation fail - error event - severity: Severity was unsupported value.\");\n return new ValidationResult(EGASdkErrorCategory.EventValidation, EGASdkErrorArea.AdEvent, EGASdkErrorAction.InvalidAdAction, EGASdkErrorParameter.AdAction, \"\");\n }\n\n if (adType == gameanalytics.EGAAdType.Undefined) {\n GALogger.w(\"Validation fail - ad event - adType: Ad type was unsupported value.\");\n return new ValidationResult(EGASdkErrorCategory.EventValidation, EGASdkErrorArea.AdEvent, EGASdkErrorAction.InvalidAdType, EGASdkErrorParameter.AdType, \"\");\n }\n\n if (!GAValidator.validateShortString(adSdkName, false)) {\n GALogger.w(\"Validation fail - ad event - message: Ad SDK name cannot be above 32 characters.\");\n return new ValidationResult(EGASdkErrorCategory.EventValidation, EGASdkErrorArea.AdEvent, EGASdkErrorAction.InvalidShortString, EGASdkErrorParameter.AdSdkName, adSdkName);\n }\n\n if (!GAValidator.validateString(adPlacement, false)) {\n GALogger.w(\"Validation fail - ad event - message: Ad placement cannot be above 64 characters.\");\n return new ValidationResult(EGASdkErrorCategory.EventValidation, EGASdkErrorArea.AdEvent, EGASdkErrorAction.InvalidString, EGASdkErrorParameter.AdPlacement, adPlacement);\n }\n\n return null;\n };\n\n GAValidator.validateSdkErrorEvent = function (gameKey, gameSecret, category, area, action) {\n if (!GAValidator.validateKeys(gameKey, gameSecret)) {\n return false;\n }\n\n if (category === EGASdkErrorCategory.Undefined) {\n GALogger.w(\"Validation fail - sdk error event - type: Category was unsupported value.\");\n return false;\n }\n\n if (area === EGASdkErrorArea.Undefined) {\n GALogger.w(\"Validation fail - sdk error event - type: Area was unsupported value.\");\n return false;\n }\n\n if (action === EGASdkErrorAction.Undefined) {\n GALogger.w(\"Validation fail - sdk error event - type: Action was unsupported value.\");\n return false;\n }\n\n return true;\n };\n\n GAValidator.validateKeys = function (gameKey, gameSecret) {\n if (GAUtilities.stringMatch(gameKey, /^[A-z0-9]{32}$/)) {\n if (GAUtilities.stringMatch(gameSecret, /^[A-z0-9]{40}$/)) {\n return true;\n }\n }\n\n return false;\n };\n\n GAValidator.validateCurrency = function (currency) {\n if (!currency) {\n return false;\n }\n\n if (!GAUtilities.stringMatch(currency, /^[A-Z]{3}$/)) {\n return false;\n }\n\n return true;\n };\n\n GAValidator.validateEventPartLength = function (eventPart, allowNull) {\n if (allowNull && !eventPart) {\n return true;\n }\n\n if (!eventPart) {\n return false;\n }\n\n if (eventPart.length > 64) {\n return false;\n }\n\n return true;\n };\n\n GAValidator.validateEventPartCharacters = function (eventPart) {\n if (!GAUtilities.stringMatch(eventPart, /^[A-Za-z0-9\\s\\-_\\.\\(\\)\\!\\?]{1,64}$/)) {\n return false;\n }\n\n return true;\n };\n\n GAValidator.validateEventIdLength = function (eventId) {\n if (!eventId) {\n return false;\n }\n\n if (!GAUtilities.stringMatch(eventId, /^[^:]{1,64}(?::[^:]{1,64}){0,4}$/)) {\n return false;\n }\n\n return true;\n };\n\n GAValidator.validateEventIdCharacters = function (eventId) {\n if (!eventId) {\n return false;\n }\n\n if (!GAUtilities.stringMatch(eventId, /^[A-Za-z0-9\\s\\-_\\.\\(\\)\\!\\?]{1,64}(:[A-Za-z0-9\\s\\-_\\.\\(\\)\\!\\?]{1,64}){0,4}$/)) {\n return false;\n }\n\n return true;\n };\n\n GAValidator.validateAndCleanInitRequestResponse = function (initResponse, configsCreated) {\n if (initResponse == null) {\n GALogger.w(\"validateInitRequestResponse failed - no response dictionary.\");\n return null;\n }\n\n var validatedDict = {};\n\n try {\n var serverTsNumber = initResponse[\"server_ts\"];\n\n if (serverTsNumber > 0) {\n validatedDict[\"server_ts\"] = serverTsNumber;\n } else {\n GALogger.w(\"validateInitRequestResponse failed - invalid value in 'server_ts' field.\");\n return null;\n }\n } catch (e) {\n GALogger.w(\"validateInitRequestResponse failed - invalid type in 'server_ts' field. type=\" + typeof initResponse[\"server_ts\"] + \", value=\" + initResponse[\"server_ts\"] + \", \" + e);\n return null;\n }\n\n if (configsCreated) {\n try {\n var configurations = initResponse[\"configs\"];\n validatedDict[\"configs\"] = configurations;\n } catch (e) {\n GALogger.w(\"validateInitRequestResponse failed - invalid type in 'configs' field. type=\" + typeof initResponse[\"configs\"] + \", value=\" + initResponse[\"configs\"] + \", \" + e);\n return null;\n }\n\n try {\n var configs_hash = initResponse[\"configs_hash\"];\n validatedDict[\"configs_hash\"] = configs_hash;\n } catch (e) {\n GALogger.w(\"validateInitRequestResponse failed - invalid type in 'configs_hash' field. type=\" + typeof initResponse[\"configs_hash\"] + \", value=\" + initResponse[\"configs_hash\"] + \", \" + e);\n return null;\n }\n\n try {\n var ab_id = initResponse[\"ab_id\"];\n validatedDict[\"ab_id\"] = ab_id;\n } catch (e) {\n GALogger.w(\"validateInitRequestResponse failed - invalid type in 'ab_id' field. type=\" + typeof initResponse[\"ab_id\"] + \", value=\" + initResponse[\"ab_id\"] + \", \" + e);\n return null;\n }\n\n try {\n var ab_variant_id = initResponse[\"ab_variant_id\"];\n validatedDict[\"ab_variant_id\"] = ab_variant_id;\n } catch (e) {\n GALogger.w(\"validateInitRequestResponse failed - invalid type in 'ab_variant_id' field. type=\" + typeof initResponse[\"ab_variant_id\"] + \", value=\" + initResponse[\"ab_variant_id\"] + \", \" + e);\n return null;\n }\n }\n\n return validatedDict;\n };\n\n GAValidator.validateBuild = function (build) {\n if (!GAValidator.validateShortString(build, false)) {\n return false;\n }\n\n return true;\n };\n\n GAValidator.validateSdkWrapperVersion = function (wrapperVersion) {\n if (!GAUtilities.stringMatch(wrapperVersion, /^(unity|unreal|gamemaker|cocos2d|construct|defold|godot|flutter) [0-9]{0,5}(\\.[0-9]{0,5}){0,2}$/)) {\n return false;\n }\n\n return true;\n };\n\n GAValidator.validateEngineVersion = function (engineVersion) {\n if (!engineVersion || !GAUtilities.stringMatch(engineVersion, /^(unity|unreal|gamemaker|cocos2d|construct|defold|godot) [0-9]{0,5}(\\.[0-9]{0,5}){0,2}$/)) {\n return false;\n }\n\n return true;\n };\n\n GAValidator.validateUserId = function (uId) {\n if (!GAValidator.validateString(uId, false)) {\n GALogger.w(\"Validation fail - user id: id cannot be (null), empty or above 64 characters.\");\n return false;\n }\n\n return true;\n };\n\n GAValidator.validateShortString = function (shortString, canBeEmpty) {\n if (canBeEmpty && !shortString) {\n return true;\n }\n\n if (!shortString || shortString.length > 32) {\n return false;\n }\n\n return true;\n };\n\n GAValidator.validateString = function (s, canBeEmpty) {\n if (canBeEmpty && !s) {\n return true;\n }\n\n if (!s || s.length > 64) {\n return false;\n }\n\n return true;\n };\n\n GAValidator.validateLongString = function (longString, canBeEmpty) {\n if (canBeEmpty && !longString) {\n return true;\n }\n\n if (!longString || longString.length > 8192) {\n return false;\n }\n\n return true;\n };\n\n GAValidator.validateConnectionType = function (connectionType) {\n return GAUtilities.stringMatch(connectionType, /^(wwan|wifi|lan|offline)$/);\n };\n\n GAValidator.validateCustomDimensions = function (customDimensions) {\n return GAValidator.validateArrayOfStrings(20, 32, false, \"custom dimensions\", customDimensions);\n };\n\n GAValidator.validateResourceCurrencies = function (resourceCurrencies) {\n if (!GAValidator.validateArrayOfStrings(20, 64, false, \"resource currencies\", resourceCurrencies)) {\n return false;\n }\n\n for (var i = 0; i < resourceCurrencies.length; ++i) {\n if (!GAUtilities.stringMatch(resourceCurrencies[i], /^[A-Za-z]+$/)) {\n GALogger.w(\"resource currencies validation failed: a resource currency can only be A-Z, a-z. String was: \" + resourceCurrencies[i]);\n return false;\n }\n }\n\n return true;\n };\n\n GAValidator.validateResourceItemTypes = function (resourceItemTypes) {\n if (!GAValidator.validateArrayOfStrings(20, 32, false, \"resource item types\", resourceItemTypes)) {\n return false;\n }\n\n for (var i = 0; i < resourceItemTypes.length; ++i) {\n if (!GAValidator.validateEventPartCharacters(resourceItemTypes[i])) {\n GALogger.w(\"resource item types validation failed: a resource item type cannot contain other characters than A-z, 0-9, -_., ()!?. String was: \" + resourceItemTypes[i]);\n return false;\n }\n }\n\n return true;\n };\n\n GAValidator.validateDimension01 = function (dimension01, availableDimensions) {\n if (!dimension01) {\n return true;\n }\n\n if (!GAUtilities.stringArrayContainsString(availableDimensions, dimension01)) {\n return false;\n }\n\n return true;\n };\n\n GAValidator.validateDimension02 = function (dimension02, availableDimensions) {\n if (!dimension02) {\n return true;\n }\n\n if (!GAUtilities.stringArrayContainsString(availableDimensions, dimension02)) {\n return false;\n }\n\n return true;\n };\n\n GAValidator.validateDimension03 = function (dimension03, availableDimensions) {\n if (!dimension03) {\n return true;\n }\n\n if (!GAUtilities.stringArrayContainsString(availableDimensions, dimension03)) {\n return false;\n }\n\n return true;\n };\n\n GAValidator.validateArrayOfStrings = function (maxCount, maxStringLength, allowNoValues, logTag, arrayOfStrings) {\n var arrayTag = logTag;\n\n if (!arrayTag) {\n arrayTag = \"Array\";\n }\n\n if (!arrayOfStrings) {\n GALogger.w(arrayTag + \" validation failed: array cannot be null. \");\n return false;\n }\n\n if (allowNoValues == false && arrayOfStrings.length == 0) {\n GALogger.w(arrayTag + \" validation failed: array cannot be empty. \");\n return false;\n }\n\n if (maxCount > 0 && arrayOfStrings.length > maxCount) {\n GALogger.w(arrayTag + \" validation failed: array cannot exceed \" + maxCount + \" values. It has \" + arrayOfStrings.length + \" values.\");\n return false;\n }\n\n for (var i = 0; i < arrayOfStrings.length; ++i) {\n var stringLength = !arrayOfStrings[i] ? 0 : arrayOfStrings[i].length;\n\n if (stringLength === 0) {\n GALogger.w(arrayTag + \" validation failed: contained an empty string. Array=\" + JSON.stringify(arrayOfStrings));\n return false;\n }\n\n if (maxStringLength > 0 && stringLength > maxStringLength) {\n GALogger.w(arrayTag + \" validation failed: a string exceeded max allowed length (which is: \" + maxStringLength + \"). String was: \" + arrayOfStrings[i]);\n return false;\n }\n }\n\n return true;\n };\n\n GAValidator.validateClientTs = function (clientTs) {\n if (clientTs < 0 || clientTs > 99999999999) {\n return false;\n }\n\n return true;\n };\n\n return GAValidator;\n }();\n\n validators.GAValidator = GAValidator;\n })(validators = gameanalytics.validators || (gameanalytics.validators = {}));\n})(gameanalytics || (gameanalytics = {}));\n\nvar gameanalytics;\n\n(function (gameanalytics) {\n var device;\n\n (function (device) {\n var NameValueVersion = function () {\n function NameValueVersion(name, value, version) {\n this.name = name;\n this.value = value;\n this.version = version;\n }\n\n return NameValueVersion;\n }();\n\n device.NameValueVersion = NameValueVersion;\n\n var NameVersion = function () {\n function NameVersion(name, version) {\n this.name = name;\n this.version = version;\n }\n\n return NameVersion;\n }();\n\n device.NameVersion = NameVersion;\n\n var GADevice = function () {\n function GADevice() {}\n\n GADevice.touch = function () {};\n\n GADevice.getRelevantSdkVersion = function () {\n if (GADevice.sdkGameEngineVersion) {\n return GADevice.sdkGameEngineVersion;\n }\n\n return GADevice.sdkWrapperVersion;\n };\n\n GADevice.getConnectionType = function () {\n return GADevice.connectionType;\n };\n\n GADevice.updateConnectionType = function () {\n if (navigator.onLine) {\n if (GADevice.buildPlatform === \"ios\" || GADevice.buildPlatform === \"android\") {\n GADevice.connectionType = \"wwan\";\n } else {\n GADevice.connectionType = \"lan\";\n }\n } else {\n GADevice.connectionType = \"offline\";\n }\n };\n\n GADevice.getOSVersionString = function () {\n return GADevice.buildPlatform + \" \" + GADevice.osVersionPair.version;\n };\n\n GADevice.runtimePlatformToString = function () {\n return GADevice.osVersionPair.name;\n };\n\n GADevice.getBrowserVersionString = function () {\n var ua = navigator.userAgent;\n var tem;\n var M = ua.match(/(opera|chrome|safari|firefox|ubrowser|msie|trident|fbav(?=\\/))\\/?\\s*(\\d+)/i) || [];\n\n if (M.length == 0) {\n if (GADevice.buildPlatform === \"ios\") {\n return \"webkit_\" + GADevice.osVersion;\n }\n }\n\n if (/trident/i.test(M[1])) {\n tem = /\\brv[ :]+(\\d+)/g.exec(ua) || [];\n return 'IE ' + (tem[1] || '');\n }\n\n if (M[1] === 'Chrome') {\n tem = ua.match(/\\b(OPR|Edge|UBrowser)\\/(\\d+)/);\n\n if (tem != null) {\n return tem.slice(1).join(' ').replace('OPR', 'Opera').replace('UBrowser', 'UC').toLowerCase();\n }\n }\n\n if (M[1] && M[1].toLowerCase() === 'fbav') {\n M[1] = \"facebook\";\n\n if (M[2]) {\n return \"facebook \" + M[2];\n }\n }\n\n var MString = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?'];\n\n if ((tem = ua.match(/version\\/(\\d+)/i)) != null) {\n MString.splice(1, 1, tem[1]);\n }\n\n return MString.join(' ').toLowerCase();\n };\n\n GADevice.getDeviceModel = function () {\n var result = \"unknown\";\n return result;\n };\n\n GADevice.getDeviceManufacturer = function () {\n var result = \"unknown\";\n return result;\n };\n\n GADevice.matchItem = function (agent, data) {\n var result = new NameVersion(\"unknown\", \"0.0.0\");\n var i = 0;\n var j = 0;\n var regex;\n var regexv;\n var match;\n var matches;\n var mathcesResult;\n var version;\n\n for (i = 0; i < data.length; i += 1) {\n regex = new RegExp(data[i].value, 'i');\n match = regex.test(agent);\n\n if (match) {\n regexv = new RegExp(data[i].version + '[- /:;]([\\\\d._]+)', 'i');\n matches = agent.match(regexv);\n version = '';\n\n if (matches) {\n if (matches[1]) {\n mathcesResult = matches[1];\n }\n }\n\n if (mathcesResult) {\n var matchesArray = mathcesResult.split(/[._]+/);\n\n for (j = 0; j < Math.min(matchesArray.length, 3); j += 1) {\n version += matchesArray[j] + (j < Math.min(matchesArray.length, 3) - 1 ? '.' : '');\n }\n } else {\n version = '0.0.0';\n }\n\n result.name = data[i].name;\n result.version = version;\n return result;\n }\n }\n\n return result;\n };\n\n GADevice.sdkWrapperVersion = \"javascript 4.4.5\";\n GADevice.osVersionPair = GADevice.matchItem([navigator.platform, navigator.userAgent, navigator.appVersion, navigator.vendor].join(' '), [new NameValueVersion(\"windows_phone\", \"Windows Phone\", \"OS\"), new NameValueVersion(\"windows\", \"Win\", \"NT\"), new NameValueVersion(\"ios\", \"iPhone\", \"OS\"), new NameValueVersion(\"ios\", \"iPad\", \"OS\"), new NameValueVersion(\"ios\", \"iPod\", \"OS\"), new NameValueVersion(\"android\", \"Android\", \"Android\"), new NameValueVersion(\"blackBerry\", \"BlackBerry\", \"/\"), new NameValueVersion(\"mac_osx\", \"Mac\", \"OS X\"), new NameValueVersion(\"tizen\", \"Tizen\", \"Tizen\"), new NameValueVersion(\"linux\", \"Linux\", \"rv\"), new NameValueVersion(\"kai_os\", \"KAIOS\", \"KAIOS\")]);\n GADevice.buildPlatform = GADevice.runtimePlatformToString();\n GADevice.deviceModel = GADevice.getDeviceModel();\n GADevice.deviceManufacturer = GADevice.getDeviceManufacturer();\n GADevice.osVersion = GADevice.getOSVersionString();\n GADevice.browserVersion = GADevice.getBrowserVersionString();\n return GADevice;\n }();\n\n device.GADevice = GADevice;\n })(device = gameanalytics.device || (gameanalytics.device = {}));\n})(gameanalytics || (gameanalytics = {}));\n\nvar gameanalytics;\n\n(function (gameanalytics) {\n var threading;\n\n (function (threading) {\n var TimedBlock = function () {\n function TimedBlock(deadline) {\n this.deadline = deadline;\n this.ignore = false;\n this.async = false;\n this.running = false;\n this.id = ++TimedBlock.idCounter;\n }\n\n TimedBlock.idCounter = 0;\n return TimedBlock;\n }();\n\n threading.TimedBlock = TimedBlock;\n })(threading = gameanalytics.threading || (gameanalytics.threading = {}));\n})(gameanalytics || (gameanalytics = {}));\n\nvar gameanalytics;\n\n(function (gameanalytics) {\n var threading;\n\n (function (threading) {\n var PriorityQueue = function () {\n function PriorityQueue(priorityComparer) {\n this.comparer = priorityComparer;\n this._subQueues = {};\n this._sortedKeys = [];\n }\n\n PriorityQueue.prototype.enqueue = function (priority, item) {\n if (this._sortedKeys.indexOf(priority) === -1) {\n this.addQueueOfPriority(priority);\n }\n\n this._subQueues[priority].push(item);\n };\n\n PriorityQueue.prototype.addQueueOfPriority = function (priority) {\n var _this = this;\n\n this._sortedKeys.push(priority);\n\n this._sortedKeys.sort(function (x, y) {\n return _this.comparer.compare(x, y);\n });\n\n this._subQueues[priority] = [];\n };\n\n PriorityQueue.prototype.peek = function () {\n if (this.hasItems()) {\n return this._subQueues[this._sortedKeys[0]][0];\n } else {\n throw new Error(\"The queue is empty\");\n }\n };\n\n PriorityQueue.prototype.hasItems = function () {\n return this._sortedKeys.length > 0;\n };\n\n PriorityQueue.prototype.dequeue = function () {\n if (this.hasItems()) {\n return this.dequeueFromHighPriorityQueue();\n } else {\n throw new Error(\"The queue is empty\");\n }\n };\n\n PriorityQueue.prototype.dequeueFromHighPriorityQueue = function () {\n var firstKey = this._sortedKeys[0];\n\n var nextItem = this._subQueues[firstKey].shift();\n\n if (this._subQueues[firstKey].length === 0) {\n this._sortedKeys.shift();\n\n delete this._subQueues[firstKey];\n }\n\n return nextItem;\n };\n\n return PriorityQueue;\n }();\n\n threading.PriorityQueue = PriorityQueue;\n })(threading = gameanalytics.threading || (gameanalytics.threading = {}));\n})(gameanalytics || (gameanalytics = {}));\n\nvar gameanalytics;\n\n(function (gameanalytics) {\n var store;\n\n (function (store_1) {\n var GALogger = gameanalytics.logging.GALogger;\n var EGAStoreArgsOperator;\n\n (function (EGAStoreArgsOperator) {\n EGAStoreArgsOperator[EGAStoreArgsOperator[\"Equal\"] = 0] = \"Equal\";\n EGAStoreArgsOperator[EGAStoreArgsOperator[\"LessOrEqual\"] = 1] = \"LessOrEqual\";\n EGAStoreArgsOperator[EGAStoreArgsOperator[\"NotEqual\"] = 2] = \"NotEqual\";\n })(EGAStoreArgsOperator = store_1.EGAStoreArgsOperator || (store_1.EGAStoreArgsOperator = {}));\n\n var EGAStore;\n\n (function (EGAStore) {\n EGAStore[EGAStore[\"Events\"] = 0] = \"Events\";\n EGAStore[EGAStore[\"Sessions\"] = 1] = \"Sessions\";\n EGAStore[EGAStore[\"Progression\"] = 2] = \"Progression\";\n })(EGAStore = store_1.EGAStore || (store_1.EGAStore = {}));\n\n var GAStore = function () {\n function GAStore() {\n this.eventsStore = [];\n this.sessionsStore = [];\n this.progressionStore = [];\n this.storeItems = {};\n\n try {\n if (typeof localStorage === 'object') {\n localStorage.setItem('testingLocalStorage', 'yes');\n localStorage.removeItem('testingLocalStorage');\n GAStore.storageAvailable = true;\n } else {\n GAStore.storageAvailable = false;\n }\n } catch (e) {}\n }\n\n GAStore.isStorageAvailable = function () {\n return GAStore.storageAvailable;\n };\n\n GAStore.isStoreTooLargeForEvents = function () {\n return GAStore.instance.eventsStore.length + GAStore.instance.sessionsStore.length > GAStore.MaxNumberOfEntries;\n };\n\n GAStore.select = function (store, args, sort, maxCount) {\n if (args === void 0) {\n args = [];\n }\n\n if (sort === void 0) {\n sort = false;\n }\n\n if (maxCount === void 0) {\n maxCount = 0;\n }\n\n var currentStore = GAStore.getStore(store);\n\n if (!currentStore) {\n return null;\n }\n\n var result = [];\n\n for (var i = 0; i < currentStore.length; ++i) {\n var entry = currentStore[i];\n var add = true;\n\n for (var j = 0; j < args.length; ++j) {\n var argsEntry = args[j];\n\n if (entry[argsEntry[0]]) {\n switch (argsEntry[1]) {\n case EGAStoreArgsOperator.Equal:\n {\n add = entry[argsEntry[0]] == argsEntry[2];\n }\n break;\n\n case EGAStoreArgsOperator.LessOrEqual:\n {\n add = entry[argsEntry[0]] <= argsEntry[2];\n }\n break;\n\n case EGAStoreArgsOperator.NotEqual:\n {\n add = entry[argsEntry[0]] != argsEntry[2];\n }\n break;\n\n default:\n {\n add = false;\n }\n break;\n }\n } else {\n add = false;\n }\n\n if (!add) {\n break;\n }\n }\n\n if (add) {\n result.push(entry);\n }\n }\n\n if (sort) {\n result.sort(function (a, b) {\n return a[\"client_ts\"] - b[\"client_ts\"];\n });\n }\n\n if (maxCount > 0 && result.length > maxCount) {\n result = result.slice(0, maxCount + 1);\n }\n\n return result;\n };\n\n GAStore.update = function (store, setArgs, whereArgs) {\n if (whereArgs === void 0) {\n whereArgs = [];\n }\n\n var currentStore = GAStore.getStore(store);\n\n if (!currentStore) {\n return false;\n }\n\n for (var i = 0; i < currentStore.length; ++i) {\n var entry = currentStore[i];\n var update = true;\n\n for (var j = 0; j < whereArgs.length; ++j) {\n var argsEntry = whereArgs[j];\n\n if (entry[argsEntry[0]]) {\n switch (argsEntry[1]) {\n case EGAStoreArgsOperator.Equal:\n {\n update = entry[argsEntry[0]] == argsEntry[2];\n }\n break;\n\n case EGAStoreArgsOperator.LessOrEqual:\n {\n update = entry[argsEntry[0]] <= argsEntry[2];\n }\n break;\n\n case EGAStoreArgsOperator.NotEqual:\n {\n update = entry[argsEntry[0]] != argsEntry[2];\n }\n break;\n\n default:\n {\n update = false;\n }\n break;\n }\n } else {\n update = false;\n }\n\n if (!update) {\n break;\n }\n }\n\n if (update) {\n for (var j = 0; j < setArgs.length; ++j) {\n var setArgsEntry = setArgs[j];\n entry[setArgsEntry[0]] = setArgsEntry[1];\n }\n }\n }\n\n return true;\n };\n\n GAStore[\"delete\"] = function (store, args) {\n var currentStore = GAStore.getStore(store);\n\n if (!currentStore) {\n return;\n }\n\n for (var i = 0; i < currentStore.length; ++i) {\n var entry = currentStore[i];\n var del = true;\n\n for (var j = 0; j < args.length; ++j) {\n var argsEntry = args[j];\n\n if (entry[argsEntry[0]]) {\n switch (argsEntry[1]) {\n case EGAStoreArgsOperator.Equal:\n {\n del = entry[argsEntry[0]] == argsEntry[2];\n }\n break;\n\n case EGAStoreArgsOperator.LessOrEqual:\n {\n del = entry[argsEntry[0]] <= argsEntry[2];\n }\n break;\n\n case EGAStoreArgsOperator.NotEqual:\n {\n del = entry[argsEntry[0]] != argsEntry[2];\n }\n break;\n\n default:\n {\n del = false;\n }\n break;\n }\n } else {\n del = false;\n }\n\n if (!del) {\n break;\n }\n }\n\n if (del) {\n currentStore.splice(i, 1);\n --i;\n }\n }\n };\n\n GAStore.insert = function (store, newEntry, replace, replaceKey) {\n if (replace === void 0) {\n replace = false;\n }\n\n if (replaceKey === void 0) {\n replaceKey = null;\n }\n\n var currentStore = GAStore.getStore(store);\n\n if (!currentStore) {\n return;\n }\n\n if (replace) {\n if (!replaceKey) {\n return;\n }\n\n var replaced = false;\n\n for (var i = 0; i < currentStore.length; ++i) {\n var entry = currentStore[i];\n\n if (entry[replaceKey] == newEntry[replaceKey]) {\n for (var s in newEntry) {\n entry[s] = newEntry[s];\n }\n\n replaced = true;\n break;\n }\n }\n\n if (!replaced) {\n currentStore.push(newEntry);\n }\n } else {\n currentStore.push(newEntry);\n }\n };\n\n GAStore.save = function (gameKey) {\n if (!GAStore.isStorageAvailable()) {\n GALogger.w(\"Storage is not available, cannot save.\");\n return;\n }\n\n localStorage.setItem(GAStore.StringFormat(GAStore.KeyFormat, gameKey, GAStore.EventsStoreKey), JSON.stringify(GAStore.instance.eventsStore));\n localStorage.setItem(GAStore.StringFormat(GAStore.KeyFormat, gameKey, GAStore.SessionsStoreKey), JSON.stringify(GAStore.instance.sessionsStore));\n localStorage.setItem(GAStore.StringFormat(GAStore.KeyFormat, gameKey, GAStore.ProgressionStoreKey), JSON.stringify(GAStore.instance.progressionStore));\n localStorage.setItem(GAStore.StringFormat(GAStore.KeyFormat, gameKey, GAStore.ItemsStoreKey), JSON.stringify(GAStore.instance.storeItems));\n };\n\n GAStore.load = function (gameKey) {\n if (!GAStore.isStorageAvailable()) {\n GALogger.w(\"Storage is not available, cannot load.\");\n return;\n }\n\n try {\n GAStore.instance.eventsStore = JSON.parse(localStorage.getItem(GAStore.StringFormat(GAStore.KeyFormat, gameKey, GAStore.EventsStoreKey)));\n\n if (!GAStore.instance.eventsStore) {\n GAStore.instance.eventsStore = [];\n }\n } catch (e) {\n GALogger.w(\"Load failed for 'events' store. Using empty store.\");\n GAStore.instance.eventsStore = [];\n }\n\n try {\n GAStore.instance.sessionsStore = JSON.parse(localStorage.getItem(GAStore.StringFormat(GAStore.KeyFormat, gameKey, GAStore.SessionsStoreKey)));\n\n if (!GAStore.instance.sessionsStore) {\n GAStore.instance.sessionsStore = [];\n }\n } catch (e) {\n GALogger.w(\"Load failed for 'sessions' store. Using empty store.\");\n GAStore.instance.sessionsStore = [];\n }\n\n try {\n GAStore.instance.progressionStore = JSON.parse(localStorage.getItem(GAStore.StringFormat(GAStore.KeyFormat, gameKey, GAStore.ProgressionStoreKey)));\n\n if (!GAStore.instance.progressionStore) {\n GAStore.instance.progressionStore = [];\n }\n } catch (e) {\n GALogger.w(\"Load failed for 'progression' store. Using empty store.\");\n GAStore.instance.progressionStore = [];\n }\n\n try {\n GAStore.instance.storeItems = JSON.parse(localStorage.getItem(GAStore.StringFormat(GAStore.KeyFormat, gameKey, GAStore.ItemsStoreKey)));\n\n if (!GAStore.instance.storeItems) {\n GAStore.instance.storeItems = {};\n }\n } catch (e) {\n GALogger.w(\"Load failed for 'items' store. Using empty store.\");\n GAStore.instance.progressionStore = [];\n }\n };\n\n GAStore.setItem = function (gameKey, key, value) {\n var keyWithPrefix = GAStore.StringFormat(GAStore.KeyFormat, gameKey, key);\n\n if (!value) {\n if (keyWithPrefix in GAStore.instance.storeItems) {\n delete GAStore.instance.storeItems[keyWithPrefix];\n }\n } else {\n GAStore.instance.storeItems[keyWithPrefix] = value;\n }\n };\n\n GAStore.getItem = function (gameKey, key) {\n var keyWithPrefix = GAStore.StringFormat(GAStore.KeyFormat, gameKey, key);\n\n if (keyWithPrefix in GAStore.instance.storeItems) {\n return GAStore.instance.storeItems[keyWithPrefix];\n } else {\n return null;\n }\n };\n\n GAStore.getStore = function (store) {\n switch (store) {\n case EGAStore.Events:\n {\n return GAStore.instance.eventsStore;\n }\n\n case EGAStore.Sessions:\n {\n return GAStore.instance.sessionsStore;\n }\n\n case EGAStore.Progression:\n {\n return GAStore.instance.progressionStore;\n }\n\n default:\n {\n GALogger.w(\"GAStore.getStore(): Cannot find store: \" + store);\n return null;\n }\n }\n };\n\n GAStore.instance = new GAStore();\n GAStore.MaxNumberOfEntries = 2000;\n\n GAStore.StringFormat = function (str) {\n var args = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n\n return str.replace(/{(\\d+)}/g, function (_, index) {\n return args[index] || '';\n });\n };\n\n GAStore.KeyFormat = \"GA::{0}::{1}\";\n GAStore.EventsStoreKey = \"ga_event\";\n GAStore.SessionsStoreKey = \"ga_session\";\n GAStore.ProgressionStoreKey = \"ga_progression\";\n GAStore.ItemsStoreKey = \"ga_items\";\n return GAStore;\n }();\n\n store_1.GAStore = GAStore;\n })(store = gameanalytics.store || (gameanalytics.store = {}));\n})(gameanalytics || (gameanalytics = {}));\n\nvar gameanalytics;\n\n(function (gameanalytics) {\n var state;\n\n (function (state) {\n var GAValidator = gameanalytics.validators.GAValidator;\n var GAUtilities = gameanalytics.utilities.GAUtilities;\n var GALogger = gameanalytics.logging.GALogger;\n var GAStore = gameanalytics.store.GAStore;\n var GADevice = gameanalytics.device.GADevice;\n var EGAStore = gameanalytics.store.EGAStore;\n var EGAStoreArgsOperator = gameanalytics.store.EGAStoreArgsOperator;\n\n var GAState = function () {\n function GAState() {\n this.availableCustomDimensions01 = [];\n this.availableCustomDimensions02 = [];\n this.availableCustomDimensions03 = [];\n this.currentGlobalCustomEventFields = {};\n this.availableResourceCurrencies = [];\n this.availableResourceItemTypes = [];\n this.configurations = {};\n this.remoteConfigsListeners = [];\n this.beforeUnloadListeners = [];\n this.sdkConfigDefault = {};\n this.sdkConfig = {};\n this.progressionTries = {};\n this._isEventSubmissionEnabled = true;\n this.isUnloading = false;\n }\n\n GAState.setUserId = function (userId) {\n GAState.instance.userId = userId;\n GAState.cacheIdentifier();\n };\n\n GAState.getIdentifier = function () {\n return GAState.instance.identifier;\n };\n\n GAState.isInitialized = function () {\n return GAState.instance.initialized;\n };\n\n GAState.setInitialized = function (value) {\n GAState.instance.initialized = value;\n };\n\n GAState.getSessionStart = function () {\n return GAState.instance.sessionStart;\n };\n\n GAState.getSessionNum = function () {\n return GAState.instance.sessionNum;\n };\n\n GAState.getTransactionNum = function () {\n return GAState.instance.transactionNum;\n };\n\n GAState.getSessionId = function () {\n return GAState.instance.sessionId;\n };\n\n GAState.getCurrentCustomDimension01 = function () {\n return GAState.instance.currentCustomDimension01;\n };\n\n GAState.getCurrentCustomDimension02 = function () {\n return GAState.instance.currentCustomDimension02;\n };\n\n GAState.getCurrentCustomDimension03 = function () {\n return GAState.instance.currentCustomDimension03;\n };\n\n GAState.getGameKey = function () {\n return GAState.instance.gameKey;\n };\n\n GAState.getGameSecret = function () {\n return GAState.instance.gameSecret;\n };\n\n GAState.getAvailableCustomDimensions01 = function () {\n return GAState.instance.availableCustomDimensions01;\n };\n\n GAState.setAvailableCustomDimensions01 = function (value) {\n if (!GAValidator.validateCustomDimensions(value)) {\n return;\n }\n\n GAState.instance.availableCustomDimensions01 = value;\n GAState.validateAndFixCurrentDimensions();\n GALogger.i(\"Set available custom01 dimension values: (\" + GAUtilities.joinStringArray(value, \", \") + \")\");\n };\n\n GAState.getAvailableCustomDimensions02 = function () {\n return GAState.instance.availableCustomDimensions02;\n };\n\n GAState.setAvailableCustomDimensions02 = function (value) {\n if (!GAValidator.validateCustomDimensions(value)) {\n return;\n }\n\n GAState.instance.availableCustomDimensions02 = value;\n GAState.validateAndFixCurrentDimensions();\n GALogger.i(\"Set available custom02 dimension values: (\" + GAUtilities.joinStringArray(value, \", \") + \")\");\n };\n\n GAState.getAvailableCustomDimensions03 = function () {\n return GAState.instance.availableCustomDimensions03;\n };\n\n GAState.setAvailableCustomDimensions03 = function (value) {\n if (!GAValidator.validateCustomDimensions(value)) {\n return;\n }\n\n GAState.instance.availableCustomDimensions03 = value;\n GAState.validateAndFixCurrentDimensions();\n GALogger.i(\"Set available custom03 dimension values: (\" + GAUtilities.joinStringArray(value, \", \") + \")\");\n };\n\n GAState.getAvailableResourceCurrencies = function () {\n return GAState.instance.availableResourceCurrencies;\n };\n\n GAState.setAvailableResourceCurrencies = function (value) {\n if (!GAValidator.validateResourceCurrencies(value)) {\n return;\n }\n\n GAState.instance.availableResourceCurrencies = value;\n GALogger.i(\"Set available resource currencies: (\" + GAUtilities.joinStringArray(value, \", \") + \")\");\n };\n\n GAState.getAvailableResourceItemTypes = function () {\n return GAState.instance.availableResourceItemTypes;\n };\n\n GAState.setAvailableResourceItemTypes = function (value) {\n if (!GAValidator.validateResourceItemTypes(value)) {\n return;\n }\n\n GAState.instance.availableResourceItemTypes = value;\n GALogger.i(\"Set available resource item types: (\" + GAUtilities.joinStringArray(value, \", \") + \")\");\n };\n\n GAState.getBuild = function () {\n return GAState.instance.build;\n };\n\n GAState.setBuild = function (value) {\n GAState.instance.build = value;\n GALogger.i(\"Set build version: \" + value);\n };\n\n GAState.getUseManualSessionHandling = function () {\n return GAState.instance.useManualSessionHandling;\n };\n\n GAState.isEventSubmissionEnabled = function () {\n return GAState.instance._isEventSubmissionEnabled;\n };\n\n GAState.getABTestingId = function () {\n return GAState.instance.abId;\n };\n\n GAState.getABTestingVariantId = function () {\n return GAState.instance.abVariantId;\n };\n\n GAState.prototype.setDefaultId = function (value) {\n this.defaultUserId = !value ? \"\" : value;\n GAState.cacheIdentifier();\n };\n\n GAState.getDefaultId = function () {\n return GAState.instance.defaultUserId;\n };\n\n GAState.getSdkConfig = function () {\n {\n var first;\n var count = 0;\n\n for (var json in GAState.instance.sdkConfig) {\n if (count === 0) {\n first = json;\n }\n\n ++count;\n }\n\n if (first && count > 0) {\n return GAState.instance.sdkConfig;\n }\n }\n {\n var first;\n var count = 0;\n\n for (var json in GAState.instance.sdkConfigCached) {\n if (count === 0) {\n first = json;\n }\n\n ++count;\n }\n\n if (first && count > 0) {\n return GAState.instance.sdkConfigCached;\n }\n }\n return GAState.instance.sdkConfigDefault;\n };\n\n GAState.isEnabled = function () {\n if (!GAState.instance.initAuthorized) {\n return false;\n } else {\n return true;\n }\n };\n\n GAState.setCustomDimension01 = function (dimension) {\n GAState.instance.currentCustomDimension01 = dimension;\n GAStore.setItem(GAState.getGameKey(), GAState.Dimension01Key, dimension);\n GALogger.i(\"Set custom01 dimension value: \" + dimension);\n };\n\n GAState.setCustomDimension02 = function (dimension) {\n GAState.instance.currentCustomDimension02 = dimension;\n GAStore.setItem(GAState.getGameKey(), GAState.Dimension02Key, dimension);\n GALogger.i(\"Set custom02 dimension value: \" + dimension);\n };\n\n GAState.setCustomDimension03 = function (dimension) {\n GAState.instance.currentCustomDimension03 = dimension;\n GAStore.setItem(GAState.getGameKey(), GAState.Dimension03Key, dimension);\n GALogger.i(\"Set custom03 dimension value: \" + dimension);\n };\n\n GAState.incrementSessionNum = function () {\n var sessionNumInt = GAState.getSessionNum() + 1;\n GAState.instance.sessionNum = sessionNumInt;\n };\n\n GAState.incrementTransactionNum = function () {\n var transactionNumInt = GAState.getTransactionNum() + 1;\n GAState.instance.transactionNum = transactionNumInt;\n };\n\n GAState.incrementProgressionTries = function (progression) {\n var tries = GAState.getProgressionTries(progression) + 1;\n GAState.instance.progressionTries[progression] = tries;\n var values = {};\n values[\"progression\"] = progression;\n values[\"tries\"] = tries;\n GAStore.insert(EGAStore.Progression, values, true, \"progression\");\n };\n\n GAState.getProgressionTries = function (progression) {\n if (progression in GAState.instance.progressionTries) {\n return GAState.instance.progressionTries[progression];\n } else {\n return 0;\n }\n };\n\n GAState.clearProgressionTries = function (progression) {\n if (progression in GAState.instance.progressionTries) {\n delete GAState.instance.progressionTries[progression];\n }\n\n var parms = [];\n parms.push([\"progression\", EGAStoreArgsOperator.Equal, progression]);\n GAStore[\"delete\"](EGAStore.Progression, parms);\n };\n\n GAState.setKeys = function (gameKey, gameSecret) {\n GAState.instance.gameKey = gameKey;\n GAState.instance.gameSecret = gameSecret;\n };\n\n GAState.setManualSessionHandling = function (flag) {\n GAState.instance.useManualSessionHandling = flag;\n GALogger.i(\"Use manual session handling: \" + flag);\n };\n\n GAState.setEnabledEventSubmission = function (flag) {\n GAState.instance._isEventSubmissionEnabled = flag;\n };\n\n GAState.getEventAnnotations = function () {\n var annotations = {};\n annotations[\"v\"] = 2;\n annotations[\"event_uuid\"] = GAUtilities.createGuid();\n annotations[\"user_id\"] = GAState.instance.identifier;\n annotations[\"client_ts\"] = GAState.getClientTsAdjusted();\n annotations[\"sdk_version\"] = GADevice.getRelevantSdkVersion();\n annotations[\"os_version\"] = GADevice.osVersion;\n annotations[\"manufacturer\"] = GADevice.deviceManufacturer;\n annotations[\"device\"] = GADevice.deviceModel;\n annotations[\"browser_version\"] = GADevice.browserVersion;\n annotations[\"platform\"] = GADevice.buildPlatform;\n annotations[\"session_id\"] = GAState.instance.sessionId;\n annotations[GAState.SessionNumKey] = GAState.instance.sessionNum;\n var connection_type = GADevice.getConnectionType();\n\n if (GAValidator.validateConnectionType(connection_type)) {\n annotations[\"connection_type\"] = connection_type;\n }\n\n if (GADevice.gameEngineVersion) {\n annotations[\"engine_version\"] = GADevice.gameEngineVersion;\n }\n\n if (GAState.instance.configurations) {\n var count = 0;\n\n for (var _ in GAState.instance.configurations) {\n count++;\n break;\n }\n\n if (count > 0) {\n annotations[\"configurations\"] = GAState.instance.configurations;\n }\n }\n\n if (GAState.instance.abId) {\n annotations[\"ab_id\"] = GAState.instance.abId;\n }\n\n if (GAState.instance.abVariantId) {\n annotations[\"ab_variant_id\"] = GAState.instance.abVariantId;\n }\n\n if (GAState.instance.build) {\n annotations[\"build\"] = GAState.instance.build;\n }\n\n return annotations;\n };\n\n GAState.getSdkErrorEventAnnotations = function () {\n var annotations = {};\n annotations[\"v\"] = 2;\n annotations[\"event_uuid\"] = GAUtilities.createGuid();\n annotations[\"category\"] = GAState.CategorySdkError;\n annotations[\"sdk_version\"] = GADevice.getRelevantSdkVersion();\n annotations[\"os_version\"] = GADevice.osVersion;\n annotations[\"manufacturer\"] = GADevice.deviceManufacturer;\n annotations[\"device\"] = GADevice.deviceModel;\n annotations[\"platform\"] = GADevice.buildPlatform;\n var connection_type = GADevice.getConnectionType();\n\n if (GAValidator.validateConnectionType(connection_type)) {\n annotations[\"connection_type\"] = connection_type;\n }\n\n if (GADevice.gameEngineVersion) {\n annotations[\"engine_version\"] = GADevice.gameEngineVersion;\n }\n\n return annotations;\n };\n\n GAState.getInitAnnotations = function () {\n var initAnnotations = {};\n\n if (!GAState.getIdentifier()) {\n GAState.cacheIdentifier();\n }\n\n GAStore.setItem(GAState.getGameKey(), GAState.LastUsedIdentifierKey, GAState.getIdentifier());\n initAnnotations[\"user_id\"] = GAState.getIdentifier();\n initAnnotations[\"sdk_version\"] = GADevice.getRelevantSdkVersion();\n initAnnotations[\"os_version\"] = GADevice.osVersion;\n initAnnotations[\"platform\"] = GADevice.buildPlatform;\n\n if (GAState.getBuild()) {\n initAnnotations[\"build\"] = GAState.getBuild();\n } else {\n initAnnotations[\"build\"] = null;\n }\n\n initAnnotations[\"session_num\"] = GAState.getSessionNum();\n initAnnotations[\"random_salt\"] = GAState.getSessionNum();\n return initAnnotations;\n };\n\n GAState.getClientTsAdjusted = function () {\n var clientTs = GAUtilities.timeIntervalSince1970();\n var clientTsAdjustedInteger = clientTs + GAState.instance.clientServerTimeOffset;\n\n if (GAValidator.validateClientTs(clientTsAdjustedInteger)) {\n return clientTsAdjustedInteger;\n } else {\n return clientTs;\n }\n };\n\n GAState.sessionIsStarted = function () {\n return GAState.instance.sessionStart != 0;\n };\n\n GAState.cacheIdentifier = function () {\n if (GAState.instance.userId) {\n GAState.instance.identifier = GAState.instance.userId;\n } else if (GAState.instance.defaultUserId) {\n GAState.instance.identifier = GAState.instance.defaultUserId;\n }\n };\n\n GAState.ensurePersistedStates = function () {\n if (GAStore.isStorageAvailable()) {\n GAStore.load(GAState.getGameKey());\n }\n\n var instance = GAState.instance;\n instance.setDefaultId(GAStore.getItem(GAState.getGameKey(), GAState.DefaultUserIdKey) != null ? GAStore.getItem(GAState.getGameKey(), GAState.DefaultUserIdKey) : GAUtilities.createGuid());\n instance.sessionNum = GAStore.getItem(GAState.getGameKey(), GAState.SessionNumKey) != null ? Number(GAStore.getItem(GAState.getGameKey(), GAState.SessionNumKey)) : 0.0;\n instance.transactionNum = GAStore.getItem(GAState.getGameKey(), GAState.TransactionNumKey) != null ? Number(GAStore.getItem(GAState.getGameKey(), GAState.TransactionNumKey)) : 0.0;\n\n if (instance.currentCustomDimension01) {\n GAStore.setItem(GAState.getGameKey(), GAState.Dimension01Key, instance.currentCustomDimension01);\n } else {\n instance.currentCustomDimension01 = GAStore.getItem(GAState.getGameKey(), GAState.Dimension01Key) != null ? GAStore.getItem(GAState.getGameKey(), GAState.Dimension01Key) : \"\";\n\n if (instance.currentCustomDimension01) {}\n }\n\n if (instance.currentCustomDimension02) {\n GAStore.setItem(GAState.getGameKey(), GAState.Dimension02Key, instance.currentCustomDimension02);\n } else {\n instance.currentCustomDimension02 = GAStore.getItem(GAState.getGameKey(), GAState.Dimension02Key) != null ? GAStore.getItem(GAState.getGameKey(), GAState.Dimension02Key) : \"\";\n\n if (instance.currentCustomDimension02) {}\n }\n\n if (instance.currentCustomDimension03) {\n GAStore.setItem(GAState.getGameKey(), GAState.Dimension03Key, instance.currentCustomDimension03);\n } else {\n instance.currentCustomDimension03 = GAStore.getItem(GAState.getGameKey(), GAState.Dimension03Key) != null ? GAStore.getItem(GAState.getGameKey(), GAState.Dimension03Key) : \"\";\n\n if (instance.currentCustomDimension03) {}\n }\n\n var sdkConfigCachedString = GAStore.getItem(GAState.getGameKey(), GAState.SdkConfigCachedKey) != null ? GAStore.getItem(GAState.getGameKey(), GAState.SdkConfigCachedKey) : \"\";\n\n if (sdkConfigCachedString) {\n var sdkConfigCached = JSON.parse(GAUtilities.decode64(sdkConfigCachedString));\n\n if (sdkConfigCached) {\n var lastUsedIdentifier = GAStore.getItem(GAState.getGameKey(), GAState.LastUsedIdentifierKey);\n\n if (lastUsedIdentifier != null && lastUsedIdentifier != GAState.getIdentifier()) {\n GALogger.w(\"New identifier spotted compared to last one used, clearing cached configs hash!!\");\n\n if (sdkConfigCached[\"configs_hash\"]) {\n delete sdkConfigCached[\"configs_hash\"];\n }\n }\n\n instance.sdkConfigCached = sdkConfigCached;\n }\n }\n\n {\n var currentSdkConfig = GAState.getSdkConfig();\n instance.configsHash = currentSdkConfig[\"configs_hash\"] ? currentSdkConfig[\"configs_hash\"] : \"\";\n instance.abId = currentSdkConfig[\"ab_id\"] ? currentSdkConfig[\"ab_id\"] : \"\";\n instance.abVariantId = currentSdkConfig[\"ab_variant_id\"] ? currentSdkConfig[\"ab_variant_id\"] : \"\";\n }\n var results_ga_progression = GAStore.select(EGAStore.Progression);\n\n if (results_ga_progression) {\n for (var i = 0; i < results_ga_progression.length; ++i) {\n var result = results_ga_progression[i];\n\n if (result) {\n instance.progressionTries[result[\"progression\"]] = result[\"tries\"];\n }\n }\n }\n };\n\n GAState.calculateServerTimeOffset = function (serverTs) {\n var clientTs = GAUtilities.timeIntervalSince1970();\n return serverTs - clientTs;\n };\n\n GAState.formatString = function (s, args) {\n var formatted = s;\n\n for (var i = 0; i < args.length; i++) {\n var regexp = new RegExp('\\\\{' + i + '\\\\}', 'gi');\n formatted = formatted.replace(regexp, arguments[i]);\n }\n\n return formatted;\n };\n\n GAState.validateAndCleanCustomFields = function (fields, errorCallback) {\n if (errorCallback === void 0) {\n errorCallback = null;\n }\n\n var result = {};\n\n if (fields) {\n var count = 0;\n\n for (var key in fields) {\n var value = fields[key];\n\n if (!key || !value) {\n var baseMessage = \"validateAndCleanCustomFields: entry with key={0}, value={1} has been omitted because its key or value is null\";\n var message = GAState.formatString(baseMessage, [key, value]);\n GALogger.w(message);\n\n if (errorCallback) {\n errorCallback(baseMessage, message);\n }\n } else if (count < GAState.MAX_CUSTOM_FIELDS_COUNT) {\n var regex = new RegExp(\"^[a-zA-Z0-9_]{1,\" + GAState.MAX_CUSTOM_FIELDS_KEY_LENGTH + \"}$\");\n\n if (GAUtilities.stringMatch(key, regex)) {\n var type = typeof value;\n\n if (type === \"string\" || value instanceof String) {\n var valueAsString = value;\n\n if (valueAsString.length <= GAState.MAX_CUSTOM_FIELDS_VALUE_STRING_LENGTH && valueAsString.length > 0) {\n result[key] = valueAsString;\n ++count;\n } else {\n var baseMessage = \"validateAndCleanCustomFields: entry with key={0}, value={1} has been omitted because its value is an empty string or exceeds the max number of characters (\" + GAState.MAX_CUSTOM_FIELDS_VALUE_STRING_LENGTH + \")\";\n var message = GAState.formatString(baseMessage, [key, value]);\n GALogger.w(message);\n\n if (errorCallback) {\n errorCallback(baseMessage, message);\n }\n }\n } else if (type === \"number\" || value instanceof Number) {\n var valueAsNumber = value;\n result[key] = valueAsNumber;\n ++count;\n } else {\n var baseMessage = \"validateAndCleanCustomFields: entry with key={0}, value={1} has been omitted because its value is not a string or number\";\n var message = GAState.formatString(baseMessage, [key, value]);\n GALogger.w(message);\n\n if (errorCallback) {\n errorCallback(baseMessage, message);\n }\n }\n } else {\n var baseMessage = \"validateAndCleanCustomFields: entry with key={0}, value={1} has been omitted because its key contains illegal character, is empty or exceeds the max number of characters (\" + GAState.MAX_CUSTOM_FIELDS_KEY_LENGTH + \")\";\n var message = GAState.formatString(baseMessage, [key, value]);\n GALogger.w(message);\n\n if (errorCallback) {\n errorCallback(baseMessage, message);\n }\n }\n } else {\n var baseMessage = \"validateAndCleanCustomFields: entry with key={0}, value={1} has been omitted because it exceeds the max number of custom fields (\" + GAState.MAX_CUSTOM_FIELDS_COUNT + \")\";\n var message = GAState.formatString(baseMessage, [key, value]);\n GALogger.w(message);\n\n if (errorCallback) {\n errorCallback(baseMessage, message);\n }\n }\n }\n }\n\n return result;\n };\n\n GAState.validateAndFixCurrentDimensions = function () {\n if (!GAValidator.validateDimension01(GAState.getCurrentCustomDimension01(), GAState.getAvailableCustomDimensions01())) {\n GAState.setCustomDimension01(\"\");\n }\n\n if (!GAValidator.validateDimension02(GAState.getCurrentCustomDimension02(), GAState.getAvailableCustomDimensions02())) {\n GAState.setCustomDimension02(\"\");\n }\n\n if (!GAValidator.validateDimension03(GAState.getCurrentCustomDimension03(), GAState.getAvailableCustomDimensions03())) {\n GAState.setCustomDimension03(\"\");\n }\n };\n\n GAState.getConfigurationStringValue = function (key, defaultValue) {\n if (GAState.instance.configurations[key]) {\n return GAState.instance.configurations[key].toString();\n } else {\n return defaultValue;\n }\n };\n\n GAState.isRemoteConfigsReady = function () {\n return GAState.instance.remoteConfigsIsReady;\n };\n\n GAState.addRemoteConfigsListener = function (listener) {\n if (GAState.instance.remoteConfigsListeners.indexOf(listener) < 0) {\n GAState.instance.remoteConfigsListeners.push(listener);\n }\n };\n\n GAState.removeRemoteConfigsListener = function (listener) {\n var index = GAState.instance.remoteConfigsListeners.indexOf(listener);\n\n if (index > -1) {\n GAState.instance.remoteConfigsListeners.splice(index, 1);\n }\n };\n\n GAState.getRemoteConfigsContentAsString = function () {\n return JSON.stringify(GAState.instance.configurations);\n };\n\n GAState.populateConfigurations = function (sdkConfig) {\n var configurations = sdkConfig[\"configs\"];\n\n if (configurations) {\n GAState.instance.configurations = {};\n\n for (var i = 0; i < configurations.length; ++i) {\n var configuration = configurations[i];\n\n if (configuration) {\n var key = configuration[\"key\"];\n var value = configuration[\"value\"];\n var start_ts = configuration[\"start_ts\"] ? configuration[\"start_ts\"] : Number.MIN_VALUE;\n var end_ts = configuration[\"end_ts\"] ? configuration[\"end_ts\"] : Number.MAX_VALUE;\n var client_ts_adjusted = GAState.getClientTsAdjusted();\n\n if (key && value && client_ts_adjusted > start_ts && client_ts_adjusted < end_ts) {\n GAState.instance.configurations[key] = value;\n }\n }\n }\n }\n\n GAState.instance.remoteConfigsIsReady = true;\n var listeners = GAState.instance.remoteConfigsListeners;\n\n for (var i = 0; i < listeners.length; ++i) {\n if (listeners[i]) {\n listeners[i].onRemoteConfigsUpdated();\n }\n }\n };\n\n GAState.addOnBeforeUnloadListener = function (listener) {\n if (GAState.instance.beforeUnloadListeners.indexOf(listener) < 0) {\n GAState.instance.beforeUnloadListeners.push(listener);\n }\n };\n\n GAState.removeOnBeforeUnloadListener = function (listener) {\n var index = GAState.instance.beforeUnloadListeners.indexOf(listener);\n\n if (index > -1) {\n GAState.instance.beforeUnloadListeners.splice(index, 1);\n }\n };\n\n GAState.notifyBeforeUnloadListeners = function () {\n var listeners = GAState.instance.beforeUnloadListeners;\n\n for (var i = 0; i < listeners.length; ++i) {\n if (listeners[i]) {\n listeners[i].onBeforeUnload();\n }\n }\n };\n\n GAState.CategorySdkError = \"sdk_error\";\n GAState.MAX_CUSTOM_FIELDS_COUNT = 50;\n GAState.MAX_CUSTOM_FIELDS_KEY_LENGTH = 64;\n GAState.MAX_CUSTOM_FIELDS_VALUE_STRING_LENGTH = 256;\n GAState.instance = new GAState();\n GAState.DefaultUserIdKey = \"default_user_id\";\n GAState.SessionNumKey = \"session_num\";\n GAState.TransactionNumKey = \"transaction_num\";\n GAState.Dimension01Key = \"dimension01\";\n GAState.Dimension02Key = \"dimension02\";\n GAState.Dimension03Key = \"dimension03\";\n GAState.SdkConfigCachedKey = \"sdk_config_cached\";\n GAState.LastUsedIdentifierKey = \"last_used_identifier\";\n return GAState;\n }();\n\n state.GAState = GAState;\n })(state = gameanalytics.state || (gameanalytics.state = {}));\n})(gameanalytics || (gameanalytics = {}));\n\nvar gameanalytics;\n\n(function (gameanalytics) {\n var tasks;\n\n (function (tasks) {\n var GAUtilities = gameanalytics.utilities.GAUtilities;\n var GALogger = gameanalytics.logging.GALogger;\n\n var SdkErrorTask = function () {\n function SdkErrorTask() {}\n\n SdkErrorTask.execute = function (url, type, payloadData, secretKey) {\n var now = new Date();\n\n if (!SdkErrorTask.timestampMap[type]) {\n SdkErrorTask.timestampMap[type] = now;\n }\n\n if (!SdkErrorTask.countMap[type]) {\n SdkErrorTask.countMap[type] = 0;\n }\n\n var diff = now.getTime() - SdkErrorTask.timestampMap[type].getTime();\n var diffSeconds = diff / 1000;\n\n if (diffSeconds >= 3600) {\n SdkErrorTask.timestampMap[type] = now;\n SdkErrorTask.countMap[type] = 0;\n }\n\n if (SdkErrorTask.countMap[type] >= SdkErrorTask.MaxCount) {\n return;\n }\n\n var hashHmac = GAUtilities.getHmac(secretKey, payloadData);\n var request = new XMLHttpRequest();\n\n request.onreadystatechange = function () {\n if (request.readyState === 4) {\n if (!request.responseText) {\n return;\n }\n\n if (request.status != 200) {\n GALogger.w(\"sdk error failed. response code not 200. status code: \" + request.status + \", description: \" + request.statusText + \", body: \" + request.responseText);\n return;\n } else {\n SdkErrorTask.countMap[type] = SdkErrorTask.countMap[type] + 1;\n }\n }\n };\n\n request.open(\"POST\", url, true);\n request.setRequestHeader(\"Content-Type\", \"application/json\");\n request.setRequestHeader(\"Authorization\", hashHmac);\n\n try {\n request.send(payloadData);\n } catch (e) {\n console.error(e);\n }\n };\n\n SdkErrorTask.MaxCount = 10;\n SdkErrorTask.countMap = {};\n SdkErrorTask.timestampMap = {};\n return SdkErrorTask;\n }();\n\n tasks.SdkErrorTask = SdkErrorTask;\n })(tasks = gameanalytics.tasks || (gameanalytics.tasks = {}));\n})(gameanalytics || (gameanalytics = {}));\n\nvar gameanalytics;\n\n(function (gameanalytics) {\n var http;\n\n (function (http) {\n var GAState = gameanalytics.state.GAState;\n var GALogger = gameanalytics.logging.GALogger;\n var GAUtilities = gameanalytics.utilities.GAUtilities;\n var GAValidator = gameanalytics.validators.GAValidator;\n var SdkErrorTask = gameanalytics.tasks.SdkErrorTask;\n var EGASdkErrorCategory = gameanalytics.events.EGASdkErrorCategory;\n var EGASdkErrorArea = gameanalytics.events.EGASdkErrorArea;\n var EGASdkErrorAction = gameanalytics.events.EGASdkErrorAction;\n var EGASdkErrorParameter = gameanalytics.events.EGASdkErrorParameter;\n\n var GAHTTPApi = function () {\n function GAHTTPApi() {\n this.protocol = \"https\";\n this.hostName = \"api.gameanalytics.com\";\n this.version = \"v2\";\n this.remoteConfigsVersion = \"v1\";\n this.baseUrl = this.protocol + \"://\" + this.hostName + \"/\" + this.version;\n this.remoteConfigsBaseUrl = this.protocol + \"://\" + this.hostName + \"/remote_configs/\" + this.remoteConfigsVersion;\n this.initializeUrlPath = \"init\";\n this.eventsUrlPath = \"events\";\n this.useGzip = false;\n }\n\n GAHTTPApi.prototype.requestInit = function (configsHash, callback) {\n var gameKey = GAState.getGameKey();\n var url = this.remoteConfigsBaseUrl + \"/\" + this.initializeUrlPath + \"?game_key=\" + gameKey + \"&interval_seconds=0&configs_hash=\" + configsHash;\n var initAnnotations = GAState.getInitAnnotations();\n var JSONstring = JSON.stringify(initAnnotations);\n\n if (!JSONstring) {\n callback(http.EGAHTTPApiResponse.JsonEncodeFailed, null);\n return;\n }\n\n var payloadData = this.createPayloadData(JSONstring, this.useGzip);\n var extraArgs = [];\n extraArgs.push(JSONstring);\n GAHTTPApi.sendRequest(url, payloadData, extraArgs, this.useGzip, GAHTTPApi.initRequestCallback, callback);\n };\n\n GAHTTPApi.prototype.sendEventsInArray = function (eventArray, requestId, callback) {\n if (eventArray.length == 0) {\n return;\n }\n\n var gameKey = GAState.getGameKey();\n var url = this.baseUrl + \"/\" + gameKey + \"/\" + this.eventsUrlPath;\n var JSONstring = JSON.stringify(eventArray);\n\n if (!JSONstring) {\n callback(http.EGAHTTPApiResponse.JsonEncodeFailed, null, requestId, eventArray.length);\n return;\n }\n\n var payloadData = this.createPayloadData(JSONstring, this.useGzip);\n var extraArgs = [];\n extraArgs.push(JSONstring);\n extraArgs.push(requestId);\n extraArgs.push(eventArray.length.toString());\n GAHTTPApi.sendRequest(url, payloadData, extraArgs, this.useGzip, GAHTTPApi.sendEventInArrayRequestCallback, callback);\n };\n\n GAHTTPApi.prototype.sendSdkErrorEvent = function (category, area, action, parameter, reason, gameKey, secretKey) {\n if (!GAState.isEventSubmissionEnabled()) {\n return;\n }\n\n if (!GAValidator.validateSdkErrorEvent(gameKey, secretKey, category, area, action)) {\n return;\n }\n\n var url = this.baseUrl + \"/\" + gameKey + \"/\" + this.eventsUrlPath;\n var payloadJSONString = \"\";\n var errorType = \"\";\n var json = GAState.getSdkErrorEventAnnotations();\n var categoryString = GAHTTPApi.sdkErrorCategoryString(category);\n json[\"error_category\"] = categoryString;\n errorType += categoryString;\n var areaString = GAHTTPApi.sdkErrorAreaString(area);\n json[\"error_area\"] = areaString;\n errorType += \":\" + areaString;\n var actionString = GAHTTPApi.sdkErrorActionString(action);\n json[\"error_action\"] = actionString;\n var parameterString = GAHTTPApi.sdkErrorParameterString(parameter);\n\n if (parameterString.length > 0) {\n json[\"error_parameter\"] = parameterString;\n }\n\n if (reason.length > 0) {\n var reasonTrimmed = reason;\n\n if (reason.length > GAHTTPApi.MAX_ERROR_MESSAGE_LENGTH) {\n var reasonTrimmed = reason.substring(0, GAHTTPApi.MAX_ERROR_MESSAGE_LENGTH);\n }\n\n json[\"reason\"] = reasonTrimmed;\n }\n\n var eventArray = [];\n eventArray.push(json);\n payloadJSONString = JSON.stringify(eventArray);\n\n if (!payloadJSONString) {\n GALogger.w(\"sendSdkErrorEvent: JSON encoding failed.\");\n return;\n }\n\n SdkErrorTask.execute(url, errorType, payloadJSONString, secretKey);\n };\n\n GAHTTPApi.sendEventInArrayRequestCallback = function (request, url, callback, extra) {\n if (extra === void 0) {\n extra = null;\n }\n\n var authorization = extra[0];\n var JSONstring = extra[1];\n var requestId = extra[2];\n var eventCount = parseInt(extra[3]);\n var body = \"\";\n var responseCode = 0;\n body = request.responseText;\n responseCode = request.status;\n var requestResponseEnum = GAHTTPApi.instance.processRequestResponse(responseCode, request.statusText, body, \"Events\");\n\n if (requestResponseEnum != http.EGAHTTPApiResponse.Ok && requestResponseEnum != http.EGAHTTPApiResponse.Created && requestResponseEnum != http.EGAHTTPApiResponse.BadRequest) {\n callback(requestResponseEnum, null, requestId, eventCount);\n return;\n }\n\n var requestJsonDict = body ? JSON.parse(body) : {};\n\n if (requestJsonDict == null) {\n callback(http.EGAHTTPApiResponse.JsonDecodeFailed, null, requestId, eventCount);\n GAHTTPApi.instance.sendSdkErrorEvent(EGASdkErrorCategory.Http, EGASdkErrorArea.EventsHttp, EGASdkErrorAction.FailHttpJsonDecode, EGASdkErrorParameter.Undefined, body, GAState.getGameKey(), GAState.getGameSecret());\n return;\n }\n\n if (requestResponseEnum == http.EGAHTTPApiResponse.BadRequest) {}\n\n callback(requestResponseEnum, requestJsonDict, requestId, eventCount);\n };\n\n GAHTTPApi.sendRequest = function (url, payloadData, extraArgs, gzip, callback, callback2) {\n var request = new XMLHttpRequest();\n var key = GAState.getGameSecret();\n var authorization = GAUtilities.getHmac(key, payloadData);\n var args = [];\n args.push(authorization);\n\n for (var s in extraArgs) {\n args.push(extraArgs[s]);\n }\n\n request.onreadystatechange = function () {\n if (request.readyState === 4) {\n callback(request, url, callback2, args);\n }\n };\n\n request.open(\"POST\", url, true);\n request.setRequestHeader(\"Content-Type\", \"application/json\");\n request.setRequestHeader(\"Authorization\", authorization);\n\n if (gzip) {\n throw new Error(\"gzip not supported\");\n }\n\n try {\n request.send(payloadData);\n } catch (e) {\n console.error(e.stack);\n }\n };\n\n GAHTTPApi.initRequestCallback = function (request, url, callback, extra) {\n if (extra === void 0) {\n extra = null;\n }\n\n var authorization = extra[0];\n var JSONstring = extra[1];\n var body = \"\";\n var responseCode = 0;\n body = request.responseText;\n responseCode = request.status;\n var requestJsonDict = body ? JSON.parse(body) : {};\n var requestResponseEnum = GAHTTPApi.instance.processRequestResponse(responseCode, request.statusText, body, \"Init\");\n\n if (requestResponseEnum != http.EGAHTTPApiResponse.Ok && requestResponseEnum != http.EGAHTTPApiResponse.Created && requestResponseEnum != http.EGAHTTPApiResponse.BadRequest) {\n callback(requestResponseEnum, null, \"\", 0);\n return;\n }\n\n if (requestJsonDict == null) {\n callback(http.EGAHTTPApiResponse.JsonDecodeFailed, null, \"\", 0);\n GAHTTPApi.instance.sendSdkErrorEvent(EGASdkErrorCategory.Http, EGASdkErrorArea.InitHttp, EGASdkErrorAction.FailHttpJsonDecode, EGASdkErrorParameter.Undefined, body, GAState.getGameKey(), GAState.getGameSecret());\n return;\n }\n\n if (requestResponseEnum === http.EGAHTTPApiResponse.BadRequest) {\n callback(requestResponseEnum, null, \"\", 0);\n return;\n }\n\n var validatedInitValues = GAValidator.validateAndCleanInitRequestResponse(requestJsonDict, requestResponseEnum === http.EGAHTTPApiResponse.Created);\n\n if (!validatedInitValues) {\n callback(http.EGAHTTPApiResponse.BadResponse, null, \"\", 0);\n return;\n }\n\n callback(requestResponseEnum, validatedInitValues, \"\", 0);\n };\n\n GAHTTPApi.prototype.createPayloadData = function (payload, gzip) {\n var payloadData;\n\n if (gzip) {\n throw new Error(\"gzip not supported\");\n } else {\n payloadData = payload;\n }\n\n return payloadData;\n };\n\n GAHTTPApi.prototype.processRequestResponse = function (responseCode, responseMessage, body, requestId) {\n if (!body) {\n return http.EGAHTTPApiResponse.NoResponse;\n }\n\n if (responseCode === 200) {\n return http.EGAHTTPApiResponse.Ok;\n }\n\n if (responseCode === 201) {\n return http.EGAHTTPApiResponse.Created;\n }\n\n if (responseCode === 0 || responseCode === 401) {\n return http.EGAHTTPApiResponse.Unauthorized;\n }\n\n if (responseCode === 400) {\n return http.EGAHTTPApiResponse.BadRequest;\n }\n\n if (responseCode === 500) {\n return http.EGAHTTPApiResponse.InternalServerError;\n }\n\n return http.EGAHTTPApiResponse.UnknownResponseCode;\n };\n\n GAHTTPApi.sdkErrorCategoryString = function (value) {\n switch (value) {\n case EGASdkErrorCategory.EventValidation:\n return \"event_validation\";\n\n case EGASdkErrorCategory.Database:\n return \"db\";\n\n case EGASdkErrorCategory.Init:\n return \"init\";\n\n case EGASdkErrorCategory.Http:\n return \"http\";\n\n case EGASdkErrorCategory.Json:\n return \"json\";\n\n default:\n break;\n }\n\n return \"\";\n };\n\n GAHTTPApi.sdkErrorAreaString = function (value) {\n switch (value) {\n case EGASdkErrorArea.BusinessEvent:\n return \"business\";\n\n case EGASdkErrorArea.ResourceEvent:\n return \"resource\";\n\n case EGASdkErrorArea.ProgressionEvent:\n return \"progression\";\n\n case EGASdkErrorArea.DesignEvent:\n return \"design\";\n\n case EGASdkErrorArea.ErrorEvent:\n return \"error\";\n\n case EGASdkErrorArea.InitHttp:\n return \"init_http\";\n\n case EGASdkErrorArea.EventsHttp:\n return \"events_http\";\n\n case EGASdkErrorArea.ProcessEvents:\n return \"process_events\";\n\n case EGASdkErrorArea.AddEventsToStore:\n return \"add_events_to_store\";\n\n default:\n break;\n }\n\n return \"\";\n };\n\n GAHTTPApi.sdkErrorActionString = function (value) {\n switch (value) {\n case EGASdkErrorAction.InvalidCurrency:\n return \"invalid_currency\";\n\n case EGASdkErrorAction.InvalidShortString:\n return \"invalid_short_string\";\n\n case EGASdkErrorAction.InvalidEventPartLength:\n return \"invalid_event_part_length\";\n\n case EGASdkErrorAction.InvalidEventPartCharacters:\n return \"invalid_event_part_characters\";\n\n case EGASdkErrorAction.InvalidStore:\n return \"invalid_store\";\n\n case EGASdkErrorAction.InvalidFlowType:\n return \"invalid_flow_type\";\n\n case EGASdkErrorAction.StringEmptyOrNull:\n return \"string_empty_or_null\";\n\n case EGASdkErrorAction.NotFoundInAvailableCurrencies:\n return \"not_found_in_available_currencies\";\n\n case EGASdkErrorAction.InvalidAmount:\n return \"invalid_amount\";\n\n case EGASdkErrorAction.NotFoundInAvailableItemTypes:\n return \"not_found_in_available_item_types\";\n\n case EGASdkErrorAction.WrongProgressionOrder:\n return \"wrong_progression_order\";\n\n case EGASdkErrorAction.InvalidEventIdLength:\n return \"invalid_event_id_length\";\n\n case EGASdkErrorAction.InvalidEventIdCharacters:\n return \"invalid_event_id_characters\";\n\n case EGASdkErrorAction.InvalidProgressionStatus:\n return \"invalid_progression_status\";\n\n case EGASdkErrorAction.InvalidSeverity:\n return \"invalid_severity\";\n\n case EGASdkErrorAction.InvalidLongString:\n return \"invalid_long_string\";\n\n case EGASdkErrorAction.DatabaseTooLarge:\n return \"db_too_large\";\n\n case EGASdkErrorAction.DatabaseOpenOrCreate:\n return \"db_open_or_create\";\n\n case EGASdkErrorAction.JsonError:\n return \"json_error\";\n\n case EGASdkErrorAction.FailHttpJsonDecode:\n return \"fail_http_json_decode\";\n\n case EGASdkErrorAction.FailHttpJsonEncode:\n return \"fail_http_json_encode\";\n\n default:\n break;\n }\n\n return \"\";\n };\n\n GAHTTPApi.sdkErrorParameterString = function (value) {\n switch (value) {\n case EGASdkErrorParameter.Currency:\n return \"currency\";\n\n case EGASdkErrorParameter.CartType:\n return \"cart_type\";\n\n case EGASdkErrorParameter.ItemType:\n return \"item_type\";\n\n case EGASdkErrorParameter.ItemId:\n return \"item_id\";\n\n case EGASdkErrorParameter.Store:\n return \"store\";\n\n case EGASdkErrorParameter.FlowType:\n return \"flow_type\";\n\n case EGASdkErrorParameter.Amount:\n return \"amount\";\n\n case EGASdkErrorParameter.Progression01:\n return \"progression01\";\n\n case EGASdkErrorParameter.Progression02:\n return \"progression02\";\n\n case EGASdkErrorParameter.Progression03:\n return \"progression03\";\n\n case EGASdkErrorParameter.EventId:\n return \"event_id\";\n\n case EGASdkErrorParameter.ProgressionStatus:\n return \"progression_status\";\n\n case EGASdkErrorParameter.Severity:\n return \"severity\";\n\n case EGASdkErrorParameter.Message:\n return \"message\";\n\n default:\n break;\n }\n\n return \"\";\n };\n\n GAHTTPApi.instance = new GAHTTPApi();\n GAHTTPApi.MAX_ERROR_MESSAGE_LENGTH = 256;\n return GAHTTPApi;\n }();\n\n http.GAHTTPApi = GAHTTPApi;\n })(http = gameanalytics.http || (gameanalytics.http = {}));\n})(gameanalytics || (gameanalytics = {}));\n\nvar gameanalytics;\n\n(function (gameanalytics) {\n var events;\n\n (function (events_1) {\n var GAStore = gameanalytics.store.GAStore;\n var EGAStore = gameanalytics.store.EGAStore;\n var EGAStoreArgsOperator = gameanalytics.store.EGAStoreArgsOperator;\n var GAState = gameanalytics.state.GAState;\n var GALogger = gameanalytics.logging.GALogger;\n var GAUtilities = gameanalytics.utilities.GAUtilities;\n var EGAHTTPApiResponse = gameanalytics.http.EGAHTTPApiResponse;\n var GAHTTPApi = gameanalytics.http.GAHTTPApi;\n var GAValidator = gameanalytics.validators.GAValidator;\n\n var GAEvents = function () {\n function GAEvents() {}\n\n GAEvents.customEventFieldsErrorCallback = function (baseMessage, message) {\n if (!GAState.isEventSubmissionEnabled()) {\n return;\n }\n\n var now = new Date();\n\n if (!GAEvents.timestampMap[baseMessage]) {\n GAEvents.timestampMap[baseMessage] = now;\n }\n\n if (!GAEvents.countMap[baseMessage]) {\n GAEvents.countMap[baseMessage] = 0;\n }\n\n var diff = now.getTime() - GAEvents.timestampMap[baseMessage].getTime();\n var diffSeconds = diff / 1000;\n\n if (diffSeconds >= 3600) {\n GAEvents.timestampMap[baseMessage] = now;\n GAEvents.countMap[baseMessage] = 0;\n }\n\n if (GAEvents.countMap[baseMessage] >= GAEvents.MAX_ERROR_COUNT) {\n return;\n }\n\n gameanalytics.threading.GAThreading.performTaskOnGAThread(function () {\n GAEvents.addErrorEvent(gameanalytics.EGAErrorSeverity.Warning, message, null, true);\n GAEvents.countMap[baseMessage] = GAEvents.countMap[baseMessage] + 1;\n });\n };\n\n GAEvents.addSessionStartEvent = function () {\n if (!GAState.isEventSubmissionEnabled()) {\n return;\n }\n\n var eventDict = {};\n eventDict[\"category\"] = GAEvents.CategorySessionStart;\n GAState.incrementSessionNum();\n GAStore.setItem(GAState.getGameKey(), GAState.SessionNumKey, GAState.getSessionNum().toString());\n GAEvents.addDimensionsToEvent(eventDict);\n var fieldsToUse = GAState.instance.currentGlobalCustomEventFields;\n GAEvents.addCustomFieldsToEvent(eventDict, GAState.validateAndCleanCustomFields(fieldsToUse, GAEvents.customEventFieldsErrorCallback));\n GAEvents.addEventToStore(eventDict);\n GALogger.i(\"Add SESSION START event\");\n GAEvents.processEvents(GAEvents.CategorySessionStart, false);\n };\n\n GAEvents.addSessionEndEvent = function () {\n if (!GAState.isEventSubmissionEnabled()) {\n return;\n }\n\n var session_start_ts = GAState.getSessionStart();\n var client_ts_adjusted = GAState.getClientTsAdjusted();\n var sessionLength = client_ts_adjusted - session_start_ts;\n\n if (sessionLength < 0) {\n GALogger.w(\"Session length was calculated to be less then 0. Should not be possible. Resetting to 0.\");\n sessionLength = 0;\n }\n\n var eventDict = {};\n eventDict[\"category\"] = GAEvents.CategorySessionEnd;\n eventDict[\"length\"] = sessionLength;\n GAEvents.addDimensionsToEvent(eventDict);\n var fieldsToUse = GAState.instance.currentGlobalCustomEventFields;\n GAEvents.addCustomFieldsToEvent(eventDict, GAState.validateAndCleanCustomFields(fieldsToUse, GAEvents.customEventFieldsErrorCallback));\n GAEvents.addEventToStore(eventDict);\n GALogger.i(\"Add SESSION END event.\");\n GAEvents.processEvents(\"\", false);\n };\n\n GAEvents.addBusinessEvent = function (currency, amount, itemType, itemId, cartType, fields, mergeFields) {\n if (cartType === void 0) {\n cartType = null;\n }\n\n if (!GAState.isEventSubmissionEnabled()) {\n return;\n }\n\n var validationResult = GAValidator.validateBusinessEvent(currency, amount, cartType, itemType, itemId);\n\n if (validationResult != null) {\n GAHTTPApi.instance.sendSdkErrorEvent(validationResult.category, validationResult.area, validationResult.action, validationResult.parameter, validationResult.reason, GAState.getGameKey(), GAState.getGameSecret());\n return;\n }\n\n var eventDict = {};\n GAState.incrementTransactionNum();\n GAStore.setItem(GAState.getGameKey(), GAState.TransactionNumKey, GAState.getTransactionNum().toString());\n eventDict[\"event_id\"] = itemType + \":\" + itemId;\n eventDict[\"category\"] = GAEvents.CategoryBusiness;\n eventDict[\"currency\"] = currency;\n eventDict[\"amount\"] = amount;\n eventDict[GAState.TransactionNumKey] = GAState.getTransactionNum();\n\n if (cartType) {\n eventDict[\"cart_type\"] = cartType;\n }\n\n GAEvents.addDimensionsToEvent(eventDict);\n var fieldsToUse = {};\n\n if (fields && Object.keys(fields).length > 0) {\n for (var key in fields) {\n fieldsToUse[key] = fields[key];\n }\n } else {\n for (var key in GAState.instance.currentGlobalCustomEventFields) {\n fieldsToUse[key] = GAState.instance.currentGlobalCustomEventFields[key];\n }\n }\n\n if (mergeFields && fields && Object.keys(fields).length > 0) {\n for (var key in GAState.instance.currentGlobalCustomEventFields) {\n if (!fieldsToUse[key]) {\n fieldsToUse[key] = GAState.instance.currentGlobalCustomEventFields[key];\n }\n }\n }\n\n GAEvents.addCustomFieldsToEvent(eventDict, GAState.validateAndCleanCustomFields(fieldsToUse, GAEvents.customEventFieldsErrorCallback));\n GALogger.i(\"Add BUSINESS event: {currency:\" + currency + \", amount:\" + amount + \", itemType:\" + itemType + \", itemId:\" + itemId + \", cartType:\" + cartType + \"}\");\n GAEvents.addEventToStore(eventDict);\n };\n\n GAEvents.addResourceEvent = function (flowType, currency, amount, itemType, itemId, fields, mergeFields) {\n if (!GAState.isEventSubmissionEnabled()) {\n return;\n }\n\n var validationResult = GAValidator.validateResourceEvent(flowType, currency, amount, itemType, itemId, GAState.getAvailableResourceCurrencies(), GAState.getAvailableResourceItemTypes());\n\n if (validationResult != null) {\n GAHTTPApi.instance.sendSdkErrorEvent(validationResult.category, validationResult.area, validationResult.action, validationResult.parameter, validationResult.reason, GAState.getGameKey(), GAState.getGameSecret());\n return;\n }\n\n if (flowType === gameanalytics.EGAResourceFlowType.Sink) {\n amount *= -1;\n }\n\n var eventDict = {};\n var flowTypeString = GAEvents.resourceFlowTypeToString(flowType);\n eventDict[\"event_id\"] = flowTypeString + \":\" + currency + \":\" + itemType + \":\" + itemId;\n eventDict[\"category\"] = GAEvents.CategoryResource;\n eventDict[\"amount\"] = amount;\n GAEvents.addDimensionsToEvent(eventDict);\n var fieldsToUse = {};\n\n if (fields && Object.keys(fields).length > 0) {\n for (var key in fields) {\n fieldsToUse[key] = fields[key];\n }\n } else {\n for (var key in GAState.instance.currentGlobalCustomEventFields) {\n fieldsToUse[key] = GAState.instance.currentGlobalCustomEventFields[key];\n }\n }\n\n if (mergeFields && fields && Object.keys(fields).length > 0) {\n for (var key in GAState.instance.currentGlobalCustomEventFields) {\n if (!fieldsToUse[key]) {\n fieldsToUse[key] = GAState.instance.currentGlobalCustomEventFields[key];\n }\n }\n }\n\n GAEvents.addCustomFieldsToEvent(eventDict, GAState.validateAndCleanCustomFields(fieldsToUse, GAEvents.customEventFieldsErrorCallback));\n GALogger.i(\"Add RESOURCE event: {currency:\" + currency + \", amount:\" + amount + \", itemType:\" + itemType + \", itemId:\" + itemId + \"}\");\n GAEvents.addEventToStore(eventDict);\n };\n\n GAEvents.addProgressionEvent = function (progressionStatus, progression01, progression02, progression03, score, sendScore, fields, mergeFields) {\n if (!GAState.isEventSubmissionEnabled()) {\n return;\n }\n\n var progressionStatusString = GAEvents.progressionStatusToString(progressionStatus);\n var validationResult = GAValidator.validateProgressionEvent(progressionStatus, progression01, progression02, progression03);\n\n if (validationResult != null) {\n GAHTTPApi.instance.sendSdkErrorEvent(validationResult.category, validationResult.area, validationResult.action, validationResult.parameter, validationResult.reason, GAState.getGameKey(), GAState.getGameSecret());\n return;\n }\n\n var eventDict = {};\n var progressionIdentifier;\n\n if (!progression02) {\n progressionIdentifier = progression01;\n } else if (!progression03) {\n progressionIdentifier = progression01 + \":\" + progression02;\n } else {\n progressionIdentifier = progression01 + \":\" + progression02 + \":\" + progression03;\n }\n\n eventDict[\"category\"] = GAEvents.CategoryProgression;\n eventDict[\"event_id\"] = progressionStatusString + \":\" + progressionIdentifier;\n var attempt_num = 0;\n\n if (sendScore && progressionStatus != gameanalytics.EGAProgressionStatus.Start) {\n eventDict[\"score\"] = Math.round(score);\n }\n\n if (progressionStatus === gameanalytics.EGAProgressionStatus.Fail) {\n GAState.incrementProgressionTries(progressionIdentifier);\n }\n\n if (progressionStatus === gameanalytics.EGAProgressionStatus.Complete) {\n GAState.incrementProgressionTries(progressionIdentifier);\n attempt_num = GAState.getProgressionTries(progressionIdentifier);\n eventDict[\"attempt_num\"] = attempt_num;\n GAState.clearProgressionTries(progressionIdentifier);\n }\n\n GAEvents.addDimensionsToEvent(eventDict);\n var fieldsToUse = {};\n\n if (fields && Object.keys(fields).length > 0) {\n for (var key in fields) {\n fieldsToUse[key] = fields[key];\n }\n } else {\n for (var key in GAState.instance.currentGlobalCustomEventFields) {\n fieldsToUse[key] = GAState.instance.currentGlobalCustomEventFields[key];\n }\n }\n\n if (mergeFields && fields && Object.keys(fields).length > 0) {\n for (var key in GAState.instance.currentGlobalCustomEventFields) {\n if (!fieldsToUse[key]) {\n fieldsToUse[key] = GAState.instance.currentGlobalCustomEventFields[key];\n }\n }\n }\n\n GAEvents.addCustomFieldsToEvent(eventDict, GAState.validateAndCleanCustomFields(fieldsToUse, GAEvents.customEventFieldsErrorCallback));\n GALogger.i(\"Add PROGRESSION event: {status:\" + progressionStatusString + \", progression01:\" + progression01 + \", progression02:\" + progression02 + \", progression03:\" + progression03 + \", score:\" + score + \", attempt:\" + attempt_num + \"}\");\n GAEvents.addEventToStore(eventDict);\n };\n\n GAEvents.addDesignEvent = function (eventId, value, sendValue, fields, mergeFields) {\n if (!GAState.isEventSubmissionEnabled()) {\n return;\n }\n\n var validationResult = GAValidator.validateDesignEvent(eventId);\n\n if (validationResult != null) {\n GAHTTPApi.instance.sendSdkErrorEvent(validationResult.category, validationResult.area, validationResult.action, validationResult.parameter, validationResult.reason, GAState.getGameKey(), GAState.getGameSecret());\n return;\n }\n\n var eventData = {};\n eventData[\"category\"] = GAEvents.CategoryDesign;\n eventData[\"event_id\"] = eventId;\n\n if (sendValue) {\n eventData[\"value\"] = value;\n }\n\n GAEvents.addDimensionsToEvent(eventData);\n var fieldsToUse = {};\n\n if (fields && Object.keys(fields).length > 0) {\n for (var key in fields) {\n fieldsToUse[key] = fields[key];\n }\n } else {\n for (var key in GAState.instance.currentGlobalCustomEventFields) {\n fieldsToUse[key] = GAState.instance.currentGlobalCustomEventFields[key];\n }\n }\n\n if (mergeFields && fields && Object.keys(fields).length > 0) {\n for (var key in GAState.instance.currentGlobalCustomEventFields) {\n if (!fieldsToUse[key]) {\n fieldsToUse[key] = GAState.instance.currentGlobalCustomEventFields[key];\n }\n }\n }\n\n GAEvents.addCustomFieldsToEvent(eventData, GAState.validateAndCleanCustomFields(fieldsToUse, GAEvents.customEventFieldsErrorCallback));\n GALogger.i(\"Add DESIGN event: {eventId:\" + eventId + \", value:\" + value + \"}\");\n GAEvents.addEventToStore(eventData);\n };\n\n GAEvents.addErrorEvent = function (severity, message, fields, mergeFields, skipAddingFields) {\n if (skipAddingFields === void 0) {\n skipAddingFields = false;\n }\n\n if (!GAState.isEventSubmissionEnabled()) {\n return;\n }\n\n var severityString = GAEvents.errorSeverityToString(severity);\n var validationResult = GAValidator.validateErrorEvent(severity, message);\n\n if (validationResult != null) {\n GAHTTPApi.instance.sendSdkErrorEvent(validationResult.category, validationResult.area, validationResult.action, validationResult.parameter, validationResult.reason, GAState.getGameKey(), GAState.getGameSecret());\n return;\n }\n\n var eventData = {};\n eventData[\"category\"] = GAEvents.CategoryError;\n eventData[\"severity\"] = severityString;\n eventData[\"message\"] = message;\n GAEvents.addDimensionsToEvent(eventData);\n\n if (!skipAddingFields) {\n var fieldsToUse = {};\n\n if (fields && Object.keys(fields).length > 0) {\n for (var key in fields) {\n fieldsToUse[key] = fields[key];\n }\n } else {\n for (var key in GAState.instance.currentGlobalCustomEventFields) {\n fieldsToUse[key] = GAState.instance.currentGlobalCustomEventFields[key];\n }\n }\n\n if (mergeFields && fields && Object.keys(fields).length > 0) {\n for (var key in GAState.instance.currentGlobalCustomEventFields) {\n if (!fieldsToUse[key]) {\n fieldsToUse[key] = GAState.instance.currentGlobalCustomEventFields[key];\n }\n }\n }\n\n GAEvents.addCustomFieldsToEvent(eventData, GAState.validateAndCleanCustomFields(fieldsToUse, GAEvents.customEventFieldsErrorCallback));\n }\n\n GALogger.i(\"Add ERROR event: {severity:\" + severityString + \", message:\" + message + \"}\");\n GAEvents.addEventToStore(eventData);\n };\n\n GAEvents.addAdEvent = function (adAction, adType, adSdkName, adPlacement, noAdReason, duration, sendDuration, fields, mergeFields) {\n if (!GAState.isEventSubmissionEnabled()) {\n return;\n }\n\n var adActionString = GAEvents.adActionToString(adAction);\n var adTypeString = GAEvents.adTypeToString(adType);\n var noAdReasonString = GAEvents.adErrorToString(noAdReason);\n var validationResult = GAValidator.validateAdEvent(adAction, adType, adSdkName, adPlacement);\n\n if (validationResult != null) {\n GAHTTPApi.instance.sendSdkErrorEvent(validationResult.category, validationResult.area, validationResult.action, validationResult.parameter, validationResult.reason, GAState.getGameKey(), GAState.getGameSecret());\n return;\n }\n\n var eventData = {};\n eventData[\"category\"] = GAEvents.CategoryAds;\n eventData[\"ad_sdk_name\"] = adSdkName;\n eventData[\"ad_placement\"] = adPlacement;\n eventData[\"ad_type\"] = adTypeString;\n eventData[\"ad_action\"] = adActionString;\n\n if (adAction == gameanalytics.EGAAdAction.FailedShow && noAdReasonString.length > 0) {\n eventData[\"ad_fail_show_reason\"] = noAdReasonString;\n }\n\n if (sendDuration && (adType == gameanalytics.EGAAdType.RewardedVideo || adType == gameanalytics.EGAAdType.Video)) {\n eventData[\"ad_duration\"] = duration;\n }\n\n GAEvents.addDimensionsToEvent(eventData);\n var fieldsToUse = {};\n\n if (fields && Object.keys(fields).length > 0) {\n for (var key in fields) {\n fieldsToUse[key] = fields[key];\n }\n } else {\n for (var key in GAState.instance.currentGlobalCustomEventFields) {\n fieldsToUse[key] = GAState.instance.currentGlobalCustomEventFields[key];\n }\n }\n\n if (mergeFields && fields && Object.keys(fields).length > 0) {\n for (var key in GAState.instance.currentGlobalCustomEventFields) {\n if (!fieldsToUse[key]) {\n fieldsToUse[key] = GAState.instance.currentGlobalCustomEventFields[key];\n }\n }\n }\n\n GAEvents.addCustomFieldsToEvent(eventData, GAState.validateAndCleanCustomFields(fieldsToUse, GAEvents.customEventFieldsErrorCallback));\n GALogger.i(\"Add AD event: {ad_sdk_name:\" + adSdkName + \", ad_placement:\" + adPlacement + \", ad_type:\" + adTypeString + \", ad_action:\" + adActionString + (adAction == gameanalytics.EGAAdAction.FailedShow && noAdReasonString.length > 0 ? \", ad_fail_show_reason:\" + noAdReasonString : \"\") + (sendDuration && (adType == gameanalytics.EGAAdType.RewardedVideo || adType == gameanalytics.EGAAdType.Video) ? \", ad_duration:\" + duration : \"\") + \"}\");\n GAEvents.addEventToStore(eventData);\n };\n\n GAEvents.processEvents = function (category, performCleanUp) {\n if (!GAState.isEventSubmissionEnabled()) {\n return;\n }\n\n try {\n var requestIdentifier = GAUtilities.createGuid();\n\n if (performCleanUp) {\n GAEvents.cleanupEvents();\n GAEvents.fixMissingSessionEndEvents();\n }\n\n var selectArgs = [];\n selectArgs.push([\"status\", EGAStoreArgsOperator.Equal, \"new\"]);\n var updateWhereArgs = [];\n updateWhereArgs.push([\"status\", EGAStoreArgsOperator.Equal, \"new\"]);\n\n if (category) {\n selectArgs.push([\"category\", EGAStoreArgsOperator.Equal, category]);\n updateWhereArgs.push([\"category\", EGAStoreArgsOperator.Equal, category]);\n }\n\n var updateSetArgs = [];\n updateSetArgs.push([\"status\", requestIdentifier]);\n var events = GAStore.select(EGAStore.Events, selectArgs);\n\n if (!events || events.length == 0) {\n GALogger.i(\"Event queue: No events to send\");\n GAEvents.updateSessionStore();\n return;\n }\n\n if (events.length > GAEvents.MaxEventCount) {\n events = GAStore.select(EGAStore.Events, selectArgs, true, GAEvents.MaxEventCount);\n\n if (!events) {\n return;\n }\n\n var lastItem = events[events.length - 1];\n var lastTimestamp = lastItem[\"client_ts\"];\n selectArgs.push([\"client_ts\", EGAStoreArgsOperator.LessOrEqual, lastTimestamp]);\n events = GAStore.select(EGAStore.Events, selectArgs);\n\n if (!events) {\n return;\n }\n\n updateWhereArgs.push([\"client_ts\", EGAStoreArgsOperator.LessOrEqual, lastTimestamp]);\n }\n\n GALogger.i(\"Event queue: Sending \" + events.length + \" events.\");\n\n if (!GAStore.update(EGAStore.Events, updateSetArgs, updateWhereArgs)) {\n return;\n }\n\n var payloadArray = [];\n\n for (var i = 0; i < events.length; ++i) {\n var ev = events[i];\n var eventDict = JSON.parse(GAUtilities.decode64(ev[\"event\"]));\n\n if (eventDict.length != 0) {\n var clientTs = eventDict[\"client_ts\"];\n\n if (clientTs && !GAValidator.validateClientTs(clientTs)) {\n delete eventDict[\"client_ts\"];\n }\n\n payloadArray.push(eventDict);\n }\n }\n\n GAHTTPApi.instance.sendEventsInArray(payloadArray, requestIdentifier, GAEvents.processEventsCallback);\n } catch (e) {\n GALogger.e(\"Error during ProcessEvents(): \" + e.stack);\n GAHTTPApi.instance.sendSdkErrorEvent(events_1.EGASdkErrorCategory.Json, events_1.EGASdkErrorArea.ProcessEvents, events_1.EGASdkErrorAction.JsonError, events_1.EGASdkErrorParameter.Undefined, e.stack, GAState.getGameKey(), GAState.getGameSecret());\n }\n };\n\n GAEvents.processEventsCallback = function (responseEnum, dataDict, requestId, eventCount) {\n var requestIdWhereArgs = [];\n requestIdWhereArgs.push([\"status\", EGAStoreArgsOperator.Equal, requestId]);\n\n if (responseEnum === EGAHTTPApiResponse.Ok) {\n GAStore[\"delete\"](EGAStore.Events, requestIdWhereArgs);\n GALogger.i(\"Event queue: \" + eventCount + \" events sent.\");\n } else {\n if (responseEnum === EGAHTTPApiResponse.NoResponse) {\n var setArgs = [];\n setArgs.push([\"status\", \"new\"]);\n GALogger.w(\"Event queue: Failed to send events to collector - Retrying next time\");\n GAStore.update(EGAStore.Events, setArgs, requestIdWhereArgs);\n } else {\n if (dataDict) {\n var json;\n var count = 0;\n\n for (var j in dataDict) {\n if (count == 0) {\n json = dataDict[j];\n }\n\n ++count;\n }\n\n if (responseEnum === EGAHTTPApiResponse.BadRequest && json.constructor === Array) {\n GALogger.w(\"Event queue: \" + eventCount + \" events sent. \" + count + \" events failed GA server validation.\");\n } else {\n GALogger.w(\"Event queue: Failed to send events.\");\n }\n } else {\n GALogger.w(\"Event queue: Failed to send events.\");\n }\n\n GAStore[\"delete\"](EGAStore.Events, requestIdWhereArgs);\n }\n }\n };\n\n GAEvents.cleanupEvents = function () {\n GAStore.update(EGAStore.Events, [[\"status\", \"new\"]]);\n };\n\n GAEvents.fixMissingSessionEndEvents = function () {\n if (!GAState.isEventSubmissionEnabled()) {\n return;\n }\n\n var args = [];\n args.push([\"session_id\", EGAStoreArgsOperator.NotEqual, GAState.getSessionId()]);\n var sessions = GAStore.select(EGAStore.Sessions, args);\n\n if (!sessions || sessions.length == 0) {\n return;\n }\n\n GALogger.i(sessions.length + \" session(s) located with missing session_end event.\");\n\n for (var i = 0; i < sessions.length; ++i) {\n var sessionEndEvent = JSON.parse(GAUtilities.decode64(sessions[i][\"event\"]));\n var event_ts = sessionEndEvent[\"client_ts\"];\n var start_ts = sessions[i][\"timestamp\"];\n var length = event_ts - start_ts;\n length = Math.max(0, length);\n sessionEndEvent[\"category\"] = GAEvents.CategorySessionEnd;\n sessionEndEvent[\"length\"] = length;\n GAEvents.addEventToStore(sessionEndEvent);\n }\n };\n\n GAEvents.addEventToStore = function (eventData) {\n if (!GAState.isEventSubmissionEnabled()) {\n return;\n }\n\n if (!GAState.isInitialized()) {\n GALogger.w(\"Could not add event: SDK is not initialized\");\n return;\n }\n\n try {\n if (GAStore.isStoreTooLargeForEvents() && !GAUtilities.stringMatch(eventData[\"category\"], /^(user|session_end|business)$/)) {\n GALogger.w(\"Database too large. Event has been blocked.\");\n GAHTTPApi.instance.sendSdkErrorEvent(events_1.EGASdkErrorCategory.Database, events_1.EGASdkErrorArea.AddEventsToStore, events_1.EGASdkErrorAction.DatabaseTooLarge, events_1.EGASdkErrorParameter.Undefined, \"\", GAState.getGameKey(), GAState.getGameSecret());\n return;\n }\n\n var ev = GAState.getEventAnnotations();\n\n for (var e in eventData) {\n ev[e] = eventData[e];\n }\n\n var json = JSON.stringify(ev);\n GALogger.ii(\"Event added to queue: \" + json);\n var values = {};\n values[\"status\"] = \"new\";\n values[\"category\"] = ev[\"category\"];\n values[\"session_id\"] = ev[\"session_id\"];\n values[\"client_ts\"] = ev[\"client_ts\"];\n values[\"event\"] = GAUtilities.encode64(JSON.stringify(ev));\n GAStore.insert(EGAStore.Events, values);\n\n if (eventData[\"category\"] == GAEvents.CategorySessionEnd) {\n GAStore[\"delete\"](EGAStore.Sessions, [[\"session_id\", EGAStoreArgsOperator.Equal, ev[\"session_id\"]]]);\n } else {\n GAEvents.updateSessionStore();\n }\n\n if (GAStore.isStorageAvailable()) {\n GAStore.save(GAState.getGameKey());\n }\n } catch (e) {\n GALogger.e(\"addEventToStore: error\");\n GALogger.e(e.stack);\n GAHTTPApi.instance.sendSdkErrorEvent(events_1.EGASdkErrorCategory.Database, events_1.EGASdkErrorArea.AddEventsToStore, events_1.EGASdkErrorAction.DatabaseTooLarge, events_1.EGASdkErrorParameter.Undefined, e.stack, GAState.getGameKey(), GAState.getGameSecret());\n }\n };\n\n GAEvents.updateSessionStore = function () {\n if (GAState.sessionIsStarted()) {\n var values = {};\n values[\"session_id\"] = GAState.instance.sessionId;\n values[\"timestamp\"] = GAState.getSessionStart();\n var ev = GAState.getEventAnnotations();\n GAEvents.addDimensionsToEvent(ev);\n var fieldsToUse = GAState.instance.currentGlobalCustomEventFields;\n GAEvents.addCustomFieldsToEvent(ev, GAState.validateAndCleanCustomFields(fieldsToUse, GAEvents.customEventFieldsErrorCallback));\n values[\"event\"] = GAUtilities.encode64(JSON.stringify(ev));\n GAStore.insert(EGAStore.Sessions, values, true, \"session_id\");\n\n if (GAStore.isStorageAvailable()) {\n GAStore.save(GAState.getGameKey());\n }\n }\n };\n\n GAEvents.addDimensionsToEvent = function (eventData) {\n if (!eventData) {\n return;\n }\n\n if (GAState.getCurrentCustomDimension01()) {\n eventData[\"custom_01\"] = GAState.getCurrentCustomDimension01();\n }\n\n if (GAState.getCurrentCustomDimension02()) {\n eventData[\"custom_02\"] = GAState.getCurrentCustomDimension02();\n }\n\n if (GAState.getCurrentCustomDimension03()) {\n eventData[\"custom_03\"] = GAState.getCurrentCustomDimension03();\n }\n };\n\n GAEvents.addCustomFieldsToEvent = function (eventData, fields) {\n if (!eventData) {\n return;\n }\n\n if (fields && Object.keys(fields).length > 0) {\n eventData[\"custom_fields\"] = fields;\n }\n };\n\n GAEvents.resourceFlowTypeToString = function (value) {\n if (value == gameanalytics.EGAResourceFlowType.Source || value == gameanalytics.EGAResourceFlowType[gameanalytics.EGAResourceFlowType.Source]) {\n return \"Source\";\n } else if (value == gameanalytics.EGAResourceFlowType.Sink || value == gameanalytics.EGAResourceFlowType[gameanalytics.EGAResourceFlowType.Sink]) {\n return \"Sink\";\n } else {\n return \"\";\n }\n };\n\n GAEvents.progressionStatusToString = function (value) {\n if (value == gameanalytics.EGAProgressionStatus.Start || value == gameanalytics.EGAProgressionStatus[gameanalytics.EGAProgressionStatus.Start]) {\n return \"Start\";\n } else if (value == gameanalytics.EGAProgressionStatus.Complete || value == gameanalytics.EGAProgressionStatus[gameanalytics.EGAProgressionStatus.Complete]) {\n return \"Complete\";\n } else if (value == gameanalytics.EGAProgressionStatus.Fail || value == gameanalytics.EGAProgressionStatus[gameanalytics.EGAProgressionStatus.Fail]) {\n return \"Fail\";\n } else {\n return \"\";\n }\n };\n\n GAEvents.errorSeverityToString = function (value) {\n if (value == gameanalytics.EGAErrorSeverity.Debug || value == gameanalytics.EGAErrorSeverity[gameanalytics.EGAErrorSeverity.Debug]) {\n return \"debug\";\n } else if (value == gameanalytics.EGAErrorSeverity.Info || value == gameanalytics.EGAErrorSeverity[gameanalytics.EGAErrorSeverity.Info]) {\n return \"info\";\n } else if (value == gameanalytics.EGAErrorSeverity.Warning || value == gameanalytics.EGAErrorSeverity[gameanalytics.EGAErrorSeverity.Warning]) {\n return \"warning\";\n } else if (value == gameanalytics.EGAErrorSeverity.Error || value == gameanalytics.EGAErrorSeverity[gameanalytics.EGAErrorSeverity.Error]) {\n return \"error\";\n } else if (value == gameanalytics.EGAErrorSeverity.Critical || value == gameanalytics.EGAErrorSeverity[gameanalytics.EGAErrorSeverity.Critical]) {\n return \"critical\";\n } else {\n return \"\";\n }\n };\n\n GAEvents.adActionToString = function (value) {\n if (value == gameanalytics.EGAAdAction.Clicked || value == gameanalytics.EGAAdAction[gameanalytics.EGAAdAction.Clicked]) {\n return \"clicked\";\n } else if (value == gameanalytics.EGAAdAction.Show || value == gameanalytics.EGAAdAction[gameanalytics.EGAAdAction.Show]) {\n return \"show\";\n } else if (value == gameanalytics.EGAAdAction.FailedShow || value == gameanalytics.EGAAdAction[gameanalytics.EGAAdAction.FailedShow]) {\n return \"failed_show\";\n } else if (value == gameanalytics.EGAAdAction.RewardReceived || value == gameanalytics.EGAAdAction[gameanalytics.EGAAdAction.RewardReceived]) {\n return \"reward_received\";\n } else {\n return \"\";\n }\n };\n\n GAEvents.adErrorToString = function (value) {\n if (value == gameanalytics.EGAAdError.Unknown || value == gameanalytics.EGAAdError[gameanalytics.EGAAdError.Unknown]) {\n return \"unknown\";\n } else if (value == gameanalytics.EGAAdError.Offline || value == gameanalytics.EGAAdError[gameanalytics.EGAAdError.Offline]) {\n return \"offline\";\n } else if (value == gameanalytics.EGAAdError.NoFill || value == gameanalytics.EGAAdError[gameanalytics.EGAAdError.NoFill]) {\n return \"no_fill\";\n } else if (value == gameanalytics.EGAAdError.InternalError || value == gameanalytics.EGAAdError[gameanalytics.EGAAdError.InternalError]) {\n return \"internal_error\";\n } else if (value == gameanalytics.EGAAdError.InvalidRequest || value == gameanalytics.EGAAdError[gameanalytics.EGAAdError.InvalidRequest]) {\n return \"invalid_request\";\n } else if (value == gameanalytics.EGAAdError.UnableToPrecache || value == gameanalytics.EGAAdError[gameanalytics.EGAAdError.UnableToPrecache]) {\n return \"unable_to_precache\";\n } else {\n return \"\";\n }\n };\n\n GAEvents.adTypeToString = function (value) {\n if (value == gameanalytics.EGAAdType.Video || value == gameanalytics.EGAAdType[gameanalytics.EGAAdType.Video]) {\n return \"video\";\n } else if (value == gameanalytics.EGAAdType.RewardedVideo || value == gameanalytics.EGAAdError[gameanalytics.EGAAdType.RewardedVideo]) {\n return \"rewarded_video\";\n } else if (value == gameanalytics.EGAAdType.Playable || value == gameanalytics.EGAAdError[gameanalytics.EGAAdType.Playable]) {\n return \"playable\";\n } else if (value == gameanalytics.EGAAdType.Interstitial || value == gameanalytics.EGAAdError[gameanalytics.EGAAdType.Interstitial]) {\n return \"interstitial\";\n } else if (value == gameanalytics.EGAAdType.OfferWall || value == gameanalytics.EGAAdError[gameanalytics.EGAAdType.OfferWall]) {\n return \"offer_wall\";\n } else if (value == gameanalytics.EGAAdType.Banner || value == gameanalytics.EGAAdError[gameanalytics.EGAAdType.Banner]) {\n return \"banner\";\n } else {\n return \"\";\n }\n };\n\n GAEvents.CategorySessionStart = \"user\";\n GAEvents.CategorySessionEnd = \"session_end\";\n GAEvents.CategoryDesign = \"design\";\n GAEvents.CategoryBusiness = \"business\";\n GAEvents.CategoryProgression = \"progression\";\n GAEvents.CategoryResource = \"resource\";\n GAEvents.CategoryError = \"error\";\n GAEvents.CategoryAds = \"ads\";\n GAEvents.MaxEventCount = 500;\n GAEvents.MAX_ERROR_COUNT = 10;\n GAEvents.countMap = {};\n GAEvents.timestampMap = {};\n return GAEvents;\n }();\n\n events_1.GAEvents = GAEvents;\n })(events = gameanalytics.events || (gameanalytics.events = {}));\n})(gameanalytics || (gameanalytics = {}));\n\nvar gameanalytics;\n\n(function (gameanalytics) {\n var threading;\n\n (function (threading) {\n var GALogger = gameanalytics.logging.GALogger;\n var GAState = gameanalytics.state.GAState;\n var GAEvents = gameanalytics.events.GAEvents;\n\n var GAThreading = function () {\n function GAThreading() {\n this.blocks = new threading.PriorityQueue({\n compare: function compare(x, y) {\n return x - y;\n }\n });\n this.id2TimedBlockMap = {};\n GAThreading.startThread();\n }\n\n GAThreading.createTimedBlock = function (delayInSeconds) {\n if (delayInSeconds === void 0) {\n delayInSeconds = 0;\n }\n\n var time = new Date();\n time.setSeconds(time.getSeconds() + delayInSeconds);\n var timedBlock = new threading.TimedBlock(time);\n return timedBlock;\n };\n\n GAThreading.performTaskOnGAThread = function (taskBlock, delayInSeconds) {\n if (delayInSeconds === void 0) {\n delayInSeconds = 0;\n }\n\n var time = new Date();\n time.setSeconds(time.getSeconds() + delayInSeconds);\n var timedBlock = new threading.TimedBlock(time);\n timedBlock.block = taskBlock;\n GAThreading.instance.id2TimedBlockMap[timedBlock.id] = timedBlock;\n GAThreading.instance.addTimedBlock(timedBlock);\n };\n\n GAThreading.performTimedBlockOnGAThread = function (timedBlock) {\n GAThreading.instance.id2TimedBlockMap[timedBlock.id] = timedBlock;\n GAThreading.instance.addTimedBlock(timedBlock);\n };\n\n GAThreading.scheduleTimer = function (interval, callback) {\n var time = new Date();\n time.setSeconds(time.getSeconds() + interval);\n var timedBlock = new threading.TimedBlock(time);\n timedBlock.block = callback;\n GAThreading.instance.id2TimedBlockMap[timedBlock.id] = timedBlock;\n GAThreading.instance.addTimedBlock(timedBlock);\n return timedBlock.id;\n };\n\n GAThreading.getTimedBlockById = function (blockIdentifier) {\n if (blockIdentifier in GAThreading.instance.id2TimedBlockMap) {\n return GAThreading.instance.id2TimedBlockMap[blockIdentifier];\n } else {\n return null;\n }\n };\n\n GAThreading.ensureEventQueueIsRunning = function () {\n GAThreading.instance.keepRunning = true;\n\n if (!GAThreading.instance.isRunning) {\n GAThreading.instance.isRunning = true;\n GAThreading.scheduleTimer(GAThreading.ProcessEventsIntervalInSeconds, GAThreading.processEventQueue);\n }\n };\n\n GAThreading.endSessionAndStopQueue = function () {\n if (GAState.isInitialized()) {\n GALogger.i(\"Ending session.\");\n GAThreading.stopEventQueue();\n\n if (GAState.isEnabled() && GAState.sessionIsStarted()) {\n GAEvents.addSessionEndEvent();\n GAState.instance.sessionStart = 0;\n }\n }\n };\n\n GAThreading.stopEventQueue = function () {\n GAThreading.instance.keepRunning = false;\n };\n\n GAThreading.ignoreTimer = function (blockIdentifier) {\n if (blockIdentifier in GAThreading.instance.id2TimedBlockMap) {\n GAThreading.instance.id2TimedBlockMap[blockIdentifier].ignore = true;\n }\n };\n\n GAThreading.setEventProcessInterval = function (interval) {\n if (interval > 0) {\n GAThreading.ProcessEventsIntervalInSeconds = interval;\n }\n };\n\n GAThreading.prototype.addTimedBlock = function (timedBlock) {\n this.blocks.enqueue(timedBlock.deadline.getTime(), timedBlock);\n };\n\n GAThreading.run = function () {\n clearTimeout(GAThreading.runTimeoutId);\n\n try {\n var timedBlock;\n\n while (timedBlock = GAThreading.getNextBlock()) {\n if (!timedBlock.ignore) {\n if (timedBlock.async) {\n if (!timedBlock.running) {\n timedBlock.running = true;\n timedBlock.block();\n break;\n }\n } else {\n timedBlock.block();\n }\n }\n }\n\n GAThreading.runTimeoutId = setTimeout(GAThreading.run, GAThreading.ThreadWaitTimeInMs);\n return;\n } catch (e) {\n GALogger.e(\"Error on GA thread\");\n GALogger.e(e.stack);\n }\n };\n\n GAThreading.startThread = function () {\n GAThreading.runTimeoutId = setTimeout(GAThreading.run, 0);\n };\n\n GAThreading.getNextBlock = function () {\n var now = new Date();\n\n if (GAThreading.instance.blocks.hasItems() && GAThreading.instance.blocks.peek().deadline.getTime() <= now.getTime()) {\n if (GAThreading.instance.blocks.peek().async) {\n if (GAThreading.instance.blocks.peek().running) {\n return GAThreading.instance.blocks.peek();\n } else {\n return GAThreading.instance.blocks.dequeue();\n }\n } else {\n return GAThreading.instance.blocks.dequeue();\n }\n }\n\n return null;\n };\n\n GAThreading.processEventQueue = function () {\n GAEvents.processEvents(\"\", true);\n\n if (GAThreading.instance.keepRunning) {\n GAThreading.scheduleTimer(GAThreading.ProcessEventsIntervalInSeconds, GAThreading.processEventQueue);\n } else {\n GAThreading.instance.isRunning = false;\n }\n };\n\n GAThreading.instance = new GAThreading();\n GAThreading.ThreadWaitTimeInMs = 1000;\n GAThreading.ProcessEventsIntervalInSeconds = 8.0;\n return GAThreading;\n }();\n\n threading.GAThreading = GAThreading;\n })(threading = gameanalytics.threading || (gameanalytics.threading = {}));\n})(gameanalytics || (gameanalytics = {}));\n\nvar gameanalytics;\n\n(function (gameanalytics) {\n var GAThreading = gameanalytics.threading.GAThreading;\n var GALogger = gameanalytics.logging.GALogger;\n var GAStore = gameanalytics.store.GAStore;\n var GAState = gameanalytics.state.GAState;\n var GAHTTPApi = gameanalytics.http.GAHTTPApi;\n var GADevice = gameanalytics.device.GADevice;\n var GAValidator = gameanalytics.validators.GAValidator;\n var EGAHTTPApiResponse = gameanalytics.http.EGAHTTPApiResponse;\n var GAUtilities = gameanalytics.utilities.GAUtilities;\n var GAEvents = gameanalytics.events.GAEvents;\n\n var GameAnalytics = function () {\n function GameAnalytics() {}\n\n GameAnalytics.getGlobalObject = function () {\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n }\n\n if (typeof self !== 'undefined') {\n return self;\n }\n\n if (typeof window !== 'undefined') {\n return window;\n }\n\n if (typeof global !== 'undefined') {\n return global;\n }\n\n return undefined;\n };\n\n GameAnalytics.init = function () {\n GADevice.touch();\n GameAnalytics.methodMap['configureAvailableCustomDimensions01'] = GameAnalytics.configureAvailableCustomDimensions01;\n GameAnalytics.methodMap['configureAvailableCustomDimensions02'] = GameAnalytics.configureAvailableCustomDimensions02;\n GameAnalytics.methodMap['configureAvailableCustomDimensions03'] = GameAnalytics.configureAvailableCustomDimensions03;\n GameAnalytics.methodMap['configureAvailableResourceCurrencies'] = GameAnalytics.configureAvailableResourceCurrencies;\n GameAnalytics.methodMap['configureAvailableResourceItemTypes'] = GameAnalytics.configureAvailableResourceItemTypes;\n GameAnalytics.methodMap['configureBuild'] = GameAnalytics.configureBuild;\n GameAnalytics.methodMap['configureSdkGameEngineVersion'] = GameAnalytics.configureSdkGameEngineVersion;\n GameAnalytics.methodMap['configureGameEngineVersion'] = GameAnalytics.configureGameEngineVersion;\n GameAnalytics.methodMap['configureUserId'] = GameAnalytics.configureUserId;\n GameAnalytics.methodMap['initialize'] = GameAnalytics.initialize;\n GameAnalytics.methodMap['addBusinessEvent'] = GameAnalytics.addBusinessEvent;\n GameAnalytics.methodMap['addResourceEvent'] = GameAnalytics.addResourceEvent;\n GameAnalytics.methodMap['addProgressionEvent'] = GameAnalytics.addProgressionEvent;\n GameAnalytics.methodMap['addDesignEvent'] = GameAnalytics.addDesignEvent;\n GameAnalytics.methodMap['addErrorEvent'] = GameAnalytics.addErrorEvent;\n GameAnalytics.methodMap['addAdEvent'] = GameAnalytics.addAdEvent;\n GameAnalytics.methodMap['setEnabledInfoLog'] = GameAnalytics.setEnabledInfoLog;\n GameAnalytics.methodMap['setEnabledVerboseLog'] = GameAnalytics.setEnabledVerboseLog;\n GameAnalytics.methodMap['setEnabledManualSessionHandling'] = GameAnalytics.setEnabledManualSessionHandling;\n GameAnalytics.methodMap['setEnabledEventSubmission'] = GameAnalytics.setEnabledEventSubmission;\n GameAnalytics.methodMap['setCustomDimension01'] = GameAnalytics.setCustomDimension01;\n GameAnalytics.methodMap['setCustomDimension02'] = GameAnalytics.setCustomDimension02;\n GameAnalytics.methodMap['setCustomDimension03'] = GameAnalytics.setCustomDimension03;\n GameAnalytics.methodMap['setGlobalCustomEventFields'] = GameAnalytics.setGlobalCustomEventFields;\n GameAnalytics.methodMap['setEventProcessInterval'] = GameAnalytics.setEventProcessInterval;\n GameAnalytics.methodMap['startSession'] = GameAnalytics.startSession;\n GameAnalytics.methodMap['endSession'] = GameAnalytics.endSession;\n GameAnalytics.methodMap['onStop'] = GameAnalytics.onStop;\n GameAnalytics.methodMap['onResume'] = GameAnalytics.onResume;\n GameAnalytics.methodMap['addRemoteConfigsListener'] = GameAnalytics.addRemoteConfigsListener;\n GameAnalytics.methodMap['removeRemoteConfigsListener'] = GameAnalytics.removeRemoteConfigsListener;\n GameAnalytics.methodMap['getRemoteConfigsValueAsString'] = GameAnalytics.getRemoteConfigsValueAsString;\n GameAnalytics.methodMap['isRemoteConfigsReady'] = GameAnalytics.isRemoteConfigsReady;\n GameAnalytics.methodMap['getRemoteConfigsContentAsString'] = GameAnalytics.getRemoteConfigsContentAsString;\n GameAnalytics.methodMap['addOnBeforeUnloadListener'] = GameAnalytics.addOnBeforeUnloadListener;\n GameAnalytics.methodMap['removeOnBeforeUnloadListener'] = GameAnalytics.removeOnBeforeUnloadListener;\n\n if (typeof GameAnalytics.getGlobalObject() !== 'undefined' && typeof GameAnalytics.getGlobalObject()['GameAnalytics'] !== 'undefined' && typeof GameAnalytics.getGlobalObject()['GameAnalytics']['q'] !== 'undefined') {\n var q = GameAnalytics.getGlobalObject()['GameAnalytics']['q'];\n\n for (var i in q) {\n GameAnalytics.gaCommand.apply(null, q[i]);\n }\n }\n\n window.addEventListener(\"beforeunload\", function (e) {\n console.log('addEventListener unload');\n GAState.instance.isUnloading = true;\n GAState.notifyBeforeUnloadListeners();\n GAThreading.endSessionAndStopQueue();\n GAState.instance.isUnloading = false;\n });\n };\n\n GameAnalytics.gaCommand = function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n if (args.length > 0) {\n if (args[0] in gameanalytics.GameAnalytics.methodMap) {\n if (args.length > 1) {\n gameanalytics.GameAnalytics.methodMap[args[0]].apply(null, Array.prototype.slice.call(args, 1));\n } else {\n gameanalytics.GameAnalytics.methodMap[args[0]]();\n }\n }\n }\n };\n\n GameAnalytics.configureAvailableCustomDimensions01 = function (customDimensions) {\n if (customDimensions === void 0) {\n customDimensions = [];\n }\n\n GAThreading.performTaskOnGAThread(function () {\n if (GameAnalytics.isSdkReady(true, false)) {\n GALogger.w(\"Available custom dimensions must be set before SDK is initialized\");\n return;\n }\n\n GAState.setAvailableCustomDimensions01(customDimensions);\n });\n };\n\n GameAnalytics.configureAvailableCustomDimensions02 = function (customDimensions) {\n if (customDimensions === void 0) {\n customDimensions = [];\n }\n\n GAThreading.performTaskOnGAThread(function () {\n if (GameAnalytics.isSdkReady(true, false)) {\n GALogger.w(\"Available custom dimensions must be set before SDK is initialized\");\n return;\n }\n\n GAState.setAvailableCustomDimensions02(customDimensions);\n });\n };\n\n GameAnalytics.configureAvailableCustomDimensions03 = function (customDimensions) {\n if (customDimensions === void 0) {\n customDimensions = [];\n }\n\n GAThreading.performTaskOnGAThread(function () {\n if (GameAnalytics.isSdkReady(true, false)) {\n GALogger.w(\"Available custom dimensions must be set before SDK is initialized\");\n return;\n }\n\n GAState.setAvailableCustomDimensions03(customDimensions);\n });\n };\n\n GameAnalytics.configureAvailableResourceCurrencies = function (resourceCurrencies) {\n if (resourceCurrencies === void 0) {\n resourceCurrencies = [];\n }\n\n GAThreading.performTaskOnGAThread(function () {\n if (GameAnalytics.isSdkReady(true, false)) {\n GALogger.w(\"Available resource currencies must be set before SDK is initialized\");\n return;\n }\n\n GAState.setAvailableResourceCurrencies(resourceCurrencies);\n });\n };\n\n GameAnalytics.configureAvailableResourceItemTypes = function (resourceItemTypes) {\n if (resourceItemTypes === void 0) {\n resourceItemTypes = [];\n }\n\n GAThreading.performTaskOnGAThread(function () {\n if (GameAnalytics.isSdkReady(true, false)) {\n GALogger.w(\"Available resource item types must be set before SDK is initialized\");\n return;\n }\n\n GAState.setAvailableResourceItemTypes(resourceItemTypes);\n });\n };\n\n GameAnalytics.configureBuild = function (build) {\n if (build === void 0) {\n build = \"\";\n }\n\n GAThreading.performTaskOnGAThread(function () {\n if (GameAnalytics.isSdkReady(true, false)) {\n GALogger.w(\"Build version must be set before SDK is initialized.\");\n return;\n }\n\n if (!GAValidator.validateBuild(build)) {\n GALogger.i(\"Validation fail - configure build: Cannot be null, empty or above 32 length. String: \" + build);\n return;\n }\n\n GAState.setBuild(build);\n });\n };\n\n GameAnalytics.configureSdkGameEngineVersion = function (sdkGameEngineVersion) {\n if (sdkGameEngineVersion === void 0) {\n sdkGameEngineVersion = \"\";\n }\n\n GAThreading.performTaskOnGAThread(function () {\n if (GameAnalytics.isSdkReady(true, false)) {\n return;\n }\n\n if (!GAValidator.validateSdkWrapperVersion(sdkGameEngineVersion)) {\n GALogger.i(\"Validation fail - configure sdk version: Sdk version not supported. String: \" + sdkGameEngineVersion);\n return;\n }\n\n GADevice.sdkGameEngineVersion = sdkGameEngineVersion;\n });\n };\n\n GameAnalytics.configureGameEngineVersion = function (gameEngineVersion) {\n if (gameEngineVersion === void 0) {\n gameEngineVersion = \"\";\n }\n\n GAThreading.performTaskOnGAThread(function () {\n if (GameAnalytics.isSdkReady(true, false)) {\n return;\n }\n\n if (!GAValidator.validateEngineVersion(gameEngineVersion)) {\n GALogger.i(\"Validation fail - configure game engine version: Game engine version not supported. String: \" + gameEngineVersion);\n return;\n }\n\n GADevice.gameEngineVersion = gameEngineVersion;\n });\n };\n\n GameAnalytics.configureUserId = function (uId) {\n if (uId === void 0) {\n uId = \"\";\n }\n\n GAThreading.performTaskOnGAThread(function () {\n if (GameAnalytics.isSdkReady(true, false)) {\n GALogger.w(\"A custom user id must be set before SDK is initialized.\");\n return;\n }\n\n if (!GAValidator.validateUserId(uId)) {\n GALogger.i(\"Validation fail - configure user_id: Cannot be null, empty or above 64 length. Will use default user_id method. Used string: \" + uId);\n return;\n }\n\n GAState.setUserId(uId);\n });\n };\n\n GameAnalytics.initialize = function (gameKey, gameSecret) {\n if (gameKey === void 0) {\n gameKey = \"\";\n }\n\n if (gameSecret === void 0) {\n gameSecret = \"\";\n }\n\n GADevice.updateConnectionType();\n var timedBlock = GAThreading.createTimedBlock();\n timedBlock.async = true;\n GameAnalytics.initTimedBlockId = timedBlock.id;\n\n timedBlock.block = function () {\n if (GameAnalytics.isSdkReady(true, false)) {\n GALogger.w(\"SDK already initialized. Can only be called once.\");\n return;\n }\n\n if (!GAValidator.validateKeys(gameKey, gameSecret)) {\n GALogger.w(\"SDK failed initialize. Game key or secret key is invalid. Can only contain characters A-z 0-9, gameKey is 32 length, gameSecret is 40 length. Failed keys - gameKey: \" + gameKey + \", secretKey: \" + gameSecret);\n return;\n }\n\n GAState.setKeys(gameKey, gameSecret);\n GameAnalytics.internalInitialize();\n };\n\n GAThreading.performTimedBlockOnGAThread(timedBlock);\n };\n\n GameAnalytics.addBusinessEvent = function (currency, amount, itemType, itemId, cartType, customFields, mergeFields) {\n if (currency === void 0) {\n currency = \"\";\n }\n\n if (amount === void 0) {\n amount = 0;\n }\n\n if (itemType === void 0) {\n itemType = \"\";\n }\n\n if (itemId === void 0) {\n itemId = \"\";\n }\n\n if (cartType === void 0) {\n cartType = \"\";\n }\n\n if (customFields === void 0) {\n customFields = {};\n }\n\n if (mergeFields === void 0) {\n mergeFields = false;\n }\n\n GADevice.updateConnectionType();\n\n if (!GAState.instance.isUnloading) {\n GAThreading.performTaskOnGAThread(function () {\n if (!GameAnalytics.isSdkReady(true, true, \"Could not add business event\")) {\n return;\n }\n\n GAEvents.addBusinessEvent(currency, amount, itemType, itemId, cartType, customFields, mergeFields);\n });\n } else {\n if (!GameAnalytics.isSdkReady(true, true, \"Could not add business event\")) {\n return;\n }\n\n GAEvents.addBusinessEvent(currency, amount, itemType, itemId, cartType, customFields, mergeFields);\n }\n };\n\n GameAnalytics.addResourceEvent = function (flowType, currency, amount, itemType, itemId, customFields, mergeFields) {\n if (flowType === void 0) {\n flowType = gameanalytics.EGAResourceFlowType.Undefined;\n }\n\n if (currency === void 0) {\n currency = \"\";\n }\n\n if (amount === void 0) {\n amount = 0;\n }\n\n if (itemType === void 0) {\n itemType = \"\";\n }\n\n if (itemId === void 0) {\n itemId = \"\";\n }\n\n if (customFields === void 0) {\n customFields = {};\n }\n\n if (mergeFields === void 0) {\n mergeFields = false;\n }\n\n GADevice.updateConnectionType();\n\n if (!GAState.instance.isUnloading) {\n GAThreading.performTaskOnGAThread(function () {\n if (!GameAnalytics.isSdkReady(true, true, \"Could not add resource event\")) {\n return;\n }\n\n GAEvents.addResourceEvent(flowType, currency, amount, itemType, itemId, customFields, mergeFields);\n });\n } else {\n if (!GameAnalytics.isSdkReady(true, true, \"Could not add resource event\")) {\n return;\n }\n\n GAEvents.addResourceEvent(flowType, currency, amount, itemType, itemId, customFields, mergeFields);\n }\n };\n\n GameAnalytics.addProgressionEvent = function (progressionStatus, progression01, progression02, progression03, score, customFields, mergeFields) {\n if (progressionStatus === void 0) {\n progressionStatus = gameanalytics.EGAProgressionStatus.Undefined;\n }\n\n if (progression01 === void 0) {\n progression01 = \"\";\n }\n\n if (progression02 === void 0) {\n progression02 = \"\";\n }\n\n if (progression03 === void 0) {\n progression03 = \"\";\n }\n\n if (customFields === void 0) {\n customFields = {};\n }\n\n if (mergeFields === void 0) {\n mergeFields = false;\n }\n\n GADevice.updateConnectionType();\n\n if (!GAState.instance.isUnloading) {\n GAThreading.performTaskOnGAThread(function () {\n if (!GameAnalytics.isSdkReady(true, true, \"Could not add progression event\")) {\n return;\n }\n\n var sendScore = typeof score === \"number\";\n GAEvents.addProgressionEvent(progressionStatus, progression01, progression02, progression03, sendScore ? score : 0, sendScore, customFields, mergeFields);\n });\n } else {\n if (!GameAnalytics.isSdkReady(true, true, \"Could not add progression event\")) {\n return;\n }\n\n var sendScore = typeof score === \"number\";\n GAEvents.addProgressionEvent(progressionStatus, progression01, progression02, progression03, sendScore ? score : 0, sendScore, customFields, mergeFields);\n }\n };\n\n GameAnalytics.addDesignEvent = function (eventId, value, customFields, mergeFields) {\n if (customFields === void 0) {\n customFields = {};\n }\n\n if (mergeFields === void 0) {\n mergeFields = false;\n }\n\n GADevice.updateConnectionType();\n\n if (!GAState.instance.isUnloading) {\n GAThreading.performTaskOnGAThread(function () {\n if (!GameAnalytics.isSdkReady(true, true, \"Could not add design event\")) {\n return;\n }\n\n var sendValue = typeof value === \"number\";\n GAEvents.addDesignEvent(eventId, sendValue ? value : 0, sendValue, customFields, mergeFields);\n });\n } else {\n if (!GameAnalytics.isSdkReady(true, true, \"Could not add design event\")) {\n return;\n }\n\n var sendValue = typeof value === \"number\";\n GAEvents.addDesignEvent(eventId, sendValue ? value : 0, sendValue, customFields, mergeFields);\n }\n };\n\n GameAnalytics.addErrorEvent = function (severity, message, customFields, mergeFields) {\n if (severity === void 0) {\n severity = gameanalytics.EGAErrorSeverity.Undefined;\n }\n\n if (message === void 0) {\n message = \"\";\n }\n\n if (customFields === void 0) {\n customFields = {};\n }\n\n if (mergeFields === void 0) {\n mergeFields = false;\n }\n\n GADevice.updateConnectionType();\n\n if (!GAState.instance.isUnloading) {\n GAThreading.performTaskOnGAThread(function () {\n if (!GameAnalytics.isSdkReady(true, true, \"Could not add error event\")) {\n return;\n }\n\n GAEvents.addErrorEvent(severity, message, customFields, mergeFields);\n });\n } else {\n if (!GameAnalytics.isSdkReady(true, true, \"Could not add error event\")) {\n return;\n }\n\n GAEvents.addErrorEvent(severity, message, customFields, mergeFields);\n }\n };\n\n GameAnalytics.addAdEventWithNoAdReason = function (adAction, adType, adSdkName, adPlacement, noAdReason, customFields, mergeFields) {\n if (adAction === void 0) {\n adAction = gameanalytics.EGAAdAction.Undefined;\n }\n\n if (adType === void 0) {\n adType = gameanalytics.EGAAdType.Undefined;\n }\n\n if (adSdkName === void 0) {\n adSdkName = \"\";\n }\n\n if (adPlacement === void 0) {\n adPlacement = \"\";\n }\n\n if (noAdReason === void 0) {\n noAdReason = gameanalytics.EGAAdError.Undefined;\n }\n\n if (customFields === void 0) {\n customFields = {};\n }\n\n if (mergeFields === void 0) {\n mergeFields = false;\n }\n\n GADevice.updateConnectionType();\n\n if (!GAState.instance.isUnloading) {\n GAThreading.performTaskOnGAThread(function () {\n if (!GameAnalytics.isSdkReady(true, true, \"Could not add ad event\")) {\n return;\n }\n\n GAEvents.addAdEvent(adAction, adType, adSdkName, adPlacement, noAdReason, 0, false, customFields, mergeFields);\n });\n } else {\n if (!GameAnalytics.isSdkReady(true, true, \"Could not add ad event\")) {\n return;\n }\n\n GAEvents.addAdEvent(adAction, adType, adSdkName, adPlacement, noAdReason, 0, false, customFields, mergeFields);\n }\n };\n\n GameAnalytics.addAdEventWithDuration = function (adAction, adType, adSdkName, adPlacement, duration, customFields, mergeFields) {\n if (adAction === void 0) {\n adAction = gameanalytics.EGAAdAction.Undefined;\n }\n\n if (adType === void 0) {\n adType = gameanalytics.EGAAdType.Undefined;\n }\n\n if (adSdkName === void 0) {\n adSdkName = \"\";\n }\n\n if (adPlacement === void 0) {\n adPlacement = \"\";\n }\n\n if (duration === void 0) {\n duration = 0;\n }\n\n if (customFields === void 0) {\n customFields = {};\n }\n\n if (mergeFields === void 0) {\n mergeFields = false;\n }\n\n GADevice.updateConnectionType();\n\n if (!GAState.instance.isUnloading) {\n GAThreading.performTaskOnGAThread(function () {\n if (!GameAnalytics.isSdkReady(true, true, \"Could not add ad event\")) {\n return;\n }\n\n GAEvents.addAdEvent(adAction, adType, adSdkName, adPlacement, gameanalytics.EGAAdError.Undefined, duration, true, customFields, mergeFields);\n });\n } else {\n if (!GameAnalytics.isSdkReady(true, true, \"Could not add ad event\")) {\n return;\n }\n\n GAEvents.addAdEvent(adAction, adType, adSdkName, adPlacement, gameanalytics.EGAAdError.Undefined, duration, true, customFields, mergeFields);\n }\n };\n\n GameAnalytics.addAdEvent = function (adAction, adType, adSdkName, adPlacement, customFields, mergeFields) {\n if (adAction === void 0) {\n adAction = gameanalytics.EGAAdAction.Undefined;\n }\n\n if (adType === void 0) {\n adType = gameanalytics.EGAAdType.Undefined;\n }\n\n if (adSdkName === void 0) {\n adSdkName = \"\";\n }\n\n if (adPlacement === void 0) {\n adPlacement = \"\";\n }\n\n if (customFields === void 0) {\n customFields = {};\n }\n\n if (mergeFields === void 0) {\n mergeFields = false;\n }\n\n GADevice.updateConnectionType();\n\n if (!GAState.instance.isUnloading) {\n GAThreading.performTaskOnGAThread(function () {\n if (!GameAnalytics.isSdkReady(true, true, \"Could not add ad event\")) {\n return;\n }\n\n GAEvents.addAdEvent(adAction, adType, adSdkName, adPlacement, gameanalytics.EGAAdError.Undefined, 0, false, customFields, mergeFields);\n });\n } else {\n if (!GameAnalytics.isSdkReady(true, true, \"Could not add ad event\")) {\n return;\n }\n\n GAEvents.addAdEvent(adAction, adType, adSdkName, adPlacement, gameanalytics.EGAAdError.Undefined, 0, false, customFields, mergeFields);\n }\n };\n\n GameAnalytics.setEnabledInfoLog = function (flag) {\n if (flag === void 0) {\n flag = false;\n }\n\n GAThreading.performTaskOnGAThread(function () {\n if (flag) {\n GALogger.setInfoLog(flag);\n GALogger.i(\"Info logging enabled\");\n } else {\n GALogger.i(\"Info logging disabled\");\n GALogger.setInfoLog(flag);\n }\n });\n };\n\n GameAnalytics.setEnabledVerboseLog = function (flag) {\n if (flag === void 0) {\n flag = false;\n }\n\n GAThreading.performTaskOnGAThread(function () {\n if (flag) {\n GALogger.setVerboseLog(flag);\n GALogger.i(\"Verbose logging enabled\");\n } else {\n GALogger.i(\"Verbose logging disabled\");\n GALogger.setVerboseLog(flag);\n }\n });\n };\n\n GameAnalytics.setEnabledManualSessionHandling = function (flag) {\n if (flag === void 0) {\n flag = false;\n }\n\n GAThreading.performTaskOnGAThread(function () {\n GAState.setManualSessionHandling(flag);\n });\n };\n\n GameAnalytics.setEnabledEventSubmission = function (flag) {\n if (flag === void 0) {\n flag = false;\n }\n\n GAThreading.performTaskOnGAThread(function () {\n if (flag) {\n GAState.setEnabledEventSubmission(flag);\n GALogger.i(\"Event submission enabled\");\n } else {\n GALogger.i(\"Event submission disabled\");\n GAState.setEnabledEventSubmission(flag);\n }\n });\n };\n\n GameAnalytics.setCustomDimension01 = function (dimension) {\n if (dimension === void 0) {\n dimension = \"\";\n }\n\n GAThreading.performTaskOnGAThread(function () {\n if (!GAValidator.validateDimension01(dimension, GAState.getAvailableCustomDimensions01())) {\n GALogger.w(\"Could not set custom01 dimension value to '\" + dimension + \"'. Value not found in available custom01 dimension values\");\n return;\n }\n\n GAState.setCustomDimension01(dimension);\n });\n };\n\n GameAnalytics.setCustomDimension02 = function (dimension) {\n if (dimension === void 0) {\n dimension = \"\";\n }\n\n GAThreading.performTaskOnGAThread(function () {\n if (!GAValidator.validateDimension02(dimension, GAState.getAvailableCustomDimensions02())) {\n GALogger.w(\"Could not set custom02 dimension value to '\" + dimension + \"'. Value not found in available custom02 dimension values\");\n return;\n }\n\n GAState.setCustomDimension02(dimension);\n });\n };\n\n GameAnalytics.setCustomDimension03 = function (dimension) {\n if (dimension === void 0) {\n dimension = \"\";\n }\n\n GAThreading.performTaskOnGAThread(function () {\n if (!GAValidator.validateDimension03(dimension, GAState.getAvailableCustomDimensions03())) {\n GALogger.w(\"Could not set custom03 dimension value to '\" + dimension + \"'. Value not found in available custom03 dimension values\");\n return;\n }\n\n GAState.setCustomDimension03(dimension);\n });\n };\n\n GameAnalytics.setGlobalCustomEventFields = function (customFields) {\n if (customFields === void 0) {\n customFields = {};\n }\n\n GAThreading.performTaskOnGAThread(function () {\n GALogger.i(\"Set global custom event fields: \" + JSON.stringify(customFields));\n GAState.instance.currentGlobalCustomEventFields = customFields;\n });\n };\n\n GameAnalytics.setEventProcessInterval = function (intervalInSeconds) {\n GAThreading.performTaskOnGAThread(function () {\n GAThreading.setEventProcessInterval(intervalInSeconds);\n });\n };\n\n GameAnalytics.startSession = function () {\n {\n if (!GAState.isInitialized()) {\n return;\n }\n\n var timedBlock = GAThreading.createTimedBlock();\n timedBlock.async = true;\n GameAnalytics.initTimedBlockId = timedBlock.id;\n\n timedBlock.block = function () {\n if (GAState.isEnabled() && GAState.sessionIsStarted()) {\n GAThreading.endSessionAndStopQueue();\n }\n\n GameAnalytics.resumeSessionAndStartQueue();\n };\n\n GAThreading.performTimedBlockOnGAThread(timedBlock);\n }\n };\n\n GameAnalytics.endSession = function () {\n {\n GameAnalytics.onStop();\n }\n };\n\n GameAnalytics.onStop = function () {\n GAThreading.performTaskOnGAThread(function () {\n try {\n GAThreading.endSessionAndStopQueue();\n } catch (Exception) {}\n });\n };\n\n GameAnalytics.onResume = function () {\n var timedBlock = GAThreading.createTimedBlock();\n timedBlock.async = true;\n GameAnalytics.initTimedBlockId = timedBlock.id;\n\n timedBlock.block = function () {\n GameAnalytics.resumeSessionAndStartQueue();\n };\n\n GAThreading.performTimedBlockOnGAThread(timedBlock);\n };\n\n GameAnalytics.getRemoteConfigsValueAsString = function (key, defaultValue) {\n if (defaultValue === void 0) {\n defaultValue = null;\n }\n\n return GAState.getConfigurationStringValue(key, defaultValue);\n };\n\n GameAnalytics.isRemoteConfigsReady = function () {\n return GAState.isRemoteConfigsReady();\n };\n\n GameAnalytics.addRemoteConfigsListener = function (listener) {\n GAState.addRemoteConfigsListener(listener);\n };\n\n GameAnalytics.removeRemoteConfigsListener = function (listener) {\n GAState.removeRemoteConfigsListener(listener);\n };\n\n GameAnalytics.getRemoteConfigsContentAsString = function () {\n return GAState.getRemoteConfigsContentAsString();\n };\n\n GameAnalytics.getABTestingId = function () {\n return GAState.getABTestingId();\n };\n\n GameAnalytics.getABTestingVariantId = function () {\n return GAState.getABTestingVariantId();\n };\n\n GameAnalytics.addOnBeforeUnloadListener = function (listener) {\n GAState.addOnBeforeUnloadListener(listener);\n };\n\n GameAnalytics.removeOnBeforeUnloadListener = function (listener) {\n GAState.removeOnBeforeUnloadListener(listener);\n };\n\n GameAnalytics.internalInitialize = function () {\n GAState.ensurePersistedStates();\n GAStore.setItem(GAState.getGameKey(), GAState.DefaultUserIdKey, GAState.getDefaultId());\n GAState.setInitialized(true);\n GameAnalytics.newSession();\n\n if (GAState.isEnabled()) {\n GAThreading.ensureEventQueueIsRunning();\n }\n };\n\n GameAnalytics.newSession = function () {\n GALogger.i(\"Starting a new session.\");\n GAState.validateAndFixCurrentDimensions();\n GAHTTPApi.instance.requestInit(GAState.instance.configsHash, GameAnalytics.startNewSessionCallback);\n };\n\n GameAnalytics.startNewSessionCallback = function (initResponse, initResponseDict) {\n if ((initResponse === EGAHTTPApiResponse.Ok || initResponse === EGAHTTPApiResponse.Created) && initResponseDict) {\n var timeOffsetSeconds = 0;\n\n if (initResponseDict[\"server_ts\"]) {\n var serverTs = initResponseDict[\"server_ts\"];\n timeOffsetSeconds = GAState.calculateServerTimeOffset(serverTs);\n }\n\n initResponseDict[\"time_offset\"] = timeOffsetSeconds;\n\n if (initResponse != EGAHTTPApiResponse.Created) {\n var currentSdkConfig = GAState.getSdkConfig();\n\n if (currentSdkConfig[\"configs\"]) {\n initResponseDict[\"configs\"] = currentSdkConfig[\"configs\"];\n }\n\n if (currentSdkConfig[\"configs_hash\"]) {\n initResponseDict[\"configs_hash\"] = currentSdkConfig[\"configs_hash\"];\n }\n\n if (currentSdkConfig[\"ab_id\"]) {\n initResponseDict[\"ab_id\"] = currentSdkConfig[\"ab_id\"];\n }\n\n if (currentSdkConfig[\"ab_variant_id\"]) {\n initResponseDict[\"ab_variant_id\"] = currentSdkConfig[\"ab_variant_id\"];\n }\n }\n\n GAState.instance.configsHash = initResponseDict[\"configs_hash\"] ? initResponseDict[\"configs_hash\"] : \"\";\n GAState.instance.abId = initResponseDict[\"ab_id\"] ? initResponseDict[\"ab_id\"] : \"\";\n GAState.instance.abVariantId = initResponseDict[\"ab_variant_id\"] ? initResponseDict[\"ab_variant_id\"] : \"\";\n GAStore.setItem(GAState.getGameKey(), GAState.SdkConfigCachedKey, GAUtilities.encode64(JSON.stringify(initResponseDict)));\n GAState.instance.sdkConfigCached = initResponseDict;\n GAState.instance.sdkConfig = initResponseDict;\n GAState.instance.initAuthorized = true;\n } else if (initResponse == EGAHTTPApiResponse.Unauthorized) {\n GALogger.w(\"Initialize SDK failed - Unauthorized\");\n GAState.instance.initAuthorized = false;\n } else {\n if (initResponse === EGAHTTPApiResponse.NoResponse || initResponse === EGAHTTPApiResponse.RequestTimeout) {\n GALogger.i(\"Init call (session start) failed - no response. Could be offline or timeout.\");\n } else if (initResponse === EGAHTTPApiResponse.BadResponse || initResponse === EGAHTTPApiResponse.JsonEncodeFailed || initResponse === EGAHTTPApiResponse.JsonDecodeFailed) {\n GALogger.i(\"Init call (session start) failed - bad response. Could be bad response from proxy or GA servers.\");\n } else if (initResponse === EGAHTTPApiResponse.BadRequest || initResponse === EGAHTTPApiResponse.UnknownResponseCode) {\n GALogger.i(\"Init call (session start) failed - bad request or unknown response.\");\n }\n\n if (GAState.instance.sdkConfig == null) {\n if (GAState.instance.sdkConfigCached != null) {\n GALogger.i(\"Init call (session start) failed - using cached init values.\");\n GAState.instance.sdkConfig = GAState.instance.sdkConfigCached;\n } else {\n GALogger.i(\"Init call (session start) failed - using default init values.\");\n GAState.instance.sdkConfig = GAState.instance.sdkConfigDefault;\n }\n } else {\n GALogger.i(\"Init call (session start) failed - using cached init values.\");\n }\n\n GAState.instance.initAuthorized = true;\n }\n\n GAState.instance.clientServerTimeOffset = GAState.getSdkConfig()[\"time_offset\"] ? GAState.getSdkConfig()[\"time_offset\"] : 0;\n GAState.populateConfigurations(GAState.getSdkConfig());\n\n if (!GAState.isEnabled()) {\n GALogger.w(\"Could not start session: SDK is disabled.\");\n GAThreading.stopEventQueue();\n return;\n } else {\n GAThreading.ensureEventQueueIsRunning();\n }\n\n var newSessionId = GAUtilities.createGuid();\n GAState.instance.sessionId = newSessionId;\n GAState.instance.sessionStart = GAState.getClientTsAdjusted();\n GAEvents.addSessionStartEvent();\n var timedBlock = GAThreading.getTimedBlockById(GameAnalytics.initTimedBlockId);\n\n if (timedBlock != null) {\n timedBlock.running = false;\n }\n\n GameAnalytics.initTimedBlockId = -1;\n };\n\n GameAnalytics.resumeSessionAndStartQueue = function () {\n if (!GAState.isInitialized()) {\n return;\n }\n\n GALogger.i(\"Resuming session.\");\n\n if (!GAState.sessionIsStarted()) {\n GameAnalytics.newSession();\n }\n };\n\n GameAnalytics.isSdkReady = function (needsInitialized, warn, message) {\n if (warn === void 0) {\n warn = true;\n }\n\n if (message === void 0) {\n message = \"\";\n }\n\n if (message) {\n message = message + \": \";\n }\n\n if (needsInitialized && !GAState.isInitialized()) {\n if (warn) {\n GALogger.w(message + \"SDK is not initialized\");\n }\n\n return false;\n }\n\n if (needsInitialized && !GAState.isEnabled()) {\n if (warn) {\n GALogger.w(message + \"SDK is disabled\");\n }\n\n return false;\n }\n\n if (needsInitialized && !GAState.sessionIsStarted()) {\n if (warn) {\n GALogger.w(message + \"Session has not started yet\");\n }\n\n return false;\n }\n\n return true;\n };\n\n GameAnalytics.initTimedBlockId = -1;\n GameAnalytics.methodMap = {};\n return GameAnalytics;\n }();\n\n gameanalytics.GameAnalytics = GameAnalytics;\n})(gameanalytics || (gameanalytics = {}));\n\ngameanalytics.GameAnalytics.init();\nvar GameAnalytics = gameanalytics.GameAnalytics.gaCommand;\nmodule.exports = gameanalytics;"],"names":["h","s","public_enums","gameanalytics","CryptoJS","f","g","lib","q","m","Base","extend","a","prototype","this","c","mixIn","hasOwnProperty","init","$super","apply","arguments","create","toString","clone","r","WordArray","words","sigBytes","length","k","stringify","concat","d","b","clamp","e","push","ceil","call","slice","random","l","enc","Hex","join","parse","parseInt","substr","n","Latin1","String","fromCharCode","charCodeAt","j","Utf8","decodeURIComponent","escape","Error","unescape","encodeURIComponent","u","BufferedBlockAlgorithm","reset","_data","_nDataBytes","_append","_process","blockSize","max","_minBufferSize","min","_doProcessBlock","splice","Hasher","cfg","_doReset","update","finalize","_doFinalize","_createHelper","_createHmacHelper","t","HMAC","algo","Math","sqrt","pow","SHA256","_hash","p","floor","HmacSHA256","_hasher","_oKey","_iKey","Base64","_map","charAt","indexOf","EGAErrorSeverity","EGAProgressionStatus","EGAResourceFlowType","EGAAdAction","EGAAdError","EGAAdType","http","EGAHTTPApiResponse","events","EGASdkErrorCategory","EGASdkErrorArea","EGASdkErrorAction","EGASdkErrorParameter","logging","EGALoggerMessageType","GALogger","debugEnabled","setInfoLog","value","instance","infoLogEnabled","setVerboseLog","infoLogVerboseEnabled","i","format","message","Tag","sendNotificationMessage","Info","w","Warning","ii","Debug","type","console","error","warn","debug","log","utilities","GAUtilities","getHmac","key","data","encryptedMessage","stringMatch","pattern","test","joinStringArray","v","delimiter","result","il","stringArrayContainsString","array","search","encode64","input","encodeURI","chr1","chr2","enc1","enc2","enc3","output","chr3","enc4","isNaN","keyStr","decode64","exec","replace","decodeURI","timeIntervalSince1970","date","Date","round","getTime","createGuid","crypto","getRandomValues","Uint8Array","validators","ValidationResult","category","area","action","parameter","reason","GAValidator","validateBusinessEvent","currency","amount","cartType","itemType","itemId","validateCurrency","EventValidation","BusinessEvent","InvalidAmount","Amount","validateShortString","validateEventPartLength","validateEventPartCharacters","InvalidEventPartCharacters","ItemId","InvalidEventPartLength","ItemType","InvalidShortString","CartType","InvalidCurrency","Currency","validateResourceEvent","flowType","availableCurrencies","availableItemTypes","Undefined","ResourceEvent","InvalidFlowType","FlowType","NotFoundInAvailableItemTypes","StringEmptyOrNull","NotFoundInAvailableCurrencies","validateProgressionEvent","progressionStatus","progression01","progression02","progression03","ProgressionEvent","InvalidProgressionStatus","ProgressionStatus","WrongProgressionOrder","Progression01","Progression02","Progression03","validateDesignEvent","eventId","validateEventIdLength","validateEventIdCharacters","DesignEvent","InvalidEventIdCharacters","EventId","InvalidEventIdLength","validateErrorEvent","severity","ErrorEvent","InvalidSeverity","Severity","validateLongString","InvalidLongString","Message","validateAdEvent","adAction","adType","adSdkName","adPlacement","AdEvent","InvalidAdAction","AdAction","InvalidAdType","AdType","validateString","InvalidString","AdPlacement","AdSdkName","validateSdkErrorEvent","gameKey","gameSecret","validateKeys","eventPart","allowNull","validateAndCleanInitRequestResponse","initResponse","configsCreated","validatedDict","serverTsNumber","configurations","configs_hash","ab_id","ab_variant_id","validateBuild","build","validateSdkWrapperVersion","wrapperVersion","validateEngineVersion","engineVersion","validateUserId","uId","shortString","canBeEmpty","longString","validateConnectionType","connectionType","validateCustomDimensions","customDimensions","validateArrayOfStrings","validateResourceCurrencies","resourceCurrencies","validateResourceItemTypes","resourceItemTypes","validateDimension01","dimension01","availableDimensions","validateDimension02","dimension02","validateDimension03","dimension03","maxCount","maxStringLength","allowNoValues","logTag","arrayOfStrings","arrayTag","stringLength","JSON","validateClientTs","clientTs","device","NameValueVersion","name","version","NameVersion","GADevice","touch","getRelevantSdkVersion","sdkGameEngineVersion","sdkWrapperVersion","getConnectionType","updateConnectionType","navigator","onLine","buildPlatform","getOSVersionString","osVersionPair","runtimePlatformToString","getBrowserVersionString","tem","ua","userAgent","M","match","osVersion","toLowerCase","MString","appName","appVersion","getDeviceModel","getDeviceManufacturer","matchItem","agent","regexv","matches","mathcesResult","RegExp","matchesArray","split","platform","vendor","deviceModel","deviceManufacturer","browserVersion","threading","TimedBlock","deadline","ignore","async","running","id","idCounter","PriorityQueue","priorityComparer","comparer","_subQueues","_sortedKeys","enqueue","priority","item","addQueueOfPriority","_this","sort","x","y","compare","peek","hasItems","dequeue","dequeueFromHighPriorityQueue","firstKey","nextItem","shift","store_1","EGAStoreArgsOperator","EGAStore","GAStore","eventsStore","sessionsStore","progressionStore","storeItems","localStorage","setItem","removeItem","storageAvailable","isStorageAvailable","isStoreTooLargeForEvents","MaxNumberOfEntries","select","store","args","currentStore","getStore","entry","add","argsEntry","Equal","LessOrEqual","NotEqual","setArgs","whereArgs","setArgsEntry","del","insert","newEntry","replaceKey","replaced","save","StringFormat","KeyFormat","EventsStoreKey","SessionsStoreKey","ProgressionStoreKey","ItemsStoreKey","load","getItem","keyWithPrefix","Events","Sessions","Progression","str","_i","_","index","state","GAState","availableCustomDimensions01","availableCustomDimensions02","availableCustomDimensions03","currentGlobalCustomEventFields","availableResourceCurrencies","availableResourceItemTypes","remoteConfigsListeners","beforeUnloadListeners","sdkConfigDefault","sdkConfig","progressionTries","_isEventSubmissionEnabled","isUnloading","setUserId","userId","cacheIdentifier","getIdentifier","identifier","isInitialized","initialized","setInitialized","getSessionStart","sessionStart","getSessionNum","sessionNum","getTransactionNum","transactionNum","getSessionId","sessionId","getCurrentCustomDimension01","currentCustomDimension01","getCurrentCustomDimension02","currentCustomDimension02","getCurrentCustomDimension03","currentCustomDimension03","getGameKey","getGameSecret","getAvailableCustomDimensions01","setAvailableCustomDimensions01","validateAndFixCurrentDimensions","getAvailableCustomDimensions02","setAvailableCustomDimensions02","getAvailableCustomDimensions03","setAvailableCustomDimensions03","getAvailableResourceCurrencies","setAvailableResourceCurrencies","getAvailableResourceItemTypes","setAvailableResourceItemTypes","getBuild","setBuild","getUseManualSessionHandling","useManualSessionHandling","isEventSubmissionEnabled","getABTestingId","abId","getABTestingVariantId","abVariantId","setDefaultId","defaultUserId","getDefaultId","getSdkConfig","count","json","first","sdkConfigCached","isEnabled","initAuthorized","setCustomDimension01","dimension","Dimension01Key","setCustomDimension02","Dimension02Key","setCustomDimension03","Dimension03Key","incrementSessionNum","sessionNumInt","incrementTransactionNum","transactionNumInt","incrementProgressionTries","progression","tries","getProgressionTries","values","clearProgressionTries","parms","setKeys","setManualSessionHandling","flag","setEnabledEventSubmission","getEventAnnotations","annotations","getClientTsAdjusted","SessionNumKey","connection_type","gameEngineVersion","getSdkErrorEventAnnotations","CategorySdkError","getInitAnnotations","initAnnotations","LastUsedIdentifierKey","clientTsAdjustedInteger","clientServerTimeOffset","sessionIsStarted","ensurePersistedStates","DefaultUserIdKey","Number","TransactionNumKey","sdkConfigCachedString","SdkConfigCachedKey","lastUsedIdentifier","currentSdkConfig","configsHash","results_ga_progression","calculateServerTimeOffset","serverTs","formatString","formatted","regexp","validateAndCleanCustomFields","fields","errorCallback","MAX_CUSTOM_FIELDS_COUNT","regex","MAX_CUSTOM_FIELDS_KEY_LENGTH","valueAsString","MAX_CUSTOM_FIELDS_VALUE_STRING_LENGTH","baseMessage","valueAsNumber","getConfigurationStringValue","defaultValue","isRemoteConfigsReady","remoteConfigsIsReady","addRemoteConfigsListener","listener","removeRemoteConfigsListener","getRemoteConfigsContentAsString","populateConfigurations","configuration","start_ts","MIN_VALUE","end_ts","MAX_VALUE","client_ts_adjusted","listeners","onRemoteConfigsUpdated","addOnBeforeUnloadListener","removeOnBeforeUnloadListener","notifyBeforeUnloadListeners","onBeforeUnload","tasks","SdkErrorTask","execute","url","payloadData","secretKey","now","timestampMap","countMap","MaxCount","hashHmac","request","XMLHttpRequest","onreadystatechange","readyState","responseText","status","statusText","open","setRequestHeader","send","GAHTTPApi","protocol","hostName","remoteConfigsVersion","baseUrl","remoteConfigsBaseUrl","initializeUrlPath","eventsUrlPath","useGzip","requestInit","callback","JSONstring","createPayloadData","extraArgs","sendRequest","initRequestCallback","JsonEncodeFailed","sendEventsInArray","eventArray","requestId","sendEventInArrayRequestCallback","sendSdkErrorEvent","payloadJSONString","errorType","categoryString","sdkErrorCategoryString","areaString","sdkErrorAreaString","actionString","sdkErrorActionString","parameterString","sdkErrorParameterString","reasonTrimmed","MAX_ERROR_MESSAGE_LENGTH","substring","extra","body","responseCode","eventCount","requestResponseEnum","processRequestResponse","Ok","Created","BadRequest","requestJsonDict","JsonDecodeFailed","Http","EventsHttp","FailHttpJsonDecode","gzip","callback2","authorization","stack","InitHttp","validatedInitValues","BadResponse","payload","responseMessage","Unauthorized","InternalServerError","UnknownResponseCode","NoResponse","Database","Init","Json","ProcessEvents","AddEventsToStore","InvalidStore","DatabaseTooLarge","DatabaseOpenOrCreate","JsonError","FailHttpJsonEncode","Store","events_1","GAEvents","customEventFieldsErrorCallback","MAX_ERROR_COUNT","GAThreading","performTaskOnGAThread","addErrorEvent","addSessionStartEvent","eventDict","CategorySessionStart","addDimensionsToEvent","fieldsToUse","addCustomFieldsToEvent","addEventToStore","processEvents","addSessionEndEvent","session_start_ts","sessionLength","CategorySessionEnd","addBusinessEvent","mergeFields","validationResult","CategoryBusiness","Object","keys","addResourceEvent","Sink","flowTypeString","resourceFlowTypeToString","CategoryResource","addProgressionEvent","score","sendScore","progressionStatusString","progressionStatusToString","progressionIdentifier","CategoryProgression","attempt_num","Start","Fail","Complete","addDesignEvent","sendValue","eventData","CategoryDesign","skipAddingFields","severityString","errorSeverityToString","CategoryError","addAdEvent","noAdReason","duration","sendDuration","adActionString","adActionToString","adTypeString","adTypeToString","noAdReasonString","adErrorToString","CategoryAds","FailedShow","RewardedVideo","Video","performCleanUp","requestIdentifier","cleanupEvents","fixMissingSessionEndEvents","selectArgs","updateWhereArgs","updateSetArgs","updateSessionStore","MaxEventCount","lastTimestamp","payloadArray","ev","processEventsCallback","responseEnum","dataDict","requestIdWhereArgs","constructor","Array","sessions","sessionEndEvent","Source","Critical","Clicked","Show","RewardReceived","Unknown","Offline","NoFill","InternalError","InvalidRequest","UnableToPrecache","Playable","Interstitial","OfferWall","Banner","blocks","id2TimedBlockMap","startThread","createTimedBlock","delayInSeconds","time","setSeconds","getSeconds","taskBlock","timedBlock","block","addTimedBlock","performTimedBlockOnGAThread","scheduleTimer","interval","getTimedBlockById","blockIdentifier","ensureEventQueueIsRunning","keepRunning","isRunning","ProcessEventsIntervalInSeconds","processEventQueue","endSessionAndStopQueue","stopEventQueue","ignoreTimer","setEventProcessInterval","run","clearTimeout","runTimeoutId","getNextBlock","setTimeout","ThreadWaitTimeInMs","GameAnalytics","getGlobalObject","globalThis","self","window","methodMap","configureAvailableCustomDimensions01","configureAvailableCustomDimensions02","configureAvailableCustomDimensions03","configureAvailableResourceCurrencies","configureAvailableResourceItemTypes","configureBuild","configureSdkGameEngineVersion","configureGameEngineVersion","configureUserId","initialize","setEnabledInfoLog","setEnabledVerboseLog","setEnabledManualSessionHandling","setGlobalCustomEventFields","startSession","endSession","onStop","onResume","getRemoteConfigsValueAsString","gaCommand","addEventListener","isSdkReady","initTimedBlockId","internalInitialize","customFields","addAdEventWithNoAdReason","addAdEventWithDuration","intervalInSeconds","resumeSessionAndStartQueue","Exception","newSession","startNewSessionCallback","initResponseDict","RequestTimeout","timeOffsetSeconds","newSessionId","needsInitialized","module","exports"],"sourceRoot":""}