>>6*(3-v)&63));if(l=t.charAt(64))for(;d.length%4;)d.push(l);return d.join("")},parse:function(d){var l=d.length,s=this._map,t=s.charAt(64);t&&(t=d.indexOf(t),-1!=t&&(l=t));for(var t=[],r=0,w=0;w<
-l;w++)if(w%4){var v=s.indexOf(d.charAt(w-1))<<2*(w%4),b=s.indexOf(d.charAt(w))>>>6-2*(w%4);t[r>>>2]|=(v|b)<<24-8*(r%4);r++}return p.create(t,r)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}})();
-(function(u){function p(b,n,a,c,e,j,k){b=b+(n&a|~n&c)+e+k;return(b< Authenticator © 2019 Authenticator Extension. Released under the MIT License. crypto-js Copyright Jeff Mott. Licensed under the BSD License. Droid Sans Mono Copyright Steve Matteson. Licensed under the Apache License. Font Awesome Free Licensed under CC BY 4.0 fs-extra Copyright JP Richardson. Licensed under the MIT License. Google and Google Drive are trademarks of Google LLC. jsqrcode Copyright Lazar Laszlo. Licensed under the Apache License. jsSHA Copyright Brian Turek. Licensed under the BSD License. qrcode.js Copyright Shim Sangmin. Licensed under the MIT License. sass Copyright Hampton Catlin, Natalie Weizenbaum, and Chris Eppstein under the MIT License totp.js Copyright Russ Sayers. Licensed under the MIT License. ts-style Copyright Google Inc. Licensed under the Apache License. TypeScript Copyright Microsoft Corporation. Licensed under the Apache License. vue.js Copyright Evan You. Licensed under the MIT License. vue-dragula Copyright Yichang Liu. Licensed under the MIT License. ZXing Copyright ZXing authors. Licensed under the Apache License. Thanks to Mike Robinson <3 {{ i18n.otp_backup_inform }} {{ i18n.otp_backup_learn }} {{ i18n.passphrase_info }} Authenticator © 2019 Authenticator Extension. Released under the MIT License. crypto-js Copyright Jeff Mott. Licensed under the BSD License. Droid Sans Mono Copyright Steve Matteson. Licensed under the Apache License. Font Awesome Free Licensed under CC BY 4.0 fs-extra Copyright JP Richardson. Licensed under the MIT License. Google and Google Drive are trademarks of Google LLC. jsqrcode Copyright Lazar Laszlo. Licensed under the Apache License. jsSHA Copyright Brian Turek. Licensed under the BSD License. qrcode.js Copyright Shim Sangmin. Licensed under the MIT License. sass Copyright Hampton Catlin, Natalie Weizenbaum, and Chris Eppstein under the MIT License totp.js Copyright Russ Sayers. Licensed under the MIT License. ts-style Copyright Google Inc. Licensed under the Apache License. TypeScript Copyright Microsoft Corporation. Licensed under the Apache License. vue.js Copyright Evan You. Licensed under the MIT License. vue-dragula Copyright Yichang Liu. Licensed under the MIT License. ZXing Copyright ZXing authors. Licensed under the Apache License. Thanks to Mike Robinson <3>>2]&255}};d.BlockCipher=v.extend({cfg:v.cfg.extend({mode:b,padding:q}),reset:function(){v.reset.call(this);var a=this.cfg,b=a.iv,a=a.mode;if(this._xformMode==this._ENC_XFORM_MODE)var c=a.createEncryptor;else c=a.createDecryptor,this._minBufferSize=1;this._mode=c.call(a,
-this,b&&b.words)},_doProcessBlock:function(a,b){this._mode.processBlock(a,b)},_doFinalize:function(){var a=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){a.pad(this._data,this.blockSize);var b=this._process(!0)}else b=this._process(!0),a.unpad(b);return b},blockSize:4});var n=d.CipherParams=l.extend({init:function(a){this.mixIn(a)},toString:function(a){return(a||this.formatter).stringify(this)}}),b=(p.format={}).OpenSSL={stringify:function(a){var b=a.ciphertext;a=a.salt;return(a?s.create([1398893684,
-1701076831]).concat(a).concat(b):b).toString(r)},parse:function(a){a=r.parse(a);var b=a.words;if(1398893684==b[0]&&1701076831==b[1]){var c=s.create(b.slice(2,4));b.splice(0,4);a.sigBytes-=16}return n.create({ciphertext:a,salt:c})}},a=d.SerializableCipher=l.extend({cfg:l.extend({format:b}),encrypt:function(a,b,c,d){d=this.cfg.extend(d);var l=a.createEncryptor(c,d);b=l.finalize(b);l=l.cfg;return n.create({ciphertext:b,key:c,iv:l.iv,algorithm:a,mode:l.mode,padding:l.padding,blockSize:a.blockSize,formatter:d.format})},
-decrypt:function(a,b,c,d){d=this.cfg.extend(d);b=this._parse(b,d.format);return a.createDecryptor(c,d).finalize(b.ciphertext)},_parse:function(a,b){return"string"==typeof a?b.parse(a,this):a}}),p=(p.kdf={}).OpenSSL={execute:function(a,b,c,d){d||(d=s.random(8));a=w.create({keySize:b+c}).compute(a,d);c=s.create(a.words.slice(b),4*c);a.sigBytes=4*b;return n.create({key:a,iv:c,salt:d})}},c=d.PasswordBasedCipher=a.extend({cfg:a.cfg.extend({kdf:p}),encrypt:function(b,c,d,l){l=this.cfg.extend(l);d=l.kdf.execute(d,
-b.keySize,b.ivSize);l.iv=d.iv;b=a.encrypt.call(this,b,c,d.key,l);b.mixIn(d);return b},decrypt:function(b,c,d,l){l=this.cfg.extend(l);c=this._parse(c,l.format);d=l.kdf.execute(d,b.keySize,b.ivSize,c.salt);l.iv=d.iv;return a.decrypt.call(this,b,c,d.key,l)}})}();
-(function(){for(var u=CryptoJS,p=u.lib.BlockCipher,d=u.algo,l=[],s=[],t=[],r=[],w=[],v=[],b=[],x=[],q=[],n=[],a=[],c=0;256>c;c++)a[c]=128>c?c<<1:c<<1^283;for(var e=0,j=0,c=0;256>c;c++){var k=j^j<<1^j<<2^j<<3^j<<4,k=k>>>8^k&255^99;l[e]=k;s[k]=e;var z=a[e],F=a[z],G=a[F],y=257*a[k]^16843008*k;t[e]=y<<24|y>>>8;r[e]=y<<16|y>>>16;w[e]=y<<8|y>>>24;v[e]=y;y=16843009*G^65537*F^257*z^16843008*e;b[k]=y<<24|y>>>8;x[k]=y<<16|y>>>16;q[k]=y<<8|y>>>24;n[k]=y;e?(e=z^a[a[a[G^z]]],j^=a[a[j]]):e=j=1}var H=[0,1,2,4,8,
-16,32,64,128,27,54],d=d.AES=p.extend({_doReset:function(){for(var a=this._key,c=a.words,d=a.sigBytes/4,a=4*((this._nRounds=d+6)+1),e=this._keySchedule=[],j=0;j>>24]<<24|l[k>>>16&255]<<16|l[k>>>8&255]<<8|l[k&255]):(k=k<<8|k>>>24,k=l[k>>>24]<<24|l[k>>>16&255]<<16|l[k>>>8&255]<<8|l[k&255],k^=H[j/d|0]<<24);e[j]=e[j-d]^k}c=this._invKeySchedule=[];for(d=0;dd||4>=j?k:b[l[k>>>24]]^x[l[k>>>16&255]]^q[l[k>>>
-8&255]]^n[l[k&255]]},encryptBlock:function(a,b){this._doCryptBlock(a,b,this._keySchedule,t,r,w,v,l)},decryptBlock:function(a,c){var d=a[c+1];a[c+1]=a[c+3];a[c+3]=d;this._doCryptBlock(a,c,this._invKeySchedule,b,x,q,n,s);d=a[c+1];a[c+1]=a[c+3];a[c+3]=d},_doCryptBlock:function(a,b,c,d,e,j,l,f){for(var m=this._nRounds,g=a[b]^c[0],h=a[b+1]^c[1],k=a[b+2]^c[2],n=a[b+3]^c[3],p=4,r=1;r
'];
-
- for (var row = 0; row < nCount; row++) {
- aHTML.push('
');
- _el.innerHTML = aHTML.join('');
-
- // Fix the margin values as real size.
- var elTable = _el.childNodes[0];
- var nLeftMarginTable = (_htOption.width - elTable.offsetWidth) / 2;
- var nTopMarginTable = (_htOption.height - elTable.offsetHeight) / 2;
-
- if (nLeftMarginTable > 0 && nTopMarginTable > 0) {
- elTable.style.margin = nTopMarginTable + "px " + nLeftMarginTable + "px";
- }
- };
-
- /**
- * Clear the QRCode
- */
- Drawing.prototype.clear = function () {
- this._el.innerHTML = '';
- };
-
- return Drawing;
- })() : (function () { // Drawing in Canvas
- function _onMakeImage() {
- if(this._callback){
- this._elCanvas.style.display = "none";
- this._callback(this._elCanvas.toDataURL("image/png"));
- }
- else{
- this._elImage.src = this._elCanvas.toDataURL("image/png");
- this._elImage.style.display = "block";
- this._elCanvas.style.display = "none";
- }
- }
-
- // Android 2.1 bug workaround
- // http://code.google.com/p/android/issues/detail?id=5141
- if (this._android && this._android <= 2.1) {
- var factor = 1 / window.devicePixelRatio;
- var drawImage = CanvasRenderingContext2D.prototype.drawImage;
- CanvasRenderingContext2D.prototype.drawImage = function (image, sx, sy, sw, sh, dx, dy, dw, dh) {
- if (("nodeName" in image) && /img/i.test(image.nodeName)) {
- for (var i = arguments.length - 1; i >= 1; i--) {
- arguments[i] = arguments[i] * factor;
- }
- } else if (typeof dw == "undefined") {
- arguments[1] *= factor;
- arguments[2] *= factor;
- arguments[3] *= factor;
- arguments[4] *= factor;
- }
-
- drawImage.apply(this, arguments);
- };
- }
-
- /**
- * Check whether the user's browser supports Data URI or not
- *
- * @private
- * @param {Function} fSuccess Occurs if it supports Data URI
- * @param {Function} fFail Occurs if it doesn't support Data URI
- */
- function _safeSetDataURI(fSuccess, fFail) {
- var self = this;
- self._fFail = fFail;
- self._fSuccess = fSuccess;
-
- // Check it just once
- if (self._bSupportDataURI === null) {
- var el = document.createElement("img");
- var fOnError = function() {
- self._bSupportDataURI = false;
-
- if (self._fFail) {
- _fFail.call(self);
- }
- };
- var fOnSuccess = function() {
- self._bSupportDataURI = true;
-
- if (self._fSuccess) {
- self._fSuccess.call(self);
- }
- };
-
- el.onabort = fOnError;
- el.onerror = fOnError;
- el.onload = fOnSuccess;
- el.src = "data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="; // the Image contains 1px data.
- return;
- } else if (self._bSupportDataURI === true && self._fSuccess) {
- self._fSuccess.call(self);
- } else if (self._bSupportDataURI === false && self._fFail) {
- self._fFail.call(self);
- }
- };
-
- /**
- * Drawing QRCode by using canvas
- *
- * @constructor
- * @param {HTMLElement} el
- * @param {Object} htOption QRCode Options
- */
- var Drawing = function (el, htOption, callback) {
- this._bIsPainted = false;
- this._android = _getAndroid();
-
- this._htOption = htOption;
- this._elCanvas = document.createElement("canvas");
- this._elCanvas.width = htOption.width+10;
- this._elCanvas.height = htOption.height+10;
- el.appendChild(this._elCanvas);
- this._el = el;
- this._callback = callback;
- this._oContext = this._elCanvas.getContext("2d");
- this._bIsPainted = false;
- this._elImage = document.createElement("img");
- this._elImage.alt = "Scan me!";
- this._elImage.style.display = "none";
- this._el.appendChild(this._elImage);
- this._bSupportDataURI = null;
- };
-
- /**
- * Draw the QRCode
- *
- * @param {QRCode} oQRCode
- */
- Drawing.prototype.draw = function (oQRCode) {
- var _elImage = this._elImage;
- var _oContext = this._oContext;
- var _htOption = this._htOption;
-
- var nCount = oQRCode.getModuleCount();
- var nWidth = _htOption.width / nCount;
- var nHeight = _htOption.height / nCount;
- var nRoundedWidth = Math.round(nWidth);
- var nRoundedHeight = Math.round(nHeight);
-
- _elImage.style.display = "none";
- this.clear();
-
- _oContext.fillStyle = _htOption.colorLight;
- _oContext.fillRect(0, 0, _htOption.width+10, _htOption.height+10);
- for (var row = 0; row < nCount; row++) {
- for (var col = 0; col < nCount; col++) {
- var bIsDark = oQRCode.isDark(row, col);
- var nLeft = col * nWidth + 5;
- var nTop = row * nHeight + 5;
- _oContext.strokeStyle = bIsDark ? _htOption.colorDark : _htOption.colorLight;
- _oContext.lineWidth = 1;
- _oContext.fillStyle = bIsDark ? _htOption.colorDark : _htOption.colorLight;
- _oContext.fillRect(nLeft, nTop, nWidth, nHeight);
-
- _oContext.strokeRect(
- Math.floor(nLeft) + 0.5,
- Math.floor(nTop) + 0.5,
- nRoundedWidth,
- nRoundedHeight
- );
-
- _oContext.strokeRect(
- Math.ceil(nLeft) - 0.5,
- Math.ceil(nTop) - 0.5,
- nRoundedWidth,
- nRoundedHeight
- );
- }
- }
-
- this._bIsPainted = true;
- };
-
- /**
- * Make the image from Canvas if the browser supports Data URI.
- */
- Drawing.prototype.makeImage = function () {
- if (this._bIsPainted) {
- _safeSetDataURI.call(this, _onMakeImage);
- }
- };
-
- /**
- * Return whether the QRCode is painted or not
- *
- * @return {Boolean}
- */
- Drawing.prototype.isPainted = function () {
- return this._bIsPainted;
- };
-
- /**
- * Clear the QRCode
- */
- Drawing.prototype.clear = function () {
- this._oContext.clearRect(0, 0, this._elCanvas.width, this._elCanvas.height);
- this._bIsPainted = false;
- };
-
- /**
- * @private
- * @param {Number} nNumber
- */
- Drawing.prototype.round = function (nNumber) {
- if (!nNumber) {
- return nNumber;
- }
-
- return Math.floor(nNumber * 1000) / 1000;
- };
-
- return Drawing;
- })();
-
- /**
- * Get the type by string length
- *
- * @private
- * @param {String} sText
- * @param {Number} nCorrectLevel
- * @return {Number} type
- */
- function _getTypeNumber(sText, nCorrectLevel) {
- var nType = 1;
- var length = _getUTF8Length(sText);
-
- for (var i = 0, len = QRCodeLimitLength.length; i <= len; i++) {
- var nLimit = 0;
-
- switch (nCorrectLevel) {
- case QRErrorCorrectLevel.L :
- nLimit = QRCodeLimitLength[i][0];
- break;
- case QRErrorCorrectLevel.M :
- nLimit = QRCodeLimitLength[i][1];
- break;
- case QRErrorCorrectLevel.Q :
- nLimit = QRCodeLimitLength[i][2];
- break;
- case QRErrorCorrectLevel.H :
- nLimit = QRCodeLimitLength[i][3];
- break;
- }
-
- if (length <= nLimit) {
- break;
- } else {
- nType++;
- }
- }
-
- if (nType > QRCodeLimitLength.length) {
- throw new Error("Too long data");
- }
-
- return nType;
- }
-
- function _getUTF8Length(sText) {
- var replacedText = encodeURI(sText).toString().replace(/\%[0-9a-fA-F]{2}/g, 'a');
- return replacedText.length + (replacedText.length != sText ? 3 : 0);
- }
-
- /**
- * @class QRCode
- * @constructor
- * @example
- * new QRCode(document.getElementById("test"), "http://jindo.dev.naver.com/collie");
- *
- * @example
- * var oQRCode = new QRCode("test", {
- * text : "http://naver.com",
- * width : 128,
- * height : 128
- * });
- *
- * oQRCode.clear(); // Clear the QRCode.
- * oQRCode.makeCode("http://map.naver.com"); // Re-create the QRCode.
- *
- * @param {HTMLElement|String} el target element or 'id' attribute of element.
- * @param {Object|String} vOption
- * @param {String} vOption.text QRCode link data
- * @param {Number} [vOption.width=256]
- * @param {Number} [vOption.height=256]
- * @param {String} [vOption.colorDark="#000000"]
- * @param {String} [vOption.colorLight="#ffffff"]
- * @param {QRCode.CorrectLevel} [vOption.correctLevel=QRCode.CorrectLevel.H] [L|M|Q|H]
- */
- QRCode = function (el, vOption, callback) {
- this._htOption = {
- width : 256,
- height : 256,
- typeNumber : 4,
- colorDark : "#000000",
- colorLight : "#ffffff",
- correctLevel : QRErrorCorrectLevel.H
- };
-
- if (typeof vOption === 'string') {
- vOption = {
- text : vOption
- };
- }
-
- // Overwrites options
- if (vOption) {
- for (var i in vOption) {
- this._htOption[i] = vOption[i];
- }
- }
-
- if (typeof el == "string") {
- el = document.getElementById(el);
- }
-
- this._callback = callback;
- this._android = _getAndroid();
- this._el = el;
- this._oQRCode = null;
- this._oDrawing = new Drawing(this._el, this._htOption, this._callback);
-
- if (this._htOption.text) {
- this.makeCode(this._htOption.text);
- }
- };
-
- /**
- * Make the QRCode
- *
- * @param {String} sText link data
- */
- QRCode.prototype.makeCode = function (sText) {
- this._oQRCode = new QRCodeModel(_getTypeNumber(sText, this._htOption.correctLevel), this._htOption.correctLevel);
- this._oQRCode.addData(sText);
- this._oQRCode.make();
- //this._el.title = sText;
- this._oDrawing.draw(this._oQRCode);
- this.makeImage();
- };
-
- /**
- * Make the Image from Canvas element
- * - It occurs automatically
- * - Android below 3 doesn't support Data-URI spec.
- *
- * @private
- */
- QRCode.prototype.makeImage = function () {
- if (typeof this._oDrawing.makeImage == "function" && (!this._android || this._android >= 3)) {
- this._oDrawing.makeImage();
- }
- };
-
- /**
- * Clear the QRCode
- */
- QRCode.prototype.clear = function () {
- this._oDrawing.clear();
- };
-
- /**
- * @name QRCode.CorrectLevel
- */
- QRCode.CorrectLevel = QRErrorCorrectLevel;
-})();
diff --git a/js/sha.js b/js/sha.js
deleted file mode 100755
index af212fba0..000000000
--- a/js/sha.js
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- A JavaScript implementation of the SHA family of hashes, as
- defined in FIPS PUB 180-4 and FIPS PUB 202, as well as the corresponding
- HMAC implementation as defined in FIPS PUB 198a
-
- Copyright Brian Turek 2008-2017
- Distributed under the BSD License
- See http://caligatio.github.com/jsSHA/ for more information
-
- Several functions taken from Paul Johnston
-*/
-'use strict';(function(Y){function C(c,a,b){var e=0,h=[],n=0,g,l,d,f,m,q,u,r,I=!1,v=[],w=[],t,y=!1,z=!1,x=-1;b=b||{};g=b.encoding||"UTF8";t=b.numRounds||1;if(t!==parseInt(t,10)||1>t)throw Error("numRounds must a integer >= 1");if("SHA-1"===c)m=512,q=K,u=Z,f=160,r=function(a){return a.slice()};else if(0===c.lastIndexOf("SHA-",0))if(q=function(a,b){return L(a,b,c)},u=function(a,b,h,e){var k,f;if("SHA-224"===c||"SHA-256"===c)k=(b+65>>>9<<4)+15,f=16;else if("SHA-384"===c||"SHA-512"===c)k=(b+129>>>10<<
-5)+31,f=32;else throw Error("Unexpected error in SHA-2 implementation");for(;a.length<=k;)a.push(0);a[b>>>5]|=128<<24-b%32;b=b+h;a[k]=b&4294967295;a[k-1]=b/4294967296|0;h=a.length;for(b=0;b');
-
- for (var col = 0; col < nCount; col++) {
- aHTML.push(' ');
- }
-
- aHTML.push('');
- }
-
- aHTML.push(' t?a:-a}var n=null,r=void 0;e=xo(e);var i=d(arguments,1),a=i[i.length-1];"number"==typeof a?(a=a<0?-1:1,i=i.length>1?i.slice(0,-1):i):a=1;var o=i[0];return o?("function"==typeof o?n=function(e,t){return o(e,t)*a}:(r=Array.prototype.concat.apply([],i),n=function(e,i,a){return a=a||0,a>=r.length-1?t(e,i,a):t(e,i,a)||n(e,i,a+1)}),e.slice().sort(n)):e}function Bn(e,t){var n;if(g(e)){var r=Object.keys(e);for(n=r.length;n--;)if(Bn(e[r[n]],t))return!0}else if(Jn(e)){for(n=e.length;n--;)if(Bn(e[n],t))return!0}else if(null!=e)return e.toString().toLowerCase().indexOf(t)>-1}function Un(n){n.options={directives:Ma,elementDirectives:_o,filters:ko,transitions:{},components:{},partials:{},replace:!0},n.util=Yr,n.config=Ur,n.set=e,n.delete=t,n.nextTick=ur,n.compiler=vo,n.FragmentFactory=yt,n.internalDirectives=ao,n.parsers={path:ki,text:Dr,template:ea,directive:Lr,expression:Di},n.cid=0;var r=1;n.extend=function(e){e=e||{};var t=this,i=0===t.cid;if(i&&e._Ctor)return e._Ctor;var a=e.name||t.options.name,o=function(e){n.call(this,e)};return o.prototype=Object.create(t.prototype),o.prototype.constructor=o,o.cid=r++,o.options=Ae(t.options,e),o.super=t,o.extend=t.extend,Ur._assetTypes.forEach(function(e){o[e]=t[e]}),a&&(o.options.components[a]=o),i&&(e._Ctor=o),o},n.use=function(e){if(!e.installed){var t=d(arguments,1);return t.unshift(this),"function"==typeof e.install?e.install.apply(e,t):e.apply(null,t),e.installed=!0,this}},n.mixin=function(e){n.options=Ae(n.options,e)},Ur._assetTypes.forEach(function(e){n[e]=function(t,r){return r?("component"===e&&g(r)&&(r.name||(r.name=t),r=n.extend(r)),this.options[e+"s"][t]=r,r):this.options[e+"s"][t]}}),v(n.transition,Vr)}var Mn=Object.prototype.hasOwnProperty,Vn=/^\s?(true|false|-?[\d\.]+|'[^']*'|"[^"]*")\s?$/,Hn=/-(\w)/g,Wn=/([^-])([A-Z])/g,zn=/(?:^|[-_\/])(\w)/g,qn=Object.prototype.toString,Gn="[object Object]",Jn=Array.isArray,Kn="__proto__"in{},Qn="undefined"!=typeof window&&"[object Object]"!==Object.prototype.toString.call(window),Xn=Qn&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__,Zn=Qn&&window.navigator.userAgent.toLowerCase(),Yn=Zn&&Zn.indexOf("trident")>0,er=Zn&&Zn.indexOf("msie 9.0")>0,tr=Zn&&Zn.indexOf("android")>0,nr=Zn&&/iphone|ipad|ipod|ios/.test(Zn),rr=void 0,ir=void 0,ar=void 0,or=void 0;if(Qn&&!er){var sr=void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend,lr=void 0===window.onanimationend&&void 0!==window.onwebkitanimationend;rr=sr?"WebkitTransition":"transition",ir=sr?"webkitTransitionEnd":"transitionend",ar=lr?"WebkitAnimation":"animation",or=lr?"webkitAnimationEnd":"animationend"}var ur=function(){function e(){n=!1;var e=t.slice(0);t.length=0;for(var r=0;r","
"],col:[2,"
"]};Ji.td=Ji.th=[3,"
"],Ji.option=Ji.optgroup=[1,'"],Ji.thead=Ji.tbody=Ji.colgroup=Ji.caption=Ji.tfoot=[1,""," ","
"],Ji.g=Ji.defs=Ji.symbol=Ji.use=Ji.image=Ji.text=Ji.circle=Ji.ellipse=Ji.line=Ji.path=Ji.polygon=Ji.polyline=Ji.rect=[1,'"];var Ki=/<([\w:-]+)/,Qi=/?\w+?;/,Xi=/
+
+
+
+
+
+
+ QR Scan Debugging Page
-
+