{"version":3,"sources":["node_modules/browser-pack-flat/_prelude","node_modules/process/browser.js","node_modules/buffer/index.js","node_modules/ieee754/index.js","node_modules/base64-js/index.js","node_modules/timers-browserify/main.js","scripts/eBusiness/hcpConnect.js"],"names":["createModuleFactory","t","e","r","exports","parent","_$browser_4","module","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","Error","defaultClearTimeout","runTimeout","fun","setTimeout","call","this","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","length","concat","drainQueue","timeout","len","run","marker","Item","array","noop","nextTick","args","Array","arguments","i","push","prototype","apply","title","browser","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","name","binding","cwd","chdir","dir","umask","global","self","window","_$buffer_2","Buffer","_$main_5","setImmediate","clearImmediate","base64","_$base64Js_1","ieee754","_$ieee754_3","INSPECT_MAX_BYTES","createBuffer","RangeError","buf","Uint8Array","__proto__","arg","encodingOrOffset","TypeError","allocUnsafe","from","value","string","encoding","isEncoding","byteLength","actual","write","slice","ArrayBuffer","isView","fromArrayLike","isInstance","buffer","byteOffset","valueOf","b","obj","isBuffer","checked","copy","numberIsNaN","type","isArray","data","Symbol","toPrimitive","assertSize","size","toString","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","swap","n","m","bidirectionalIndexOf","val","arrayIndexOf","indexOf","lastIndexOf","arr","indexSize","arrLength","valLength","String","read","readUInt16BE","foundIndex","found","j","hexWrite","offset","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","str","byteArray","charCodeAt","latin1Write","base64Write","ucs2Write","units","c","hi","lo","base64Slice","start","end","fromByteArray","utf8Slice","Math","min","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","TYPED_ARRAY_SUPPORT","foo","console","error","Object","defineProperty","enumerable","get","species","configurable","writable","poolSize","alloc","fill","allocUnsafeSlow","_isBuffer","compare","a","x","y","list","pos","swap16","swap32","swap64","hexSlice","asciiSlice","latin1Slice","utf16leSlice","toLocaleString","equals","inspect","max","replace","trim","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","_arr","ret","out","bytes","checkOffset","ext","checkInt","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","subarray","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","set","code","INVALID_BASE64_RE","leadSurrogate","toByteArray","split","src","dst","constructor","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","d","s","NaN","rt","abs","isNaN","floor","log","LN2","b64","tmp","lens","getLens","validLen","placeHoldersLen","Arr","curByte","revLookup","uint8","extraBytes","parts","len2","encodeChunk","lookup","join","num","output","Function","immediateIds","nextImmediateId","Timeout","id","clearFn","_id","_clearFn","unref","ref","close","fn","_defineProperties","props","descriptor","key","_classPrivateMethodInitSpec","privateSet","privateCollection","has","add","_classPrivateMethodGet","receiver","_checkHCPConnectTemplates","WeakSet","_init","_checkHCPConnectTemplates2","isMegaMenu","addHCPClass","isHCPConfigurator","_init2","HCPConnect","instance","Constructor","protoProps","document","querySelector","cls","body","classList"],"mappings":"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","sourcesContent":["(function(){\nvar createModuleFactory = function createModuleFactory(t){var e;return function(r){return e||t(e={exports:{},parent:r},e.exports),e.exports}};\n","var cachedSetTimeout,cachedClearTimeout,process=module.exports={};function defaultSetTimout(){throw new Error(\"setTimeout has not been defined\")}function defaultClearTimeout(){throw new Error(\"clearTimeout has not been defined\")}function runTimeout(fun){if(cachedSetTimeout===setTimeout)return setTimeout(fun,0);if((cachedSetTimeout===defaultSetTimout||!cachedSetTimeout)&&setTimeout)return cachedSetTimeout=setTimeout,setTimeout(fun,0);try{return cachedSetTimeout(fun,0)}catch(e){try{return cachedSetTimeout.call(null,fun,0)}catch(e){return cachedSetTimeout.call(this,fun,0)}}}!function(){try{cachedSetTimeout=\"function\"==typeof setTimeout?setTimeout:defaultSetTimout}catch(e){cachedSetTimeout=defaultSetTimout}try{cachedClearTimeout=\"function\"==typeof clearTimeout?clearTimeout:defaultClearTimeout}catch(e){cachedClearTimeout=defaultClearTimeout}}();var currentQueue,queue=[],draining=!1,queueIndex=-1;function cleanUpNextTick(){draining&¤tQueue&&(draining=!1,currentQueue.length?queue=currentQueue.concat(queue):queueIndex=-1,queue.length&&drainQueue())}function drainQueue(){if(!draining){var timeout=runTimeout(cleanUpNextTick);draining=!0;for(var len=queue.length;len;){for(currentQueue=queue,queue=[];++queueIndex1)for(var i=1;i\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = { __proto__: Uint8Array.prototype, foo: function () { return 42 } }\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n buf.__proto__ = Buffer.prototype\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\n// Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\nif (typeof Symbol !== 'undefined' && Symbol.species != null &&\n Buffer[Symbol.species] === Buffer) {\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true,\n enumerable: false,\n writable: false\n })\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayLike(value)\n }\n\n if (value == null) {\n throw TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nBuffer.prototype.__proto__ = Uint8Array.prototype\nBuffer.__proto__ = Uint8Array\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n buf.__proto__ = Buffer.prototype\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n buf = Buffer.from(buf)\n }\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n newBuf.__proto__ = Buffer.prototype\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (var i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n","exports.read=function(buffer,offset,isLE,mLen,nBytes){var e,m,eLen=8*nBytes-mLen-1,eMax=(1<>1,nBits=-7,i=isLE?nBytes-1:0,d=isLE?-1:1,s=buffer[offset+i];for(i+=d,e=s&(1<<-nBits)-1,s>>=-nBits,nBits+=eLen;nBits>0;e=256*e+buffer[offset+i],i+=d,nBits-=8);for(m=e&(1<<-nBits)-1,e>>=-nBits,nBits+=mLen;nBits>0;m=256*m+buffer[offset+i],i+=d,nBits-=8);if(0===e)e=1-eBias;else{if(e===eMax)return m?NaN:1/0*(s?-1:1);m+=Math.pow(2,mLen),e-=eBias}return(s?-1:1)*m*Math.pow(2,e-mLen)},exports.write=function(buffer,value,offset,isLE,mLen,nBytes){var e,m,c,eLen=8*nBytes-mLen-1,eMax=(1<>1,rt=23===mLen?Math.pow(2,-24)-Math.pow(2,-77):0,i=isLE?0:nBytes-1,d=isLE?1:-1,s=value<0||0===value&&1/value<0?1:0;for(value=Math.abs(value),isNaN(value)||value===1/0?(m=isNaN(value)?1:0,e=eMax):(e=Math.floor(Math.log(value)/Math.LN2),value*(c=Math.pow(2,-e))<1&&(e--,c*=2),(value+=e+eBias>=1?rt/c:rt*Math.pow(2,1-eBias))*c>=2&&(e++,c/=2),e+eBias>=eMax?(m=0,e=eMax):e+eBias>=1?(m=(value*c-1)*Math.pow(2,mLen),e+=eBias):(m=value*Math.pow(2,eBias-1)*Math.pow(2,mLen),e=0));mLen>=8;buffer[offset+i]=255&m,i+=d,m/=256,mLen-=8);for(e=e<0;buffer[offset+i]=255&e,i+=d,e/=256,eLen-=8);buffer[offset+i-d]|=128*s};\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbImV4cG9ydHMiLCJyZWFkIiwiYnVmZmVyIiwib2Zmc2V0IiwiaXNMRSIsIm1MZW4iLCJuQnl0ZXMiLCJlIiwibSIsImVMZW4iLCJlTWF4IiwiZUJpYXMiLCJuQml0cyIsImkiLCJkIiwicyIsIk5hTiIsIkluZmluaXR5IiwiTWF0aCIsInBvdyIsIndyaXRlIiwidmFsdWUiLCJjIiwicnQiLCJhYnMiLCJpc05hTiIsImZsb29yIiwibG9nIiwiTE4yIl0sIm1hcHBpbmdzIjoiQUFDQUEsUUFBUUMsS0FBTyxTQUFVQyxPQUFRQyxPQUFRQyxLQUFNQyxLQUFNQyxRQUNuRCxJQUFJQyxFQUFHQyxFQUNIQyxLQUFpQixFQUFUSCxPQUFjRCxLQUFPLEVBQzdCSyxNQUFRLEdBQUtELE1BQVEsRUFDckJFLE1BQVFELE1BQVEsRUFDaEJFLE9BQVMsRUFDVEMsRUFBSVQsS0FBUUUsT0FBUyxFQUFLLEVBQzFCUSxFQUFJVixNQUFRLEVBQUksRUFDaEJXLEVBQUliLE9BQU9DLE9BQVNVLEdBT3hCLElBTEFBLEdBQUtDLEVBRUxQLEVBQUlRLEdBQU0sSUFBT0gsT0FBVSxFQUMzQkcsS0FBUUgsTUFDUkEsT0FBU0gsS0FDRkcsTUFBUSxFQUFHTCxFQUFTLElBQUpBLEVBQVdMLE9BQU9DLE9BQVNVLEdBQUlBLEdBQUtDLEVBQUdGLE9BQVMsR0FLdkUsSUFIQUosRUFBSUQsR0FBTSxJQUFPSyxPQUFVLEVBQzNCTCxLQUFRSyxNQUNSQSxPQUFTUCxLQUNGTyxNQUFRLEVBQUdKLEVBQVMsSUFBSkEsRUFBV04sT0FBT0MsT0FBU1UsR0FBSUEsR0FBS0MsRUFBR0YsT0FBUyxHQUV2RSxHQUFVLElBQU5MLEVBQ0ZBLEVBQUksRUFBSUksVUFDSCxDQUFBLEdBQUlKLElBQU1HLEtBQ2YsT0FBT0YsRUFBSVEsSUFBc0JDLEVBQUFBLEdBQWRGLEdBQUssRUFBSSxHQUU1QlAsR0FBUVUsS0FBS0MsSUFBSSxFQUFHZCxNQUNwQkUsR0FBUUksTUFFVixPQUFRSSxHQUFLLEVBQUksR0FBS1AsRUFBSVUsS0FBS0MsSUFBSSxFQUFHWixFQUFJRixPQUc1Q0wsUUFBUW9CLE1BQVEsU0FBVWxCLE9BQVFtQixNQUFPbEIsT0FBUUMsS0FBTUMsS0FBTUMsUUFDM0QsSUFBSUMsRUFBR0MsRUFBR2MsRUFDTmIsS0FBaUIsRUFBVEgsT0FBY0QsS0FBTyxFQUM3QkssTUFBUSxHQUFLRCxNQUFRLEVBQ3JCRSxNQUFRRCxNQUFRLEVBQ2hCYSxHQUFlLEtBQVRsQixLQUFjYSxLQUFLQyxJQUFJLEdBQUksSUFBTUQsS0FBS0MsSUFBSSxHQUFJLElBQU0sRUFDMUROLEVBQUlULEtBQU8sRUFBS0UsT0FBUyxFQUN6QlEsRUFBSVYsS0FBTyxHQUFLLEVBQ2hCVyxFQUFJTSxNQUFRLEdBQWdCLElBQVZBLE9BQWUsRUFBSUEsTUFBUSxFQUFLLEVBQUksRUFtQzFELElBakNBQSxNQUFRSCxLQUFLTSxJQUFJSCxPQUViSSxNQUFNSixRQUFVQSxRQUFVSixFQUFBQSxHQUM1QlQsRUFBSWlCLE1BQU1KLE9BQVMsRUFBSSxFQUN2QmQsRUFBSUcsT0FFSkgsRUFBSVcsS0FBS1EsTUFBTVIsS0FBS1MsSUFBSU4sT0FBU0gsS0FBS1UsS0FDbENQLE9BQVNDLEVBQUlKLEtBQUtDLElBQUksR0FBSVosSUFBTSxJQUNsQ0EsSUFDQWUsR0FBSyxJQUdMRCxPQURFZCxFQUFJSSxPQUFTLEVBQ05ZLEdBQUtELEVBRUxDLEdBQUtMLEtBQUtDLElBQUksRUFBRyxFQUFJUixRQUVwQlcsR0FBSyxJQUNmZixJQUNBZSxHQUFLLEdBR0hmLEVBQUlJLE9BQVNELE1BQ2ZGLEVBQUksRUFDSkQsRUFBSUcsTUFDS0gsRUFBSUksT0FBUyxHQUN0QkgsR0FBTWEsTUFBUUMsRUFBSyxHQUFLSixLQUFLQyxJQUFJLEVBQUdkLE1BQ3BDRSxHQUFRSSxRQUVSSCxFQUFJYSxNQUFRSCxLQUFLQyxJQUFJLEVBQUdSLE1BQVEsR0FBS08sS0FBS0MsSUFBSSxFQUFHZCxNQUNqREUsRUFBSSxJQUlERixNQUFRLEVBQUdILE9BQU9DLE9BQVNVLEdBQVMsSUFBSkwsRUFBVUssR0FBS0MsRUFBR04sR0FBSyxJQUFLSCxNQUFRLEdBSTNFLElBRkFFLEVBQUtBLEdBQUtGLEtBQVFHLEVBQ2xCQyxNQUFRSixLQUNESSxLQUFPLEVBQUdQLE9BQU9DLE9BQVNVLEdBQVMsSUFBSk4sRUFBVU0sR0FBS0MsRUFBR1AsR0FBSyxJQUFLRSxNQUFRLEdBRTFFUCxPQUFPQyxPQUFTVSxFQUFJQyxJQUFVLElBQUpDIiwiZmlsZSI6IkM6XFxCdWlsZEFnZW50XFx3XFxlQ29tbWVyY2VcXHByb2RcXFNvdXJjZVxcR05lQ29tXFxTaXRlY29yZVxcUHJvamVjdFxcR05lQ29tXFxjb2RlXFxHTmVDb20uUHJvamVjdC5XZWJzaXRlXFxub2RlX21vZHVsZXNcXGllZWU3NTRcXGluZGV4LmpzIn0=","\"use strict\";exports.byteLength=function(b64){var lens=getLens(b64),validLen=lens[0],placeHoldersLen=lens[1];return 3*(validLen+placeHoldersLen)/4-placeHoldersLen},exports.toByteArray=function(b64){var tmp,i,lens=getLens(b64),validLen=lens[0],placeHoldersLen=lens[1],arr=new Arr(function(b64,validLen,placeHoldersLen){return 3*(validLen+placeHoldersLen)/4-placeHoldersLen}(0,validLen,placeHoldersLen)),curByte=0,len=placeHoldersLen>0?validLen-4:validLen;for(i=0;i>16&255,arr[curByte++]=tmp>>8&255,arr[curByte++]=255&tmp;2===placeHoldersLen&&(tmp=revLookup[b64.charCodeAt(i)]<<2|revLookup[b64.charCodeAt(i+1)]>>4,arr[curByte++]=255&tmp);1===placeHoldersLen&&(tmp=revLookup[b64.charCodeAt(i)]<<10|revLookup[b64.charCodeAt(i+1)]<<4|revLookup[b64.charCodeAt(i+2)]>>2,arr[curByte++]=tmp>>8&255,arr[curByte++]=255&tmp);return arr},exports.fromByteArray=function(uint8){for(var tmp,len=uint8.length,extraBytes=len%3,parts=[],i=0,len2=len-extraBytes;ilen2?len2:i+16383));1===extraBytes?(tmp=uint8[len-1],parts.push(lookup[tmp>>2]+lookup[tmp<<4&63]+\"==\")):2===extraBytes&&(tmp=(uint8[len-2]<<8)+uint8[len-1],parts.push(lookup[tmp>>10]+lookup[tmp>>4&63]+lookup[tmp<<2&63]+\"=\"));return parts.join(\"\")};for(var lookup=[],revLookup=[],Arr=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,code=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",i=0,len=code.length;i0)throw new Error(\"Invalid string. Length must be a multiple of 4\");var validLen=b64.indexOf(\"=\");return-1===validLen&&(validLen=len),[validLen,validLen===len?0:4-validLen%4]}function encodeChunk(uint8,start,end){for(var tmp,num,output=[],i=start;i>18&63]+lookup[num>>12&63]+lookup[num>>6&63]+lookup[63&num]);return output.join(\"\")}revLookup[\"-\".charCodeAt(0)]=62,revLookup[\"_\".charCodeAt(0)]=63;\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbImV4cG9ydHMiLCJieXRlTGVuZ3RoIiwiYjY0IiwibGVucyIsImdldExlbnMiLCJ2YWxpZExlbiIsInBsYWNlSG9sZGVyc0xlbiIsInRvQnl0ZUFycmF5IiwidG1wIiwiaSIsImFyciIsIkFyciIsIl9ieXRlTGVuZ3RoIiwiY3VyQnl0ZSIsImxlbiIsInJldkxvb2t1cCIsImNoYXJDb2RlQXQiLCJmcm9tQnl0ZUFycmF5IiwidWludDgiLCJsZW5ndGgiLCJleHRyYUJ5dGVzIiwicGFydHMiLCJsZW4yIiwicHVzaCIsImVuY29kZUNodW5rIiwibG9va3VwIiwiam9pbiIsIlVpbnQ4QXJyYXkiLCJBcnJheSIsImNvZGUiLCJFcnJvciIsImluZGV4T2YiLCJzdGFydCIsImVuZCIsIm51bSIsIm91dHB1dCJdLCJtYXBwaW5ncyI6IkFBQUEsYUFFQUEsUUFBUUMsV0F1Q1IsU0FBcUJDLEtBQ25CLElBQUlDLEtBQU9DLFFBQVFGLEtBQ2ZHLFNBQVdGLEtBQUssR0FDaEJHLGdCQUFrQkgsS0FBSyxHQUMzQixPQUF1QyxHQUE5QkUsU0FBV0MsaUJBQXVCLEVBQUtBLGlCQTFDbEROLFFBQVFPLFlBaURSLFNBQXNCTCxLQUNwQixJQUFJTSxJQWNBQyxFQWJBTixLQUFPQyxRQUFRRixLQUNmRyxTQUFXRixLQUFLLEdBQ2hCRyxnQkFBa0JILEtBQUssR0FFdkJPLElBQU0sSUFBSUMsSUFWaEIsU0FBc0JULElBQUtHLFNBQVVDLGlCQUNuQyxPQUF1QyxHQUE5QkQsU0FBV0MsaUJBQXVCLEVBQUtBLGdCQVM5Qk0sQ0FBWVYsRUFBS0csU0FBVUMsa0JBRXpDTyxRQUFVLEVBR1ZDLElBQU1SLGdCQUFrQixFQUN4QkQsU0FBVyxFQUNYQSxTQUdKLElBQUtJLEVBQUksRUFBR0EsRUFBSUssSUFBS0wsR0FBSyxFQUN4QkQsSUFDR08sVUFBVWIsSUFBSWMsV0FBV1AsS0FBTyxHQUNoQ00sVUFBVWIsSUFBSWMsV0FBV1AsRUFBSSxLQUFPLEdBQ3BDTSxVQUFVYixJQUFJYyxXQUFXUCxFQUFJLEtBQU8sRUFDckNNLFVBQVViLElBQUljLFdBQVdQLEVBQUksSUFDL0JDLElBQUlHLFdBQWNMLEtBQU8sR0FBTSxJQUMvQkUsSUFBSUcsV0FBY0wsS0FBTyxFQUFLLElBQzlCRSxJQUFJRyxXQUFtQixJQUFOTCxJQUdLLElBQXBCRixrQkFDRkUsSUFDR08sVUFBVWIsSUFBSWMsV0FBV1AsS0FBTyxFQUNoQ00sVUFBVWIsSUFBSWMsV0FBV1AsRUFBSSxLQUFPLEVBQ3ZDQyxJQUFJRyxXQUFtQixJQUFOTCxLQUdLLElBQXBCRixrQkFDRkUsSUFDR08sVUFBVWIsSUFBSWMsV0FBV1AsS0FBTyxHQUNoQ00sVUFBVWIsSUFBSWMsV0FBV1AsRUFBSSxLQUFPLEVBQ3BDTSxVQUFVYixJQUFJYyxXQUFXUCxFQUFJLEtBQU8sRUFDdkNDLElBQUlHLFdBQWNMLEtBQU8sRUFBSyxJQUM5QkUsSUFBSUcsV0FBbUIsSUFBTkwsS0FHbkIsT0FBT0UsS0EzRlRWLFFBQVFpQixjQWtIUixTQUF3QkMsT0FRdEIsSUFQQSxJQUFJVixJQUNBTSxJQUFNSSxNQUFNQyxPQUNaQyxXQUFhTixJQUFNLEVBQ25CTyxNQUFRLEdBSUhaLEVBQUksRUFBR2EsS0FBT1IsSUFBTU0sV0FBWVgsRUFBSWEsS0FBTWIsR0FIOUIsTUFJbkJZLE1BQU1FLEtBQUtDLFlBQVlOLE1BQU9ULEVBQUlBLEVBSmYsTUFJcUNhLEtBQU9BLEtBQVFiLEVBSnBELFFBUUYsSUFBZlcsWUFDRlosSUFBTVUsTUFBTUosSUFBTSxHQUNsQk8sTUFBTUUsS0FDSkUsT0FBT2pCLEtBQU8sR0FDZGlCLE9BQVFqQixLQUFPLEVBQUssSUFDcEIsT0FFc0IsSUFBZlksYUFDVFosS0FBT1UsTUFBTUosSUFBTSxJQUFNLEdBQUtJLE1BQU1KLElBQU0sR0FDMUNPLE1BQU1FLEtBQ0pFLE9BQU9qQixLQUFPLElBQ2RpQixPQUFRakIsS0FBTyxFQUFLLElBQ3BCaUIsT0FBUWpCLEtBQU8sRUFBSyxJQUNwQixNQUlKLE9BQU9hLE1BQU1LLEtBQUssS0F6SXBCLElBTEEsSUFBSUQsT0FBUyxHQUNUVixVQUFZLEdBQ1pKLElBQTRCLG9CQUFmZ0IsV0FBNkJBLFdBQWFDLE1BRXZEQyxLQUFPLG1FQUNGcEIsRUFBSSxFQUFHSyxJQUFNZSxLQUFLVixPQUFRVixFQUFJSyxNQUFPTCxFQUM1Q2dCLE9BQU9oQixHQUFLb0IsS0FBS3BCLEdBQ2pCTSxVQUFVYyxLQUFLYixXQUFXUCxJQUFNQSxFQVFsQyxTQUFTTCxRQUFTRixLQUNoQixJQUFJWSxJQUFNWixJQUFJaUIsT0FFZCxHQUFJTCxJQUFNLEVBQUksRUFDWixNQUFNLElBQUlnQixNQUFNLGtEQUtsQixJQUFJekIsU0FBV0gsSUFBSTZCLFFBQVEsS0FPM0IsT0FOa0IsSUFBZDFCLFdBQWlCQSxTQUFXUyxLQU16QixDQUFDVCxTQUpjQSxXQUFhUyxJQUMvQixFQUNBLEVBQUtULFNBQVcsR0FzRXRCLFNBQVNtQixZQUFhTixNQUFPYyxNQUFPQyxLQUdsQyxJQUZBLElBQUl6QixJQVJvQjBCLElBU3BCQyxPQUFTLEdBQ0oxQixFQUFJdUIsTUFBT3ZCLEVBQUl3QixJQUFLeEIsR0FBSyxFQUNoQ0QsS0FDSVUsTUFBTVQsSUFBTSxHQUFNLFdBQ2xCUyxNQUFNVCxFQUFJLElBQU0sRUFBSyxRQUNQLElBQWZTLE1BQU1ULEVBQUksSUFDYjBCLE9BQU9aLEtBZEZFLFFBRGlCUyxJQWVNMUIsTUFkVCxHQUFLLElBQ3hCaUIsT0FBT1MsS0FBTyxHQUFLLElBQ25CVCxPQUFPUyxLQUFPLEVBQUksSUFDbEJULE9BQWEsR0FBTlMsTUFhVCxPQUFPQyxPQUFPVCxLQUFLLElBakdyQlgsVUFBVSxJQUFJQyxXQUFXLElBQU0sR0FDL0JELFVBQVUsSUFBSUMsV0FBVyxJQUFNIiwiZmlsZSI6IkM6XFxCdWlsZEFnZW50XFx3XFxlQ29tbWVyY2VcXHByb2RcXFNvdXJjZVxcR05lQ29tXFxTaXRlY29yZVxcUHJvamVjdFxcR05lQ29tXFxjb2RlXFxHTmVDb20uUHJvamVjdC5XZWJzaXRlXFxub2RlX21vZHVsZXNcXGJhc2U2NC1qc1xcaW5kZXguanMifQ==","var nextTick=require(\"process/browser.js\").nextTick,apply=Function.prototype.apply,slice=Array.prototype.slice,immediateIds={},nextImmediateId=0;function Timeout(id,clearFn){this._id=id,this._clearFn=clearFn}exports.setTimeout=function(){return new Timeout(apply.call(setTimeout,window,arguments),clearTimeout)},exports.setInterval=function(){return new Timeout(apply.call(setInterval,window,arguments),clearInterval)},exports.clearTimeout=exports.clearInterval=function(timeout){timeout.close()},Timeout.prototype.unref=Timeout.prototype.ref=function(){},Timeout.prototype.close=function(){this._clearFn.call(window,this._id)},exports.enroll=function(item,msecs){clearTimeout(item._idleTimeoutId),item._idleTimeout=msecs},exports.unenroll=function(item){clearTimeout(item._idleTimeoutId),item._idleTimeout=-1},exports._unrefActive=exports.active=function(item){clearTimeout(item._idleTimeoutId);var msecs=item._idleTimeout;msecs>=0&&(item._idleTimeoutId=setTimeout(function(){item._onTimeout&&item._onTimeout()},msecs))},exports.setImmediate=\"function\"==typeof setImmediate?setImmediate:function(fn){var id=nextImmediateId++,args=!(arguments.length<2)&&slice.call(arguments,1);return immediateIds[id]=!0,nextTick(function(){immediateIds[id]&&(args?fn.apply(null,args):fn.call(null),exports.clearImmediate(id))}),id},exports.clearImmediate=\"function\"==typeof clearImmediate?clearImmediate:function(id){delete immediateIds[id]};\n\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1haW4uanMiXSwibmFtZXMiOlsibmV4dFRpY2siLCJyZXF1aXJlIiwiYXBwbHkiLCJGdW5jdGlvbiIsInByb3RvdHlwZSIsInNsaWNlIiwiQXJyYXkiLCJpbW1lZGlhdGVJZHMiLCJuZXh0SW1tZWRpYXRlSWQiLCJUaW1lb3V0IiwiaWQiLCJjbGVhckZuIiwidGhpcyIsIl9pZCIsIl9jbGVhckZuIiwiZXhwb3J0cyIsInNldFRpbWVvdXQiLCJjYWxsIiwid2luZG93IiwiYXJndW1lbnRzIiwiY2xlYXJUaW1lb3V0Iiwic2V0SW50ZXJ2YWwiLCJjbGVhckludGVydmFsIiwidGltZW91dCIsImNsb3NlIiwidW5yZWYiLCJyZWYiLCJlbnJvbGwiLCJpdGVtIiwibXNlY3MiLCJfaWRsZVRpbWVvdXRJZCIsIl9pZGxlVGltZW91dCIsInVuZW5yb2xsIiwiX3VucmVmQWN0aXZlIiwiYWN0aXZlIiwiX29uVGltZW91dCIsInNldEltbWVkaWF0ZSIsImZuIiwiYXJncyIsImxlbmd0aCIsImNsZWFySW1tZWRpYXRlIl0sIm1hcHBpbmdzIjoiQUFBQSxJQUFJQSxTQUFXQyxRQUFRLHNCQUFzQkQsU0FDekNFLE1BQVFDLFNBQVNDLFVBQVVGLE1BQzNCRyxNQUFRQyxNQUFNRixVQUFVQyxNQUN4QkUsYUFBZSxHQUNmQyxnQkFBa0IsRUFhdEIsU0FBU0MsUUFBUUMsR0FBSUMsU0FDbkJDLEtBQUtDLElBQU1ILEdBQ1hFLEtBQUtFLFNBQVdILFFBWGxCSSxRQUFRQyxXQUFhLFdBQ25CLE9BQU8sSUFBSVAsUUFBUVAsTUFBTWUsS0FBS0QsV0FBWUUsT0FBUUMsV0FBWUMsZUFFaEVMLFFBQVFNLFlBQWMsV0FDcEIsT0FBTyxJQUFJWixRQUFRUCxNQUFNZSxLQUFLSSxZQUFhSCxPQUFRQyxXQUFZRyxnQkFFakVQLFFBQVFLLGFBQ1JMLFFBQVFPLGNBQWdCLFNBQVNDLFNBQVdBLFFBQVFDLFNBTXBEZixRQUFRTCxVQUFVcUIsTUFBUWhCLFFBQVFMLFVBQVVzQixJQUFNLGFBQ2xEakIsUUFBUUwsVUFBVW9CLE1BQVEsV0FDeEJaLEtBQUtFLFNBQVNHLEtBQUtDLE9BQVFOLEtBQUtDLE1BSWxDRSxRQUFRWSxPQUFTLFNBQVNDLEtBQU1DLE9BQzlCVCxhQUFhUSxLQUFLRSxnQkFDbEJGLEtBQUtHLGFBQWVGLE9BR3RCZCxRQUFRaUIsU0FBVyxTQUFTSixNQUMxQlIsYUFBYVEsS0FBS0UsZ0JBQ2xCRixLQUFLRyxjQUFnQixHQUd2QmhCLFFBQVFrQixhQUFlbEIsUUFBUW1CLE9BQVMsU0FBU04sTUFDL0NSLGFBQWFRLEtBQUtFLGdCQUVsQixJQUFJRCxNQUFRRCxLQUFLRyxhQUNiRixPQUFTLElBQ1hELEtBQUtFLGVBQWlCZCxXQUFXLFdBQzNCWSxLQUFLTyxZQUNQUCxLQUFLTyxjQUNOTixTQUtQZCxRQUFRcUIsYUFBdUMsbUJBQWpCQSxhQUE4QkEsYUFBZSxTQUFTQyxJQUNsRixJQUFJM0IsR0FBS0Ysa0JBQ0w4QixPQUFPbkIsVUFBVW9CLE9BQVMsSUFBWWxDLE1BQU1ZLEtBQUtFLFVBQVcsR0FrQmhFLE9BaEJBWixhQUFhRyxLQUFNLEVBRW5CVixTQUFTLFdBQ0hPLGFBQWFHLE1BR1g0QixLQUNGRCxHQUFHbkMsTUFBTSxLQUFNb0MsTUFFZkQsR0FBR3BCLEtBQUssTUFHVkYsUUFBUXlCLGVBQWU5QixPQUlwQkEsSUFHVEssUUFBUXlCLGVBQTJDLG1CQUFuQkEsZUFBZ0NBLGVBQWlCLFNBQVM5QixXQUNqRkgsYUFBYUciLCJmaWxlIjoiQzpcXEJ1aWxkQWdlbnRcXHdcXGVDb21tZXJjZVxccHJvZFxcU291cmNlXFxHTmVDb21cXFNpdGVjb3JlXFxQcm9qZWN0XFxHTmVDb21cXGNvZGVcXEdOZUNvbS5Qcm9qZWN0LldlYnNpdGVcXG5vZGVfbW9kdWxlc1xcdGltZXJzLWJyb3dzZXJpZnlcXG1haW4uanMifQ==","\"use strict\";\n(() => {\n class HCPConnect {\n constructor() {\n this.#init();\n }\n \n get isMegaMenu() {\n return document.querySelector('.mega-menu-navigation');\n }\n \n get isHCPConfigurator() {\n return document.querySelector('.configurator-revamp');\n }\n \n set addHCPClass(cls) {\n document.body.classList.add(cls);\n }\n \n #checkHCPConnectTemplates() {\n if(this.isMegaMenu) {\n this.addHCPClass = 'hcp_mega-menu';\n }\n if(this.isHCPConfigurator) {\n this.addHCPClass = 'hcp_configurator';\n }\n }\n \n #init() {\n this.#checkHCPConnectTemplates();\n }\n }\n\n new HCPConnect();\n})();"],"preExistingComment":"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlc1xcYnJvd3Nlci1wYWNrLWZsYXRcXF9wcmVsdWRlIiwibm9kZV9tb2R1bGVzL3Byb2Nlc3MvYnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy9idWZmZXIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvaWVlZTc1NC9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9iYXNlNjQtanMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvdGltZXJzLWJyb3dzZXJpZnkvbWFpbi5qcyIsInNjcmlwdHMvZUJ1c2luZXNzL2hjcENvbm5lY3QuanMiXSwibmFtZXMiOlsiY3JlYXRlTW9kdWxlRmFjdG9yeSIsInQiLCJlIiwiciIsImV4cG9ydHMiLCJwYXJlbnQiLCJfJGJyb3dzZXJfNCIsIm1vZHVsZSIsImNhY2hlZFNldFRpbWVvdXQiLCJjYWNoZWRDbGVhclRpbWVvdXQiLCJwcm9jZXNzIiwiZGVmYXVsdFNldFRpbW91dCIsIkVycm9yIiwiZGVmYXVsdENsZWFyVGltZW91dCIsInJ1blRpbWVvdXQiLCJmdW4iLCJzZXRUaW1lb3V0IiwiY2FsbCIsInRoaXMiLCJjbGVhclRpbWVvdXQiLCJjdXJyZW50UXVldWUiLCJxdWV1ZSIsImRyYWluaW5nIiwicXVldWVJbmRleCIsImNsZWFuVXBOZXh0VGljayIsImxlbmd0aCIsImNvbmNhdCIsImRyYWluUXVldWUiLCJ0aW1lb3V0IiwibGVuIiwicnVuIiwibWFya2VyIiwiSXRlbSIsImFycmF5Iiwibm9vcCIsIm5leHRUaWNrIiwiYXJncyIsIkFycmF5IiwiYXJndW1lbnRzIiwiaSIsInB1c2giLCJwcm90b3R5cGUiLCJhcHBseSIsInRpdGxlIiwiYnJvd3NlciIsImVudiIsImFyZ3YiLCJ2ZXJzaW9uIiwidmVyc2lvbnMiLCJvbiIsImFkZExpc3RlbmVyIiwib25jZSIsIm9mZiIsInJlbW92ZUxpc3RlbmVyIiwicmVtb3ZlQWxsTGlzdGVuZXJzIiwiZW1pdCIsInByZXBlbmRMaXN0ZW5lciIsInByZXBlbmRPbmNlTGlzdGVuZXIiLCJsaXN0ZW5lcnMiLCJuYW1lIiwiYmluZGluZyIsImN3ZCIsImNoZGlyIiwiZGlyIiwidW1hc2siLCJnbG9iYWwiLCJzZWxmIiwid2luZG93IiwiXyRidWZmZXJfMiIsIkJ1ZmZlciIsIl8kbWFpbl81Iiwic2V0SW1tZWRpYXRlIiwiY2xlYXJJbW1lZGlhdGUiLCJiYXNlNjQiLCJfJGJhc2U2NEpzXzEiLCJpZWVlNzU0IiwiXyRpZWVlNzU0XzMiLCJJTlNQRUNUX01BWF9CWVRFUyIsImNyZWF0ZUJ1ZmZlciIsIlJhbmdlRXJyb3IiLCJidWYiLCJVaW50OEFycmF5IiwiX19wcm90b19fIiwiYXJnIiwiZW5jb2RpbmdPck9mZnNldCIsIlR5cGVFcnJvciIsImFsbG9jVW5zYWZlIiwiZnJvbSIsInZhbHVlIiwic3RyaW5nIiwiZW5jb2RpbmciLCJpc0VuY29kaW5nIiwiYnl0ZUxlbmd0aCIsImFjdHVhbCIsIndyaXRlIiwic2xpY2UiLCJBcnJheUJ1ZmZlciIsImlzVmlldyIsImZyb21BcnJheUxpa2UiLCJpc0luc3RhbmNlIiwiYnVmZmVyIiwiYnl0ZU9mZnNldCIsInZhbHVlT2YiLCJiIiwib2JqIiwiaXNCdWZmZXIiLCJjaGVja2VkIiwiY29weSIsIm51bWJlcklzTmFOIiwidHlwZSIsImlzQXJyYXkiLCJkYXRhIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJhc3NlcnRTaXplIiwic2l6ZSIsInRvU3RyaW5nIiwibXVzdE1hdGNoIiwibG93ZXJlZENhc2UiLCJ1dGY4VG9CeXRlcyIsImJhc2U2NFRvQnl0ZXMiLCJ0b0xvd2VyQ2FzZSIsInN3YXAiLCJuIiwibSIsImJpZGlyZWN0aW9uYWxJbmRleE9mIiwidmFsIiwiYXJyYXlJbmRleE9mIiwiaW5kZXhPZiIsImxhc3RJbmRleE9mIiwiYXJyIiwiaW5kZXhTaXplIiwiYXJyTGVuZ3RoIiwidmFsTGVuZ3RoIiwiU3RyaW5nIiwicmVhZCIsInJlYWRVSW50MTZCRSIsImZvdW5kSW5kZXgiLCJmb3VuZCIsImoiLCJoZXhXcml0ZSIsIm9mZnNldCIsIk51bWJlciIsInJlbWFpbmluZyIsInN0ckxlbiIsInBhcnNlZCIsInBhcnNlSW50Iiwic3Vic3RyIiwidXRmOFdyaXRlIiwiYmxpdEJ1ZmZlciIsImFzY2lpV3JpdGUiLCJzdHIiLCJieXRlQXJyYXkiLCJjaGFyQ29kZUF0IiwibGF0aW4xV3JpdGUiLCJiYXNlNjRXcml0ZSIsInVjczJXcml0ZSIsInVuaXRzIiwiYyIsImhpIiwibG8iLCJiYXNlNjRTbGljZSIsInN0YXJ0IiwiZW5kIiwiZnJvbUJ5dGVBcnJheSIsInV0ZjhTbGljZSIsIk1hdGgiLCJtaW4iLCJyZXMiLCJzZWNvbmRCeXRlIiwidGhpcmRCeXRlIiwiZm91cnRoQnl0ZSIsInRlbXBDb2RlUG9pbnQiLCJmaXJzdEJ5dGUiLCJjb2RlUG9pbnQiLCJieXRlc1BlclNlcXVlbmNlIiwiY29kZVBvaW50cyIsIk1BWF9BUkdVTUVOVFNfTEVOR1RIIiwiZnJvbUNoYXJDb2RlIiwiVFlQRURfQVJSQVlfU1VQUE9SVCIsImZvbyIsImNvbnNvbGUiLCJlcnJvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImdldCIsInNwZWNpZXMiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsInBvb2xTaXplIiwiYWxsb2MiLCJmaWxsIiwiYWxsb2NVbnNhZmVTbG93IiwiX2lzQnVmZmVyIiwiY29tcGFyZSIsImEiLCJ4IiwieSIsImxpc3QiLCJwb3MiLCJzd2FwMTYiLCJzd2FwMzIiLCJzd2FwNjQiLCJoZXhTbGljZSIsImFzY2lpU2xpY2UiLCJsYXRpbjFTbGljZSIsInV0ZjE2bGVTbGljZSIsInRvTG9jYWxlU3RyaW5nIiwiZXF1YWxzIiwiaW5zcGVjdCIsIm1heCIsInJlcGxhY2UiLCJ0cmltIiwidGFyZ2V0IiwidGhpc1N0YXJ0IiwidGhpc0VuZCIsInRoaXNDb3B5IiwidGFyZ2V0Q29weSIsImluY2x1ZGVzIiwiaXNGaW5pdGUiLCJ0b0pTT04iLCJfYXJyIiwicmV0Iiwib3V0IiwiYnl0ZXMiLCJjaGVja09mZnNldCIsImV4dCIsImNoZWNrSW50IiwiY2hlY2tJRUVFNzU0Iiwid3JpdGVGbG9hdCIsImxpdHRsZUVuZGlhbiIsIm5vQXNzZXJ0Iiwid3JpdGVEb3VibGUiLCJuZXdCdWYiLCJzdWJhcnJheSIsInJlYWRVSW50TEUiLCJtdWwiLCJyZWFkVUludEJFIiwicmVhZFVJbnQ4IiwicmVhZFVJbnQxNkxFIiwicmVhZFVJbnQzMkxFIiwicmVhZFVJbnQzMkJFIiwicmVhZEludExFIiwicG93IiwicmVhZEludEJFIiwicmVhZEludDgiLCJyZWFkSW50MTZMRSIsInJlYWRJbnQxNkJFIiwicmVhZEludDMyTEUiLCJyZWFkSW50MzJCRSIsInJlYWRGbG9hdExFIiwicmVhZEZsb2F0QkUiLCJyZWFkRG91YmxlTEUiLCJyZWFkRG91YmxlQkUiLCJ3cml0ZVVJbnRMRSIsIndyaXRlVUludEJFIiwid3JpdGVVSW50OCIsIndyaXRlVUludDE2TEUiLCJ3cml0ZVVJbnQxNkJFIiwid3JpdGVVSW50MzJMRSIsIndyaXRlVUludDMyQkUiLCJ3cml0ZUludExFIiwibGltaXQiLCJzdWIiLCJ3cml0ZUludEJFIiwid3JpdGVJbnQ4Iiwid3JpdGVJbnQxNkxFIiwid3JpdGVJbnQxNkJFIiwid3JpdGVJbnQzMkxFIiwid3JpdGVJbnQzMkJFIiwid3JpdGVGbG9hdExFIiwid3JpdGVGbG9hdEJFIiwid3JpdGVEb3VibGVMRSIsIndyaXRlRG91YmxlQkUiLCJ0YXJnZXRTdGFydCIsImNvcHlXaXRoaW4iLCJzZXQiLCJjb2RlIiwiSU5WQUxJRF9CQVNFNjRfUkUiLCJsZWFkU3Vycm9nYXRlIiwidG9CeXRlQXJyYXkiLCJzcGxpdCIsInNyYyIsImRzdCIsImNvbnN0cnVjdG9yIiwiaXNMRSIsIm1MZW4iLCJuQnl0ZXMiLCJlTGVuIiwiZU1heCIsImVCaWFzIiwibkJpdHMiLCJkIiwicyIsIk5hTiIsInJ0IiwiYWJzIiwiaXNOYU4iLCJmbG9vciIsImxvZyIsIkxOMiIsImI2NCIsInRtcCIsImxlbnMiLCJnZXRMZW5zIiwidmFsaWRMZW4iLCJwbGFjZUhvbGRlcnNMZW4iLCJBcnIiLCJjdXJCeXRlIiwicmV2TG9va3VwIiwidWludDgiLCJleHRyYUJ5dGVzIiwicGFydHMiLCJsZW4yIiwiZW5jb2RlQ2h1bmsiLCJsb29rdXAiLCJqb2luIiwibnVtIiwib3V0cHV0IiwiRnVuY3Rpb24iLCJpbW1lZGlhdGVJZHMiLCJuZXh0SW1tZWRpYXRlSWQiLCJUaW1lb3V0IiwiaWQiLCJjbGVhckZuIiwiX2lkIiwiX2NsZWFyRm4iLCJ1bnJlZiIsInJlZiIsImNsb3NlIiwiZm4iLCJfZGVmaW5lUHJvcGVydGllcyIsInByb3BzIiwiZGVzY3JpcHRvciIsImtleSIsIl9jbGFzc1ByaXZhdGVNZXRob2RJbml0U3BlYyIsInByaXZhdGVTZXQiLCJwcml2YXRlQ29sbGVjdGlvbiIsImhhcyIsImFkZCIsIl9jbGFzc1ByaXZhdGVNZXRob2RHZXQiLCJyZWNlaXZlciIsIl9jaGVja0hDUENvbm5lY3RUZW1wbGF0ZXMiLCJXZWFrU2V0IiwiX2luaXQiLCJfY2hlY2tIQ1BDb25uZWN0VGVtcGxhdGVzMiIsImlzTWVnYU1lbnUiLCJhZGRIQ1BDbGFzcyIsImlzSENQQ29uZmlndXJhdG9yIiwiX2luaXQyIiwiSENQQ29ubmVjdCIsImluc3RhbmNlIiwiQ29uc3RydWN0b3IiLCJwcm90b1Byb3BzIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiY2xzIiwiYm9keSIsImNsYXNzTGlzdCJdLCJtYXBwaW5ncyI6IkNBQUEsV0FDQSxJQUFBQSxFQUFBLFNBQUFDLEdBQUEsSUFBQUMsRUFBQSxPQUFBLFNBQUFDLEdBQUEsT0FBQUQsR0FBQUQsRUFBQUMsRUFBQSxDQUFBRSxRQUFBLEdBQUFDLE9BQUFGLEdBQUFELEVBQUFFLFNBQUFGLEVBQUFFLFVBQ0FFLEVBQUFOLEdBQUEsU0FBQU8sRUFBQUgsZ0RDRkEsSUFBQUksRUFBQUMsRUFBQUMsRUFBQUgsRUFBQUgsUUFBQSxHQUFBLFNBQUFPLElBQUEsTUFBQSxJQUFBQyxNQUFBLG1DQUFBLFNBQUFDLElBQUEsTUFBQSxJQUFB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S0FBQTZVLEdBQUFmLEVBQUE5VCxLQUFBdVUsR0FBQVQsRUFBQTlULEtBQUFxVSxHQUNWRixFQUFBblUsS0FBQXVVLEVBQUFLLEdBQUE3VSxLQUFBQyxNQUFBLElBQUErVSxFQUFBQyxFQUhMLE9BQUFELEVBQUFGLEdBQUFHLEVBQUEsQ0FBQSxDQUFBbkIsSUFBQSxhQUFBckosSUFNQyxXQUNJLE9BQU95SyxTQUFTQyxjQUFjLDJCQVBuQyxDQUFBckIsSUFBQSxvQkFBQXJKLElBVUMsV0FDSSxPQUFPeUssU0FBU0MsY0FBYywwQkFYbkMsQ0FBQXJCLElBQUEsY0FBQTFELElBY0MsU0FBZ0JnRixHQUNaRixTQUFTRyxLQUFLQyxVQUFVbkIsSUFBSWlCLFFBQUF6QixFQUFBcUIsRUFBQXhULFVBQUF5VCxHQUFBM0ssT0FBQUMsZUFBQXlLLEVBQUEsWUFBQSxDQUFBcEssVUFBQSxJQWZqQ2tLLEVBZ0NILElBaENKLHlTTkRBIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uKCl7XG52YXIgY3JlYXRlTW9kdWxlRmFjdG9yeSA9IGZ1bmN0aW9uIGNyZWF0ZU1vZHVsZUZhY3RvcnkodCl7dmFyIGU7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiBlfHx0KGU9e2V4cG9ydHM6e30scGFyZW50OnJ9LGUuZXhwb3J0cyksZS5leHBvcnRzfX07XG4iLCJ2YXIgY2FjaGVkU2V0VGltZW91dCxjYWNoZWRDbGVhclRpbWVvdXQscHJvY2Vzcz1tb2R1bGUuZXhwb3J0cz17fTtmdW5jdGlvbiBkZWZhdWx0U2V0VGltb3V0KCl7dGhyb3cgbmV3IEVycm9yKFwic2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZFwiKX1mdW5jdGlvbiBkZWZhdWx0Q2xlYXJUaW1lb3V0KCl7dGhyb3cgbmV3IEVycm9yKFwiY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkXCIpfWZ1bmN0aW9uIHJ1blRpbWVvdXQoZnVuKXtpZihjYWNoZWRTZXRUaW1lb3V0PT09c2V0VGltZW91dClyZXR1cm4gc2V0VGltZW91dChmdW4sMCk7aWYoKGNhY2hlZFNldFRpbWVvdXQ9PT1kZWZhdWx0U2V0VGltb3V0fHwhY2FjaGVkU2V0VGltZW91dCkmJnNldFRpbWVvdXQpcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQ9c2V0VGltZW91dCxzZXRUaW1lb3V0KGZ1biwwKTt0cnl7cmV0dXJuIGNhY2hlZFNldFRpbWVvdXQoZnVuLDApfWNhdGNoKGUpe3RyeXtyZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKG51bGwsZnVuLDApfWNhdGNoKGUpe3JldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwodGhpcyxmdW4sMCl9fX0hZnVuY3Rpb24oKXt0cnl7Y2FjaGVkU2V0VGltZW91dD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBzZXRUaW1lb3V0P3NldFRpbWVvdXQ6ZGVmYXVsdFNldFRpbW91dH1jYXRjaChlKXtjYWNoZWRTZXRUaW1lb3V0PWRlZmF1bHRTZXRUaW1vdXR9dHJ5e2NhY2hlZENsZWFyVGltZW91dD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJUaW1lb3V0OmRlZmF1bHRDbGVhclRpbWVvdXR9Y2F0Y2goZSl7Y2FjaGVkQ2xlYXJUaW1lb3V0PWRlZmF1bHRDbGVhclRpbWVvdXR9fSgpO3ZhciBjdXJyZW50UXVldWUscXVldWU9W10sZHJhaW5pbmc9ITEscXVldWVJbmRleD0tMTtmdW5jdGlvbiBjbGVhblVwTmV4dFRpY2soKXtkcmFpbmluZyYmY3VycmVudFF1ZXVlJiYoZHJhaW5pbmc9ITEsY3VycmVudFF1ZXVlLmxlbmd0aD9xdWV1ZT1jdXJyZW50UXVldWUuY29uY2F0KHF1ZXVlKTpxdWV1ZUluZGV4PS0xLHF1ZXVlLmxlbmd0aCYmZHJhaW5RdWV1ZSgpKX1mdW5jdGlvbiBkcmFpblF1ZXVlKCl7aWYoIWRyYWluaW5nKXt2YXIgdGltZW91dD1ydW5UaW1lb3V0KGNsZWFuVXBOZXh0VGljayk7ZHJhaW5pbmc9ITA7Zm9yKHZhciBsZW49cXVldWUubGVuZ3RoO2xlbjspe2ZvcihjdXJyZW50UXVldWU9cXVldWUscXVldWU9W107KytxdWV1ZUluZGV4PGxlbjspY3VycmVudFF1ZXVlJiZjdXJyZW50UXVldWVbcXVldWVJbmRleF0ucnVuKCk7cXVldWVJbmRleD0tMSxsZW49cXVldWUubGVuZ3RofWN1cnJlbnRRdWV1ZT1udWxsLGRyYWluaW5nPSExLGZ1bmN0aW9uKG1hcmtlcil7aWYoY2FjaGVkQ2xlYXJUaW1lb3V0PT09Y2xlYXJUaW1lb3V0KXJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtpZigoY2FjaGVkQ2xlYXJUaW1lb3V0PT09ZGVmYXVsdENsZWFyVGltZW91dHx8IWNhY2hlZENsZWFyVGltZW91dCkmJmNsZWFyVGltZW91dClyZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0PWNsZWFyVGltZW91dCxjbGVhclRpbWVvdXQobWFya2VyKTt0cnl7Y2FjaGVkQ2xlYXJUaW1lb3V0KG1hcmtlcil9Y2F0Y2goZSl7dHJ5e3JldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbChudWxsLG1hcmtlcil9Y2F0Y2goZSl7cmV0dXJuIGNhY2hlZENsZWFyVGltZW91dC5jYWxsKHRoaXMsbWFya2VyKX19fSh0aW1lb3V0KX19ZnVuY3Rpb24gSXRlbShmdW4sYXJyYXkpe3RoaXMuZnVuPWZ1bix0aGlzLmFycmF5PWFycmF5fWZ1bmN0aW9uIG5vb3AoKXt9cHJvY2Vzcy5uZXh0VGljaz1mdW5jdGlvbihmdW4pe3ZhciBhcmdzPW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoLTEpO2lmKGFyZ3VtZW50cy5sZW5ndGg+MSlmb3IodmFyIGk9MTtpPGFyZ3VtZW50cy5sZW5ndGg7aSsrKWFyZ3NbaS0xXT1hcmd1bWVudHNbaV07cXVldWUucHVzaChuZXcgSXRlbShmdW4sYXJncykpLDEhPT1xdWV1ZS5sZW5ndGh8fGRyYWluaW5nfHxydW5UaW1lb3V0KGRyYWluUXVldWUpfSxJdGVtLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oKXt0aGlzLmZ1bi5hcHBseShudWxsLHRoaXMuYXJyYXkpfSxwcm9jZXNzLnRpdGxlPVwiYnJvd3NlclwiLHByb2Nlc3MuYnJvd3Nlcj0hMCxwcm9jZXNzLmVudj17fSxwcm9jZXNzLmFyZ3Y9W10scHJvY2Vzcy52ZXJzaW9uPVwiXCIscHJvY2Vzcy52ZXJzaW9ucz17fSxwcm9jZXNzLm9uPW5vb3AscHJvY2Vzcy5hZGRMaXN0ZW5lcj1ub29wLHByb2Nlc3Mub25jZT1ub29wLHByb2Nlc3Mub2ZmPW5vb3AscHJvY2Vzcy5yZW1vdmVMaXN0ZW5lcj1ub29wLHByb2Nlc3MucmVtb3ZlQWxsTGlzdGVuZXJzPW5vb3AscHJvY2Vzcy5lbWl0PW5vb3AscHJvY2Vzcy5wcmVwZW5kTGlzdGVuZXI9bm9vcCxwcm9jZXNzLnByZXBlbmRPbmNlTGlzdGVuZXI9bm9vcCxwcm9jZXNzLmxpc3RlbmVycz1mdW5jdGlvbihuYW1lKXtyZXR1cm5bXX0scHJvY2Vzcy5iaW5kaW5nPWZ1bmN0aW9uKG5hbWUpe3Rocm93IG5ldyBFcnJvcihcInByb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkXCIpfSxwcm9jZXNzLmN3ZD1mdW5jdGlvbigpe3JldHVyblwiL1wifSxwcm9jZXNzLmNoZGlyPWZ1bmN0aW9uKGRpcil7dGhyb3cgbmV3IEVycm9yKFwicHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkXCIpfSxwcm9jZXNzLnVtYXNrPWZ1bmN0aW9uKCl7cmV0dXJuIDB9O1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW1KeWIzZHpaWEl1YW5NaVhTd2libUZ0WlhNaU9sc2lZMkZqYUdWa1UyVjBWR2x0Wlc5MWRDSXNJbU5oWTJobFpFTnNaV0Z5VkdsdFpXOTFkQ0lzSW5CeWIyTmxjM01pTENKdGIyUjFiR1VpTENKbGVIQnZjblJ6SWl3aVpHVm1ZWFZzZEZObGRGUnBiVzkxZENJc0lrVnljbTl5SWl3aVpHVm1ZWFZzZEVOc1pXRnlWR2x0Wlc5MWRDSXNJbkoxYmxScGJXVnZkWFFpTENKbWRXNGlMQ0p6WlhSVWFXMWxiM1YwSWl3aVpTSXNJbU5oYkd3aUxDSjBhR2x6SWl3aVkyeGxZWEpVYVcxbGIzVjBJaXdpWTNWeWNtVnVkRkYxWlhWbElpd2ljWFZsZFdVaUxDSmtjbUZwYm1sdVp5SXNJbkYxWlhWbFNXNWtaWGdpTENKamJHVmhibFZ3VG1WNGRGUnBZMnNpTENKc1pXNW5kR2dpTENKamIyNWpZWFFpTENKa2NtRnBibEYxWlhWbElpd2lkR2x0Wlc5MWRDSXNJbXhsYmlJc0luSjFiaUlzSW0xaGNtdGxjaUlzSW5KMWJrTnNaV0Z5VkdsdFpXOTFkQ0lzSWtsMFpXMGlMQ0poY25KaGVTSXNJbTV2YjNBaUxDSnVaWGgwVkdsamF5SXNJbUZ5WjNNaUxDSkJjbkpoZVNJc0ltRnlaM1Z0Wlc1MGN5SXNJbWtpTENKd2RYTm9JaXdpY0hKdmRHOTBlWEJsSWl3aVlYQndiSGtpTENKMGFYUnNaU0lzSW1KeWIzZHpaWElpTENKbGJuWWlMQ0poY21kMklpd2lkbVZ5YzJsdmJpSXNJblpsY25OcGIyNXpJaXdpYjI0aUxDSmhaR1JNYVhOMFpXNWxjaUlzSW05dVkyVWlMQ0p2Wm1ZaUxDSnlaVzF2ZG1WTWFYTjBaVzVsY2lJc0luSmxiVzkyWlVGc2JFeHBjM1JsYm1WeWN5SXNJbVZ0YVhRaUxDSndjbVZ3Wlc1a1RHbHpkR1Z1WlhJaUxDSndjbVZ3Wlc1a1QyNWpaVXhwYzNSbGJtVnlJaXdpYkdsemRHVnVaWEp6SWl3aWJtRnRaU0lzSW1KcGJtUnBibWNpTENKamQyUWlMQ0pqYUdScGNpSXNJbVJwY2lJc0luVnRZWE5ySWwwc0ltMWhjSEJwYm1keklqb2lRVUZEUVN4SlFVOUpRU3hwUWtGRFFVTXNiVUpCVWtGRExGRkJRVlZETEU5QlFVOURMRkZCUVZVc1IwRlZMMElzVTBGQlUwTXNiVUpCUTB3c1RVRkJUU3hKUVVGSlF5eE5RVUZOTEcxRFFVVndRaXhUUVVGVFF5eHpRa0ZEVEN4TlFVRk5MRWxCUVVsRUxFMUJRVTBzY1VOQmMwSndRaXhUUVVGVFJTeFhRVUZYUXl4TFFVTm9RaXhIUVVGSlZDeHRRa0ZCY1VKVkxGZEJSWEpDTEU5QlFVOUJMRmRCUVZkRUxFbEJRVXNzUjBGSE0wSXNTVUZCUzFRc2JVSkJRWEZDU3l4dFFrRkJjVUpNTEcxQ1FVRnhRbFVzVjBGRmFFVXNUMEZFUVZZc2FVSkJRVzFDVlN4WFFVTmFRU3hYUVVGWFJDeEpRVUZMTEVkQlJUTkNMRWxCUlVrc1QwRkJUMVFzYVVKQlFXbENVeXhKUVVGTExFZEJReTlDTEUxQlFVMUZMRWRCUTBvc1NVRkZTU3hQUVVGUFdDeHBRa0ZCYVVKWkxFdEJRVXNzUzBGQlRVZ3NTVUZCU3l4SFFVTXhReXhOUVVGTlJTeEhRVVZLTEU5QlFVOVlMR2xDUVVGcFFsa3NTMEZCUzBNc1MwRkJUVW9zU1VGQlN5eE5RWFpEYmtRc1YwRkRSeXhKUVVWUlZDeHBRa0ZFYzBJc2JVSkJRV1pWTEZkQlExbEJMRmRCUlVGTUxHbENRVVY2UWl4TlFVRlBUU3hIUVVOTVdDeHBRa0ZCYlVKTExHbENRVVYyUWl4SlFVVlJTaXh0UWtGRWQwSXNiVUpCUVdwQ1lTeGhRVU5qUVN4aFFVVkJVQ3h2UWtGRk0wSXNUVUZCVDBrc1IwRkRURllzYlVKQlFYRkNUU3h4UWtGcVFqZENMRWRCZDBWQkxFbEJSVWxSTEdGQlJrRkRMRTFCUVZFc1IwRkRVa01zVlVGQlZ5eEZRVVZZUXl4WlFVRmpMRVZCUld4Q0xGTkJRVk5ETEd0Q1FVTkJSaXhWUVVGaFJpeGxRVWRzUWtVc1ZVRkJWeXhGUVVOUVJpeGhRVUZoU3l4UFFVTmlTaXhOUVVGUlJDeGhRVUZoVFN4UFFVRlBUQ3hQUVVVMVFrVXNXVUZCWXl4RlFVVmtSaXhOUVVGTlNTeFJRVU5PUlN4alFVbFNMRk5CUVZOQkxHRkJRMHdzU1VGQlNVd3NVMEZCU2l4RFFVZEJMRWxCUVVsTkxGRkJRVlZtTEZkQlFWZFhMR2xDUVVONlFrWXNWVUZCVnl4RlFVZFlMRWxCUkVFc1NVRkJTVThzU1VGQlRWSXNUVUZCVFVrc1QwRkRWa2tzUzBGQlN5eERRVWRRTEVsQlJrRlVMR0ZCUVdWRExFMUJRMlpCTEUxQlFWRXNTMEZEUTBVc1YwRkJZVTBzUzBGRFpGUXNZMEZEUVVFc1lVRkJZVWNzV1VGQldVOHNUVUZIYWtOUUxGbEJRV01zUlVGRFpFMHNTVUZCVFZJc1RVRkJUVWtzVDBGRmFFSk1MR0ZCUVdVc1MwRkRaa1VzVlVGQlZ5eEZRVzVGWml4VFFVRjVRbE1zVVVGRGNrSXNSMEZCU1hwQ0xIRkNRVUYxUW1Fc1lVRkZka0lzVDBGQlQwRXNZVUZCWVZrc1VVRkhlRUlzU1VGQlMzcENMSEZDUVVGMVFrMHNjMEpCUVhkQ1RpeHhRa0ZCZFVKaExHRkJSWFpGTEU5QlJFRmlMRzFDUVVGeFFtRXNZVUZEWkVFc1lVRkJZVmtzVVVGRmVFSXNTVUZGVjNwQ0xHMUNRVUZ0UW5sQ0xGRkJRelZDTEUxQlFVOW1MRWRCUTB3c1NVRkZTU3hQUVVGUFZpeHRRa0ZCYlVKWExFdEJRVXNzUzBGQlRXTXNVVUZEZGtNc1RVRkJUMllzUjBGSFRDeFBRVUZQVml4dFFrRkJiVUpYTEV0QlFVdERMRXRCUVUxaExGVkJaMFEzUTBNc1EwRkJaMEpLTEZWQmFVSndRaXhUUVVGVFN5eExRVUZMYmtJc1NVRkJTMjlDTEU5QlEyWm9RaXhMUVVGTFNpeEpRVUZOUVN4SlFVTllTU3hMUVVGTFowSXNUVUZCVVVFc1RVRlpha0lzVTBGQlUwTXNVVUUxUWxRMVFpeFJRVUZSTmtJc1UwRkJWeXhUUVVGVmRFSXNTMEZEZWtJc1NVRkJTWFZDTEV0QlFVOHNTVUZCU1VNc1RVRkJUVU1zVlVGQlZXUXNUMEZCVXl4SFFVTjRReXhIUVVGSll5eFZRVUZWWkN4UFFVRlRMRVZCUTI1Q0xFbEJRVXNzU1VGQlNXVXNSVUZCU1N4RlFVRkhRU3hGUVVGSlJDeFZRVUZWWkN4UFFVRlJaU3hKUVVOc1EwZ3NTMEZCUzBjc1JVRkJTU3hIUVVGTFJDeFZRVUZWUXl4SFFVZG9RMjVDTEUxQlFVMXZRaXhMUVVGTExFbEJRVWxTTEV0QlFVdHVRaXhKUVVGTGRVSXNUMEZEU2l4SlFVRnFRbWhDTEUxQlFVMUpMRkZCUVdsQ1NDeFZRVU4yUWxRc1YwRkJWMk1zWVVGVGJrSk5MRXRCUVV0VExGVkJRVlZhTEVsQlFVMHNWMEZEYWtKYUxFdEJRVXRLTEVsQlFVazJRaXhOUVVGTkxFdEJRVTE2UWl4TFFVRkxaMElzVVVGRk9VSXpRaXhSUVVGUmNVTXNUVUZCVVN4VlFVTm9RbkpETEZGQlFWRnpReXhUUVVGVkxFVkJRMnhDZEVNc1VVRkJVWFZETEVsQlFVMHNSMEZEWkhaRExGRkJRVkYzUXl4TFFVRlBMRWRCUTJaNFF5eFJRVUZSZVVNc1VVRkJWU3hIUVVOc1FucERMRkZCUVZFd1F5eFRRVUZYTEVkQlNXNUNNVU1zVVVGQlVUSkRMRWRCUVV0bUxFdEJRMkkxUWl4UlFVRlJORU1zV1VGQlkyaENMRXRCUTNSQ05VSXNVVUZCVVRaRExFdEJRVTlxUWl4TFFVTm1OVUlzVVVGQlVUaERMRWxCUVUxc1FpeExRVU5rTlVJc1VVRkJVU3RETEdWQlFXbENia0lzUzBGRGVrSTFRaXhSUVVGUlowUXNiVUpCUVhGQ2NFSXNTMEZETjBJMVFpeFJRVUZSYVVRc1MwRkJUM0pDTEV0QlEyWTFRaXhSUVVGUmEwUXNaMEpCUVd0Q2RFSXNTMEZETVVJMVFpeFJRVUZSYlVRc2IwSkJRWE5DZGtJc1MwRkZPVUkxUWl4UlFVRlJiMFFzVlVGQldTeFRRVUZWUXl4TlFVRlJMRTFCUVU4c1NVRkZOME55UkN4UlFVRlJjMFFzVVVGQlZTeFRRVUZWUkN4TlFVTjRRaXhOUVVGTkxFbEJRVWxxUkN4TlFVRk5MSEZEUVVkd1Frb3NVVUZCVVhWRUxFbEJRVTBzVjBGQll5eE5RVUZQTEV0QlEyNURka1FzVVVGQlVYZEVMRTFCUVZFc1UwRkJWVU1zUzBGRGRFSXNUVUZCVFN4SlFVRkpja1FzVFVGQlRTeHRRMEZGY0VKS0xGRkJRVkV3UkN4TlFVRlJMRmRCUVdFc1QwRkJUeUlzSW1acGJHVWlPaUpET2x4Y1FuVnBiR1JCWjJWdWRGeGNkMXhjWlVOdmJXMWxjbU5sWEZ4d2NtOWtYRnhUYjNWeVkyVmNYRWRPWlVOdmJWeGNVMmwwWldOdmNtVmNYRkJ5YjJwbFkzUmNYRWRPWlVOdmJWeGNZMjlrWlZ4Y1IwNWxRMjl0TGxCeWIycGxZM1F1VjJWaWMybDBaVnhjYm05a1pWOXRiMlIxYkdWelhGeHdjbTlqWlhOelhGeGljbTkzYzJWeUxtcHpJbjA9IiwiLyohXG4gKiBUaGUgYnVmZmVyIG1vZHVsZSBmcm9tIG5vZGUuanMsIGZvciB0aGUgYnJvd3Nlci5cbiAqXG4gKiBAYXV0aG9yICAgRmVyb3NzIEFib3VraGFkaWplaCA8aHR0cHM6Ly9mZXJvc3Mub3JnPlxuICogQGxpY2Vuc2UgIE1JVFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90byAqL1xuXG4ndXNlIHN0cmljdCdcblxudmFyIGJhc2U2NCA9IHJlcXVpcmUoJ2Jhc2U2NC1qcycpXG52YXIgaWVlZTc1NCA9IHJlcXVpcmUoJ2llZWU3NTQnKVxuXG5leHBvcnRzLkJ1ZmZlciA9IEJ1ZmZlclxuZXhwb3J0cy5TbG93QnVmZmVyID0gU2xvd0J1ZmZlclxuZXhwb3J0cy5JTlNQRUNUX01BWF9CWVRFUyA9IDUwXG5cbnZhciBLX01BWF9MRU5HVEggPSAweDdmZmZmZmZmXG5leHBvcnRzLmtNYXhMZW5ndGggPSBLX01BWF9MRU5HVEhcblxuLyoqXG4gKiBJZiBgQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlRgOlxuICogICA9PT0gdHJ1ZSAgICBVc2UgVWludDhBcnJheSBpbXBsZW1lbnRhdGlvbiAoZmFzdGVzdClcbiAqICAgPT09IGZhbHNlICAgUHJpbnQgd2FybmluZyBhbmQgcmVjb21tZW5kIHVzaW5nIGBidWZmZXJgIHY0Lnggd2hpY2ggaGFzIGFuIE9iamVjdFxuICogICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbiAobW9zdCBjb21wYXRpYmxlLCBldmVuIElFNilcbiAqXG4gKiBCcm93c2VycyB0aGF0IHN1cHBvcnQgdHlwZWQgYXJyYXlzIGFyZSBJRSAxMCssIEZpcmVmb3ggNCssIENocm9tZSA3KywgU2FmYXJpIDUuMSssXG4gKiBPcGVyYSAxMS42KywgaU9TIDQuMisuXG4gKlxuICogV2UgcmVwb3J0IHRoYXQgdGhlIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCB0eXBlZCBhcnJheXMgaWYgdGhlIGFyZSBub3Qgc3ViY2xhc3NhYmxlXG4gKiB1c2luZyBfX3Byb3RvX18uIEZpcmVmb3ggNC0yOSBsYWNrcyBzdXBwb3J0IGZvciBhZGRpbmcgbmV3IHByb3BlcnRpZXMgdG8gYFVpbnQ4QXJyYXlgXG4gKiAoU2VlOiBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD02OTU0MzgpLiBJRSAxMCBsYWNrcyBzdXBwb3J0XG4gKiBmb3IgX19wcm90b19fIGFuZCBoYXMgYSBidWdneSB0eXBlZCBhcnJheSBpbXBsZW1lbnRhdGlvbi5cbiAqL1xuQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQgPSB0eXBlZEFycmF5U3VwcG9ydCgpXG5cbmlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQgJiYgdHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmXG4gICAgdHlwZW9mIGNvbnNvbGUuZXJyb3IgPT09ICdmdW5jdGlvbicpIHtcbiAgY29uc29sZS5lcnJvcihcbiAgICAnVGhpcyBicm93c2VyIGxhY2tzIHR5cGVkIGFycmF5IChVaW50OEFycmF5KSBzdXBwb3J0IHdoaWNoIGlzIHJlcXVpcmVkIGJ5ICcgK1xuICAgICdgYnVmZmVyYCB2NS54LiBVc2UgYGJ1ZmZlcmAgdjQueCBpZiB5b3UgcmVxdWlyZSBvbGQgYnJvd3NlciBzdXBwb3J0LidcbiAgKVxufVxuXG5mdW5jdGlvbiB0eXBlZEFycmF5U3VwcG9ydCAoKSB7XG4gIC8vIENhbiB0eXBlZCBhcnJheSBpbnN0YW5jZXMgY2FuIGJlIGF1Z21lbnRlZD9cbiAgdHJ5IHtcbiAgICB2YXIgYXJyID0gbmV3IFVpbnQ4QXJyYXkoMSlcbiAgICBhcnIuX19wcm90b19fID0geyBfX3Byb3RvX186IFVpbnQ4QXJyYXkucHJvdG90eXBlLCBmb286IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDQyIH0gfVxuICAgIHJldHVybiBhcnIuZm9vKCkgPT09IDQyXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoQnVmZmVyLnByb3RvdHlwZSwgJ3BhcmVudCcsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFCdWZmZXIuaXNCdWZmZXIodGhpcykpIHJldHVybiB1bmRlZmluZWRcbiAgICByZXR1cm4gdGhpcy5idWZmZXJcbiAgfVxufSlcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KEJ1ZmZlci5wcm90b3R5cGUsICdvZmZzZXQnLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKHRoaXMpKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgcmV0dXJuIHRoaXMuYnl0ZU9mZnNldFxuICB9XG59KVxuXG5mdW5jdGlvbiBjcmVhdGVCdWZmZXIgKGxlbmd0aCkge1xuICBpZiAobGVuZ3RoID4gS19NQVhfTEVOR1RIKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBcIicgKyBsZW5ndGggKyAnXCIgaXMgaW52YWxpZCBmb3Igb3B0aW9uIFwic2l6ZVwiJylcbiAgfVxuICAvLyBSZXR1cm4gYW4gYXVnbWVudGVkIGBVaW50OEFycmF5YCBpbnN0YW5jZVxuICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJyYXkobGVuZ3RoKVxuICBidWYuX19wcm90b19fID0gQnVmZmVyLnByb3RvdHlwZVxuICByZXR1cm4gYnVmXG59XG5cbi8qKlxuICogVGhlIEJ1ZmZlciBjb25zdHJ1Y3RvciByZXR1cm5zIGluc3RhbmNlcyBvZiBgVWludDhBcnJheWAgdGhhdCBoYXZlIHRoZWlyXG4gKiBwcm90b3R5cGUgY2hhbmdlZCB0byBgQnVmZmVyLnByb3RvdHlwZWAuIEZ1cnRoZXJtb3JlLCBgQnVmZmVyYCBpcyBhIHN1YmNsYXNzIG9mXG4gKiBgVWludDhBcnJheWAsIHNvIHRoZSByZXR1cm5lZCBpbnN0YW5jZXMgd2lsbCBoYXZlIGFsbCB0aGUgbm9kZSBgQnVmZmVyYCBtZXRob2RzXG4gKiBhbmQgdGhlIGBVaW50OEFycmF5YCBtZXRob2RzLiBTcXVhcmUgYnJhY2tldCBub3RhdGlvbiB3b3JrcyBhcyBleHBlY3RlZCAtLSBpdFxuICogcmV0dXJucyBhIHNpbmdsZSBvY3RldC5cbiAqXG4gKiBUaGUgYFVpbnQ4QXJyYXlgIHByb3RvdHlwZSByZW1haW5zIHVubW9kaWZpZWQuXG4gKi9cblxuZnVuY3Rpb24gQnVmZmVyIChhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICAvLyBDb21tb24gY2FzZS5cbiAgaWYgKHR5cGVvZiBhcmcgPT09ICdudW1iZXInKSB7XG4gICAgaWYgKHR5cGVvZiBlbmNvZGluZ09yT2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgJ1RoZSBcInN0cmluZ1wiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBzdHJpbmcuIFJlY2VpdmVkIHR5cGUgbnVtYmVyJ1xuICAgICAgKVxuICAgIH1cbiAgICByZXR1cm4gYWxsb2NVbnNhZmUoYXJnKVxuICB9XG4gIHJldHVybiBmcm9tKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxufVxuXG4vLyBGaXggc3ViYXJyYXkoKSBpbiBFUzIwMTYuIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXIvcHVsbC85N1xuaWYgKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC5zcGVjaWVzICE9IG51bGwgJiZcbiAgICBCdWZmZXJbU3ltYm9sLnNwZWNpZXNdID09PSBCdWZmZXIpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEJ1ZmZlciwgU3ltYm9sLnNwZWNpZXMsIHtcbiAgICB2YWx1ZTogbnVsbCxcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgd3JpdGFibGU6IGZhbHNlXG4gIH0pXG59XG5cbkJ1ZmZlci5wb29sU2l6ZSA9IDgxOTIgLy8gbm90IHVzZWQgYnkgdGhpcyBpbXBsZW1lbnRhdGlvblxuXG5mdW5jdGlvbiBmcm9tICh2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZyb21TdHJpbmcodmFsdWUsIGVuY29kaW5nT3JPZmZzZXQpXG4gIH1cblxuICBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KHZhbHVlKSkge1xuICAgIHJldHVybiBmcm9tQXJyYXlMaWtlKHZhbHVlKVxuICB9XG5cbiAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IoXG4gICAgICAnVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgJyArXG4gICAgICAnb3IgQXJyYXktbGlrZSBPYmplY3QuIFJlY2VpdmVkIHR5cGUgJyArICh0eXBlb2YgdmFsdWUpXG4gICAgKVxuICB9XG5cbiAgaWYgKGlzSW5zdGFuY2UodmFsdWUsIEFycmF5QnVmZmVyKSB8fFxuICAgICAgKHZhbHVlICYmIGlzSW5zdGFuY2UodmFsdWUuYnVmZmVyLCBBcnJheUJ1ZmZlcikpKSB7XG4gICAgcmV0dXJuIGZyb21BcnJheUJ1ZmZlcih2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgJ1RoZSBcInZhbHVlXCIgYXJndW1lbnQgbXVzdCBub3QgYmUgb2YgdHlwZSBudW1iZXIuIFJlY2VpdmVkIHR5cGUgbnVtYmVyJ1xuICAgIClcbiAgfVxuXG4gIHZhciB2YWx1ZU9mID0gdmFsdWUudmFsdWVPZiAmJiB2YWx1ZS52YWx1ZU9mKClcbiAgaWYgKHZhbHVlT2YgIT0gbnVsbCAmJiB2YWx1ZU9mICE9PSB2YWx1ZSkge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZU9mLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG4gIH1cblxuICB2YXIgYiA9IGZyb21PYmplY3QodmFsdWUpXG4gIGlmIChiKSByZXR1cm4gYlxuXG4gIGlmICh0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9QcmltaXRpdmUgIT0gbnVsbCAmJlxuICAgICAgdHlwZW9mIHZhbHVlW1N5bWJvbC50b1ByaW1pdGl2ZV0gPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oXG4gICAgICB2YWx1ZVtTeW1ib2wudG9QcmltaXRpdmVdKCdzdHJpbmcnKSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoXG4gICAgKVxuICB9XG5cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAnVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgJyArXG4gICAgJ29yIEFycmF5LWxpa2UgT2JqZWN0LiBSZWNlaXZlZCB0eXBlICcgKyAodHlwZW9mIHZhbHVlKVxuICApXG59XG5cbi8qKlxuICogRnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgdG8gQnVmZmVyKGFyZywgZW5jb2RpbmcpIGJ1dCB0aHJvd3MgYSBUeXBlRXJyb3JcbiAqIGlmIHZhbHVlIGlzIGEgbnVtYmVyLlxuICogQnVmZmVyLmZyb20oc3RyWywgZW5jb2RpbmddKVxuICogQnVmZmVyLmZyb20oYXJyYXkpXG4gKiBCdWZmZXIuZnJvbShidWZmZXIpXG4gKiBCdWZmZXIuZnJvbShhcnJheUJ1ZmZlclssIGJ5dGVPZmZzZXRbLCBsZW5ndGhdXSlcbiAqKi9cbkJ1ZmZlci5mcm9tID0gZnVuY3Rpb24gKHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGZyb20odmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuLy8gTm90ZTogQ2hhbmdlIHByb3RvdHlwZSAqYWZ0ZXIqIEJ1ZmZlci5mcm9tIGlzIGRlZmluZWQgdG8gd29ya2Fyb3VuZCBDaHJvbWUgYnVnOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXIvcHVsbC8xNDhcbkJ1ZmZlci5wcm90b3R5cGUuX19wcm90b19fID0gVWludDhBcnJheS5wcm90b3R5cGVcbkJ1ZmZlci5fX3Byb3RvX18gPSBVaW50OEFycmF5XG5cbmZ1bmN0aW9uIGFzc2VydFNpemUgKHNpemUpIHtcbiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wic2l6ZVwiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBudW1iZXInKVxuICB9IGVsc2UgaWYgKHNpemUgPCAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBcIicgKyBzaXplICsgJ1wiIGlzIGludmFsaWQgZm9yIG9wdGlvbiBcInNpemVcIicpXG4gIH1cbn1cblxuZnVuY3Rpb24gYWxsb2MgKHNpemUsIGZpbGwsIGVuY29kaW5nKSB7XG4gIGFzc2VydFNpemUoc2l6ZSlcbiAgaWYgKHNpemUgPD0gMCkge1xuICAgIHJldHVybiBjcmVhdGVCdWZmZXIoc2l6ZSlcbiAgfVxuICBpZiAoZmlsbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gT25seSBwYXkgYXR0ZW50aW9uIHRvIGVuY29kaW5nIGlmIGl0J3MgYSBzdHJpbmcuIFRoaXNcbiAgICAvLyBwcmV2ZW50cyBhY2NpZGVudGFsbHkgc2VuZGluZyBpbiBhIG51bWJlciB0aGF0IHdvdWxkXG4gICAgLy8gYmUgaW50ZXJwcmV0dGVkIGFzIGEgc3RhcnQgb2Zmc2V0LlxuICAgIHJldHVybiB0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnXG4gICAgICA/IGNyZWF0ZUJ1ZmZlcihzaXplKS5maWxsKGZpbGwsIGVuY29kaW5nKVxuICAgICAgOiBjcmVhdGVCdWZmZXIoc2l6ZSkuZmlsbChmaWxsKVxuICB9XG4gIHJldHVybiBjcmVhdGVCdWZmZXIoc2l6ZSlcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IGZpbGxlZCBCdWZmZXIgaW5zdGFuY2UuXG4gKiBhbGxvYyhzaXplWywgZmlsbFssIGVuY29kaW5nXV0pXG4gKiovXG5CdWZmZXIuYWxsb2MgPSBmdW5jdGlvbiAoc2l6ZSwgZmlsbCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGFsbG9jKHNpemUsIGZpbGwsIGVuY29kaW5nKVxufVxuXG5mdW5jdGlvbiBhbGxvY1Vuc2FmZSAoc2l6ZSkge1xuICBhc3NlcnRTaXplKHNpemUpXG4gIHJldHVybiBjcmVhdGVCdWZmZXIoc2l6ZSA8IDAgPyAwIDogY2hlY2tlZChzaXplKSB8IDApXG59XG5cbi8qKlxuICogRXF1aXZhbGVudCB0byBCdWZmZXIobnVtKSwgYnkgZGVmYXVsdCBjcmVhdGVzIGEgbm9uLXplcm8tZmlsbGVkIEJ1ZmZlciBpbnN0YW5jZS5cbiAqICovXG5CdWZmZXIuYWxsb2NVbnNhZmUgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICByZXR1cm4gYWxsb2NVbnNhZmUoc2l6ZSlcbn1cbi8qKlxuICogRXF1aXZhbGVudCB0byBTbG93QnVmZmVyKG51bSksIGJ5IGRlZmF1bHQgY3JlYXRlcyBhIG5vbi16ZXJvLWZpbGxlZCBCdWZmZXIgaW5zdGFuY2UuXG4gKi9cbkJ1ZmZlci5hbGxvY1Vuc2FmZVNsb3cgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICByZXR1cm4gYWxsb2NVbnNhZmUoc2l6ZSlcbn1cblxuZnVuY3Rpb24gZnJvbVN0cmluZyAoc3RyaW5nLCBlbmNvZGluZykge1xuICBpZiAodHlwZW9mIGVuY29kaW5nICE9PSAnc3RyaW5nJyB8fCBlbmNvZGluZyA9PT0gJycpIHtcbiAgICBlbmNvZGluZyA9ICd1dGY4J1xuICB9XG5cbiAgaWYgKCFCdWZmZXIuaXNFbmNvZGluZyhlbmNvZGluZykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpXG4gIH1cblxuICB2YXIgbGVuZ3RoID0gYnl0ZUxlbmd0aChzdHJpbmcsIGVuY29kaW5nKSB8IDBcbiAgdmFyIGJ1ZiA9IGNyZWF0ZUJ1ZmZlcihsZW5ndGgpXG5cbiAgdmFyIGFjdHVhbCA9IGJ1Zi53cml0ZShzdHJpbmcsIGVuY29kaW5nKVxuXG4gIGlmIChhY3R1YWwgIT09IGxlbmd0aCkge1xuICAgIC8vIFdyaXRpbmcgYSBoZXggc3RyaW5nLCBmb3IgZXhhbXBsZSwgdGhhdCBjb250YWlucyBpbnZhbGlkIGNoYXJhY3RlcnMgd2lsbFxuICAgIC8vIGNhdXNlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0IGludmFsaWQgY2hhcmFjdGVyIHRvIGJlIGlnbm9yZWQuIChlLmcuXG4gICAgLy8gJ2FieHhjZCcgd2lsbCBiZSB0cmVhdGVkIGFzICdhYicpXG4gICAgYnVmID0gYnVmLnNsaWNlKDAsIGFjdHVhbClcbiAgfVxuXG4gIHJldHVybiBidWZcbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5TGlrZSAoYXJyYXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCA8IDAgPyAwIDogY2hlY2tlZChhcnJheS5sZW5ndGgpIHwgMFxuICB2YXIgYnVmID0gY3JlYXRlQnVmZmVyKGxlbmd0aClcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMSkge1xuICAgIGJ1ZltpXSA9IGFycmF5W2ldICYgMjU1XG4gIH1cbiAgcmV0dXJuIGJ1ZlxufVxuXG5mdW5jdGlvbiBmcm9tQXJyYXlCdWZmZXIgKGFycmF5LCBieXRlT2Zmc2V0LCBsZW5ndGgpIHtcbiAgaWYgKGJ5dGVPZmZzZXQgPCAwIHx8IGFycmF5LmJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1wib2Zmc2V0XCIgaXMgb3V0c2lkZSBvZiBidWZmZXIgYm91bmRzJylcbiAgfVxuXG4gIGlmIChhcnJheS5ieXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCArIChsZW5ndGggfHwgMCkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignXCJsZW5ndGhcIiBpcyBvdXRzaWRlIG9mIGJ1ZmZlciBib3VuZHMnKVxuICB9XG5cbiAgdmFyIGJ1ZlxuICBpZiAoYnl0ZU9mZnNldCA9PT0gdW5kZWZpbmVkICYmIGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYnVmID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXkpXG4gIH0gZWxzZSBpZiAobGVuZ3RoID09PSB1bmRlZmluZWQpIHtcbiAgICBidWYgPSBuZXcgVWludDhBcnJheShhcnJheSwgYnl0ZU9mZnNldClcbiAgfSBlbHNlIHtcbiAgICBidWYgPSBuZXcgVWludDhBcnJheShhcnJheSwgYnl0ZU9mZnNldCwgbGVuZ3RoKVxuICB9XG5cbiAgLy8gUmV0dXJuIGFuIGF1Z21lbnRlZCBgVWludDhBcnJheWAgaW5zdGFuY2VcbiAgYnVmLl9fcHJvdG9fXyA9IEJ1ZmZlci5wcm90b3R5cGVcbiAgcmV0dXJuIGJ1ZlxufVxuXG5mdW5jdGlvbiBmcm9tT2JqZWN0IChvYmopIHtcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihvYmopKSB7XG4gICAgdmFyIGxlbiA9IGNoZWNrZWQob2JqLmxlbmd0aCkgfCAwXG4gICAgdmFyIGJ1ZiA9IGNyZWF0ZUJ1ZmZlcihsZW4pXG5cbiAgICBpZiAoYnVmLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGJ1ZlxuICAgIH1cblxuICAgIG9iai5jb3B5KGJ1ZiwgMCwgMCwgbGVuKVxuICAgIHJldHVybiBidWZcbiAgfVxuXG4gIGlmIChvYmoubGVuZ3RoICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAodHlwZW9mIG9iai5sZW5ndGggIT09ICdudW1iZXInIHx8IG51bWJlcklzTmFOKG9iai5sZW5ndGgpKSB7XG4gICAgICByZXR1cm4gY3JlYXRlQnVmZmVyKDApXG4gICAgfVxuICAgIHJldHVybiBmcm9tQXJyYXlMaWtlKG9iailcbiAgfVxuXG4gIGlmIChvYmoudHlwZSA9PT0gJ0J1ZmZlcicgJiYgQXJyYXkuaXNBcnJheShvYmouZGF0YSkpIHtcbiAgICByZXR1cm4gZnJvbUFycmF5TGlrZShvYmouZGF0YSlcbiAgfVxufVxuXG5mdW5jdGlvbiBjaGVja2VkIChsZW5ndGgpIHtcbiAgLy8gTm90ZTogY2Fubm90IHVzZSBgbGVuZ3RoIDwgS19NQVhfTEVOR1RIYCBoZXJlIGJlY2F1c2UgdGhhdCBmYWlscyB3aGVuXG4gIC8vIGxlbmd0aCBpcyBOYU4gKHdoaWNoIGlzIG90aGVyd2lzZSBjb2VyY2VkIHRvIHplcm8uKVxuICBpZiAobGVuZ3RoID49IEtfTUFYX0xFTkdUSCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdBdHRlbXB0IHRvIGFsbG9jYXRlIEJ1ZmZlciBsYXJnZXIgdGhhbiBtYXhpbXVtICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICdzaXplOiAweCcgKyBLX01BWF9MRU5HVEgudG9TdHJpbmcoMTYpICsgJyBieXRlcycpXG4gIH1cbiAgcmV0dXJuIGxlbmd0aCB8IDBcbn1cblxuZnVuY3Rpb24gU2xvd0J1ZmZlciAobGVuZ3RoKSB7XG4gIGlmICgrbGVuZ3RoICE9IGxlbmd0aCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGVxZXFlcVxuICAgIGxlbmd0aCA9IDBcbiAgfVxuICByZXR1cm4gQnVmZmVyLmFsbG9jKCtsZW5ndGgpXG59XG5cbkJ1ZmZlci5pc0J1ZmZlciA9IGZ1bmN0aW9uIGlzQnVmZmVyIChiKSB7XG4gIHJldHVybiBiICE9IG51bGwgJiYgYi5faXNCdWZmZXIgPT09IHRydWUgJiZcbiAgICBiICE9PSBCdWZmZXIucHJvdG90eXBlIC8vIHNvIEJ1ZmZlci5pc0J1ZmZlcihCdWZmZXIucHJvdG90eXBlKSB3aWxsIGJlIGZhbHNlXG59XG5cbkJ1ZmZlci5jb21wYXJlID0gZnVuY3Rpb24gY29tcGFyZSAoYSwgYikge1xuICBpZiAoaXNJbnN0YW5jZShhLCBVaW50OEFycmF5KSkgYSA9IEJ1ZmZlci5mcm9tKGEsIGEub2Zmc2V0LCBhLmJ5dGVMZW5ndGgpXG4gIGlmIChpc0luc3RhbmNlKGIsIFVpbnQ4QXJyYXkpKSBiID0gQnVmZmVyLmZyb20oYiwgYi5vZmZzZXQsIGIuYnl0ZUxlbmd0aClcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYSkgfHwgIUJ1ZmZlci5pc0J1ZmZlcihiKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAnVGhlIFwiYnVmMVwiLCBcImJ1ZjJcIiBhcmd1bWVudHMgbXVzdCBiZSBvbmUgb2YgdHlwZSBCdWZmZXIgb3IgVWludDhBcnJheSdcbiAgICApXG4gIH1cblxuICBpZiAoYSA9PT0gYikgcmV0dXJuIDBcblxuICB2YXIgeCA9IGEubGVuZ3RoXG4gIHZhciB5ID0gYi5sZW5ndGhcblxuICBmb3IgKHZhciBpID0gMCwgbGVuID0gTWF0aC5taW4oeCwgeSk7IGkgPCBsZW47ICsraSkge1xuICAgIGlmIChhW2ldICE9PSBiW2ldKSB7XG4gICAgICB4ID0gYVtpXVxuICAgICAgeSA9IGJbaV1cbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgaWYgKHggPCB5KSByZXR1cm4gLTFcbiAgaWYgKHkgPCB4KSByZXR1cm4gMVxuICByZXR1cm4gMFxufVxuXG5CdWZmZXIuaXNFbmNvZGluZyA9IGZ1bmN0aW9uIGlzRW5jb2RpbmcgKGVuY29kaW5nKSB7XG4gIHN3aXRjaCAoU3RyaW5nKGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgY2FzZSAnaGV4JzpcbiAgICBjYXNlICd1dGY4JzpcbiAgICBjYXNlICd1dGYtOCc6XG4gICAgY2FzZSAnYXNjaWknOlxuICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgY2FzZSAnYmluYXJ5JzpcbiAgICBjYXNlICdiYXNlNjQnOlxuICAgIGNhc2UgJ3VjczInOlxuICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICBjYXNlICd1dGYxNmxlJzpcbiAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG5CdWZmZXIuY29uY2F0ID0gZnVuY3Rpb24gY29uY2F0IChsaXN0LCBsZW5ndGgpIHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KGxpc3QpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJsaXN0XCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJylcbiAgfVxuXG4gIGlmIChsaXN0Lmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBCdWZmZXIuYWxsb2MoMClcbiAgfVxuXG4gIHZhciBpXG4gIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgIGxlbmd0aCA9IDBcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsraSkge1xuICAgICAgbGVuZ3RoICs9IGxpc3RbaV0ubGVuZ3RoXG4gICAgfVxuICB9XG5cbiAgdmFyIGJ1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShsZW5ndGgpXG4gIHZhciBwb3MgPSAwXG4gIGZvciAoaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XG4gICAgdmFyIGJ1ZiA9IGxpc3RbaV1cbiAgICBpZiAoaXNJbnN0YW5jZShidWYsIFVpbnQ4QXJyYXkpKSB7XG4gICAgICBidWYgPSBCdWZmZXIuZnJvbShidWYpXG4gICAgfVxuICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKGJ1ZikpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wibGlzdFwiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpXG4gICAgfVxuICAgIGJ1Zi5jb3B5KGJ1ZmZlciwgcG9zKVxuICAgIHBvcyArPSBidWYubGVuZ3RoXG4gIH1cbiAgcmV0dXJuIGJ1ZmZlclxufVxuXG5mdW5jdGlvbiBieXRlTGVuZ3RoIChzdHJpbmcsIGVuY29kaW5nKSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIoc3RyaW5nKSkge1xuICAgIHJldHVybiBzdHJpbmcubGVuZ3RoXG4gIH1cbiAgaWYgKEFycmF5QnVmZmVyLmlzVmlldyhzdHJpbmcpIHx8IGlzSW5zdGFuY2Uoc3RyaW5nLCBBcnJheUJ1ZmZlcikpIHtcbiAgICByZXR1cm4gc3RyaW5nLmJ5dGVMZW5ndGhcbiAgfVxuICBpZiAodHlwZW9mIHN0cmluZyAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgJ1RoZSBcInN0cmluZ1wiIGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIG9yIEFycmF5QnVmZmVyLiAnICtcbiAgICAgICdSZWNlaXZlZCB0eXBlICcgKyB0eXBlb2Ygc3RyaW5nXG4gICAgKVxuICB9XG5cbiAgdmFyIGxlbiA9IHN0cmluZy5sZW5ndGhcbiAgdmFyIG11c3RNYXRjaCA9IChhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gPT09IHRydWUpXG4gIGlmICghbXVzdE1hdGNoICYmIGxlbiA9PT0gMCkgcmV0dXJuIDBcblxuICAvLyBVc2UgYSBmb3IgbG9vcCB0byBhdm9pZCByZWN1cnNpb25cbiAgdmFyIGxvd2VyZWRDYXNlID0gZmFsc2VcbiAgZm9yICg7Oykge1xuICAgIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgICBjYXNlICdiaW5hcnknOlxuICAgICAgICByZXR1cm4gbGVuXG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgICAgcmV0dXJuIHV0ZjhUb0J5dGVzKHN0cmluZykubGVuZ3RoXG4gICAgICBjYXNlICd1Y3MyJzpcbiAgICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgICByZXR1cm4gbGVuICogMlxuICAgICAgY2FzZSAnaGV4JzpcbiAgICAgICAgcmV0dXJuIGxlbiA+Pj4gMVxuICAgICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgICAgcmV0dXJuIGJhc2U2NFRvQnl0ZXMoc3RyaW5nKS5sZW5ndGhcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChsb3dlcmVkQ2FzZSkge1xuICAgICAgICAgIHJldHVybiBtdXN0TWF0Y2ggPyAtMSA6IHV0ZjhUb0J5dGVzKHN0cmluZykubGVuZ3RoIC8vIGFzc3VtZSB1dGY4XG4gICAgICAgIH1cbiAgICAgICAgZW5jb2RpbmcgPSAoJycgKyBlbmNvZGluZykudG9Mb3dlckNhc2UoKVxuICAgICAgICBsb3dlcmVkQ2FzZSA9IHRydWVcbiAgICB9XG4gIH1cbn1cbkJ1ZmZlci5ieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aFxuXG5mdW5jdGlvbiBzbG93VG9TdHJpbmcgKGVuY29kaW5nLCBzdGFydCwgZW5kKSB7XG4gIHZhciBsb3dlcmVkQ2FzZSA9IGZhbHNlXG5cbiAgLy8gTm8gbmVlZCB0byB2ZXJpZnkgdGhhdCBcInRoaXMubGVuZ3RoIDw9IE1BWF9VSU5UMzJcIiBzaW5jZSBpdCdzIGEgcmVhZC1vbmx5XG4gIC8vIHByb3BlcnR5IG9mIGEgdHlwZWQgYXJyYXkuXG5cbiAgLy8gVGhpcyBiZWhhdmVzIG5laXRoZXIgbGlrZSBTdHJpbmcgbm9yIFVpbnQ4QXJyYXkgaW4gdGhhdCB3ZSBzZXQgc3RhcnQvZW5kXG4gIC8vIHRvIHRoZWlyIHVwcGVyL2xvd2VyIGJvdW5kcyBpZiB0aGUgdmFsdWUgcGFzc2VkIGlzIG91dCBvZiByYW5nZS5cbiAgLy8gdW5kZWZpbmVkIGlzIGhhbmRsZWQgc3BlY2lhbGx5IGFzIHBlciBFQ01BLTI2MiA2dGggRWRpdGlvbixcbiAgLy8gU2VjdGlvbiAxMy4zLjMuNyBSdW50aW1lIFNlbWFudGljczogS2V5ZWRCaW5kaW5nSW5pdGlhbGl6YXRpb24uXG4gIGlmIChzdGFydCA9PT0gdW5kZWZpbmVkIHx8IHN0YXJ0IDwgMCkge1xuICAgIHN0YXJ0ID0gMFxuICB9XG4gIC8vIFJldHVybiBlYXJseSBpZiBzdGFydCA+IHRoaXMubGVuZ3RoLiBEb25lIGhlcmUgdG8gcHJldmVudCBwb3RlbnRpYWwgdWludDMyXG4gIC8vIGNvZXJjaW9uIGZhaWwgYmVsb3cuXG4gIGlmIChzdGFydCA+IHRoaXMubGVuZ3RoKSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICBpZiAoZW5kID09PSB1bmRlZmluZWQgfHwgZW5kID4gdGhpcy5sZW5ndGgpIHtcbiAgICBlbmQgPSB0aGlzLmxlbmd0aFxuICB9XG5cbiAgaWYgKGVuZCA8PSAwKSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICAvLyBGb3JjZSBjb2Vyc2lvbiB0byB1aW50MzIuIFRoaXMgd2lsbCBhbHNvIGNvZXJjZSBmYWxzZXkvTmFOIHZhbHVlcyB0byAwLlxuICBlbmQgPj4+PSAwXG4gIHN0YXJ0ID4+Pj0gMFxuXG4gIGlmIChlbmQgPD0gc3RhcnQpIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIGlmICghZW5jb2RpbmcpIGVuY29kaW5nID0gJ3V0ZjgnXG5cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBzd2l0Y2ggKGVuY29kaW5nKSB7XG4gICAgICBjYXNlICdoZXgnOlxuICAgICAgICByZXR1cm4gaGV4U2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAndXRmOCc6XG4gICAgICBjYXNlICd1dGYtOCc6XG4gICAgICAgIHJldHVybiB1dGY4U2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAnYXNjaWknOlxuICAgICAgICByZXR1cm4gYXNjaWlTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICdsYXRpbjEnOlxuICAgICAgY2FzZSAnYmluYXJ5JzpcbiAgICAgICAgcmV0dXJuIGxhdGluMVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICAgIHJldHVybiBiYXNlNjRTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICd1Y3MyJzpcbiAgICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgICByZXR1cm4gdXRmMTZsZVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChsb3dlcmVkQ2FzZSkgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKVxuICAgICAgICBlbmNvZGluZyA9IChlbmNvZGluZyArICcnKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgIGxvd2VyZWRDYXNlID0gdHJ1ZVxuICAgIH1cbiAgfVxufVxuXG4vLyBUaGlzIHByb3BlcnR5IGlzIHVzZWQgYnkgYEJ1ZmZlci5pc0J1ZmZlcmAgKGFuZCB0aGUgYGlzLWJ1ZmZlcmAgbnBtIHBhY2thZ2UpXG4vLyB0byBkZXRlY3QgYSBCdWZmZXIgaW5zdGFuY2UuIEl0J3Mgbm90IHBvc3NpYmxlIHRvIHVzZSBgaW5zdGFuY2VvZiBCdWZmZXJgXG4vLyByZWxpYWJseSBpbiBhIGJyb3dzZXJpZnkgY29udGV4dCBiZWNhdXNlIHRoZXJlIGNvdWxkIGJlIG11bHRpcGxlIGRpZmZlcmVudFxuLy8gY29waWVzIG9mIHRoZSAnYnVmZmVyJyBwYWNrYWdlIGluIHVzZS4gVGhpcyBtZXRob2Qgd29ya3MgZXZlbiBmb3IgQnVmZmVyXG4vLyBpbnN0YW5jZXMgdGhhdCB3ZXJlIGNyZWF0ZWQgZnJvbSBhbm90aGVyIGNvcHkgb2YgdGhlIGBidWZmZXJgIHBhY2thZ2UuXG4vLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyL2lzc3Vlcy8xNTRcbkJ1ZmZlci5wcm90b3R5cGUuX2lzQnVmZmVyID0gdHJ1ZVxuXG5mdW5jdGlvbiBzd2FwIChiLCBuLCBtKSB7XG4gIHZhciBpID0gYltuXVxuICBiW25dID0gYlttXVxuICBiW21dID0gaVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnN3YXAxNiA9IGZ1bmN0aW9uIHN3YXAxNiAoKSB7XG4gIHZhciBsZW4gPSB0aGlzLmxlbmd0aFxuICBpZiAobGVuICUgMiAhPT0gMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYtYml0cycpXG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkgKz0gMikge1xuICAgIHN3YXAodGhpcywgaSwgaSArIDEpXG4gIH1cbiAgcmV0dXJuIHRoaXNcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5zd2FwMzIgPSBmdW5jdGlvbiBzd2FwMzIgKCkge1xuICB2YXIgbGVuID0gdGhpcy5sZW5ndGhcbiAgaWYgKGxlbiAlIDQgIT09IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDMyLWJpdHMnKVxuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpICs9IDQpIHtcbiAgICBzd2FwKHRoaXMsIGksIGkgKyAzKVxuICAgIHN3YXAodGhpcywgaSArIDEsIGkgKyAyKVxuICB9XG4gIHJldHVybiB0aGlzXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuc3dhcDY0ID0gZnVuY3Rpb24gc3dhcDY0ICgpIHtcbiAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoXG4gIGlmIChsZW4gJSA4ICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0J1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA2NC1iaXRzJylcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSArPSA4KSB7XG4gICAgc3dhcCh0aGlzLCBpLCBpICsgNylcbiAgICBzd2FwKHRoaXMsIGkgKyAxLCBpICsgNilcbiAgICBzd2FwKHRoaXMsIGkgKyAyLCBpICsgNSlcbiAgICBzd2FwKHRoaXMsIGkgKyAzLCBpICsgNClcbiAgfVxuICByZXR1cm4gdGhpc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcgKCkge1xuICB2YXIgbGVuZ3RoID0gdGhpcy5sZW5ndGhcbiAgaWYgKGxlbmd0aCA9PT0gMCkgcmV0dXJuICcnXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSByZXR1cm4gdXRmOFNsaWNlKHRoaXMsIDAsIGxlbmd0aClcbiAgcmV0dXJuIHNsb3dUb1N0cmluZy5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUudG9Mb2NhbGVTdHJpbmcgPSBCdWZmZXIucHJvdG90eXBlLnRvU3RyaW5nXG5cbkJ1ZmZlci5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24gZXF1YWxzIChiKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyJylcbiAgaWYgKHRoaXMgPT09IGIpIHJldHVybiB0cnVlXG4gIHJldHVybiBCdWZmZXIuY29tcGFyZSh0aGlzLCBiKSA9PT0gMFxufVxuXG5CdWZmZXIucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0ICgpIHtcbiAgdmFyIHN0ciA9ICcnXG4gIHZhciBtYXggPSBleHBvcnRzLklOU1BFQ1RfTUFYX0JZVEVTXG4gIHN0ciA9IHRoaXMudG9TdHJpbmcoJ2hleCcsIDAsIG1heCkucmVwbGFjZSgvKC57Mn0pL2csICckMSAnKS50cmltKClcbiAgaWYgKHRoaXMubGVuZ3RoID4gbWF4KSBzdHIgKz0gJyAuLi4gJ1xuICByZXR1cm4gJzxCdWZmZXIgJyArIHN0ciArICc+J1xufVxuXG5CdWZmZXIucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiBjb21wYXJlICh0YXJnZXQsIHN0YXJ0LCBlbmQsIHRoaXNTdGFydCwgdGhpc0VuZCkge1xuICBpZiAoaXNJbnN0YW5jZSh0YXJnZXQsIFVpbnQ4QXJyYXkpKSB7XG4gICAgdGFyZ2V0ID0gQnVmZmVyLmZyb20odGFyZ2V0LCB0YXJnZXQub2Zmc2V0LCB0YXJnZXQuYnl0ZUxlbmd0aClcbiAgfVxuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcih0YXJnZXQpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICdUaGUgXCJ0YXJnZXRcIiBhcmd1bWVudCBtdXN0IGJlIG9uZSBvZiB0eXBlIEJ1ZmZlciBvciBVaW50OEFycmF5LiAnICtcbiAgICAgICdSZWNlaXZlZCB0eXBlICcgKyAodHlwZW9mIHRhcmdldClcbiAgICApXG4gIH1cblxuICBpZiAoc3RhcnQgPT09IHVuZGVmaW5lZCkge1xuICAgIHN0YXJ0ID0gMFxuICB9XG4gIGlmIChlbmQgPT09IHVuZGVmaW5lZCkge1xuICAgIGVuZCA9IHRhcmdldCA/IHRhcmdldC5sZW5ndGggOiAwXG4gIH1cbiAgaWYgKHRoaXNTdGFydCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhpc1N0YXJ0ID0gMFxuICB9XG4gIGlmICh0aGlzRW5kID09PSB1bmRlZmluZWQpIHtcbiAgICB0aGlzRW5kID0gdGhpcy5sZW5ndGhcbiAgfVxuXG4gIGlmIChzdGFydCA8IDAgfHwgZW5kID4gdGFyZ2V0Lmxlbmd0aCB8fCB0aGlzU3RhcnQgPCAwIHx8IHRoaXNFbmQgPiB0aGlzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdvdXQgb2YgcmFuZ2UgaW5kZXgnKVxuICB9XG5cbiAgaWYgKHRoaXNTdGFydCA+PSB0aGlzRW5kICYmIHN0YXJ0ID49IGVuZCkge1xuICAgIHJldHVybiAwXG4gIH1cbiAgaWYgKHRoaXNTdGFydCA+PSB0aGlzRW5kKSB7XG4gICAgcmV0dXJuIC0xXG4gIH1cbiAgaWYgKHN0YXJ0ID49IGVuZCkge1xuICAgIHJldHVybiAxXG4gIH1cblxuICBzdGFydCA+Pj49IDBcbiAgZW5kID4+Pj0gMFxuICB0aGlzU3RhcnQgPj4+PSAwXG4gIHRoaXNFbmQgPj4+PSAwXG5cbiAgaWYgKHRoaXMgPT09IHRhcmdldCkgcmV0dXJuIDBcblxuICB2YXIgeCA9IHRoaXNFbmQgLSB0aGlzU3RhcnRcbiAgdmFyIHkgPSBlbmQgLSBzdGFydFxuICB2YXIgbGVuID0gTWF0aC5taW4oeCwgeSlcblxuICB2YXIgdGhpc0NvcHkgPSB0aGlzLnNsaWNlKHRoaXNTdGFydCwgdGhpc0VuZClcbiAgdmFyIHRhcmdldENvcHkgPSB0YXJnZXQuc2xpY2Uoc3RhcnQsIGVuZClcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgaWYgKHRoaXNDb3B5W2ldICE9PSB0YXJnZXRDb3B5W2ldKSB7XG4gICAgICB4ID0gdGhpc0NvcHlbaV1cbiAgICAgIHkgPSB0YXJnZXRDb3B5W2ldXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIGlmICh4IDwgeSkgcmV0dXJuIC0xXG4gIGlmICh5IDwgeCkgcmV0dXJuIDFcbiAgcmV0dXJuIDBcbn1cblxuLy8gRmluZHMgZWl0aGVyIHRoZSBmaXJzdCBpbmRleCBvZiBgdmFsYCBpbiBgYnVmZmVyYCBhdCBvZmZzZXQgPj0gYGJ5dGVPZmZzZXRgLFxuLy8gT1IgdGhlIGxhc3QgaW5kZXggb2YgYHZhbGAgaW4gYGJ1ZmZlcmAgYXQgb2Zmc2V0IDw9IGBieXRlT2Zmc2V0YC5cbi8vXG4vLyBBcmd1bWVudHM6XG4vLyAtIGJ1ZmZlciAtIGEgQnVmZmVyIHRvIHNlYXJjaFxuLy8gLSB2YWwgLSBhIHN0cmluZywgQnVmZmVyLCBvciBudW1iZXJcbi8vIC0gYnl0ZU9mZnNldCAtIGFuIGluZGV4IGludG8gYGJ1ZmZlcmA7IHdpbGwgYmUgY2xhbXBlZCB0byBhbiBpbnQzMlxuLy8gLSBlbmNvZGluZyAtIGFuIG9wdGlvbmFsIGVuY29kaW5nLCByZWxldmFudCBpcyB2YWwgaXMgYSBzdHJpbmdcbi8vIC0gZGlyIC0gdHJ1ZSBmb3IgaW5kZXhPZiwgZmFsc2UgZm9yIGxhc3RJbmRleE9mXG5mdW5jdGlvbiBiaWRpcmVjdGlvbmFsSW5kZXhPZiAoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpIHtcbiAgLy8gRW1wdHkgYnVmZmVyIG1lYW5zIG5vIG1hdGNoXG4gIGlmIChidWZmZXIubGVuZ3RoID09PSAwKSByZXR1cm4gLTFcblxuICAvLyBOb3JtYWxpemUgYnl0ZU9mZnNldFxuICBpZiAodHlwZW9mIGJ5dGVPZmZzZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgZW5jb2RpbmcgPSBieXRlT2Zmc2V0XG4gICAgYnl0ZU9mZnNldCA9IDBcbiAgfSBlbHNlIGlmIChieXRlT2Zmc2V0ID4gMHg3ZmZmZmZmZikge1xuICAgIGJ5dGVPZmZzZXQgPSAweDdmZmZmZmZmXG4gIH0gZWxzZSBpZiAoYnl0ZU9mZnNldCA8IC0weDgwMDAwMDAwKSB7XG4gICAgYnl0ZU9mZnNldCA9IC0weDgwMDAwMDAwXG4gIH1cbiAgYnl0ZU9mZnNldCA9ICtieXRlT2Zmc2V0IC8vIENvZXJjZSB0byBOdW1iZXIuXG4gIGlmIChudW1iZXJJc05hTihieXRlT2Zmc2V0KSkge1xuICAgIC8vIGJ5dGVPZmZzZXQ6IGl0IGl0J3MgdW5kZWZpbmVkLCBudWxsLCBOYU4sIFwiZm9vXCIsIGV0Yywgc2VhcmNoIHdob2xlIGJ1ZmZlclxuICAgIGJ5dGVPZmZzZXQgPSBkaXIgPyAwIDogKGJ1ZmZlci5sZW5ndGggLSAxKVxuICB9XG5cbiAgLy8gTm9ybWFsaXplIGJ5dGVPZmZzZXQ6IG5lZ2F0aXZlIG9mZnNldHMgc3RhcnQgZnJvbSB0aGUgZW5kIG9mIHRoZSBidWZmZXJcbiAgaWYgKGJ5dGVPZmZzZXQgPCAwKSBieXRlT2Zmc2V0ID0gYnVmZmVyLmxlbmd0aCArIGJ5dGVPZmZzZXRcbiAgaWYgKGJ5dGVPZmZzZXQgPj0gYnVmZmVyLmxlbmd0aCkge1xuICAgIGlmIChkaXIpIHJldHVybiAtMVxuICAgIGVsc2UgYnl0ZU9mZnNldCA9IGJ1ZmZlci5sZW5ndGggLSAxXG4gIH0gZWxzZSBpZiAoYnl0ZU9mZnNldCA8IDApIHtcbiAgICBpZiAoZGlyKSBieXRlT2Zmc2V0ID0gMFxuICAgIGVsc2UgcmV0dXJuIC0xXG4gIH1cblxuICAvLyBOb3JtYWxpemUgdmFsXG4gIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAgIHZhbCA9IEJ1ZmZlci5mcm9tKHZhbCwgZW5jb2RpbmcpXG4gIH1cblxuICAvLyBGaW5hbGx5LCBzZWFyY2ggZWl0aGVyIGluZGV4T2YgKGlmIGRpciBpcyB0cnVlKSBvciBsYXN0SW5kZXhPZlxuICBpZiAoQnVmZmVyLmlzQnVmZmVyKHZhbCkpIHtcbiAgICAvLyBTcGVjaWFsIGNhc2U6IGxvb2tpbmcgZm9yIGVtcHR5IHN0cmluZy9idWZmZXIgYWx3YXlzIGZhaWxzXG4gICAgaWYgKHZhbC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiAtMVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXlJbmRleE9mKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZGlyKVxuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgdmFsID0gdmFsICYgMHhGRiAvLyBTZWFyY2ggZm9yIGEgYnl0ZSB2YWx1ZSBbMC0yNTVdXG4gICAgaWYgKHR5cGVvZiBVaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBpZiAoZGlyKSB7XG4gICAgICAgIHJldHVybiBVaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gVWludDhBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2YuY2FsbChidWZmZXIsIHZhbCwgYnl0ZU9mZnNldClcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFycmF5SW5kZXhPZihidWZmZXIsIFsgdmFsIF0sIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpXG4gIH1cblxuICB0aHJvdyBuZXcgVHlwZUVycm9yKCd2YWwgbXVzdCBiZSBzdHJpbmcsIG51bWJlciBvciBCdWZmZXInKVxufVxuXG5mdW5jdGlvbiBhcnJheUluZGV4T2YgKGFyciwgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZGlyKSB7XG4gIHZhciBpbmRleFNpemUgPSAxXG4gIHZhciBhcnJMZW5ndGggPSBhcnIubGVuZ3RoXG4gIHZhciB2YWxMZW5ndGggPSB2YWwubGVuZ3RoXG5cbiAgaWYgKGVuY29kaW5nICE9PSB1bmRlZmluZWQpIHtcbiAgICBlbmNvZGluZyA9IFN0cmluZyhlbmNvZGluZykudG9Mb3dlckNhc2UoKVxuICAgIGlmIChlbmNvZGluZyA9PT0gJ3VjczInIHx8IGVuY29kaW5nID09PSAndWNzLTInIHx8XG4gICAgICAgIGVuY29kaW5nID09PSAndXRmMTZsZScgfHwgZW5jb2RpbmcgPT09ICd1dGYtMTZsZScpIHtcbiAgICAgIGlmIChhcnIubGVuZ3RoIDwgMiB8fCB2YWwubGVuZ3RoIDwgMikge1xuICAgICAgICByZXR1cm4gLTFcbiAgICAgIH1cbiAgICAgIGluZGV4U2l6ZSA9IDJcbiAgICAgIGFyckxlbmd0aCAvPSAyXG4gICAgICB2YWxMZW5ndGggLz0gMlxuICAgICAgYnl0ZU9mZnNldCAvPSAyXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVhZCAoYnVmLCBpKSB7XG4gICAgaWYgKGluZGV4U2l6ZSA9PT0gMSkge1xuICAgICAgcmV0dXJuIGJ1ZltpXVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYnVmLnJlYWRVSW50MTZCRShpICogaW5kZXhTaXplKVxuICAgIH1cbiAgfVxuXG4gIHZhciBpXG4gIGlmIChkaXIpIHtcbiAgICB2YXIgZm91bmRJbmRleCA9IC0xXG4gICAgZm9yIChpID0gYnl0ZU9mZnNldDsgaSA8IGFyckxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAocmVhZChhcnIsIGkpID09PSByZWFkKHZhbCwgZm91bmRJbmRleCA9PT0gLTEgPyAwIDogaSAtIGZvdW5kSW5kZXgpKSB7XG4gICAgICAgIGlmIChmb3VuZEluZGV4ID09PSAtMSkgZm91bmRJbmRleCA9IGlcbiAgICAgICAgaWYgKGkgLSBmb3VuZEluZGV4ICsgMSA9PT0gdmFsTGVuZ3RoKSByZXR1cm4gZm91bmRJbmRleCAqIGluZGV4U2l6ZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGZvdW5kSW5kZXggIT09IC0xKSBpIC09IGkgLSBmb3VuZEluZGV4XG4gICAgICAgIGZvdW5kSW5kZXggPSAtMVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoYnl0ZU9mZnNldCArIHZhbExlbmd0aCA+IGFyckxlbmd0aCkgYnl0ZU9mZnNldCA9IGFyckxlbmd0aCAtIHZhbExlbmd0aFxuICAgIGZvciAoaSA9IGJ5dGVPZmZzZXQ7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgZm91bmQgPSB0cnVlXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHZhbExlbmd0aDsgaisrKSB7XG4gICAgICAgIGlmIChyZWFkKGFyciwgaSArIGopICE9PSByZWFkKHZhbCwgaikpIHtcbiAgICAgICAgICBmb3VuZCA9IGZhbHNlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGZvdW5kKSByZXR1cm4gaVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAtMVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmluY2x1ZGVzID0gZnVuY3Rpb24gaW5jbHVkZXMgKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIHRoaXMuaW5kZXhPZih2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSAhPT0gLTFcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5pbmRleE9mID0gZnVuY3Rpb24gaW5kZXhPZiAodmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZykge1xuICByZXR1cm4gYmlkaXJlY3Rpb25hbEluZGV4T2YodGhpcywgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgdHJ1ZSlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5sYXN0SW5kZXhPZiA9IGZ1bmN0aW9uIGxhc3RJbmRleE9mICh2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSB7XG4gIHJldHVybiBiaWRpcmVjdGlvbmFsSW5kZXhPZih0aGlzLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBmYWxzZSlcbn1cblxuZnVuY3Rpb24gaGV4V3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICBvZmZzZXQgPSBOdW1iZXIob2Zmc2V0KSB8fCAwXG4gIHZhciByZW1haW5pbmcgPSBidWYubGVuZ3RoIC0gb2Zmc2V0XG4gIGlmICghbGVuZ3RoKSB7XG4gICAgbGVuZ3RoID0gcmVtYWluaW5nXG4gIH0gZWxzZSB7XG4gICAgbGVuZ3RoID0gTnVtYmVyKGxlbmd0aClcbiAgICBpZiAobGVuZ3RoID4gcmVtYWluaW5nKSB7XG4gICAgICBsZW5ndGggPSByZW1haW5pbmdcbiAgICB9XG4gIH1cblxuICB2YXIgc3RyTGVuID0gc3RyaW5nLmxlbmd0aFxuXG4gIGlmIChsZW5ndGggPiBzdHJMZW4gLyAyKSB7XG4gICAgbGVuZ3RoID0gc3RyTGVuIC8gMlxuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICB2YXIgcGFyc2VkID0gcGFyc2VJbnQoc3RyaW5nLnN1YnN0cihpICogMiwgMiksIDE2KVxuICAgIGlmIChudW1iZXJJc05hTihwYXJzZWQpKSByZXR1cm4gaVxuICAgIGJ1ZltvZmZzZXQgKyBpXSA9IHBhcnNlZFxuICB9XG4gIHJldHVybiBpXG59XG5cbmZ1bmN0aW9uIHV0ZjhXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKHV0ZjhUb0J5dGVzKHN0cmluZywgYnVmLmxlbmd0aCAtIG9mZnNldCksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIGFzY2lpV3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcihhc2NpaVRvQnl0ZXMoc3RyaW5nKSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gbGF0aW4xV3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYXNjaWlXcml0ZShidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIGJhc2U2NFdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIoYmFzZTY0VG9CeXRlcyhzdHJpbmcpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiB1Y3MyV3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcih1dGYxNmxlVG9CeXRlcyhzdHJpbmcsIGJ1Zi5sZW5ndGggLSBvZmZzZXQpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gd3JpdGUgKHN0cmluZywgb2Zmc2V0LCBsZW5ndGgsIGVuY29kaW5nKSB7XG4gIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcpXG4gIGlmIChvZmZzZXQgPT09IHVuZGVmaW5lZCkge1xuICAgIGVuY29kaW5nID0gJ3V0ZjgnXG4gICAgbGVuZ3RoID0gdGhpcy5sZW5ndGhcbiAgICBvZmZzZXQgPSAwXG4gIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcsIGVuY29kaW5nKVxuICB9IGVsc2UgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkICYmIHR5cGVvZiBvZmZzZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgZW5jb2RpbmcgPSBvZmZzZXRcbiAgICBsZW5ndGggPSB0aGlzLmxlbmd0aFxuICAgIG9mZnNldCA9IDBcbiAgLy8gQnVmZmVyI3dyaXRlKHN0cmluZywgb2Zmc2V0WywgbGVuZ3RoXVssIGVuY29kaW5nXSlcbiAgfSBlbHNlIGlmIChpc0Zpbml0ZShvZmZzZXQpKSB7XG4gICAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gICAgaWYgKGlzRmluaXRlKGxlbmd0aCkpIHtcbiAgICAgIGxlbmd0aCA9IGxlbmd0aCA+Pj4gMFxuICAgICAgaWYgKGVuY29kaW5nID09PSB1bmRlZmluZWQpIGVuY29kaW5nID0gJ3V0ZjgnXG4gICAgfSBlbHNlIHtcbiAgICAgIGVuY29kaW5nID0gbGVuZ3RoXG4gICAgICBsZW5ndGggPSB1bmRlZmluZWRcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0J1ZmZlci53cml0ZShzdHJpbmcsIGVuY29kaW5nLCBvZmZzZXRbLCBsZW5ndGhdKSBpcyBubyBsb25nZXIgc3VwcG9ydGVkJ1xuICAgIClcbiAgfVxuXG4gIHZhciByZW1haW5pbmcgPSB0aGlzLmxlbmd0aCAtIG9mZnNldFxuICBpZiAobGVuZ3RoID09PSB1bmRlZmluZWQgfHwgbGVuZ3RoID4gcmVtYWluaW5nKSBsZW5ndGggPSByZW1haW5pbmdcblxuICBpZiAoKHN0cmluZy5sZW5ndGggPiAwICYmIChsZW5ndGggPCAwIHx8IG9mZnNldCA8IDApKSB8fCBvZmZzZXQgPiB0aGlzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdBdHRlbXB0IHRvIHdyaXRlIG91dHNpZGUgYnVmZmVyIGJvdW5kcycpXG4gIH1cblxuICBpZiAoIWVuY29kaW5nKSBlbmNvZGluZyA9ICd1dGY4J1xuXG4gIHZhciBsb3dlcmVkQ2FzZSA9IGZhbHNlXG4gIGZvciAoOzspIHtcbiAgICBzd2l0Y2ggKGVuY29kaW5nKSB7XG4gICAgICBjYXNlICdoZXgnOlxuICAgICAgICByZXR1cm4gaGV4V3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAndXRmOCc6XG4gICAgICBjYXNlICd1dGYtOCc6XG4gICAgICAgIHJldHVybiB1dGY4V3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAnYXNjaWknOlxuICAgICAgICByZXR1cm4gYXNjaWlXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICdsYXRpbjEnOlxuICAgICAgY2FzZSAnYmluYXJ5JzpcbiAgICAgICAgcmV0dXJuIGxhdGluMVdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICAgIC8vIFdhcm5pbmc6IG1heExlbmd0aCBub3QgdGFrZW4gaW50byBhY2NvdW50IGluIGJhc2U2NFdyaXRlXG4gICAgICAgIHJldHVybiBiYXNlNjRXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICd1Y3MyJzpcbiAgICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgICByZXR1cm4gdWNzMldyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChsb3dlcmVkQ2FzZSkgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKVxuICAgICAgICBlbmNvZGluZyA9ICgnJyArIGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgIGxvd2VyZWRDYXNlID0gdHJ1ZVxuICAgIH1cbiAgfVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uIHRvSlNPTiAoKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogJ0J1ZmZlcicsXG4gICAgZGF0YTogQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5fYXJyIHx8IHRoaXMsIDApXG4gIH1cbn1cblxuZnVuY3Rpb24gYmFzZTY0U2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICBpZiAoc3RhcnQgPT09IDAgJiYgZW5kID09PSBidWYubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGJhc2U2NC5mcm9tQnl0ZUFycmF5KGJ1ZilcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYmFzZTY0LmZyb21CeXRlQXJyYXkoYnVmLnNsaWNlKHN0YXJ0LCBlbmQpKVxuICB9XG59XG5cbmZ1bmN0aW9uIHV0ZjhTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZClcbiAgdmFyIHJlcyA9IFtdXG5cbiAgdmFyIGkgPSBzdGFydFxuICB3aGlsZSAoaSA8IGVuZCkge1xuICAgIHZhciBmaXJzdEJ5dGUgPSBidWZbaV1cbiAgICB2YXIgY29kZVBvaW50ID0gbnVsbFxuICAgIHZhciBieXRlc1BlclNlcXVlbmNlID0gKGZpcnN0Qnl0ZSA+IDB4RUYpID8gNFxuICAgICAgOiAoZmlyc3RCeXRlID4gMHhERikgPyAzXG4gICAgICAgIDogKGZpcnN0Qnl0ZSA+IDB4QkYpID8gMlxuICAgICAgICAgIDogMVxuXG4gICAgaWYgKGkgKyBieXRlc1BlclNlcXVlbmNlIDw9IGVuZCkge1xuICAgICAgdmFyIHNlY29uZEJ5dGUsIHRoaXJkQnl0ZSwgZm91cnRoQnl0ZSwgdGVtcENvZGVQb2ludFxuXG4gICAgICBzd2l0Y2ggKGJ5dGVzUGVyU2VxdWVuY2UpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIGlmIChmaXJzdEJ5dGUgPCAweDgwKSB7XG4gICAgICAgICAgICBjb2RlUG9pbnQgPSBmaXJzdEJ5dGVcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIHNlY29uZEJ5dGUgPSBidWZbaSArIDFdXG4gICAgICAgICAgaWYgKChzZWNvbmRCeXRlICYgMHhDMCkgPT09IDB4ODApIHtcbiAgICAgICAgICAgIHRlbXBDb2RlUG9pbnQgPSAoZmlyc3RCeXRlICYgMHgxRikgPDwgMHg2IHwgKHNlY29uZEJ5dGUgJiAweDNGKVxuICAgICAgICAgICAgaWYgKHRlbXBDb2RlUG9pbnQgPiAweDdGKSB7XG4gICAgICAgICAgICAgIGNvZGVQb2ludCA9IHRlbXBDb2RlUG9pbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIHNlY29uZEJ5dGUgPSBidWZbaSArIDFdXG4gICAgICAgICAgdGhpcmRCeXRlID0gYnVmW2kgKyAyXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwICYmICh0aGlyZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCkge1xuICAgICAgICAgICAgdGVtcENvZGVQb2ludCA9IChmaXJzdEJ5dGUgJiAweEYpIDw8IDB4QyB8IChzZWNvbmRCeXRlICYgMHgzRikgPDwgMHg2IHwgKHRoaXJkQnl0ZSAmIDB4M0YpXG4gICAgICAgICAgICBpZiAodGVtcENvZGVQb2ludCA+IDB4N0ZGICYmICh0ZW1wQ29kZVBvaW50IDwgMHhEODAwIHx8IHRlbXBDb2RlUG9pbnQgPiAweERGRkYpKSB7XG4gICAgICAgICAgICAgIGNvZGVQb2ludCA9IHRlbXBDb2RlUG9pbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIHNlY29uZEJ5dGUgPSBidWZbaSArIDFdXG4gICAgICAgICAgdGhpcmRCeXRlID0gYnVmW2kgKyAyXVxuICAgICAgICAgIGZvdXJ0aEJ5dGUgPSBidWZbaSArIDNdXG4gICAgICAgICAgaWYgKChzZWNvbmRCeXRlICYgMHhDMCkgPT09IDB4ODAgJiYgKHRoaXJkQnl0ZSAmIDB4QzApID09PSAweDgwICYmIChmb3VydGhCeXRlICYgMHhDMCkgPT09IDB4ODApIHtcbiAgICAgICAgICAgIHRlbXBDb2RlUG9pbnQgPSAoZmlyc3RCeXRlICYgMHhGKSA8PCAweDEyIHwgKHNlY29uZEJ5dGUgJiAweDNGKSA8PCAweEMgfCAodGhpcmRCeXRlICYgMHgzRikgPDwgMHg2IHwgKGZvdXJ0aEJ5dGUgJiAweDNGKVxuICAgICAgICAgICAgaWYgKHRlbXBDb2RlUG9pbnQgPiAweEZGRkYgJiYgdGVtcENvZGVQb2ludCA8IDB4MTEwMDAwKSB7XG4gICAgICAgICAgICAgIGNvZGVQb2ludCA9IHRlbXBDb2RlUG9pbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNvZGVQb2ludCA9PT0gbnVsbCkge1xuICAgICAgLy8gd2UgZGlkIG5vdCBnZW5lcmF0ZSBhIHZhbGlkIGNvZGVQb2ludCBzbyBpbnNlcnQgYVxuICAgICAgLy8gcmVwbGFjZW1lbnQgY2hhciAoVStGRkZEKSBhbmQgYWR2YW5jZSBvbmx5IDEgYnl0ZVxuICAgICAgY29kZVBvaW50ID0gMHhGRkZEXG4gICAgICBieXRlc1BlclNlcXVlbmNlID0gMVxuICAgIH0gZWxzZSBpZiAoY29kZVBvaW50ID4gMHhGRkZGKSB7XG4gICAgICAvLyBlbmNvZGUgdG8gdXRmMTYgKHN1cnJvZ2F0ZSBwYWlyIGRhbmNlKVxuICAgICAgY29kZVBvaW50IC09IDB4MTAwMDBcbiAgICAgIHJlcy5wdXNoKGNvZGVQb2ludCA+Pj4gMTAgJiAweDNGRiB8IDB4RDgwMClcbiAgICAgIGNvZGVQb2ludCA9IDB4REMwMCB8IGNvZGVQb2ludCAmIDB4M0ZGXG4gICAgfVxuXG4gICAgcmVzLnB1c2goY29kZVBvaW50KVxuICAgIGkgKz0gYnl0ZXNQZXJTZXF1ZW5jZVxuICB9XG5cbiAgcmV0dXJuIGRlY29kZUNvZGVQb2ludHNBcnJheShyZXMpXG59XG5cbi8vIEJhc2VkIG9uIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzIyNzQ3MjcyLzY4MDc0MiwgdGhlIGJyb3dzZXIgd2l0aFxuLy8gdGhlIGxvd2VzdCBsaW1pdCBpcyBDaHJvbWUsIHdpdGggMHgxMDAwMCBhcmdzLlxuLy8gV2UgZ28gMSBtYWduaXR1ZGUgbGVzcywgZm9yIHNhZmV0eVxudmFyIE1BWF9BUkdVTUVOVFNfTEVOR1RIID0gMHgxMDAwXG5cbmZ1bmN0aW9uIGRlY29kZUNvZGVQb2ludHNBcnJheSAoY29kZVBvaW50cykge1xuICB2YXIgbGVuID0gY29kZVBvaW50cy5sZW5ndGhcbiAgaWYgKGxlbiA8PSBNQVhfQVJHVU1FTlRTX0xFTkdUSCkge1xuICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZywgY29kZVBvaW50cykgLy8gYXZvaWQgZXh0cmEgc2xpY2UoKVxuICB9XG5cbiAgLy8gRGVjb2RlIGluIGNodW5rcyB0byBhdm9pZCBcImNhbGwgc3RhY2sgc2l6ZSBleGNlZWRlZFwiLlxuICB2YXIgcmVzID0gJydcbiAgdmFyIGkgPSAwXG4gIHdoaWxlIChpIDwgbGVuKSB7XG4gICAgcmVzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoXG4gICAgICBTdHJpbmcsXG4gICAgICBjb2RlUG9pbnRzLnNsaWNlKGksIGkgKz0gTUFYX0FSR1VNRU5UU19MRU5HVEgpXG4gICAgKVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuZnVuY3Rpb24gYXNjaWlTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIHZhciByZXQgPSAnJ1xuICBlbmQgPSBNYXRoLm1pbihidWYubGVuZ3RoLCBlbmQpXG5cbiAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICByZXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShidWZbaV0gJiAweDdGKVxuICB9XG4gIHJldHVybiByZXRcbn1cblxuZnVuY3Rpb24gbGF0aW4xU2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICB2YXIgcmV0ID0gJydcbiAgZW5kID0gTWF0aC5taW4oYnVmLmxlbmd0aCwgZW5kKVxuXG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7XG4gICAgcmV0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnVmW2ldKVxuICB9XG4gIHJldHVybiByZXRcbn1cblxuZnVuY3Rpb24gaGV4U2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICB2YXIgbGVuID0gYnVmLmxlbmd0aFxuXG4gIGlmICghc3RhcnQgfHwgc3RhcnQgPCAwKSBzdGFydCA9IDBcbiAgaWYgKCFlbmQgfHwgZW5kIDwgMCB8fCBlbmQgPiBsZW4pIGVuZCA9IGxlblxuXG4gIHZhciBvdXQgPSAnJ1xuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkge1xuICAgIG91dCArPSB0b0hleChidWZbaV0pXG4gIH1cbiAgcmV0dXJuIG91dFxufVxuXG5mdW5jdGlvbiB1dGYxNmxlU2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICB2YXIgYnl0ZXMgPSBidWYuc2xpY2Uoc3RhcnQsIGVuZClcbiAgdmFyIHJlcyA9ICcnXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYnl0ZXMubGVuZ3RoOyBpICs9IDIpIHtcbiAgICByZXMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShieXRlc1tpXSArIChieXRlc1tpICsgMV0gKiAyNTYpKVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5zbGljZSA9IGZ1bmN0aW9uIHNsaWNlIChzdGFydCwgZW5kKSB7XG4gIHZhciBsZW4gPSB0aGlzLmxlbmd0aFxuICBzdGFydCA9IH5+c3RhcnRcbiAgZW5kID0gZW5kID09PSB1bmRlZmluZWQgPyBsZW4gOiB+fmVuZFxuXG4gIGlmIChzdGFydCA8IDApIHtcbiAgICBzdGFydCArPSBsZW5cbiAgICBpZiAoc3RhcnQgPCAwKSBzdGFydCA9IDBcbiAgfSBlbHNlIGlmIChzdGFydCA+IGxlbikge1xuICAgIHN0YXJ0ID0gbGVuXG4gIH1cblxuICBpZiAoZW5kIDwgMCkge1xuICAgIGVuZCArPSBsZW5cbiAgICBpZiAoZW5kIDwgMCkgZW5kID0gMFxuICB9IGVsc2UgaWYgKGVuZCA+IGxlbikge1xuICAgIGVuZCA9IGxlblxuICB9XG5cbiAgaWYgKGVuZCA8IHN0YXJ0KSBlbmQgPSBzdGFydFxuXG4gIHZhciBuZXdCdWYgPSB0aGlzLnN1YmFycmF5KHN0YXJ0LCBlbmQpXG4gIC8vIFJldHVybiBhbiBhdWdtZW50ZWQgYFVpbnQ4QXJyYXlgIGluc3RhbmNlXG4gIG5ld0J1Zi5fX3Byb3RvX18gPSBCdWZmZXIucHJvdG90eXBlXG4gIHJldHVybiBuZXdCdWZcbn1cblxuLypcbiAqIE5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgYnVmZmVyIGlzbid0IHRyeWluZyB0byB3cml0ZSBvdXQgb2YgYm91bmRzLlxuICovXG5mdW5jdGlvbiBjaGVja09mZnNldCAob2Zmc2V0LCBleHQsIGxlbmd0aCkge1xuICBpZiAoKG9mZnNldCAlIDEpICE9PSAwIHx8IG9mZnNldCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdvZmZzZXQgaXMgbm90IHVpbnQnKVxuICBpZiAob2Zmc2V0ICsgZXh0ID4gbGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignVHJ5aW5nIHRvIGFjY2VzcyBiZXlvbmQgYnVmZmVyIGxlbmd0aCcpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnRMRSA9IGZ1bmN0aW9uIHJlYWRVSW50TEUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG5cbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0XVxuICB2YXIgbXVsID0gMVxuICB2YXIgaSA9IDBcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyBpXSAqIG11bFxuICB9XG5cbiAgcmV0dXJuIHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50QkUgPSBmdW5jdGlvbiByZWFkVUludEJFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgY2hlY2tPZmZzZXQob2Zmc2V0LCBieXRlTGVuZ3RoLCB0aGlzLmxlbmd0aClcbiAgfVxuXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldCArIC0tYnl0ZUxlbmd0aF1cbiAgdmFyIG11bCA9IDFcbiAgd2hpbGUgKGJ5dGVMZW5ndGggPiAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgLS1ieXRlTGVuZ3RoXSAqIG11bFxuICB9XG5cbiAgcmV0dXJuIHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50OCA9IGZ1bmN0aW9uIHJlYWRVSW50OCAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAxLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIHRoaXNbb2Zmc2V0XVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MTZMRSA9IGZ1bmN0aW9uIHJlYWRVSW50MTZMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIHRoaXNbb2Zmc2V0XSB8ICh0aGlzW29mZnNldCArIDFdIDw8IDgpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQxNkJFID0gZnVuY3Rpb24gcmVhZFVJbnQxNkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gKHRoaXNbb2Zmc2V0XSA8PCA4KSB8IHRoaXNbb2Zmc2V0ICsgMV1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDMyTEUgPSBmdW5jdGlvbiByZWFkVUludDMyTEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG5cbiAgcmV0dXJuICgodGhpc1tvZmZzZXRdKSB8XG4gICAgICAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KSB8XG4gICAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCAxNikpICtcbiAgICAgICh0aGlzW29mZnNldCArIDNdICogMHgxMDAwMDAwKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MzJCRSA9IGZ1bmN0aW9uIHJlYWRVSW50MzJCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcblxuICByZXR1cm4gKHRoaXNbb2Zmc2V0XSAqIDB4MTAwMDAwMCkgK1xuICAgICgodGhpc1tvZmZzZXQgKyAxXSA8PCAxNikgfFxuICAgICh0aGlzW29mZnNldCArIDJdIDw8IDgpIHxcbiAgICB0aGlzW29mZnNldCArIDNdKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnRMRSA9IGZ1bmN0aW9uIHJlYWRJbnRMRSAob2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCBieXRlTGVuZ3RoLCB0aGlzLmxlbmd0aClcblxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXRdXG4gIHZhciBtdWwgPSAxXG4gIHZhciBpID0gMFxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIGldICogbXVsXG4gIH1cbiAgbXVsICo9IDB4ODBcblxuICBpZiAodmFsID49IG11bCkgdmFsIC09IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKVxuXG4gIHJldHVybiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50QkUgPSBmdW5jdGlvbiByZWFkSW50QkUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG5cbiAgdmFyIGkgPSBieXRlTGVuZ3RoXG4gIHZhciBtdWwgPSAxXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldCArIC0taV1cbiAgd2hpbGUgKGkgPiAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgLS1pXSAqIG11bFxuICB9XG4gIG11bCAqPSAweDgwXG5cbiAgaWYgKHZhbCA+PSBtdWwpIHZhbCAtPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aClcblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDggPSBmdW5jdGlvbiByZWFkSW50OCAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAxLCB0aGlzLmxlbmd0aClcbiAgaWYgKCEodGhpc1tvZmZzZXRdICYgMHg4MCkpIHJldHVybiAodGhpc1tvZmZzZXRdKVxuICByZXR1cm4gKCgweGZmIC0gdGhpc1tvZmZzZXRdICsgMSkgKiAtMSlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MTZMRSA9IGZ1bmN0aW9uIHJlYWRJbnQxNkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKVxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXRdIHwgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOClcbiAgcmV0dXJuICh2YWwgJiAweDgwMDApID8gdmFsIHwgMHhGRkZGMDAwMCA6IHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQxNkJFID0gZnVuY3Rpb24gcmVhZEludDE2QkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldCArIDFdIHwgKHRoaXNbb2Zmc2V0XSA8PCA4KVxuICByZXR1cm4gKHZhbCAmIDB4ODAwMCkgPyB2YWwgfCAweEZGRkYwMDAwIDogdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDMyTEUgPSBmdW5jdGlvbiByZWFkSW50MzJMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcblxuICByZXR1cm4gKHRoaXNbb2Zmc2V0XSkgfFxuICAgICh0aGlzW29mZnNldCArIDFdIDw8IDgpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCAxNikgfFxuICAgICh0aGlzW29mZnNldCArIDNdIDw8IDI0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQzMkJFID0gZnVuY3Rpb24gcmVhZEludDMyQkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG5cbiAgcmV0dXJuICh0aGlzW29mZnNldF0gPDwgMjQpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAxXSA8PCAxNikgfFxuICAgICh0aGlzW29mZnNldCArIDJdIDw8IDgpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAzXSlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkRmxvYXRMRSA9IGZ1bmN0aW9uIHJlYWRGbG9hdExFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgdHJ1ZSwgMjMsIDQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEZsb2F0QkUgPSBmdW5jdGlvbiByZWFkRmxvYXRCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLCBvZmZzZXQsIGZhbHNlLCAyMywgNClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkRG91YmxlTEUgPSBmdW5jdGlvbiByZWFkRG91YmxlTEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgOCwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiBpZWVlNzU0LnJlYWQodGhpcywgb2Zmc2V0LCB0cnVlLCA1MiwgOClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkRG91YmxlQkUgPSBmdW5jdGlvbiByZWFkRG91YmxlQkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgOCwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiBpZWVlNzU0LnJlYWQodGhpcywgb2Zmc2V0LCBmYWxzZSwgNTIsIDgpXG59XG5cbmZ1bmN0aW9uIGNoZWNrSW50IChidWYsIHZhbHVlLCBvZmZzZXQsIGV4dCwgbWF4LCBtaW4pIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJidWZmZXJcIiBhcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIGluc3RhbmNlJylcbiAgaWYgKHZhbHVlID4gbWF4IHx8IHZhbHVlIDwgbWluKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignXCJ2YWx1ZVwiIGFyZ3VtZW50IGlzIG91dCBvZiBib3VuZHMnKVxuICBpZiAob2Zmc2V0ICsgZXh0ID4gYnVmLmxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0luZGV4IG91dCBvZiByYW5nZScpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50TEUgPSBmdW5jdGlvbiB3cml0ZVVJbnRMRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICB2YXIgbWF4Qnl0ZXMgPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aCkgLSAxXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbWF4Qnl0ZXMsIDApXG4gIH1cblxuICB2YXIgbXVsID0gMVxuICB2YXIgaSA9IDBcbiAgdGhpc1tvZmZzZXRdID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICh2YWx1ZSAvIG11bCkgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludEJFID0gZnVuY3Rpb24gd3JpdGVVSW50QkUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgdmFyIG1heEJ5dGVzID0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGgpIC0gMVxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG1heEJ5dGVzLCAwKVxuICB9XG5cbiAgdmFyIGkgPSBieXRlTGVuZ3RoIC0gMVxuICB2YXIgbXVsID0gMVxuICB0aGlzW29mZnNldCArIGldID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgtLWkgPj0gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAodmFsdWUgLyBtdWwpICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQ4ID0gZnVuY3Rpb24gd3JpdGVVSW50OCAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDEsIDB4ZmYsIDApXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHJldHVybiBvZmZzZXQgKyAxXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MTZMRSA9IGZ1bmN0aW9uIHdyaXRlVUludDE2TEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweGZmZmYsIDApXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpXG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MTZCRSA9IGZ1bmN0aW9uIHdyaXRlVUludDE2QkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweGZmZmYsIDApXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gOClcbiAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MzJMRSA9IGZ1bmN0aW9uIHdyaXRlVUludDMyTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweGZmZmZmZmZmLCAwKVxuICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlID4+PiAyNClcbiAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gMTYpXG4gIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MzJCRSA9IGZ1bmN0aW9uIHdyaXRlVUludDMyQkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweGZmZmZmZmZmLCAwKVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDI0KVxuICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiAxNilcbiAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gOClcbiAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnRMRSA9IGZ1bmN0aW9uIHdyaXRlSW50TEUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgdmFyIGxpbWl0ID0gTWF0aC5wb3coMiwgKDggKiBieXRlTGVuZ3RoKSAtIDEpXG5cbiAgICBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBsaW1pdCAtIDEsIC1saW1pdClcbiAgfVxuXG4gIHZhciBpID0gMFxuICB2YXIgbXVsID0gMVxuICB2YXIgc3ViID0gMFxuICB0aGlzW29mZnNldF0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICBpZiAodmFsdWUgPCAwICYmIHN1YiA9PT0gMCAmJiB0aGlzW29mZnNldCArIGkgLSAxXSAhPT0gMCkge1xuICAgICAgc3ViID0gMVxuICAgIH1cbiAgICB0aGlzW29mZnNldCArIGldID0gKCh2YWx1ZSAvIG11bCkgPj4gMCkgLSBzdWIgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50QkUgPSBmdW5jdGlvbiB3cml0ZUludEJFICh2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIHZhciBsaW1pdCA9IE1hdGgucG93KDIsICg4ICogYnl0ZUxlbmd0aCkgLSAxKVxuXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbGltaXQgLSAxLCAtbGltaXQpXG4gIH1cblxuICB2YXIgaSA9IGJ5dGVMZW5ndGggLSAxXG4gIHZhciBtdWwgPSAxXG4gIHZhciBzdWIgPSAwXG4gIHRoaXNbb2Zmc2V0ICsgaV0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKC0taSA+PSAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgaWYgKHZhbHVlIDwgMCAmJiBzdWIgPT09IDAgJiYgdGhpc1tvZmZzZXQgKyBpICsgMV0gIT09IDApIHtcbiAgICAgIHN1YiA9IDFcbiAgICB9XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICgodmFsdWUgLyBtdWwpID4+IDApIC0gc3ViICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDggPSBmdW5jdGlvbiB3cml0ZUludDggKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAxLCAweDdmLCAtMHg4MClcbiAgaWYgKHZhbHVlIDwgMCkgdmFsdWUgPSAweGZmICsgdmFsdWUgKyAxXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHJldHVybiBvZmZzZXQgKyAxXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQxNkxFID0gZnVuY3Rpb24gd3JpdGVJbnQxNkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHg3ZmZmLCAtMHg4MDAwKVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiA4KVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MTZCRSA9IGZ1bmN0aW9uIHdyaXRlSW50MTZCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4N2ZmZiwgLTB4ODAwMClcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiA4KVxuICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDMyTEUgPSBmdW5jdGlvbiB3cml0ZUludDMyTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweDdmZmZmZmZmLCAtMHg4MDAwMDAwMClcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gMTYpXG4gIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgPj4+IDI0KVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MzJCRSA9IGZ1bmN0aW9uIHdyaXRlSW50MzJCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4N2ZmZmZmZmYsIC0weDgwMDAwMDAwKVxuICBpZiAodmFsdWUgPCAwKSB2YWx1ZSA9IDB4ZmZmZmZmZmYgKyB2YWx1ZSArIDFcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiAyNClcbiAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gMTYpXG4gIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDgpXG4gIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgJiAweGZmKVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5mdW5jdGlvbiBjaGVja0lFRUU3NTQgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgZXh0LCBtYXgsIG1pbikge1xuICBpZiAob2Zmc2V0ICsgZXh0ID4gYnVmLmxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0luZGV4IG91dCBvZiByYW5nZScpXG4gIGlmIChvZmZzZXQgPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW5kZXggb3V0IG9mIHJhbmdlJylcbn1cblxuZnVuY3Rpb24gd3JpdGVGbG9hdCAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgY2hlY2tJRUVFNzU0KGJ1ZiwgdmFsdWUsIG9mZnNldCwgNCwgMy40MDI4MjM0NjYzODUyODg2ZSszOCwgLTMuNDAyODIzNDY2Mzg1Mjg4NmUrMzgpXG4gIH1cbiAgaWVlZTc1NC53cml0ZShidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgMjMsIDQpXG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVGbG9hdExFID0gZnVuY3Rpb24gd3JpdGVGbG9hdExFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICByZXR1cm4gd3JpdGVGbG9hdCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlLCBub0Fzc2VydClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUZsb2F0QkUgPSBmdW5jdGlvbiB3cml0ZUZsb2F0QkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHJldHVybiB3cml0ZUZsb2F0KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlLCBub0Fzc2VydClcbn1cblxuZnVuY3Rpb24gd3JpdGVEb3VibGUgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuLCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrSUVFRTc1NChidWYsIHZhbHVlLCBvZmZzZXQsIDgsIDEuNzk3NjkzMTM0ODYyMzE1N0UrMzA4LCAtMS43OTc2OTMxMzQ4NjIzMTU3RSszMDgpXG4gIH1cbiAgaWVlZTc1NC53cml0ZShidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgNTIsIDgpXG4gIHJldHVybiBvZmZzZXQgKyA4XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVEb3VibGVMRSA9IGZ1bmN0aW9uIHdyaXRlRG91YmxlTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHJldHVybiB3cml0ZURvdWJsZSh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlLCBub0Fzc2VydClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZURvdWJsZUJFID0gZnVuY3Rpb24gd3JpdGVEb3VibGVCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRG91YmxlKHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlLCBub0Fzc2VydClcbn1cblxuLy8gY29weSh0YXJnZXRCdWZmZXIsIHRhcmdldFN0YXJ0PTAsIHNvdXJjZVN0YXJ0PTAsIHNvdXJjZUVuZD1idWZmZXIubGVuZ3RoKVxuQnVmZmVyLnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gY29weSAodGFyZ2V0LCB0YXJnZXRTdGFydCwgc3RhcnQsIGVuZCkge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcih0YXJnZXQpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdhcmd1bWVudCBzaG91bGQgYmUgYSBCdWZmZXInKVxuICBpZiAoIXN0YXJ0KSBzdGFydCA9IDBcbiAgaWYgKCFlbmQgJiYgZW5kICE9PSAwKSBlbmQgPSB0aGlzLmxlbmd0aFxuICBpZiAodGFyZ2V0U3RhcnQgPj0gdGFyZ2V0Lmxlbmd0aCkgdGFyZ2V0U3RhcnQgPSB0YXJnZXQubGVuZ3RoXG4gIGlmICghdGFyZ2V0U3RhcnQpIHRhcmdldFN0YXJ0ID0gMFxuICBpZiAoZW5kID4gMCAmJiBlbmQgPCBzdGFydCkgZW5kID0gc3RhcnRcblxuICAvLyBDb3B5IDAgYnl0ZXM7IHdlJ3JlIGRvbmVcbiAgaWYgKGVuZCA9PT0gc3RhcnQpIHJldHVybiAwXG4gIGlmICh0YXJnZXQubGVuZ3RoID09PSAwIHx8IHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm4gMFxuXG4gIC8vIEZhdGFsIGVycm9yIGNvbmRpdGlvbnNcbiAgaWYgKHRhcmdldFN0YXJ0IDwgMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCd0YXJnZXRTdGFydCBvdXQgb2YgYm91bmRzJylcbiAgfVxuICBpZiAoc3RhcnQgPCAwIHx8IHN0YXJ0ID49IHRoaXMubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW5kZXggb3V0IG9mIHJhbmdlJylcbiAgaWYgKGVuZCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdzb3VyY2VFbmQgb3V0IG9mIGJvdW5kcycpXG5cbiAgLy8gQXJlIHdlIG9vYj9cbiAgaWYgKGVuZCA+IHRoaXMubGVuZ3RoKSBlbmQgPSB0aGlzLmxlbmd0aFxuICBpZiAodGFyZ2V0Lmxlbmd0aCAtIHRhcmdldFN0YXJ0IDwgZW5kIC0gc3RhcnQpIHtcbiAgICBlbmQgPSB0YXJnZXQubGVuZ3RoIC0gdGFyZ2V0U3RhcnQgKyBzdGFydFxuICB9XG5cbiAgdmFyIGxlbiA9IGVuZCAtIHN0YXJ0XG5cbiAgaWYgKHRoaXMgPT09IHRhcmdldCAmJiB0eXBlb2YgVWludDhBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIC8vIFVzZSBidWlsdC1pbiB3aGVuIGF2YWlsYWJsZSwgbWlzc2luZyBmcm9tIElFMTFcbiAgICB0aGlzLmNvcHlXaXRoaW4odGFyZ2V0U3RhcnQsIHN0YXJ0LCBlbmQpXG4gIH0gZWxzZSBpZiAodGhpcyA9PT0gdGFyZ2V0ICYmIHN0YXJ0IDwgdGFyZ2V0U3RhcnQgJiYgdGFyZ2V0U3RhcnQgPCBlbmQpIHtcbiAgICAvLyBkZXNjZW5kaW5nIGNvcHkgZnJvbSBlbmRcbiAgICBmb3IgKHZhciBpID0gbGVuIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgIHRhcmdldFtpICsgdGFyZ2V0U3RhcnRdID0gdGhpc1tpICsgc3RhcnRdXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIFVpbnQ4QXJyYXkucHJvdG90eXBlLnNldC5jYWxsKFxuICAgICAgdGFyZ2V0LFxuICAgICAgdGhpcy5zdWJhcnJheShzdGFydCwgZW5kKSxcbiAgICAgIHRhcmdldFN0YXJ0XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIGxlblxufVxuXG4vLyBVc2FnZTpcbi8vICAgIGJ1ZmZlci5maWxsKG51bWJlclssIG9mZnNldFssIGVuZF1dKVxuLy8gICAgYnVmZmVyLmZpbGwoYnVmZmVyWywgb2Zmc2V0WywgZW5kXV0pXG4vLyAgICBidWZmZXIuZmlsbChzdHJpbmdbLCBvZmZzZXRbLCBlbmRdXVssIGVuY29kaW5nXSlcbkJ1ZmZlci5wcm90b3R5cGUuZmlsbCA9IGZ1bmN0aW9uIGZpbGwgKHZhbCwgc3RhcnQsIGVuZCwgZW5jb2RpbmcpIHtcbiAgLy8gSGFuZGxlIHN0cmluZyBjYXNlczpcbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKHR5cGVvZiBzdGFydCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGVuY29kaW5nID0gc3RhcnRcbiAgICAgIHN0YXJ0ID0gMFxuICAgICAgZW5kID0gdGhpcy5sZW5ndGhcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBlbmQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBlbmNvZGluZyA9IGVuZFxuICAgICAgZW5kID0gdGhpcy5sZW5ndGhcbiAgICB9XG4gICAgaWYgKGVuY29kaW5nICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGVuY29kaW5nICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZW5jb2RpbmcgbXVzdCBiZSBhIHN0cmluZycpXG4gICAgfVxuICAgIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnICYmICFCdWZmZXIuaXNFbmNvZGluZyhlbmNvZGluZykpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZylcbiAgICB9XG4gICAgaWYgKHZhbC5sZW5ndGggPT09IDEpIHtcbiAgICAgIHZhciBjb2RlID0gdmFsLmNoYXJDb2RlQXQoMClcbiAgICAgIGlmICgoZW5jb2RpbmcgPT09ICd1dGY4JyAmJiBjb2RlIDwgMTI4KSB8fFxuICAgICAgICAgIGVuY29kaW5nID09PSAnbGF0aW4xJykge1xuICAgICAgICAvLyBGYXN0IHBhdGg6IElmIGB2YWxgIGZpdHMgaW50byBhIHNpbmdsZSBieXRlLCB1c2UgdGhhdCBudW1lcmljIHZhbHVlLlxuICAgICAgICB2YWwgPSBjb2RlXG4gICAgICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgdmFsID0gdmFsICYgMjU1XG4gIH1cblxuICAvLyBJbnZhbGlkIHJhbmdlcyBhcmUgbm90IHNldCB0byBhIGRlZmF1bHQsIHNvIGNhbiByYW5nZSBjaGVjayBlYXJseS5cbiAgaWYgKHN0YXJ0IDwgMCB8fCB0aGlzLmxlbmd0aCA8IHN0YXJ0IHx8IHRoaXMubGVuZ3RoIDwgZW5kKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ091dCBvZiByYW5nZSBpbmRleCcpXG4gIH1cblxuICBpZiAoZW5kIDw9IHN0YXJ0KSB7XG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHN0YXJ0ID0gc3RhcnQgPj4+IDBcbiAgZW5kID0gZW5kID09PSB1bmRlZmluZWQgPyB0aGlzLmxlbmd0aCA6IGVuZCA+Pj4gMFxuXG4gIGlmICghdmFsKSB2YWwgPSAwXG5cbiAgdmFyIGlcbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgZm9yIChpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkge1xuICAgICAgdGhpc1tpXSA9IHZhbFxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgYnl0ZXMgPSBCdWZmZXIuaXNCdWZmZXIodmFsKVxuICAgICAgPyB2YWxcbiAgICAgIDogQnVmZmVyLmZyb20odmFsLCBlbmNvZGluZylcbiAgICB2YXIgbGVuID0gYnl0ZXMubGVuZ3RoXG4gICAgaWYgKGxlbiA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIHZhbHVlIFwiJyArIHZhbCArXG4gICAgICAgICdcIiBpcyBpbnZhbGlkIGZvciBhcmd1bWVudCBcInZhbHVlXCInKVxuICAgIH1cbiAgICBmb3IgKGkgPSAwOyBpIDwgZW5kIC0gc3RhcnQ7ICsraSkge1xuICAgICAgdGhpc1tpICsgc3RhcnRdID0gYnl0ZXNbaSAlIGxlbl1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGhpc1xufVxuXG4vLyBIRUxQRVIgRlVOQ1RJT05TXG4vLyA9PT09PT09PT09PT09PT09XG5cbnZhciBJTlZBTElEX0JBU0U2NF9SRSA9IC9bXisvMC05QS1aYS16LV9dL2dcblxuZnVuY3Rpb24gYmFzZTY0Y2xlYW4gKHN0cikge1xuICAvLyBOb2RlIHRha2VzIGVxdWFsIHNpZ25zIGFzIGVuZCBvZiB0aGUgQmFzZTY0IGVuY29kaW5nXG4gIHN0ciA9IHN0ci5zcGxpdCgnPScpWzBdXG4gIC8vIE5vZGUgc3RyaXBzIG91dCBpbnZhbGlkIGNoYXJhY3RlcnMgbGlrZSBcXG4gYW5kIFxcdCBmcm9tIHRoZSBzdHJpbmcsIGJhc2U2NC1qcyBkb2VzIG5vdFxuICBzdHIgPSBzdHIudHJpbSgpLnJlcGxhY2UoSU5WQUxJRF9CQVNFNjRfUkUsICcnKVxuICAvLyBOb2RlIGNvbnZlcnRzIHN0cmluZ3Mgd2l0aCBsZW5ndGggPCAyIHRvICcnXG4gIGlmIChzdHIubGVuZ3RoIDwgMikgcmV0dXJuICcnXG4gIC8vIE5vZGUgYWxsb3dzIGZvciBub24tcGFkZGVkIGJhc2U2NCBzdHJpbmdzIChtaXNzaW5nIHRyYWlsaW5nID09PSksIGJhc2U2NC1qcyBkb2VzIG5vdFxuICB3aGlsZSAoc3RyLmxlbmd0aCAlIDQgIT09IDApIHtcbiAgICBzdHIgPSBzdHIgKyAnPSdcbiAgfVxuICByZXR1cm4gc3RyXG59XG5cbmZ1bmN0aW9uIHRvSGV4IChuKSB7XG4gIGlmIChuIDwgMTYpIHJldHVybiAnMCcgKyBuLnRvU3RyaW5nKDE2KVxuICByZXR1cm4gbi50b1N0cmluZygxNilcbn1cblxuZnVuY3Rpb24gdXRmOFRvQnl0ZXMgKHN0cmluZywgdW5pdHMpIHtcbiAgdW5pdHMgPSB1bml0cyB8fCBJbmZpbml0eVxuICB2YXIgY29kZVBvaW50XG4gIHZhciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoXG4gIHZhciBsZWFkU3Vycm9nYXRlID0gbnVsbFxuICB2YXIgYnl0ZXMgPSBbXVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICBjb2RlUG9pbnQgPSBzdHJpbmcuY2hhckNvZGVBdChpKVxuXG4gICAgLy8gaXMgc3Vycm9nYXRlIGNvbXBvbmVudFxuICAgIGlmIChjb2RlUG9pbnQgPiAweEQ3RkYgJiYgY29kZVBvaW50IDwgMHhFMDAwKSB7XG4gICAgICAvLyBsYXN0IGNoYXIgd2FzIGEgbGVhZFxuICAgICAgaWYgKCFsZWFkU3Vycm9nYXRlKSB7XG4gICAgICAgIC8vIG5vIGxlYWQgeWV0XG4gICAgICAgIGlmIChjb2RlUG9pbnQgPiAweERCRkYpIHtcbiAgICAgICAgICAvLyB1bmV4cGVjdGVkIHRyYWlsXG4gICAgICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfSBlbHNlIGlmIChpICsgMSA9PT0gbGVuZ3RoKSB7XG4gICAgICAgICAgLy8gdW5wYWlyZWQgbGVhZFxuICAgICAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICAvLyB2YWxpZCBsZWFkXG4gICAgICAgIGxlYWRTdXJyb2dhdGUgPSBjb2RlUG9pbnRcblxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICAvLyAyIGxlYWRzIGluIGEgcm93XG4gICAgICBpZiAoY29kZVBvaW50IDwgMHhEQzAwKSB7XG4gICAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKVxuICAgICAgICBsZWFkU3Vycm9nYXRlID0gY29kZVBvaW50XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIC8vIHZhbGlkIHN1cnJvZ2F0ZSBwYWlyXG4gICAgICBjb2RlUG9pbnQgPSAobGVhZFN1cnJvZ2F0ZSAtIDB4RDgwMCA8PCAxMCB8IGNvZGVQb2ludCAtIDB4REMwMCkgKyAweDEwMDAwXG4gICAgfSBlbHNlIGlmIChsZWFkU3Vycm9nYXRlKSB7XG4gICAgICAvLyB2YWxpZCBibXAgY2hhciwgYnV0IGxhc3QgY2hhciB3YXMgYSBsZWFkXG4gICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICB9XG5cbiAgICBsZWFkU3Vycm9nYXRlID0gbnVsbFxuXG4gICAgLy8gZW5jb2RlIHV0ZjhcbiAgICBpZiAoY29kZVBvaW50IDwgMHg4MCkge1xuICAgICAgaWYgKCh1bml0cyAtPSAxKSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKGNvZGVQb2ludClcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA8IDB4ODAwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDIpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goXG4gICAgICAgIGNvZGVQb2ludCA+PiAweDYgfCAweEMwLFxuICAgICAgICBjb2RlUG9pbnQgJiAweDNGIHwgMHg4MFxuICAgICAgKVxuICAgIH0gZWxzZSBpZiAoY29kZVBvaW50IDwgMHgxMDAwMCkge1xuICAgICAgaWYgKCh1bml0cyAtPSAzKSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHhDIHwgMHhFMCxcbiAgICAgICAgY29kZVBvaW50ID4+IDB4NiAmIDB4M0YgfCAweDgwLFxuICAgICAgICBjb2RlUG9pbnQgJiAweDNGIHwgMHg4MFxuICAgICAgKVxuICAgIH0gZWxzZSBpZiAoY29kZVBvaW50IDwgMHgxMTAwMDApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gNCkgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChcbiAgICAgICAgY29kZVBvaW50ID4+IDB4MTIgfCAweEYwLFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHhDICYgMHgzRiB8IDB4ODAsXG4gICAgICAgIGNvZGVQb2ludCA+PiAweDYgJiAweDNGIHwgMHg4MCxcbiAgICAgICAgY29kZVBvaW50ICYgMHgzRiB8IDB4ODBcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNvZGUgcG9pbnQnKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBieXRlc1xufVxuXG5mdW5jdGlvbiBhc2NpaVRvQnl0ZXMgKHN0cikge1xuICB2YXIgYnl0ZUFycmF5ID0gW11cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyArK2kpIHtcbiAgICAvLyBOb2RlJ3MgY29kZSBzZWVtcyB0byBiZSBkb2luZyB0aGlzIGFuZCBub3QgJiAweDdGLi5cbiAgICBieXRlQXJyYXkucHVzaChzdHIuY2hhckNvZGVBdChpKSAmIDB4RkYpXG4gIH1cbiAgcmV0dXJuIGJ5dGVBcnJheVxufVxuXG5mdW5jdGlvbiB1dGYxNmxlVG9CeXRlcyAoc3RyLCB1bml0cykge1xuICB2YXIgYywgaGksIGxvXG4gIHZhciBieXRlQXJyYXkgPSBbXVxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7ICsraSkge1xuICAgIGlmICgodW5pdHMgLT0gMikgPCAwKSBicmVha1xuXG4gICAgYyA9IHN0ci5jaGFyQ29kZUF0KGkpXG4gICAgaGkgPSBjID4+IDhcbiAgICBsbyA9IGMgJSAyNTZcbiAgICBieXRlQXJyYXkucHVzaChsbylcbiAgICBieXRlQXJyYXkucHVzaChoaSlcbiAgfVxuXG4gIHJldHVybiBieXRlQXJyYXlcbn1cblxuZnVuY3Rpb24gYmFzZTY0VG9CeXRlcyAoc3RyKSB7XG4gIHJldHVybiBiYXNlNjQudG9CeXRlQXJyYXkoYmFzZTY0Y2xlYW4oc3RyKSlcbn1cblxuZnVuY3Rpb24gYmxpdEJ1ZmZlciAoc3JjLCBkc3QsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoKGkgKyBvZmZzZXQgPj0gZHN0Lmxlbmd0aCkgfHwgKGkgPj0gc3JjLmxlbmd0aCkpIGJyZWFrXG4gICAgZHN0W2kgKyBvZmZzZXRdID0gc3JjW2ldXG4gIH1cbiAgcmV0dXJuIGlcbn1cblxuLy8gQXJyYXlCdWZmZXIgb3IgVWludDhBcnJheSBvYmplY3RzIGZyb20gb3RoZXIgY29udGV4dHMgKGkuZS4gaWZyYW1lcykgZG8gbm90IHBhc3Ncbi8vIHRoZSBgaW5zdGFuY2VvZmAgY2hlY2sgYnV0IHRoZXkgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgb2YgdGhhdCB0eXBlLlxuLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlci9pc3N1ZXMvMTY2XG5mdW5jdGlvbiBpc0luc3RhbmNlIChvYmosIHR5cGUpIHtcbiAgcmV0dXJuIG9iaiBpbnN0YW5jZW9mIHR5cGUgfHxcbiAgICAob2JqICE9IG51bGwgJiYgb2JqLmNvbnN0cnVjdG9yICE9IG51bGwgJiYgb2JqLmNvbnN0cnVjdG9yLm5hbWUgIT0gbnVsbCAmJlxuICAgICAgb2JqLmNvbnN0cnVjdG9yLm5hbWUgPT09IHR5cGUubmFtZSlcbn1cbmZ1bmN0aW9uIG51bWJlcklzTmFOIChvYmopIHtcbiAgLy8gRm9yIElFMTEgc3VwcG9ydFxuICByZXR1cm4gb2JqICE9PSBvYmogLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1zZWxmLWNvbXBhcmVcbn1cbiIsImV4cG9ydHMucmVhZD1mdW5jdGlvbihidWZmZXIsb2Zmc2V0LGlzTEUsbUxlbixuQnl0ZXMpe3ZhciBlLG0sZUxlbj04Km5CeXRlcy1tTGVuLTEsZU1heD0oMTw8ZUxlbiktMSxlQmlhcz1lTWF4Pj4xLG5CaXRzPS03LGk9aXNMRT9uQnl0ZXMtMTowLGQ9aXNMRT8tMToxLHM9YnVmZmVyW29mZnNldCtpXTtmb3IoaSs9ZCxlPXMmKDE8PC1uQml0cyktMSxzPj49LW5CaXRzLG5CaXRzKz1lTGVuO25CaXRzPjA7ZT0yNTYqZStidWZmZXJbb2Zmc2V0K2ldLGkrPWQsbkJpdHMtPTgpO2ZvcihtPWUmKDE8PC1uQml0cyktMSxlPj49LW5CaXRzLG5CaXRzKz1tTGVuO25CaXRzPjA7bT0yNTYqbStidWZmZXJbb2Zmc2V0K2ldLGkrPWQsbkJpdHMtPTgpO2lmKDA9PT1lKWU9MS1lQmlhcztlbHNle2lmKGU9PT1lTWF4KXJldHVybiBtP05hTjoxLzAqKHM/LTE6MSk7bSs9TWF0aC5wb3coMixtTGVuKSxlLT1lQmlhc31yZXR1cm4ocz8tMToxKSptKk1hdGgucG93KDIsZS1tTGVuKX0sZXhwb3J0cy53cml0ZT1mdW5jdGlvbihidWZmZXIsdmFsdWUsb2Zmc2V0LGlzTEUsbUxlbixuQnl0ZXMpe3ZhciBlLG0sYyxlTGVuPTgqbkJ5dGVzLW1MZW4tMSxlTWF4PSgxPDxlTGVuKS0xLGVCaWFzPWVNYXg+PjEscnQ9MjM9PT1tTGVuP01hdGgucG93KDIsLTI0KS1NYXRoLnBvdygyLC03Nyk6MCxpPWlzTEU/MDpuQnl0ZXMtMSxkPWlzTEU/MTotMSxzPXZhbHVlPDB8fDA9PT12YWx1ZSYmMS92YWx1ZTwwPzE6MDtmb3IodmFsdWU9TWF0aC5hYnModmFsdWUpLGlzTmFOKHZhbHVlKXx8dmFsdWU9PT0xLzA/KG09aXNOYU4odmFsdWUpPzE6MCxlPWVNYXgpOihlPU1hdGguZmxvb3IoTWF0aC5sb2codmFsdWUpL01hdGguTE4yKSx2YWx1ZSooYz1NYXRoLnBvdygyLC1lKSk8MSYmKGUtLSxjKj0yKSwodmFsdWUrPWUrZUJpYXM+PTE/cnQvYzpydCpNYXRoLnBvdygyLDEtZUJpYXMpKSpjPj0yJiYoZSsrLGMvPTIpLGUrZUJpYXM+PWVNYXg/KG09MCxlPWVNYXgpOmUrZUJpYXM+PTE/KG09KHZhbHVlKmMtMSkqTWF0aC5wb3coMixtTGVuKSxlKz1lQmlhcyk6KG09dmFsdWUqTWF0aC5wb3coMixlQmlhcy0xKSpNYXRoLnBvdygyLG1MZW4pLGU9MCkpO21MZW4+PTg7YnVmZmVyW29mZnNldCtpXT0yNTUmbSxpKz1kLG0vPTI1NixtTGVuLT04KTtmb3IoZT1lPDxtTGVufG0sZUxlbis9bUxlbjtlTGVuPjA7YnVmZmVyW29mZnNldCtpXT0yNTUmZSxpKz1kLGUvPTI1NixlTGVuLT04KTtidWZmZXJbb2Zmc2V0K2ktZF18PTEyOCpzfTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltbHVaR1Y0TG1weklsMHNJbTVoYldWeklqcGJJbVY0Y0c5eWRITWlMQ0p5WldGa0lpd2lZblZtWm1WeUlpd2liMlptYzJWMElpd2lhWE5NUlNJc0ltMU1aVzRpTENKdVFubDBaWE1pTENKbElpd2liU0lzSW1WTVpXNGlMQ0psVFdGNElpd2laVUpwWVhNaUxDSnVRbWwwY3lJc0lta2lMQ0prSWl3aWN5SXNJazVoVGlJc0lrbHVabWx1YVhSNUlpd2lUV0YwYUNJc0luQnZkeUlzSW5keWFYUmxJaXdpZG1Gc2RXVWlMQ0pqSWl3aWNuUWlMQ0poWW5NaUxDSnBjMDVoVGlJc0ltWnNiMjl5SWl3aWJHOW5JaXdpVEU0eUlsMHNJbTFoY0hCcGJtZHpJam9pUVVGRFFVRXNVVUZCVVVNc1MwRkJUeXhUUVVGVlF5eFBRVUZSUXl4UFFVRlJReXhMUVVGTlF5eExRVUZOUXl4UlFVTnVSQ3hKUVVGSlF5eEZRVUZIUXl4RlFVTklReXhMUVVGcFFpeEZRVUZVU0N4UFFVRmpSQ3hMUVVGUExFVkJRemRDU3l4TlFVRlJMRWRCUVV0RUxFMUJRVkVzUlVGRGNrSkZMRTFCUVZGRUxFMUJRVkVzUlVGRGFFSkZMRTlCUVZNc1JVRkRWRU1zUlVGQlNWUXNTMEZCVVVVc1QwRkJVeXhGUVVGTExFVkJRekZDVVN4RlFVRkpWaXhOUVVGUkxFVkJRVWtzUlVGRGFFSlhMRVZCUVVsaUxFOUJRVTlETEU5QlFWTlZMRWRCVDNoQ0xFbEJURUZCTEVkQlFVdERMRVZCUlV4UUxFVkJRVWxSTEVkQlFVMHNTVUZCVDBnc1QwRkJWU3hGUVVNelFrY3NTMEZCVVVnc1RVRkRVa0VzVDBGQlUwZ3NTMEZEUmtjc1RVRkJVU3hGUVVGSFRDeEZRVUZUTEVsQlFVcEJMRVZCUVZkTUxFOUJRVTlETEU5QlFWTlZMRWRCUVVsQkxFZEJRVXRETEVWQlFVZEdMRTlCUVZNc1IwRkxka1VzU1VGSVFVb3NSVUZCU1VRc1IwRkJUU3hKUVVGUFN5eFBRVUZWTEVWQlF6TkNUQ3hMUVVGUlN5eE5RVU5TUVN4UFFVRlRVQ3hMUVVOR1R5eE5RVUZSTEVWQlFVZEtMRVZCUVZNc1NVRkJTa0VzUlVGQlYwNHNUMEZCVDBNc1QwRkJVMVVzUjBGQlNVRXNSMEZCUzBNc1JVRkJSMFlzVDBGQlV5eEhRVVYyUlN4SFFVRlZMRWxCUVU1TUxFVkJRMFpCTEVWQlFVa3NSVUZCU1Vrc1ZVRkRTQ3hEUVVGQkxFZEJRVWxLTEVsQlFVMUhMRXRCUTJZc1QwRkJUMFlzUlVGQlNWRXNTVUZCYzBKRExFVkJRVUZCTEVkQlFXUkdMRWRCUVVzc1JVRkJTU3hIUVVVMVFsQXNSMEZCVVZVc1MwRkJTME1zU1VGQlNTeEZRVUZIWkN4TlFVTndRa1VzUjBGQlVVa3NUVUZGVml4UFFVRlJTU3hIUVVGTExFVkJRVWtzUjBGQlMxQXNSVUZCU1ZVc1MwRkJTME1zU1VGQlNTeEZRVUZIV2l4RlFVRkpSaXhQUVVjMVEwd3NVVUZCVVc5Q0xFMUJRVkVzVTBGQlZXeENMRTlCUVZGdFFpeE5RVUZQYkVJc1QwRkJVVU1zUzBGQlRVTXNTMEZCVFVNc1VVRkRNMFFzU1VGQlNVTXNSVUZCUjBNc1JVRkJSMk1zUlVGRFRtSXNTMEZCYVVJc1JVRkJWRWdzVDBGQlkwUXNTMEZCVHl4RlFVTTNRa3NzVFVGQlVTeEhRVUZMUkN4TlFVRlJMRVZCUTNKQ1JTeE5RVUZSUkN4TlFVRlJMRVZCUTJoQ1lTeEhRVUZsTEV0QlFWUnNRaXhMUVVGallTeExRVUZMUXl4SlFVRkpMRWRCUVVrc1NVRkJUVVFzUzBGQlMwTXNTVUZCU1N4SFFVRkpMRWxCUVUwc1JVRkRNVVJPTEVWQlFVbFVMRXRCUVU4c1JVRkJTMFVzVDBGQlV5eEZRVU42UWxFc1JVRkJTVllzUzBGQlR5eEhRVUZMTEVWQlEyaENWeXhGUVVGSlRTeE5RVUZSTEVkQlFXZENMRWxCUVZaQkxFOUJRV1VzUlVGQlNVRXNUVUZCVVN4RlFVRkxMRVZCUVVrc1JVRnRRekZFTEVsQmFrTkJRU3hOUVVGUlNDeExRVUZMVFN4SlFVRkpTQ3hQUVVWaVNTeE5RVUZOU2l4UlFVRlZRU3hSUVVGVlNpeEZRVUZCUVN4SFFVTTFRbFFzUlVGQlNXbENMRTFCUVUxS0xFOUJRVk1zUlVGQlNTeEZRVU4yUW1Rc1JVRkJTVWNzVDBGRlNrZ3NSVUZCU1Zjc1MwRkJTMUVzVFVGQlRWSXNTMEZCUzFNc1NVRkJTVTRzVDBGQlUwZ3NTMEZCUzFVc1MwRkRiRU5RTEU5QlFWTkRMRVZCUVVsS0xFdEJRVXRETEVsQlFVa3NSMEZCU1Zvc1NVRkJUU3hKUVVOc1EwRXNTVUZEUVdVc1IwRkJTeXhKUVVkTVJDeFBRVVJGWkN4RlFVRkpTU3hQUVVGVExFVkJRMDVaTEVkQlFVdEVMRVZCUlV4RExFZEJRVXRNTEV0QlFVdERMRWxCUVVrc1JVRkJSeXhGUVVGSlVpeFJRVVZ3UWxjc1IwRkJTeXhKUVVObVppeEpRVU5CWlN4SFFVRkxMRWRCUjBobUxFVkJRVWxKTEU5QlFWTkVMRTFCUTJaR0xFVkJRVWtzUlVGRFNrUXNSVUZCU1Vjc1RVRkRTMGdzUlVGQlNVa3NUMEZCVXl4SFFVTjBRa2dzUjBGQlRXRXNUVUZCVVVNc1JVRkJTeXhIUVVGTFNpeExRVUZMUXl4SlFVRkpMRVZCUVVka0xFMUJRM0JEUlN4SFFVRlJTU3hSUVVWU1NDeEZRVUZKWVN4TlFVRlJTQ3hMUVVGTFF5eEpRVUZKTEVWQlFVZFNMRTFCUVZFc1IwRkJTMDhzUzBGQlMwTXNTVUZCU1N4RlFVRkhaQ3hOUVVOcVJFVXNSVUZCU1N4SlFVbEVSaXhOUVVGUkxFVkJRVWRJTEU5QlFVOURMRTlCUVZOVkxFZEJRVk1zU1VGQlNrd3NSVUZCVlVzc1IwRkJTME1zUlVGQlIwNHNSMEZCU3l4SlFVRkxTQ3hOUVVGUkxFZEJTVE5GTEVsQlJrRkZMRVZCUVV0QkxFZEJRVXRHTEV0QlFWRkhMRVZCUTJ4Q1F5eE5RVUZSU2l4TFFVTkVTU3hMUVVGUExFVkJRVWRRTEU5QlFVOURMRTlCUVZOVkxFZEJRVk1zU1VGQlNrNHNSVUZCVlUwc1IwRkJTME1zUlVGQlIxQXNSMEZCU3l4SlFVRkxSU3hOUVVGUkxFZEJSVEZGVUN4UFFVRlBReXhQUVVGVFZTeEZRVUZKUXl4SlFVRlZMRWxCUVVwRElpd2labWxzWlNJNklrTTZYRnhDZFdsc1pFRm5aVzUwWEZ4M1hGeGxRMjl0YldWeVkyVmNYSEJ5YjJSY1hGTnZkWEpqWlZ4Y1IwNWxRMjl0WEZ4VGFYUmxZMjl5WlZ4Y1VISnZhbVZqZEZ4Y1IwNWxRMjl0WEZ4amIyUmxYRnhIVG1WRGIyMHVVSEp2YW1WamRDNVhaV0p6YVhSbFhGeHViMlJsWDIxdlpIVnNaWE5jWEdsbFpXVTNOVFJjWEdsdVpHVjRMbXB6SW4wPSIsIlwidXNlIHN0cmljdFwiO2V4cG9ydHMuYnl0ZUxlbmd0aD1mdW5jdGlvbihiNjQpe3ZhciBsZW5zPWdldExlbnMoYjY0KSx2YWxpZExlbj1sZW5zWzBdLHBsYWNlSG9sZGVyc0xlbj1sZW5zWzFdO3JldHVybiAzKih2YWxpZExlbitwbGFjZUhvbGRlcnNMZW4pLzQtcGxhY2VIb2xkZXJzTGVufSxleHBvcnRzLnRvQnl0ZUFycmF5PWZ1bmN0aW9uKGI2NCl7dmFyIHRtcCxpLGxlbnM9Z2V0TGVucyhiNjQpLHZhbGlkTGVuPWxlbnNbMF0scGxhY2VIb2xkZXJzTGVuPWxlbnNbMV0sYXJyPW5ldyBBcnIoZnVuY3Rpb24oYjY0LHZhbGlkTGVuLHBsYWNlSG9sZGVyc0xlbil7cmV0dXJuIDMqKHZhbGlkTGVuK3BsYWNlSG9sZGVyc0xlbikvNC1wbGFjZUhvbGRlcnNMZW59KDAsdmFsaWRMZW4scGxhY2VIb2xkZXJzTGVuKSksY3VyQnl0ZT0wLGxlbj1wbGFjZUhvbGRlcnNMZW4+MD92YWxpZExlbi00OnZhbGlkTGVuO2ZvcihpPTA7aTxsZW47aSs9NCl0bXA9cmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkpXTw8MTh8cmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkrMSldPDwxMnxyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSsyKV08PDZ8cmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkrMyldLGFycltjdXJCeXRlKytdPXRtcD4+MTYmMjU1LGFycltjdXJCeXRlKytdPXRtcD4+OCYyNTUsYXJyW2N1ckJ5dGUrK109MjU1JnRtcDsyPT09cGxhY2VIb2xkZXJzTGVuJiYodG1wPXJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpKV08PDJ8cmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkrMSldPj40LGFycltjdXJCeXRlKytdPTI1NSZ0bXApOzE9PT1wbGFjZUhvbGRlcnNMZW4mJih0bXA9cmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkpXTw8MTB8cmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkrMSldPDw0fHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpKzIpXT4+MixhcnJbY3VyQnl0ZSsrXT10bXA+PjgmMjU1LGFycltjdXJCeXRlKytdPTI1NSZ0bXApO3JldHVybiBhcnJ9LGV4cG9ydHMuZnJvbUJ5dGVBcnJheT1mdW5jdGlvbih1aW50OCl7Zm9yKHZhciB0bXAsbGVuPXVpbnQ4Lmxlbmd0aCxleHRyYUJ5dGVzPWxlbiUzLHBhcnRzPVtdLGk9MCxsZW4yPWxlbi1leHRyYUJ5dGVzO2k8bGVuMjtpKz0xNjM4MylwYXJ0cy5wdXNoKGVuY29kZUNodW5rKHVpbnQ4LGksaSsxNjM4Mz5sZW4yP2xlbjI6aSsxNjM4MykpOzE9PT1leHRyYUJ5dGVzPyh0bXA9dWludDhbbGVuLTFdLHBhcnRzLnB1c2gobG9va3VwW3RtcD4+Ml0rbG9va3VwW3RtcDw8NCY2M10rXCI9PVwiKSk6Mj09PWV4dHJhQnl0ZXMmJih0bXA9KHVpbnQ4W2xlbi0yXTw8OCkrdWludDhbbGVuLTFdLHBhcnRzLnB1c2gobG9va3VwW3RtcD4+MTBdK2xvb2t1cFt0bXA+PjQmNjNdK2xvb2t1cFt0bXA8PDImNjNdK1wiPVwiKSk7cmV0dXJuIHBhcnRzLmpvaW4oXCJcIil9O2Zvcih2YXIgbG9va3VwPVtdLHJldkxvb2t1cD1bXSxBcnI9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFVpbnQ4QXJyYXk/VWludDhBcnJheTpBcnJheSxjb2RlPVwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrL1wiLGk9MCxsZW49Y29kZS5sZW5ndGg7aTxsZW47KytpKWxvb2t1cFtpXT1jb2RlW2ldLHJldkxvb2t1cFtjb2RlLmNoYXJDb2RlQXQoaSldPWk7ZnVuY3Rpb24gZ2V0TGVucyhiNjQpe3ZhciBsZW49YjY0Lmxlbmd0aDtpZihsZW4lND4wKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgc3RyaW5nLiBMZW5ndGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIDRcIik7dmFyIHZhbGlkTGVuPWI2NC5pbmRleE9mKFwiPVwiKTtyZXR1cm4tMT09PXZhbGlkTGVuJiYodmFsaWRMZW49bGVuKSxbdmFsaWRMZW4sdmFsaWRMZW49PT1sZW4/MDo0LXZhbGlkTGVuJTRdfWZ1bmN0aW9uIGVuY29kZUNodW5rKHVpbnQ4LHN0YXJ0LGVuZCl7Zm9yKHZhciB0bXAsbnVtLG91dHB1dD1bXSxpPXN0YXJ0O2k8ZW5kO2krPTMpdG1wPSh1aW50OFtpXTw8MTYmMTY3MTE2ODApKyh1aW50OFtpKzFdPDw4JjY1MjgwKSsoMjU1JnVpbnQ4W2krMl0pLG91dHB1dC5wdXNoKGxvb2t1cFsobnVtPXRtcCk+PjE4JjYzXStsb29rdXBbbnVtPj4xMiY2M10rbG9va3VwW251bT4+NiY2M10rbG9va3VwWzYzJm51bV0pO3JldHVybiBvdXRwdXQuam9pbihcIlwiKX1yZXZMb29rdXBbXCItXCIuY2hhckNvZGVBdCgwKV09NjIscmV2TG9va3VwW1wiX1wiLmNoYXJDb2RlQXQoMCldPTYzO1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW1sdVpHVjRMbXB6SWwwc0ltNWhiV1Z6SWpwYkltVjRjRzl5ZEhNaUxDSmllWFJsVEdWdVozUm9JaXdpWWpZMElpd2liR1Z1Y3lJc0ltZGxkRXhsYm5NaUxDSjJZV3hwWkV4bGJpSXNJbkJzWVdObFNHOXNaR1Z5YzB4bGJpSXNJblJ2UW5sMFpVRnljbUY1SWl3aWRHMXdJaXdpYVNJc0ltRnljaUlzSWtGeWNpSXNJbDlpZVhSbFRHVnVaM1JvSWl3aVkzVnlRbmwwWlNJc0lteGxiaUlzSW5KbGRreHZiMnQxY0NJc0ltTm9ZWEpEYjJSbFFYUWlMQ0ptY205dFFubDBaVUZ5Y21GNUlpd2lkV2x1ZERnaUxDSnNaVzVuZEdnaUxDSmxlSFJ5WVVKNWRHVnpJaXdpY0dGeWRITWlMQ0pzWlc0eUlpd2ljSFZ6YUNJc0ltVnVZMjlrWlVOb2RXNXJJaXdpYkc5dmEzVndJaXdpYW05cGJpSXNJbFZwYm5RNFFYSnlZWGtpTENKQmNuSmhlU0lzSW1OdlpHVWlMQ0pGY25KdmNpSXNJbWx1WkdWNFQyWWlMQ0p6ZEdGeWRDSXNJbVZ1WkNJc0ltNTFiU0lzSW05MWRIQjFkQ0pkTENKdFlYQndhVzVuY3lJNklrRkJRVUVzWVVGRlFVRXNVVUZCVVVNc1YwRjFRMUlzVTBGQmNVSkRMRXRCUTI1Q0xFbEJRVWxETEV0QlFVOURMRkZCUVZGR0xFdEJRMlpITEZOQlFWZEdMRXRCUVVzc1IwRkRhRUpITEdkQ1FVRnJRa2dzUzBGQlN5eEhRVU16UWl4UFFVRjFReXhIUVVFNVFrVXNVMEZCVjBNc2FVSkJRWFZDTEVWQlFVdEJMR2xDUVRGRGJFUk9MRkZCUVZGUExGbEJhVVJTTEZOQlFYTkNUQ3hMUVVOd1FpeEpRVUZKVFN4SlFXTkJReXhGUVdKQlRpeExRVUZQUXl4UlFVRlJSaXhMUVVObVJ5eFRRVUZYUml4TFFVRkxMRWRCUTJoQ1J5eG5Ra0ZCYTBKSUxFdEJRVXNzUjBGRmRrSlBMRWxCUVUwc1NVRkJTVU1zU1VGV2FFSXNVMEZCYzBKVUxFbEJRVXRITEZOQlFWVkRMR2xDUVVOdVF5eFBRVUYxUXl4SFFVRTVRa1FzVTBGQlYwTXNhVUpCUVhWQ0xFVkJRVXRCTEdkQ1FWTTVRazBzUTBGQldWWXNSVUZCUzBjc1UwRkJWVU1zYTBKQlJYcERUeXhSUVVGVkxFVkJSMVpETEVsQlFVMVNMR2RDUVVGclFpeEZRVU40UWtRc1UwRkJWeXhGUVVOWVFTeFRRVWRLTEVsQlFVdEpMRVZCUVVrc1JVRkJSMEVzUlVGQlNVc3NTVUZCUzB3c1IwRkJTeXhGUVVONFFrUXNTVUZEUjA4c1ZVRkJWV0lzU1VGQlNXTXNWMEZCVjFBc1MwRkJUeXhIUVVOb1EwMHNWVUZCVldJc1NVRkJTV01zVjBGQlYxQXNSVUZCU1N4TFFVRlBMRWRCUTNCRFRTeFZRVUZWWWl4SlFVRkpZeXhYUVVGWFVDeEZRVUZKTEV0QlFVOHNSVUZEY2tOTkxGVkJRVlZpTEVsQlFVbGpMRmRCUVZkUUxFVkJRVWtzU1VGREwwSkRMRWxCUVVsSExGZEJRV05NTEV0QlFVOHNSMEZCVFN4SlFVTXZRa1VzU1VGQlNVY3NWMEZCWTB3c1MwRkJUeXhGUVVGTExFbEJRemxDUlN4SlFVRkpSeXhYUVVGdFFpeEpRVUZPVEN4SlFVZExMRWxCUVhCQ1JpeHJRa0ZEUmtVc1NVRkRSMDhzVlVGQlZXSXNTVUZCU1dNc1YwRkJWMUFzUzBGQlR5eEZRVU5vUTAwc1ZVRkJWV0lzU1VGQlNXTXNWMEZCVjFBc1JVRkJTU3hMUVVGUExFVkJRM1pEUXl4SlFVRkpSeXhYUVVGdFFpeEpRVUZPVEN4TFFVZExMRWxCUVhCQ1JpeHJRa0ZEUmtVc1NVRkRSMDhzVlVGQlZXSXNTVUZCU1dNc1YwRkJWMUFzUzBGQlR5eEhRVU5vUTAwc1ZVRkJWV0lzU1VGQlNXTXNWMEZCVjFBc1JVRkJTU3hMUVVGUExFVkJRM0JEVFN4VlFVRlZZaXhKUVVGSll5eFhRVUZYVUN4RlFVRkpMRXRCUVU4c1JVRkRka05ETEVsQlFVbEhMRmRCUVdOTUxFdEJRVThzUlVGQlN5eEpRVU01UWtVc1NVRkJTVWNzVjBGQmJVSXNTVUZCVGt3c1MwRkhia0lzVDBGQlQwVXNTMEV6UmxSV0xGRkJRVkZwUWl4alFXdElVaXhUUVVGM1FrTXNUMEZSZEVJc1NVRlFRU3hKUVVGSlZpeEpRVU5CVFN4SlFVRk5TU3hOUVVGTlF5eFBRVU5hUXl4WFFVRmhUaXhKUVVGTkxFVkJRMjVDVHl4TlFVRlJMRWRCU1VoYUxFVkJRVWtzUlVGQlIyRXNTMEZCVDFJc1NVRkJUVTBzVjBGQldWZ3NSVUZCU1dFc1MwRkJUV0lzUjBGSU9VSXNUVUZKYmtKWkxFMUJRVTFGTEV0QlFVdERMRmxCUVZsT0xFMUJRVTlVTEVWQlFVbEJMRVZCU21Zc1RVRkpjVU5oTEV0QlFVOUJMRXRCUVZGaUxFVkJTbkJFTEZGQlVVWXNTVUZCWmxjc1dVRkRSbG9zU1VGQlRWVXNUVUZCVFVvc1NVRkJUU3hIUVVOc1FrOHNUVUZCVFVVc1MwRkRTa1VzVDBGQlQycENMRXRCUVU4c1IwRkRaR2xDTEU5QlFWRnFRaXhMUVVGUExFVkJRVXNzU1VGRGNFSXNUMEZGYzBJc1NVRkJabGtzWVVGRFZGb3NTMEZCVDFVc1RVRkJUVW9zU1VGQlRTeEpRVUZOTEVkQlFVdEpMRTFCUVUxS0xFbEJRVTBzUjBGRE1VTlBMRTFCUVUxRkxFdEJRMHBGTEU5QlFVOXFRaXhMUVVGUExFbEJRMlJwUWl4UFFVRlJha0lzUzBGQlR5eEZRVUZMTEVsQlEzQkNhVUlzVDBGQlVXcENMRXRCUVU4c1JVRkJTeXhKUVVOd1FpeE5RVWxLTEU5QlFVOWhMRTFCUVUxTExFdEJRVXNzUzBGNlNYQkNMRWxCVEVFc1NVRkJTVVFzVDBGQlV5eEhRVU5VVml4VlFVRlpMRWRCUTFwS0xFbEJRVFJDTEc5Q1FVRm1aMElzVjBGQk5rSkJMRmRCUVdGRExFMUJSWFpFUXl4TFFVRlBMRzFGUVVOR2NFSXNSVUZCU1N4RlFVRkhTeXhKUVVGTlpTeExRVUZMVml4UFFVRlJWaXhGUVVGSlN5eE5RVUZQVEN4RlFVTTFRMmRDTEU5QlFVOW9RaXhIUVVGTGIwSXNTMEZCUzNCQ0xFZEJRMnBDVFN4VlFVRlZZeXhMUVVGTFlpeFhRVUZYVUN4SlFVRk5RU3hGUVZGc1F5eFRRVUZUVEN4UlFVRlRSaXhMUVVOb1FpeEpRVUZKV1N4SlFVRk5XaXhKUVVGSmFVSXNUMEZGWkN4SFFVRkpUQ3hKUVVGTkxFVkJRVWtzUlVGRFdpeE5RVUZOTEVsQlFVbG5RaXhOUVVGTkxHdEVRVXRzUWl4SlFVRkpla0lzVTBGQlYwZ3NTVUZCU1RaQ0xGRkJRVkVzUzBGUE0wSXNUMEZPYTBJc1NVRkJaREZDTEZkQlFXbENRU3hUUVVGWFV5eExRVTE2UWl4RFFVRkRWQ3hUUVVwalFTeFhRVUZoVXl4SlFVTXZRaXhGUVVOQkxFVkJRVXRVTEZOQlFWY3NSMEZ6UlhSQ0xGTkJRVk50UWl4WlFVRmhUaXhOUVVGUFl5eE5RVUZQUXl4TFFVZHNReXhKUVVaQkxFbEJRVWw2UWl4SlFWSnZRakJDTEVsQlUzQkNReXhQUVVGVExFZEJRMG94UWl4RlFVRkpkVUlzVFVGQlQzWkNMRVZCUVVsM1FpeEpRVUZMZUVJc1IwRkJTeXhGUVVOb1EwUXNTMEZEU1ZVc1RVRkJUVlFzU1VGQlRTeEhRVUZOTEZkQlEyeENVeXhOUVVGTlZDeEZRVUZKTEVsQlFVMHNSVUZCU3l4UlFVTlFMRWxCUVdaVExFMUJRVTFVTEVWQlFVa3NTVUZEWWpCQ0xFOUJRVTlhTEV0QlpFWkZMRkZCUkdsQ1V5eEpRV1ZOTVVJc1RVRmtWQ3hIUVVGTExFbEJRM2hDYVVJc1QwRkJUMU1zUzBGQlR5eEhRVUZMTEVsQlEyNUNWQ3hQUVVGUFV5eExRVUZQTEVWQlFVa3NTVUZEYkVKVUxFOUJRV0VzUjBGQlRsTXNUVUZoVkN4UFFVRlBReXhQUVVGUFZDeExRVUZMTEVsQmFrZHlRbGdzVlVGQlZTeEpRVUZKUXl4WFFVRlhMRWxCUVUwc1IwRkRMMEpFTEZWQlFWVXNTVUZCU1VNc1YwRkJWeXhKUVVGTklpd2labWxzWlNJNklrTTZYRnhDZFdsc1pFRm5aVzUwWEZ4M1hGeGxRMjl0YldWeVkyVmNYSEJ5YjJSY1hGTnZkWEpqWlZ4Y1IwNWxRMjl0WEZ4VGFYUmxZMjl5WlZ4Y1VISnZhbVZqZEZ4Y1IwNWxRMjl0WEZ4amIyUmxYRnhIVG1WRGIyMHVVSEp2YW1WamRDNVhaV0p6YVhSbFhGeHViMlJsWDIxdlpIVnNaWE5jWEdKaGMyVTJOQzFxYzF4Y2FXNWtaWGd1YW5NaWZRPT0iLCJ2YXIgbmV4dFRpY2s9cmVxdWlyZShcInByb2Nlc3MvYnJvd3Nlci5qc1wiKS5uZXh0VGljayxhcHBseT1GdW5jdGlvbi5wcm90b3R5cGUuYXBwbHksc2xpY2U9QXJyYXkucHJvdG90eXBlLnNsaWNlLGltbWVkaWF0ZUlkcz17fSxuZXh0SW1tZWRpYXRlSWQ9MDtmdW5jdGlvbiBUaW1lb3V0KGlkLGNsZWFyRm4pe3RoaXMuX2lkPWlkLHRoaXMuX2NsZWFyRm49Y2xlYXJGbn1leHBvcnRzLnNldFRpbWVvdXQ9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFRpbWVvdXQoYXBwbHkuY2FsbChzZXRUaW1lb3V0LHdpbmRvdyxhcmd1bWVudHMpLGNsZWFyVGltZW91dCl9LGV4cG9ydHMuc2V0SW50ZXJ2YWw9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFRpbWVvdXQoYXBwbHkuY2FsbChzZXRJbnRlcnZhbCx3aW5kb3csYXJndW1lbnRzKSxjbGVhckludGVydmFsKX0sZXhwb3J0cy5jbGVhclRpbWVvdXQ9ZXhwb3J0cy5jbGVhckludGVydmFsPWZ1bmN0aW9uKHRpbWVvdXQpe3RpbWVvdXQuY2xvc2UoKX0sVGltZW91dC5wcm90b3R5cGUudW5yZWY9VGltZW91dC5wcm90b3R5cGUucmVmPWZ1bmN0aW9uKCl7fSxUaW1lb3V0LnByb3RvdHlwZS5jbG9zZT1mdW5jdGlvbigpe3RoaXMuX2NsZWFyRm4uY2FsbCh3aW5kb3csdGhpcy5faWQpfSxleHBvcnRzLmVucm9sbD1mdW5jdGlvbihpdGVtLG1zZWNzKXtjbGVhclRpbWVvdXQoaXRlbS5faWRsZVRpbWVvdXRJZCksaXRlbS5faWRsZVRpbWVvdXQ9bXNlY3N9LGV4cG9ydHMudW5lbnJvbGw9ZnVuY3Rpb24oaXRlbSl7Y2xlYXJUaW1lb3V0KGl0ZW0uX2lkbGVUaW1lb3V0SWQpLGl0ZW0uX2lkbGVUaW1lb3V0PS0xfSxleHBvcnRzLl91bnJlZkFjdGl2ZT1leHBvcnRzLmFjdGl2ZT1mdW5jdGlvbihpdGVtKXtjbGVhclRpbWVvdXQoaXRlbS5faWRsZVRpbWVvdXRJZCk7dmFyIG1zZWNzPWl0ZW0uX2lkbGVUaW1lb3V0O21zZWNzPj0wJiYoaXRlbS5faWRsZVRpbWVvdXRJZD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aXRlbS5fb25UaW1lb3V0JiZpdGVtLl9vblRpbWVvdXQoKX0sbXNlY3MpKX0sZXhwb3J0cy5zZXRJbW1lZGlhdGU9XCJmdW5jdGlvblwiPT10eXBlb2Ygc2V0SW1tZWRpYXRlP3NldEltbWVkaWF0ZTpmdW5jdGlvbihmbil7dmFyIGlkPW5leHRJbW1lZGlhdGVJZCsrLGFyZ3M9IShhcmd1bWVudHMubGVuZ3RoPDIpJiZzbGljZS5jYWxsKGFyZ3VtZW50cywxKTtyZXR1cm4gaW1tZWRpYXRlSWRzW2lkXT0hMCxuZXh0VGljayhmdW5jdGlvbigpe2ltbWVkaWF0ZUlkc1tpZF0mJihhcmdzP2ZuLmFwcGx5KG51bGwsYXJncyk6Zm4uY2FsbChudWxsKSxleHBvcnRzLmNsZWFySW1tZWRpYXRlKGlkKSl9KSxpZH0sZXhwb3J0cy5jbGVhckltbWVkaWF0ZT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBjbGVhckltbWVkaWF0ZT9jbGVhckltbWVkaWF0ZTpmdW5jdGlvbihpZCl7ZGVsZXRlIGltbWVkaWF0ZUlkc1tpZF19O1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW0xaGFXNHVhbk1pWFN3aWJtRnRaWE1pT2xzaWJtVjRkRlJwWTJzaUxDSnlaWEYxYVhKbElpd2lZWEJ3YkhraUxDSkdkVzVqZEdsdmJpSXNJbkJ5YjNSdmRIbHdaU0lzSW5Oc2FXTmxJaXdpUVhKeVlYa2lMQ0pwYlcxbFpHbGhkR1ZKWkhNaUxDSnVaWGgwU1cxdFpXUnBZWFJsU1dRaUxDSlVhVzFsYjNWMElpd2lhV1FpTENKamJHVmhja1p1SWl3aWRHaHBjeUlzSWw5cFpDSXNJbDlqYkdWaGNrWnVJaXdpWlhod2IzSjBjeUlzSW5ObGRGUnBiV1Z2ZFhRaUxDSmpZV3hzSWl3aWQybHVaRzkzSWl3aVlYSm5kVzFsYm5Seklpd2lZMnhsWVhKVWFXMWxiM1YwSWl3aWMyVjBTVzUwWlhKMllXd2lMQ0pqYkdWaGNrbHVkR1Z5ZG1Gc0lpd2lkR2x0Wlc5MWRDSXNJbU5zYjNObElpd2lkVzV5WldZaUxDSnlaV1lpTENKbGJuSnZiR3dpTENKcGRHVnRJaXdpYlhObFkzTWlMQ0pmYVdSc1pWUnBiV1Z2ZFhSSlpDSXNJbDlwWkd4bFZHbHRaVzkxZENJc0luVnVaVzV5YjJ4c0lpd2lYM1Z1Y21WbVFXTjBhWFpsSWl3aVlXTjBhWFpsSWl3aVgyOXVWR2x0Wlc5MWRDSXNJbk5sZEVsdGJXVmthV0YwWlNJc0ltWnVJaXdpWVhKbmN5SXNJbXhsYm1kMGFDSXNJbU5zWldGeVNXMXRaV1JwWVhSbElsMHNJbTFoY0hCcGJtZHpJam9pUVVGQlFTeEpRVUZKUVN4VFFVRlhReXhSUVVGUkxITkNRVUZ6UWtRc1UwRkRla05GTEUxQlFWRkRMRk5CUVZORExGVkJRVlZHTEUxQlF6TkNSeXhOUVVGUlF5eE5RVUZOUml4VlFVRlZReXhOUVVONFFrVXNZVUZCWlN4SFFVTm1ReXhuUWtGQmEwSXNSVUZoZEVJc1UwRkJVME1zVVVGQlVVTXNSMEZCU1VNc1UwRkRia0pETEV0QlFVdERMRWxCUVUxSUxFZEJRMWhGTEV0QlFVdEZMRk5CUVZkSUxGRkJXR3hDU1N4UlFVRlJReXhYUVVGaExGZEJRMjVDTEU5QlFVOHNTVUZCU1ZBc1VVRkJVVkFzVFVGQlRXVXNTMEZCUzBRc1YwRkJXVVVzVDBGQlVVTXNWMEZCV1VNc1pVRkZhRVZNTEZGQlFWRk5MRmxCUVdNc1YwRkRjRUlzVDBGQlR5eEpRVUZKV2l4UlFVRlJVQ3hOUVVGTlpTeExRVUZMU1N4WlFVRmhTQ3hQUVVGUlF5eFhRVUZaUnl4blFrRkZha1ZRTEZGQlFWRkxMR0ZCUTFKTUxGRkJRVkZQTEdOQlFXZENMRk5CUVZORExGTkJRVmRCTEZGQlFWRkRMRk5CVFhCRVppeFJRVUZSVEN4VlFVRlZjVUlzVFVGQlVXaENMRkZCUVZGTUxGVkJRVlZ6UWl4SlFVRk5MR0ZCUTJ4RWFrSXNVVUZCVVV3c1ZVRkJWVzlDTEUxQlFWRXNWMEZEZUVKYUxFdEJRVXRGTEZOQlFWTkhMRXRCUVV0RExFOUJRVkZPTEV0QlFVdERMRTFCU1d4RFJTeFJRVUZSV1N4UFFVRlRMRk5CUVZORExFdEJRVTFETEU5QlF6bENWQ3hoUVVGaFVTeExRVUZMUlN4blFrRkRiRUpHTEV0QlFVdEhMR0ZCUVdWR0xFOUJSM1JDWkN4UlFVRlJhVUlzVTBGQlZ5eFRRVUZUU2l4TlFVTXhRbElzWVVGQllWRXNTMEZCUzBVc1owSkJRMnhDUml4TFFVRkxSeXhqUVVGblFpeEhRVWQyUW1oQ0xGRkJRVkZyUWl4aFFVRmxiRUlzVVVGQlVXMUNMRTlCUVZNc1UwRkJVMDRzVFVGREwwTlNMR0ZCUVdGUkxFdEJRVXRGTEdkQ1FVVnNRaXhKUVVGSlJDeE5RVUZSUkN4TFFVRkxSeXhoUVVOaVJpeFBRVUZUTEVsQlExaEVMRXRCUVV0RkxHVkJRV2xDWkN4WFFVRlhMRmRCUXpOQ1dTeExRVUZMVHl4WlFVTlFVQ3hMUVVGTFR5eGpRVU5PVGl4VFFVdFFaQ3hSUVVGUmNVSXNZVUZCZFVNc2JVSkJRV3BDUVN4aFFVRTRRa0VzWVVGQlpTeFRRVUZUUXl4SlFVTnNSaXhKUVVGSk0wSXNSMEZCUzBZc2EwSkJRMHc0UWl4UFFVRlBia0lzVlVGQlZXOUNMRTlCUVZNc1NVRkJXV3hETEUxQlFVMVpMRXRCUVV0RkxGVkJRVmNzUjBGclFtaEZMRTlCYUVKQldpeGhRVUZoUnl4TFFVRk5MRVZCUlc1Q1ZpeFRRVUZUTEZkQlEwaFBMR0ZCUVdGSExFMUJSMWcwUWl4TFFVTkdSQ3hIUVVGSGJrTXNUVUZCVFN4TFFVRk5iME1zVFVGRlprUXNSMEZCUjNCQ0xFdEJRVXNzVFVGSFZrWXNVVUZCVVhsQ0xHVkJRV1U1UWl4UFFVbHdRa0VzU1VGSFZFc3NVVUZCVVhsQ0xHVkJRVEpETEcxQ1FVRnVRa0VzWlVGQlowTkJMR1ZCUVdsQ0xGTkJRVk01UWl4WFFVTnFSa2dzWVVGQllVY2lMQ0ptYVd4bElqb2lRenBjWEVKMWFXeGtRV2RsYm5SY1hIZGNYR1ZEYjIxdFpYSmpaVnhjY0hKdlpGeGNVMjkxY21ObFhGeEhUbVZEYjIxY1hGTnBkR1ZqYjNKbFhGeFFjbTlxWldOMFhGeEhUbVZEYjIxY1hHTnZaR1ZjWEVkT1pVTnZiUzVRY205cVpXTjBMbGRsWW5OcGRHVmNYRzV2WkdWZmJXOWtkV3hsYzF4Y2RHbHRaWEp6TFdKeWIzZHpaWEpwWm5sY1hHMWhhVzR1YW5NaWZRPT0iLCJcInVzZSBzdHJpY3RcIjtcbigoKSA9PiB7XG4gICAgY2xhc3MgSENQQ29ubmVjdCB7XG4gICAgICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAgICAgdGhpcy4jaW5pdCgpO1xuICAgICAgICB9XG4gICAgXG4gICAgICAgIGdldCBpc01lZ2FNZW51KCkge1xuICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5tZWdhLW1lbnUtbmF2aWdhdGlvbicpO1xuICAgICAgICB9XG4gICAgXG4gICAgICAgIGdldCBpc0hDUENvbmZpZ3VyYXRvcigpIHtcbiAgICAgICAgICAgIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuY29uZmlndXJhdG9yLXJldmFtcCcpO1xuICAgICAgICB9XG4gICAgXG4gICAgICAgIHNldCBhZGRIQ1BDbGFzcyhjbHMpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZChjbHMpO1xuICAgICAgICB9XG4gICAgXG4gICAgICAgICNjaGVja0hDUENvbm5lY3RUZW1wbGF0ZXMoKSB7XG4gICAgICAgICAgICBpZih0aGlzLmlzTWVnYU1lbnUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEhDUENsYXNzID0gJ2hjcF9tZWdhLW1lbnUnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYodGhpcy5pc0hDUENvbmZpZ3VyYXRvcikge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkSENQQ2xhc3MgPSAnaGNwX2NvbmZpZ3VyYXRvcic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICBcbiAgICAgICAgI2luaXQoKSB7XG4gICAgICAgICAgICB0aGlzLiNjaGVja0hDUENvbm5lY3RUZW1wbGF0ZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5ldyBIQ1BDb25uZWN0KCk7XG59KSgpOyJdfQ==","file":"../hcpConnect.min.js"}