/*
Copyright 2023 STCLab Inc. All rights reserved.
Version : 4.1.21
*/

var NetFunnel = {};
NetFunnel.Skin = {};
//EditZoneStart ----------------------------------------------------------------
if (typeof window !== 'undefined') {
  NetFunnel.TS_HOST = 'netfunnel.nhn-commerce.com'; // Default TS host
  // Default TS host
  NetFunnel.TS_PORT = 443;
  // Default TS port
  NetFunnel.TS_PROTO = 'https';
  // Default TS protocol [http|https]
  NetFunnel.TS_QUERY = 'ts.wseq';
  // Default request query
  NetFunnel.TS_SERVICE_ID = 'service_1';
  // Default TS Service id
  NetFunnel.TS_ACTION_ID = '';
  // Default TS Action id
  NetFunnel.TS_MAX_TTL = 30;
  // Default max ttl (second) 5~30
  NetFunnel.TS_CONN_TIMEOUT = 3;
  // Default connect timeout (second)
  NetFunnel.TS_CONN_RETRY = 1;
  // Default connect retry count
  NetFunnel.TS_COOKIE_ID = 'NetFunnel_ID';
  // Default Cookie ID
  NetFunnel.TS_COOKIE_TIME = 10;
  // Default Cookie Time (minute)
  NetFunnel.TS_COOKIE_DOMAIN = '';
  // Default Cookie Domain
  NetFunnel.TS_BYPASS = false;
  // NetFunnel Routine Bypass [true|false]
  NetFunnel.TS_POPUP_TOP = false;
  // Popup Top Position ( "false" is center )
  NetFunnel.TS_POPUP_LEFT = false;
  // Popup Left Position ( "false" is center )
  NetFunnel.TS_AUTO_COMPLETE = false;
  // Auto setComplete [true|false]
  NetFunnel.TS_DEBUG_MODE = false;
  // Debug Mode
  NetFunnel.TS_SHOWTIME_LIMIT = 0;
  // Show WaitTime Limit (second, 0 is Unlimited)
  NetFunnel.TS_SHOWCNT_LIMIT = 0;
  // Show WaitUser Limit (0 is Unlimited)
  NetFunnel.TS_SHOWNEXT_LIMIT = 0;
  // Show NextWaitUser Limit (0 is Unlimited)
  NetFunnel.TS_LIMIT_TEXT = '다수';
  // SHOWCNT,SHOWNEXT Limit를 넘었을때 출력되는 문자열
  NetFunnel.TS_IFRAME_RESIZE = false;
  // true | false
  NetFunnel.TS_USE_UNFOCUS = true;
  // object unfocus after netfunnel call
  NetFunnel.TS_VIRT_WAIT = 10000;
  // virtual wait time (millisecond)
  NetFunnel.TS_USE_MOBILE_UI = true;
  // Mobile UI
  NetFunnel.TS_POPUP_TARGET = window;
  // Popup target window
  NetFunnel.TS_USE_FRAME_BLOCK = false;
  // Block FrameSet Page
  NetFunnel.TS_FRAME_BLOCK_LIST = [];
  // Frame Block Window List
  NetFunnel.TS_USE_PRE_WAIT = false;
  // Pre waiting popup use
  NetFunnel.TS_USER_DATA_KEYS = [];
  // Input UserData Key & Type(c=cookie,v=variable)
  // ex) [ {"key":<user_data_key>, "type":<c|v>}, ... ]
  NetFunnel.TS_CONFIG_USE = true;
  // true: 무조건 Config에 있는 IP 와 PORT로 사용 / false: 응답받는 포트로 전송
  NetFunnel.TS_POPUP_ZINDEX = 32000;
  // 대기 Popup창의 z-index 값.
  // 대기창이 뒤로 숨지 않도록 적당한 값을 넣어줘야 한다.
  NetFunnel.TS_IP_ERROR_RETRY = true;
  // Retry(Re-Issue) Where IP Validation Error
  NetFunnel.TS_SUCCESS_POPUP_VISIBILITY = false;
  NetFunnel.TS_TARGET_ELEMENT_ID = '';

  //일정 기간 동안 대기인원 변함 없을시 Bypass 처리
  NetFunnel.TS_NWAIT_BYPASS = false;
  // 사용 유무
  NetFunnel.TS_MAX_NWAIT_COUNT = 100;
  // 대기인원 반복 체크 기준값

  //Server Block
  NetFunnel.TS_BLOCK_MSG = 'Service Block!!';
  // Server Block시 팝업에 표시할 문구
  NetFunnel.TS_BLOCK_URL = '';
  // Server Block시 등록된 url로 이동(미등록시 경고창 후 서비스 진입 불가)
  NetFunnel.TS_IPBLOCK_WAIT_COUNT = 200;
  // Server IP Block 가상대기창 반복 횟수
  NetFunnel.TS_IPBLOCK_WAIT_TIME = 10000;
  // Server IP Block 가상대기시간

  //대기창 미리보기
  NetFunnel.TS_SHOW_WAIT_POPUP = false;
  //대기창 보기

  //event skin 지정
  NetFunnel.TS_SKIN_ID = '';
  // Skin ID (미지정시 default 대기창)

  // Variable for MProtect
  NetFunnel.MP_USE = false;
  // 매크로방지기능 사용유무 (true|false)
  NetFunnel.MP_TIMELIMIT = 20000;
  // 사용자의 요청을 체크하기 위한 단위 시간 (ms)
  NetFunnel.MP_MAXREQLIMIT = NetFunnel.MP_TIMELIMIT / 1100;
  // TIMELIMIT 시간 내에 getTidChkEnter를 요청가능한 최대값
  NetFunnel.MP_DEVLIMIT = 20;
  // 요청주기의 표준편차 제한값 (ms)
  NetFunnel.MP_DEVCNTLIMIT = 7;
  // 표준편차 계산을 위한 item숫자
  NetFunnel.MP_REQONLYLIMIT = 10;
  // setComplete 없이 getTidChkEnter만 요청한 횟수 제한값(횟수)
  NetFunnel.MP_MINCOUNT = 5;
  // 계산을 하지 않는 자료개수

  /* eslint-disable indent */
  /* eslint-disable max-len */
  /* eslint-disable no-unused-vars */
  // Logo Image Data -------------------------------------------------------------
  //   - height:16 pixel
  //   - GIF Format Data (Base64 Encoding)
  NetFunnel.gLogoData =
    'iVBORw0KGgoAAAANSUhEUgAAAEYAAAAjCAYAAAApF3xtAAAHHklEQVRoge2Zf2wcRxXHP7Nze7v+cbZJUuy4TtvQKpQSSAOlNERuhFBLf4iiIjUl/QcJFQIChCqhIorgT34kCi0SSMRIIIGghESUVtCI/iBFlBDiNBWqRZpWjWM5bv0jtuvL+X7t3g2a9Vu0uCG5sy/GlfyVTrM7Mzsz7zvvvXnzjhWsYAWNgLrYGF/4ylfnV3UDVwNdQAZYJfWTQBZ4HTgFjNWzPifvkd9ygvKGMzi5pvP2aWmZZmDgVk6e3EZLy1Td4g999/6a+6Zq7Pce4FPAJ4H3A95F+ueAl4DHgAPA4EVnMAqqqoatWhrUQsz3gQcT71YbjotmvAGUrFiAD1wOrANuALbI7zvAN4Fd5x3dElFVqHIKdHVupLcJMTEptwF/BoI6xr4b+K2Qe35iDDizPqWNpwmuHMfJ+zUv/lLCqWHs70l5cx2kWITANnn+2ltaxWT0ZIagZ4LZmwfmtKVSy5IuPWrRmG8AVwEPAautP65xVfuA7UAfsCeqsT7E+hJlcApeREJ4+SSFm15GlVKoshu1vV2IsdgBrAF2AlNC0oXQJ6TsR5mdVJ3IXEwqBLcCQYpw7RTlDSME3Wcj32LbcZaJg6mDGItbgBdFgyaAh/9HP+tsPwc8gzLbVZBClVyCq0YjIowbQqiprMli/DIq76Gs9iwjUqiTGIutwKvAD+RU2jev/UtC3IAKUrcQaFSoKXz4ZYqbX0PJu/UvkenMtMyZzjIxnyTqJSYP3AicBn4j5T+k7VYc8yNVSE+rUPdWOnJYbSleN0Tx+lPobHOkKf9FwjIkJEa9xFiMSHzSDzwNdALNKHNQFdKY5tIHChtPvxl2T0aCGy9AW82wp80yJmI+Fno2HgPulyvBJuBOKo6DMh/Pbzlxurjp1O3GDa8xuhr5FyqqB2XuAnoWMpkxDqlUmdbWSVKpEtWqXuCya8digobYhKzWedZ/VNtnn6p05N6rp1qfVEHqJRXqrrnjOXLGjwOfv8B49wJvuZhFE6RKFIutDA7eQC63GtctNkD0C2MhphRjtZSVKPCLQnunRYVaRSfP3BXhT6JRI4m+iKZ9VBz5CSAtPsvid8BwPIkxira2CY4d62Vg4Dba29+gqWkm0qJLicUQcz5E9Eh9Ti6cn04Iaom4FnhWjnwbOH5x3qXUnnj3zJlPKTKf4eH3MTy8iUxmDK3DS04KizSli2GPaMGjwJel7xoJ/mzq4hDQDvxabt+Hpc8eK7jvn4v8yuDghzh6dDtB4JFOF1iqW2ajNSaJWYmYrcbcIfXvEtOaEAltkNgqKYpzzDnaI76fJQw9jh69l/Hxq/G8WZqaskuiKTEaPJMpax14WgdoHfRaX+D72U84TsW+Ww0YVqr6pDHqMmtOxjhprcsjvp+b0jrYZrlKp/PW/3DkyA7GxjZECSnXLSwpKTRSY+z2a2PeWQ3d4YrjPKKrPDM4eKP1CX/o7h54sFxu7jJGH/T9c3tct2CMcXZpXTbZbOej09M9ZDITDzU1Zbc2NWWD/v7tjI9fQ3v7WOR8/x/Zq4YR46WKTFbaVh3u3/GKcsxup2rS2WznFq2D0ZGR63YXi61XhKFX6ux81fqP+wqFtq2elx+amlp3ZmqqZ3NLy5v7OjpGHlaqah2tn8lMbjZGjYr/uV7YeVGma5Y6mz59DdgopyBiBcfFf10r3+SXkpj428gbegRMOJlXJgpdd2YqpQNWDN/P2R0/fvbs+gccJ/wL8PuhoQ/eHYZuD6jnjVEvuG5xazpdOJzPt/szM507QfU1N0+vV8ocNkYdFP9kv20DPgv8HHg38DdJnH0M+CvQkVjbKkmS/RS4KRFzLQkxZSltDFI1KDRV0m5Bu9pmO9kP/FIpM+p5ua7kh55HHLrGWe+C6xZ91y3ulYzfiTkT+g9mhZifSQ55YN5aOhLO3hFHvqAoO8ZiI9+DorKxoEoyd0gQt05ywtNSF5MZxzrFxHexuj8t/0Ak+6cS7X+UYz/ZXpRne+pdKWuIs43xXHVhMcSURc0PyRE8fxE2R/xjUf8ZqcvPK10hxe74v4AHJJF+QNpjkm2U/U/JP/cm0h3xfHb8dwCPAD+UungzsktNTAwb4Y7Ks59Y7C6xdZvvvULqNki5Xsp8Yme7RbB9kvexKCTWabVot9y5eqU+1rhO+cdirYyDPMdlmzjsmtGo4MCS8AvgMvkh96Jp2fX4NPmICNAv748l7k+xQPclNCzpm2Iy70kQtjbRvlbuXSclaJyU+kMy3lP1CNSo49pqyWdkvGHxEy8k2l+XXf6WnBKD4it2yTf7xWHGdy1rht8WH4ZcLc7JcyDtXxehLX4iWrM6sdlHgCdkfOvvnqtHoEZfCULZsb3ziLF4XgR4VoT8e+Li05dwpIhQeyVGQY7d5F838fE8JO+/ElNRQkxJyO8T7bImfqbBsq5gBStYwcIA/Bt7U162SmCp6QAAAABJRU5ErkJggg==';
  NetFunnel.gLogoText = '';
  NetFunnel.gLogoURL = '	http://www.netfunnel.co.kr';

  NetFunnel.gPreWaitData =
    'R0lGODlhKAAoALMMAPj4+MTExPT09NTU1NPT08XFxcbGxsLCwtXV1cPDw/X19b+/v////wAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQJBQAMACwAAAAAKAAoAAAEgJDJSau9OOvNu/9gKI5kaZ5oqq5sCwKIYSAABcv0qQRLvwQCyc73C5YGxB5BgkwuS4nk4iCJJqlQKdZKxJII0ifYaRLwfECJmZg2AQaFwqA2ecfnrry+dJvR80NoRi5NRE8uXD5eLYk9iyxjhnprgnt2cn97mpucnZ6foKGio3oRACH5BAkFAAwALAAAAAAoACgAAASAkMlJq7046827/2AojmRpnmiqrmwLAohhIAAFy/SpBEu/BALJzvcLlgbEHkGCTC5LieTiIIkmqVAp1krEkgjSJ9hpEvB8QImZmDYBBoXCoDZ5x+euvP4Vm9HzQ2hGLk1ETy5cPl4tiT2LLGOGemuCe3Zyf3uam5ydnp+goaKjnREAIfkECQUADAAsAAAAACgAKAAABICQyUmrvTjrzbv/YCiOZGmeaKqubAsCiGEgAAXL9KkES78EAsnO9wuWBsQeQYJMLkuJ5OIgiSapUCnWSsSSCNIn2GkS8HxAiZmYNgEGhcKgNnnH5668fnOb0fNDaEYuTURPLlw+Xi2JPYssY4Z6a4J7dnJ/e5qbnJ2en6ChoqOiEQAh+QQJBQAMACwAAAAAKAAoAAAEgJDJSau9OOvNu/9gKI5kaZ5oqq5sCwKIYSCAOynBoi+BYDOD3Y7wSwh1h+JxkbQRlkQJTEY7CXK7ngQn1JoAg0JhUJMEj1GX8dhUL9uk6azMeKJN3KyPce3uSWdCaWBiZCdrQnAsiDuKK3aCP316PwyEY3SVmpucnZ6foKGio6IRACH5BAkFAAwALAAAAAAoACgAAAR9kMlJq7046827/2AojmRpnmiqrmwLAohhIIA7KcGiL4FgM4PdjvBLCHWH4nGRtBGWRJsgt+v9GIBBoTCoXb/gDUxGo4xn3hJOaGWsq75S8BidC6Mk47GpFzbzS3yBJk90EoV3JlNscYtwJ1lbXWZaXGlhmJmam5ydnp+goBEAIfkECQUADAAsAAAAACgAKAAABH2QyUmrvTjrzbv/YCiOZGmeaKqubFsCiGEggDspwaIvgWAzg92O8EsIdYficZG0EZZEmyC36/0YgEGhMKhdv2ALTEajjGfeEk5oZayrvlLwGJ0LoyTjsakXNvNLfIEmT3QShXcmU2xxi3AnWVtdZlpcaWGYmZqbnJ2en6CgEQAh+QQJBQAMACwAAAAAKAAoAAAEfZDJSau9OOvNu/9gKI5kaZ5oqq5sqwKIYSCAOynBoi+BYDOD3Y7wSwh1h+JxkbQRlkSbILfr/RiAQaEwqF2/YGxs5pXAZLQTTmhlrKu+UvAYnQujJOOxqRc280t8gSZPdBKFdyZTbHGLcCdZW10UkVxlYZiZmpucnZ6foKARACH5BAUFAAwALAAAAAAoACgAAASBkMlJq7046827/2AojmRpnmiqrmyrAohhIIA7KcGiL4FgM4PdjvBLCHWH4nGRNMFktAlhSSzhhD2JILfLloLHKgMwKBQGNZPx2HSthe3WNDx5ztKlLdbHuHb5JWRmaBNgQmItbztxLIpIP3OHP3p/P2NlZ3iWm5ydnp+goaKjpD8RADs=';

  NetFunnel.gTextDecoration = false;
  NetFunnel.gFixelData = 'R0lGODlhAQABAJEAAAAAAP///////wAAACH5BAEAAAIALAAAAAABAAEAAAICVAEAOw==';
}
//EditZoneEnd ------------------------------------------------------------------

'undefined' != typeof window &&
  !(function (top) {
    function NetFunnel_init(e, t, n) {
      'use strict';
      return (
        (NetFunnel.gIsPopupStarted = !1),
        NetFunnel.gControl && (NetFunnel.gControl._resetScript(), (NetFunnel.gControl = null)),
        void 0 === n
          ? (n = NetFunnel.DefaultCallback)
          : (n.onSuccess || (n.onSuccess = NetFunnel.DefaultCallback.onSuccess),
            n.onContinued || (n.onContinued = NetFunnel.DefaultCallback.onContinued),
            n.onError || (n.onError = NetFunnel.DefaultCallback.onError),
            n.onStop || (n.onStop = NetFunnel.DefaultCallback.onStop),
            n.onBypass || (n.onBypass = NetFunnel.DefaultCallback.onBypass),
            n.onBlock || (n.onBlock = NetFunnel.DefaultCallback.onBlock),
            n.onExpressnumber || (n.onExpressnumber = NetFunnel.DefaultCallback.onExpressnumber),
            n.onIpBlock || (n.onIpBlock = NetFunnel.DefaultCallback.onIpBlock)),
        (NetFunnel.gControl = new NetFunnel.TsClient(t, n)),
        !0
      );
    }
    function NetFunnel_sendStop(e) {
      'use strict';
      try {
        return (
          NetFunnel.gControl || NetFunnel_init(),
          (NetFunnel.gAlreadyProc = 0),
          NetFunnel.gControl.setNext(e),
          NetFunnel.gControl.sendStop(),
          !0
        );
      } catch (e) {
        return !1;
      }
    }
    function NetFunnel_getTicketID(e, t, n) {
      'use strict';
      return (
        NetFunnel.gControl || NetFunnel_init(),
        (NetFunnel.gAlreadyProc = 0),
        NetFunnel.gControl.setNext(e),
        NetFunnel.gControl.getTicketID(t, n),
        !0
      );
    }
    function NetFunnel_chkEnter(e, t) {
      'use strict';
      if (
        (NetFunnel.gControl || NetFunnel_init(), void (NetFunnel.gAlreadyProc = 0) !== t && t.constructor == Object)
      ) {
        if (!(n = t.key)) return !1;
      } else {
        var n,
          t = new NetFunnel.Storage(2),
          i = t.getItem(NetFunnel.gControl.mConfig.cookie_id);
        if (null === i || '' == i) return !1;
        if (!(n = new NetFunnel.RetVal(i).getValue('key')))
          return (t = new NetFunnel.Storage(2)).removeItem(this.mConfig.cookie_id), !1;
      }
      return NetFunnel.gControl.setNext(e), NetFunnel.gControl.chkEnter(n), !0;
    }
    function NetFunnel_getTidChkEnter(e, t, n) {
      return (
        NetFunnel.gControl || NetFunnel_init(),
        (NetFunnel.gAlreadyProc = 0),
        NetFunnel.gControl.setNext(e),
        NetFunnel.gControl.getTidChkEnter(t, n),
        !0
      );
    }
    function NetFunnel_aliveNotice(e, t) {
      'use strict';
      try {
        NetFunnel.gControl || NetFunnel_init(), (NetFunnel.gAlreadyProc = 0);
        var n = '',
          i = '',
          o = '';
        if (void 0 !== t && t.constructor == Object) {
          if (!(n = t.key)) return !1;
          (i = t.ip), (o = t.port);
        } else {
          var r = new NetFunnel.Storage(2),
            s = r.getItem(NetFunnel.gControl.mConfig.cookie_id);
          if (null === s || '' == s) return !1;
          var a = new NetFunnel.RetVal(s);
          if (!(n = a.getValue('key'))) return r.removeItem(this.mConfig.cookie_id), !1;
          (i = a.getValue('ip')), (o = a.getValue('port'));
        }
        return NetFunnel.gControl.setNext(e), NetFunnel.gControl.aliveNotice(n, i, o), !0;
      } catch (e) {
        return !1;
      }
    }
    function NetFunnel_setComplete(e, t) {
      'use strict';
      NetFunnel.gControl || NetFunnel_init(), (NetFunnel.gAlreadyProc = 0), NetFunnel.gControl.setNext(e);
      var e = '',
        n = '',
        i = '';
      if (
        (NetFunnel.gPop &&
          (NetFunnel.gPop.hide(), NetFunnel.gPop.destroy(), delete NetFunnel.gPop, (NetFunnel.gPop = null)),
        void 0 !== t && t.constructor == Object)
      ) {
        if (!(e = t.key))
          return NetFunnel.gControl._sendError(NetFunnel.RTYPE_SET_COMPLETE, NetFunnel.kErrorSystem), !1;
        (n = t.ip), (i = t.port);
      } else {
        var t = new NetFunnel.Storage(2),
          o = t.getItem(NetFunnel.gControl.mConfig.cookie_id);
        if (null === o || '' == o)
          return NetFunnel.gControl._sendError(NetFunnel.RTYPE_SET_COMPLETE, NetFunnel.kErrorSystem), !1;
        var o = new NetFunnel.RetVal(o),
          r = o.getRetCode(),
          s = o.getReqType();
        if (
          r != NetFunnel.kSuccess &&
          r != NetFunnel.kTsBypass &&
          (s != NetFunnel.RTYPE_ALIVE_NOTICE || r != NetFunnel.kContinue)
        )
          return (
            (s = new NetFunnel.RetVal(NetFunnel.RTYPE_SET_COMPLETE + ':200:msg="Success"')),
            NetFunnel.gControl._showResultSetComplete(s),
            !0
          );
        if (!(e = o.getValue('key')))
          return (
            (t = new NetFunnel.Storage(2)).removeItem(NetFunnel.gControl.mConfig.cookie_id),
            NetFunnel.gControl._sendError(NetFunnel.RTYPE_SET_COMPLETE, NetFunnel.kErrorSystem),
            !1
          );
        (n = o.getValue('ip')), (i = o.getValue('port'));
      }
      return NetFunnel.gControl.setComplete(e, n, i), !0;
    }
    function NetFunnel_cookieExist() {
      return !!NetFunnel.gControl && NetFunnel.gControl.cookieExist();
    }
    function NetFunnel_isRunning() {
      return !!NetFunnel.gControl && NetFunnel.gControl.isRunning();
    }
    function NetFunnel_goForm(e, t, n) {
      'use strict';
      var i = null;
      if ('string' == typeof t) {
        if ('object' != typeof (i = document.getElementById(t)) || null === i) {
          var o = document.getElementsByName(t);
          if ('object' != typeof (i = o[0]) || null === i) return alert('[NetFUNNEL] Invalid input form'), !1;
        }
      } else {
        if ('object' != typeof t) return alert('[NetFUNNEL] Invalid input form'), !1;
        i = t;
      }
      return (
        'function' != typeof n &&
          (n = function (e, t) {
            return !1;
          }),
        NetFunnel_init(null, e),
        NetFunnel_getTidChkEnter({
          success: function (e, t) {
            null !== i && i.submit();
          },
          error: function (e, t) {
            null !== i && i.submit();
          },
          bypass: function (e, t) {
            null !== i && i.submit();
          },
          stop: n,
        }),
        !1
      );
    }
    function NetFunnel_goUrl(e, t, n) {
      'use strict';
      return (
        'string' != typeof t
          ? alert('[NetFUNNEL] Invalid input url')
          : ('function' != typeof n &&
              (n = function (e, t) {
                return !1;
              }),
            NetFunnel_init(null, e),
            NetFunnel_getTidChkEnter({
              success: t,
              error: t,
              bypass: t,
              stop: n,
            })),
        !1
      );
    }
    function NetFunnel_goFunc(e, t, n) {
      'use strict';
      return (
        'function' != typeof t
          ? alert('[NetFUNNEL] Invalid input function')
          : ('function' != typeof n &&
              (n = function (e, t) {
                return !1;
              }),
            NetFunnel_init(null, e),
            NetFunnel_getTidChkEnter({
              success: t,
              error: t,
              bypass: t,
              stop: n,
            })),
        !1
      );
    }
    function NetFunnel_goComplete(e, t) {
      'use strict';
      return (
        'function' != typeof t &&
          (t = function (e, t) {
            return !1;
          }),
        NetFunnel_init(null, e),
        NetFunnel_setComplete({
          success: t,
          error: t,
          bypass: t,
        }),
        !1
      );
    }
    function NetFunnel_goAliveNotice(e, t) {
      'use strict';
      return (
        'function' != typeof t &&
          (t = function (e, t) {
            return !1;
          }),
        NetFunnel_init(null, e),
        NetFunnel_aliveNotice({
          success: t,
          error: t,
          bypass: t,
        }),
        !1
      );
    }
    function NetFunnel_Action(e, t) {
      'use strict';
      var n = null,
        i = t.success,
        o = t.continued,
        r = t.stop,
        s = t.error,
        a = t.bypass,
        l = t.block,
        u = t.ipblock,
        p = t.expressnumber;
      return (
        'object' == typeof (i = void 0 === t.success ? t : i) && (n = i),
        void 0 === r &&
          (r = function (e, t) {
            return !1;
          }),
        void 0 === s && (s = i),
        void 0 === a && (a = i),
        void 0 === p && (p = i),
        NetFunnel_init(null, e),
        NetFunnel_getTidChkEnter(
          null === n
            ? {
                success: i,
                error: s,
                stop: r,
                bypass: a,
                block: l,
                ipblock: u,
                expressnumber: p,
                continued: o,
              }
            : {
                success: function (e, t) {
                  null !== n && n.submit();
                },
                error: function (e, t) {
                  null !== n && n.submit();
                },
                bypass: function (e, t) {
                  null !== n && n.submit();
                },
                expressnumber: function (e, t) {
                  null !== n && n.submit();
                },
                stop: r,
                block: l,
                ipblock: u,
                continued: o,
              }
        ),
        !1
      );
    }
    function NetFunnel_Complete(e, t) {
      'use strict';
      return (
        'function' != typeof t &&
          (t = function (e, t) {
            return !1;
          }),
        NetFunnel_init(null, e),
        NetFunnel_setComplete({
          success: t,
          error: t,
          bypass: t,
        }),
        !1
      );
    }
    function NetFunnel_AliveNotice(e, t) {
      'use strict';
      var n, i;
      return (
        NetFunnel_init(null, e),
        'function' == typeof t
          ? NetFunnel_aliveNotice({
              success: t,
              error: t,
              bypass: t,
              continued: t,
            })
          : 'object' == typeof t
          ? ((e = t.success),
            (n = t.continued),
            (i = t.stop),
            NetFunnel_aliveNotice({
              success: e,
              error: t.error,
              stop: i,
              bypass: t.bypass,
              block: t.block,
              ipblock: t.ipblock,
              expressnumber: t.expressnumber,
              continued: n,
            }))
          : NetFunnel_aliveNotice({
              success: (t = function (e, t) {
                return !1;
              }),
              error: t,
              bypass: t,
              continued: t,
            }),
        !1
      );
    }
    function DefaultCallback_onSuccess(e, t, n) {
      'use strict';
      var i, o;
      return (
        0 < navigator.userAgent.toLowerCase().indexOf('chrome') && NetFunnel.gPop
          ? ((i = n.getConfig('popup_target').document),
            ((o = document.createElement('IMG')).src = 'data:image/gif;base64,' + NetFunnel.gFixelData),
            (o.style.position = 'absolute'),
            (o.style.top = '-10px'),
            (o.style.left = '-10px'),
            (o.style.display = 'none'),
            (o.onload = o.onerror =
              function () {
                t.next(e, t), i.getElementsByTagName('body')[0].removeChild(o);
              }),
            i.getElementsByTagName('body')[0].appendChild(o))
          : t.next(e, t),
        !1
      );
    }
    (NetFunnel.RTYPE_NONE = 0),
      (NetFunnel.RTYPE_CHK_ENTER = 5002),
      (NetFunnel.RTYPE_ALIVE_NOTICE = 5003),
      (NetFunnel.RTYPE_SET_COMPLETE = 5004),
      (NetFunnel.RTYPE_GET_TID_CHK_ENTER = 5101),
      (NetFunnel.RTYPE_INIT = 5105),
      (NetFunnel.RTYPE_STOP = 5106),
      (NetFunnel.kSuccess = 200),
      (NetFunnel.kContinue = 201),
      (NetFunnel.kContinueDebug = 202),
      (NetFunnel.kTsBypass = 300),
      (NetFunnel.kTsBlock = 301),
      (NetFunnel.kTsIpBlock = 302),
      (NetFunnel.kTsExpressNumber = 303),
      (NetFunnel.kTsErrorNoUservice = 500),
      (NetFunnel.kTsErrorNoAction = 501),
      (NetFunnel.kTsErrorAComplete = 502),
      (NetFunnel.kTsErrorWrongServer = 503),
      (NetFunnel.kTsErrorTooRecreate = 504),
      (NetFunnel.kTsErrorNoKey = 505),
      (NetFunnel.kTsErrorInvalidID = 506),
      (NetFunnel.kTsErrorInvalidKey = 507),
      (NetFunnel.kTsErrorInvalidIdStr = 508),
      (NetFunnel.kTsErrorDuplicate = 509),
      (NetFunnel.kTsErrorDelAction = 510),
      (NetFunnel.kTsErrorUserviceExist = 511),
      (NetFunnel.kTsErrorActionExist = 512),
      (NetFunnel.kTsErrorLicenseOver = 513),
      (NetFunnel.kTsErrorSize = 514),
      (NetFunnel.kTsErrorNoUserAction = 515),
      (NetFunnel.kTsErrorTooBigKey = 516),
      (NetFunnel.kTsErrorInvalidIp = 517),
      (NetFunnel.kErrorAuth = 900),
      (NetFunnel.kErrorNotFound = 901),
      (NetFunnel.kErrorNoinit = 902),
      (NetFunnel.kErrorCode = 903),
      (NetFunnel.kErrorParam = 904),
      (NetFunnel.kErrorData = 905),
      (NetFunnel.kErrorUnknownType = 906),
      (NetFunnel.kErrorAlready = 907),
      (NetFunnel.kErrorService = 908),
      (NetFunnel.kErrorExecution = 909),
      (NetFunnel.kErrorSock = 920),
      (NetFunnel.kErrorSockSend = 921),
      (NetFunnel.kErrorSockRecv = 922),
      (NetFunnel.kErrorNotFoundLocalIP = 925),
      (NetFunnel.kErrorSockConnect = 926),
      (NetFunnel.kErrorNoConnect = 927),
      (NetFunnel.kErrorSockData = 928),
      (NetFunnel.kErrorIO = 991),
      (NetFunnel.kErrorArunning = 992),
      (NetFunnel.kErrorPermission = 993),
      (NetFunnel.kErrorExpiredTime = 994),
      (NetFunnel.kErrorOverCounter = 995),
      (NetFunnel.kErrorSecurity = 996),
      (NetFunnel.kErrorSystemStopping = 997),
      (NetFunnel.kErrorNotSupport = 998),
      (NetFunnel.kErrorSystem = 999),
      (NetFunnel.PS_N_RUNNING = 0),
      (NetFunnel.PS_RUNNING = 1),
      (NetFunnel.PS_CONTINUE = 2),
      (NetFunnel.PS_TIMEOUT = 3),
      (NetFunnel.PS_ERROR = 99),
      (NetFunnel.CONN_TIMEOUT_KEY = 'connection_timeout'),
      (NetFunnel.gControl = null),
      (NetFunnel.gShowtimeLimit = !1),
      (NetFunnel.gShowcntLimit = !1),
      (NetFunnel.gShownextLimit = !1),
      (NetFunnel.gSkinId = ''),
      (NetFunnel.gPopupTop = !1),
      (NetFunnel.gPopupLeft = !1),
      (NetFunnel.gTotWait = -1),
      (NetFunnel.gPrevWaitTime = -1),
      (NetFunnel.gLastSkinID = 'default'),
      (NetFunnel.gUseMobileUI = !1),
      (NetFunnel.gUseUnfocus = !1),
      (NetFunnel.gAlreadyProc = 0),
      (NetFunnel.gWaitPop = null),
      (NetFunnel.gIPBlockWaitCount = 0),
      (NetFunnel.gNWaitCount = 0),
      (NetFunnel.gNWaitTemp = 0),
      (NetFunnel.gReTimer = null),
      (NetFunnel.gDebugflag = !1),
      Function.prototype.bind ||
        (Function.prototype.bind = function (e) {
          if ('function' != typeof this)
            throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');
          function t() {
            return i.apply(this instanceof o && e ? this : e, n.concat(Array.prototype.slice.call(arguments)));
          }
          var n = Array.prototype.slice.call(arguments, 1),
            i = this,
            o = function () {};
          return (o.prototype = this.prototype), (t.prototype = new o()), t;
        }),
      (NetFunnel.Util = {
        makeDebugMsg: function (e, t, n, i, o) {
          var r = '\n',
            s = '       ',
            a = (1 == o && ((r = '<br>'), (s = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;')), 'Unknown'),
            l = 'Unkonwn Error';
          switch (t) {
            case NetFunnel.RTYPE_GET_TID:
              a = 'getTicketID';
              break;
            case NetFunnel.RTYPE_CHK_ENTER:
              a = 'chkEnter';
              break;
            case NetFunnel.RTYPE_ALIVE_NOTICE:
              a = 'aliveNotice';
              break;
            case NetFunnel.RTYPE_SET_COMPLETE:
              a = 'setComplete';
              break;
            case NetFunnel.RTYPE_GET_TID_CHK_ENTER:
              a = 'getTID+ChkEnter';
              break;
            case NetFunnel.RTYPE_INIT:
              a = 'Init';
              break;
            case NetFunnel.RTYPE_STOP:
              a = 'stop';
              break;
            default:
              a = 'Unknown';
          }
          switch (n) {
            case NetFunnel.kSuccess:
              l = 'Normal';
              break;
            case NetFunnel.kContinue:
              l = 'Continue';
              break;
            case NetFunnel.kContinueDebug:
              l = 'Debug Continue mode';
              break;
            case NetFunnel.kTsBypass:
              l = 'ServerSide Bypass';
              break;
            case NetFunnel.kTsBlock:
              l = 'ServerSide Block';
              break;
            case NetFunnel.kTsIpBlock:
              l = 'ServerSide Ip Block';
              break;
            case NetFunnel.kErrorSystem:
              l = 'System Error';
              break;
            case NetFunnel.kErrorSecurity:
              l = 'Security Error';
              break;
            case NetFunnel.kErrorIO:
              l = 'I/O Error';
              break;
            case NetFunnel.kErrorSockConnect:
              l = 'Connection Timeout';
              break;
            case NetFunnel.kErrorAlready:
              l = 'Already Running';
              break;
            case NetFunnel.kErrorNoinit:
              l = 'Init Error';
              break;
            case NetFunnel.E_INSERT:
              l = 'Insert Error';
              break;
            case NetFunnel.kErrorPermission:
              l = 'No Permission';
              break;
            case NetFunnel.kErrorExpiredTime:
              l = 'Key Expire';
              break;
            case NetFunnel.kErrorParam:
              l = 'Parameter Error';
              break;
            case NetFunnel.E_NOT_STARTED:
              l = 'No service time';
              break;
            case NetFunnel.kTsErrorNoUserAction:
              l = 'No action Error';
              break;
            default:
              l = 'Unknown Error';
          }
          var u,
            p =
              e +
              ' ' +
              r +
              r +
              '  - type : ' +
              a +
              ' (' +
              t +
              ')' +
              r +
              ' - Code : ' +
              l +
              ' (' +
              n +
              ')' +
              r +
              ' - Params' +
              r;
          for (u in i) p += s + u + ' ---\x3e ' + i[u] + r;
          return p;
        },
        goNextPage: function (e, t) {
          var n,
            i = e;
          for (n in t) i += '&' + n + '=' + t[n];
          document.location.href = i;
        },
        alertDebugMsg: function (e) {
          alert(e);
        },
        decodeBase64: function (e) {
          var t,
            n,
            i,
            o,
            r,
            s,
            a = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',
            l = '',
            u = 0;
          for (
            e = e.replace(/[^A-Za-z0-9+/=]/g, '');
            (i = a.indexOf(e.charAt(u++))),
              (t = ((15 & (o = a.indexOf(e.charAt(u++)))) << 4) | ((r = a.indexOf(e.charAt(u++))) >> 2)),
              (n = ((3 & r) << 6) | (s = a.indexOf(e.charAt(u++)))),
              (l += String.fromCharCode((i << 2) | (o >> 4))),
              64 != r && (l += String.fromCharCode(t)),
              64 != s && (l += String.fromCharCode(n)),
              u < e.length;

          );
          return l;
        },
        getParam: function (e) {
          e = e.replace(/[[]/, '\\[').replace(/[\]]/, '\\]');
          e = new RegExp('[\\?&]' + e + '=([^&#]*)').exec(document.location.href);
          return null === e ? '' : e[1];
        },
        isSmartPhone: function () {
          var e = [
            'iPhone',
            'iPod',
            'iPad',
            'BlakBerry',
            'Android',
            'WindowsCE',
            'LG',
            'MOT',
            'SAMSUNG',
            'SonyEricsson',
            'Nokia',
            'Webos',
            'Opera mini',
            'Opera mobi',
            'Iemobile',
          ];
          try {
            for (var t = 0; t < e.length; t++) if (null !== navigator.userAgent.match(e[t])) return !0;
          } catch (e) {}
          return !1;
        },
        calcStdDev: function (e, t) {
          if ('object' != typeof e) return !1;
          if (e.length < 2) return !1;
          (1 < t || t < 0) && (t = 0);
          for (var n = 0, i = 0, i = 0; i < e.length; i++) n += parseInt(e[i], 10);
          var o = n / e.length,
            r = 0;
          for (i = 0; i < e.length; i++) r += (parseInt(e[i], 10) - o) * (parseInt(e[i], 10) - o);
          return Math.sqrt(r / (e.length - t));
        },
        delFocus: function (e) {
          try {
            var t = document,
              n = (t = 'object' == typeof e && 'object' == typeof e.document ? e.document : t).getElementsByTagName(
                'body'
              )[0],
              i = t.createElement('div'),
              o =
                ((i.style.position = 'absolute'),
                (i.style.width = '0px'),
                (i.style.height = '0px'),
                (i.style.border = '0px'),
                (i.style.top = NetFunnel.PopupUtil.getScrollTop(t)),
                (i.style.left = NetFunnel.PopupUtil.getScrollLeft(t)),
                n.appendChild(i),
                i.focus(),
                i.parentNode);
            o && 'object' == typeof o && o.removeChild(i);
          } catch (e) {}
        },
        isVirtualWait: function (e) {
          return 'object' == typeof e && 'number' == typeof e.mprotect && 0 < e.mprotect;
        },
        getTimeStr: function (e, t, n, i, o) {
          var e = parseInt(e, 10),
            r = (void 0 === n && (n = ' '), void 0 === i && (i = !1), 0),
            s = 0,
            a = 0,
            l = 0,
            u = !1,
            p = !1,
            c = !1,
            h = !1,
            g = !1,
            d = (t = void 0 === t ? '%H시간 %M분 %S초' : t).match(/%[-]*[0-9]*[H|M|S]/g);
          for (l = 0; l < d.length; l++)
            'H' == (p = (u = d[l]).charAt(u.length - 1)) && (c = !0), 'M' == p && (h = !0), 'S' == p && (g = !0);
          1 == c && (s = Math.floor(e / 3600)),
            1 == h && (r = 1 == c ? Math.floor((e % 3600) / 60) : Math.floor(e / 60)),
            1 == g &&
              (0 == c && 0 == h ? (a = e) : 1 == h ? (a = e % 60) : 1 == c && 0 == h && (a = Math.floor(e % 3600)));
          for (var f = '', m = t.split(n), N = 0; N < m.length; N++) {
            for (var y = m[N], d = y.match(/%[-]*[0-9]*[H|M|S]/g), _ = !0, F = '', l = 0; d && l < d.length; l++) {
              var b = '',
                T = !1,
                v = '&nbsp;',
                S = !1,
                C = 0,
                p = (u = d[l]).charAt(u.length - 1);
              if (2 < u.length) {
                for (var E = '', k = !0, x = 1; x < u.length - 1; x++) {
                  var w = u[x];
                  '-' == w ? (S = !0) : (T = '0' == w && 1 == k ? !(k = !(v = '0')) : ((E += w), !0));
                }
                C = parseInt(E, 10);
              }
              var P = '';
              if (
                ('H' == p
                  ? (0 == s && (_ = !1), (P = '' + s))
                  : 'M' == p
                  ? (0 == r && (_ = !1), (P = '' + r))
                  : 'S' == p && (P = '' + a),
                T)
              ) {
                S && (b = P);
                for (var I = C - P.length, R = 0; R < I; R++) b += v;
                S || (b += P);
              } else b = P;
              (F += o
                ? b + '<span style="' + o + '">' + y.substr(u.length, y.length - 1) + '</span>'
                : y.replace(u, b)),
                l < 2 && (F += ' ');
            }
            (1 != i && 1 != _) || (f = 0 < f.length ? f + n + F : F);
          }
          return f;
        },
        getFrameWindowList: function (e) {
          for (var t = [], n = 0; n < top.frames.length; n++) {
            var i = top.frames[n];
            i !== e &&
              t.push({
                win: i,
                popup: null,
              });
          }
          return t;
        },
      }),
      (NetFunnel.BrowserDetect = {
        init: function () {
          (this.browser = this.searchString(this.dataBrowser) || 'An unknown browser'),
            (this.version =
              this.searchVersion(navigator.userAgent) ||
              this.searchVersion(navigator.appVersion) ||
              'an unknown version'),
            (this.OS = this.searchString(this.dataOS) || 'an unknown OS');
        },
        searchString: function (e) {
          for (var t = 0; t < e.length; t++) {
            var n = e[t].string,
              i = e[t].prop;
            if (((this.versionSearchString = e[t].versionSearch || e[t].identity), n)) {
              if (-1 != n.indexOf(e[t].subString)) return e[t].identity;
            } else if (i) return e[t].identity;
          }
          return '';
        },
        searchVersion: function (e) {
          var t = e.indexOf(this.versionSearchString);
          return -1 == t ? 0 : parseFloat(e.substring(t + this.versionSearchString.length + 1));
        },
        dataBrowser: [
          {
            string: navigator.userAgent,
            subString: 'Chrome',
            identity: 'Chrome',
          },
          {
            string: navigator.userAgent,
            subString: 'OmniWeb',
            versionSearch: 'OmniWeb/',
            identity: 'OmniWeb',
          },
          {
            string: navigator.vendor,
            subString: 'Apple',
            identity: 'Safari',
          },
          {
            prop: window.opera,
            identity: 'Opera',
          },
          {
            string: navigator.vendor,
            subString: 'iCab',
            identity: 'iCab',
          },
          {
            string: navigator.vendor,
            subString: 'KDE',
            identity: 'Konqueror',
          },
          {
            string: navigator.userAgent,
            subString: 'Firefox',
            identity: 'Firefox',
          },
          {
            string: navigator.vendor,
            subString: 'Camino',
            identity: 'Camino',
          },
          {
            string: navigator.userAgent,
            subString: 'Netscape',
            identity: 'Netscape',
          },
          {
            string: navigator.userAgent,
            subString: 'MSIE',
            identity: 'Explorer',
            versionSearch: 'MSIE',
          },
          {
            string: navigator.userAgent,
            subString: 'Gecko',
            identity: 'Mozilla',
            versionSearch: 'rv',
          },
          {
            string: navigator.userAgent,
            subString: 'Mozilla',
            identity: 'Netscape',
            versionSearch: 'Mozilla',
          },
        ],
        dataOS: [
          {
            string: navigator.platform,
            subString: 'Win',
            identity: 'Windows',
          },
          {
            string: navigator.platform,
            subString: 'Mac',
            identity: 'Mac',
          },
          {
            string: navigator.platform,
            subString: 'Linux',
            identity: 'Linux',
          },
        ],
      }),
      NetFunnel.BrowserDetect.init(),
      'Explorer' == NetFunnel.BrowserDetect.browser &&
        ('function' != typeof Array.push &&
          (Array.prototype.push = function () {
            for (var e = this.length >>> 0, t = 0; t < arguments.length; t++)
              (this[e] = arguments[t]), (e = (e + 1) >>> 0);
            return (this.length = e);
          }),
        'function' != typeof Array.pop) &&
        (Array.prototype.pop = function () {
          var e,
            t = this.length >>> 0;
          return t && ((e = this[--t]), delete this[t]), (this.length = t), e;
        }),
      (NetFunnel.getCommandStr = function (e, t) {
        var n = '',
          i = 0;
        switch (
          ('recv' == e
            ? (i = parseInt(t.substring(0, 4), 10))
            : 1 < (e = /opcode=([0-9]+)&/.exec(t)).length && (i = parseInt(e[1], 10)),
          i)
        ) {
          case 5101:
            n = 'getTidchkEnter';
            break;
          case 5002:
            n = 'chkEnter      ';
            break;
          case 5003:
            n = 'aliveNotice   ';
            break;
          case 5004:
            n = 'setComplete   ';
            break;
          default:
            n = 'Unknown       ';
        }
        return n;
      }),
      (NetFunnel.writeDebugMsg = function (e, t, n) {
        var i = new Date(),
          o = parseInt(i.getHours(), 10),
          r = parseInt(i.getMinutes(), 10),
          s = parseInt(i.getSeconds(), 10),
          a = '',
          o =
            (o < 10 && (a += '0'),
            r < 10 && (r += '0'),
            s < 10 && (s += '0'),
            (a = (a = a + (o + ':') + (r + ':')) + s + ('.' + parseInt(i.getMilliseconds(), 10))),
            ''),
          r = '',
          s = '',
          s =
            'recv' == t
              ? ((o = 'padding-left:1px;'),
                (r = '#9E9E9E;'),
                a + ' | Recv | <b>' + NetFunnel.getCommandStr(t, n) + '</b> | ')
              : ((o = 'margin-top:5px;'),
                (r = '#EEEEEE;'),
                a + ' | Send | <b>' + NetFunnel.getCommandStr(t, n) + '</b> | '),
          i =
            "<div onload='this.focus()' style='width:650;overflow:hidden;padding:1px;border:1px solid #eeeeee;margin:0px;font-size:10px;font-family:monospace;background-color:" +
            r +
            o +
            "'>" +
            s +
            n.substring(0, 50) +
            '</div>';
        e && e.document && e.document.body && ((a = e.document.body.innerHTML), (e.document.body.innerHTML = a + i));
      }),
      (NetFunnel.printDebugMsg = function (e, t) {
        (NetFunnel.debugWindow = window.open(
          '',
          'NetFunnel_debugWindow',
          'status=1,width=700,height=300,resizable=1,scrollbars=1'
        )),
          'object' == typeof NetFunnel.debugWindow && NetFunnel.writeDebugMsg(NetFunnel.debugWindow, e, t);
      }),
      (NetFunnel.Storage = function (e) {
        (this.html5Support = this.supportsHtml5Storage()), 'number' == typeof e && (this.type = e);
      }),
      (NetFunnel.Storage.prototype.supportsHtml5Storage = function () {
        try {
          return 'localStorage' in window && null !== window.localStorage;
        } catch (e) {
          return !1;
        }
      }),
      (NetFunnel.Storage.prototype.html5Support = !1),
      (NetFunnel.Storage.prototype.length = 0),
      (NetFunnel.Storage.prototype.type = 1),
      (NetFunnel.Storage.prototype.setStorageType = function (e) {
        this.type = e < 1 || 2 < e ? 1 : e;
      }),
      (NetFunnel.Storage.prototype.getStorage = function () {
        return 1 != this.type && 2 == this.type ? sessionStorage : localStorage;
      }),
      (NetFunnel.Storage.prototype.setItem = function (e, t, n, i, o) {
        try {
          return !this.html5Support || o || this.getStorage().setItem(e, t), NetFunnel.Cookie.set(e, t, n, i), !0;
        } catch (e) {
          return !1;
        }
      }),
      (NetFunnel.Storage.prototype.setItemStorageOnly = function (e, t, n, i) {
        try {
          return this.html5Support ? this.getStorage().setItem(e, t) : NetFunnel.Cookie.set(e, t, n, i), !0;
        } catch (e) {
          return !1;
        }
      }),
      (NetFunnel.Storage.prototype.getItem = function (e, t) {
        var n = !1;
        try {
          return (n =
            this.html5Support &&
            ((n =
              this.getStorage() && this.getStorage().getItem(e)
                ? this.getStorage()
                    .getItem(e)
                    .replace(/(?:\r\n|\r|\n)/g, '')
                : n) ||
              (null != t && 0 != t))
              ? n
              : NetFunnel.Cookie.get(e));
        } catch (e) {
          return !1;
        }
      }),
      (NetFunnel.Storage.prototype.removeItem = function (e, t) {
        try {
          return (this.html5Support && (this.getStorage().removeItem(e), t)) || NetFunnel.Cookie.del(e), !0;
        } catch (e) {
          return !1;
        }
      }),
      (NetFunnel.Storage.prototype.clear = function () {
        try {
          return this.html5Support && this.getStorage().clear(), !0;
        } catch (e) {
          return !1;
        }
      }),
      (NetFunnel.MProtect = function () {
        try {
          for (
            var e = new NetFunnel.Storage(),
              t = new Date().getTime(),
              n = e.getItem('NFMPT.data', !0),
              i = (null === n && (n = ''), e.getItem('NFMPT.stdData', !0)),
              o = (null === i && (i = ''), parseInt(e.getItem('NFMPT.lastTime', !0), 10)),
              r = ((!isNaN(o) && null !== o && '' != o) || (o = 0), parseInt(e.getItem('NFMPT.reqCnt', !0), 10)),
              s = ((!isNaN(r) && null !== r && '' != r) || (r = 0), []),
              a = [],
              l =
                ('' != n && (s = n.split(',')),
                '' != i && (a = i.split(',')),
                0 != o && ((s[s.length] = t - o), (a[a.length] = t - o)),
                (o = t),
                s.length - 1),
              u = 0;
            0 <= l && !((u += parseInt(s[l], 10)) > NetFunnel.MP_TIMELIMIT);
            l--
          );
          var p = a.length - NetFunnel.MP_DEVCNTLIMIT,
            c = (p < 0 && (p = 0), a.slice(p)),
            h = s.slice(l + 1),
            g =
              (e.setItemStorageOnly('NFMPT.data', h.join(',')),
              e.setItemStorageOnly('NFMPT.stdData', c.join(',')),
              e.setItemStorageOnly('NFMPT.lastTime', o + ''),
              e.setItemStorageOnly('NFMPT.reqCnt', ++r + ''),
              NetFunnel.Util.calcStdDev(c, 0));
          if (0 != g && g < NetFunnel.MP_DEVLIMIT) return 2;
          if (h.length < NetFunnel.MP_MINCOUNT) return 0;
          if (h.length + 1 > NetFunnel.MP_MAXREQLIMIT) return 1;
          if (r > NetFunnel.MP_REQONLYLIMIT) return e.setItemStorageOnly('NFMPT.reqCnt', '0'), 3;
        } catch (e) {}
        return 0;
      }),
      (NetFunnel.ProgressBar = function (e, t, n) {
        if (
          ((this._bar = null),
          (this._bar2 = null),
          (this._config = {}),
          (this._obj = 'string' == typeof e ? n.getElementById(e) : e),
          (this._config.interval = 50),
          (this._config.color = this._color),
          (this._config.bgcolor = this._bgcolor),
          (this._config.waitchk = 0),
          'object' == typeof t)
        )
          for (var i in t) this._config[i] = t[i];
        (this._tBody = n.createElement('div')),
          (this._tBody.style.width = '100%'),
          (this._tBody.style.height = '100%'),
          (this._tBody.style.borderRadius = parseInt(this._obj.style.height, 10) / 2 + 'px'),
          (this._tBody.style.overflow = 'hidden'),
          (this._tBody.style.backgroundColor = this._config.bgcolor),
          (this._tRun = n.createElement('div')),
          (this._tRun.style.width = '0%'),
          (this._tRun.style.height = '100%'),
          (this._tRun.style.borderRadius = parseInt(this._obj.style.height, 10) / 2 + 'px'),
          (this._tRun.style.backgroundColor = this._config.color),
          this._tBody.appendChild(this._tRun),
          this._obj.appendChild(this._tBody),
          (this.show = function () {
            this._obj.style.visibility = 'visible';
            var e = this;
            this._timer = setInterval(function () {
              e._action(0);
            }, this._config.interval);
          }),
          (this.hide = function () {
            (this._obj.style.visibility = 'hidden'), this._timer && (clearTimeout(this._timer), (this._timer = null));
          }),
          (this._action = function () {
            try {
              0 != this._config.waitchk &&
                parseInt(this._config.waitchk, 10) < parseInt(NetFunnel.gLastData.nwait, 10) &&
                (NetFunnel.gLastData.nwait = this._config.waitchk),
                NetFunnel.gTotWait <= 0 && (NetFunnel.gTotWait = NetFunnel.gLastData.nwait),
                parseInt(NetFunnel.gLastData.nwait, 10) > parseInt(NetFunnel.gTotWait, 10) &&
                  (NetFunnel.gTotWait = NetFunnel.gLastData.nwait);
              var e = 100 - (NetFunnel.gLastData.nwait / NetFunnel.gTotWait) * 100;
              100 < (e = e < 0 ? 0 : e) && (e = 100),
                (this._tRun.style.width = e + '%'),
                (this._config.waitchk = NetFunnel.gLastData.nwait);
            } catch (e) {}
            return !0;
          });
      }),
      (NetFunnel.ProgressBar.prototype._mmm = 0),
      (NetFunnel.ProgressBar.prototype._curr = 0),
      (NetFunnel.ProgressBar.prototype._direct = 0),
      (NetFunnel.ProgressBar.prototype._obj = null),
      (NetFunnel.ProgressBar.prototype._cells = null),
      (NetFunnel.ProgressBar.prototype._timer = null),
      (NetFunnel.ProgressBar.prototype._oTable = null),
      (NetFunnel.ProgressBar.prototype._config = null),
      (NetFunnel.ProgressBar.prototype._color = '#4F7FF9'),
      (NetFunnel.ProgressBar.prototype._bgcolor = '#CACACA'),
      (NetFunnel.Cookie = {
        set: function (e, t, n, i) {
          e = e + '=' + escape(t);
          void 0 !== n &&
            n.constructor == Number &&
            0 < n &&
            ((t = new Date()).setMinutes(t.getMinutes() + n), (e += ';expires=' + t.toGMTString())),
            void 0 !== i && i.constructor == String && '' != i
              ? (e += ';domain=' + i)
              : '' != NetFunnel.TS_COOKIE_DOMAIN && (e += ';domain=' + NetFunnel.TS_COOKIE_DOMAIN),
            -1 < location.protocol.indexOf('https') ? (e += ';path=/; samesite=none; secure;') : (e += ';path=/;'),
            (document.cookie = e);
        },
        del: function (e) {
          NetFunnel.Cookie.set(e, '', -1);
        },
        get: function (e) {
          if (0 < document.cookie.length) {
            var t = document.cookie.indexOf(e + '=');
            if (-1 != t)
              return (
                (t = t + e.length + 1),
                -1 == (e = document.cookie.indexOf(';', t)) && (e = document.cookie.length),
                unescape(document.cookie.substring(t, e).replace(/(?:\r\n|\r|\n)/g, ''))
              );
          }
          return '';
        },
      }),
      (NetFunnel.getUrlParameters = function (e) {
        if ('string' != typeof e || '' == e) return '';
        var t = '',
          n = document.location.href;
        if (-1 < n.indexOf('?'))
          for (var i = n.substr(n.indexOf('?')).split('&'), o = 0; o < i.length; o++)
            if (-1 < i[o].indexOf(e + '=')) {
              var r = i[o].indexOf(e + '=') + e.length + 1,
                t = i[o].substr(r);
              break;
            }
        return unescape(t);
      }),
      (NetFunnel.gPop = null),
      (NetFunnel.gTimer = null),
      (NetFunnel.gLastData = null),
      (NetFunnel.countdown_stop = function () {
        try {
          NetFunnel.Util.isVirtualWait(NetFunnel.gLastData) ||
            (NetFunnel.gControl.fireEvent(null, NetFunnel.gControl, 'onStop', {
              next: NetFunnel.gControl.next.stop,
            }),
            NetFunnel_sendStop(),
            NetFunnel.gPop &&
              (NetFunnel.gPop.hide(), NetFunnel.gPop.destroy(), delete NetFunnel.gPop, (NetFunnel.gPop = null)),
            1 == NetFunnel.gControl.getConfig('use_frame_block') &&
              NetFunnel.PopupUtil.hideBlockList(NetFunnel.gControl.getConfig('frame_block_list')));
        } catch (e) {}
      }),
      (NetFunnel.countdown = function () {
        if (NetFunnel.gLastData && 0 <= NetFunnel.gLastData.time_left && NetFunnel.gPop) {
          var tTime = NetFunnel.gPop.getObj('NetFunnel_Loading_Popup_TimeLeft'),
            tCount = NetFunnel.gPop.getObj('NetFunnel_Loading_Popup_Count'),
            tNext = NetFunnel.gPop.getObj('NetFunnel_Loading_Popup_NextCnt'),
            numWithCommas =
              (0 != this._gNWaitView &&
                parseInt(this._gNWaitView, 10) < parseInt(NetFunnel.gLastData.nwait, 10) &&
                (NetFunnel.gLastData.nwait = this._gNWaitView),
              (this._gNWaitView = NetFunnel.gLastData.nwait),
              function (e) {
                return e.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
              }),
            tformat = '',
            tformatArr = null,
            shownextLimit = 0,
            showcntLimit = 0,
            showtimeLimit;
          if (
            (tCount &&
              ((showcntLimit = NetFunnel.gControl.getConfig('showcnt_limit')),
              0 < showcntLimit && NetFunnel.gLastData.nwait > showcntLimit
                ? ((tformat = tCount.className),
                  0 < tformat.length ? (tCount.innerHTML = tformat) : (tCount.innerHTML = NetFunnel.TS_LIMIT_TEXT))
                : (tCount.innerHTML = String(numWithCommas(NetFunnel.gLastData.nwait)))),
            tNext &&
              ((shownextLimit = NetFunnel.gControl.getConfig('shownext_limit')),
              null == NetFunnel.gLastData.nnext
                ? (tNext.innerHTML = '0')
                : 0 < shownextLimit && NetFunnel.gLastData.nnext > shownextLimit
                ? ((tformat = tNext.className),
                  0 < tformat.length ? (tNext.innerHTML = tformat) : (tNext.innerHTML = NetFunnel.TS_LIMIT_TEXT))
                : (tNext.innerHTML = String(numWithCommas(NetFunnel.gLastData.nnext)))),
            tTime &&
              ((showtimeLimit = NetFunnel.gControl.getConfig('showtime_limit')),
              0 < showtimeLimit && NetFunnel.gLastData.real_time_left > showtimeLimit
                ? ((tformat = tTime.className),
                  (tformatArr = tformat.split('^')),
                  5 <= tTime.innerHTML.length ? (tTime.innerHTML = '.') : (tTime.innerHTML += '.'))
                : ((tformat = tTime.className),
                  0 < tformat.length
                    ? ((tformatArr = tformat.split('^')),
                      (tTime.innerHTML = NetFunnel.Util.getTimeStr(
                        NetFunnel.gLastData.real_time_left,
                        tformatArr[0],
                        tformatArr[1],
                        eval(tformatArr[2]),
                        tformatArr[3]
                      )))
                    : (tTime.innerHTML = NetFunnel.Util.getTimeStr(NetFunnel.gLastData.real_time_left)))),
            NetFunnel.gTextDecoration)
          )
            try {
              'object' == typeof tTime &&
                ('none' == tTime.style.textDecoration
                  ? (tTime.style.textDecoration = 'underline')
                  : (tTime.style.textDecoration = 'none')),
                'object' == typeof tNext &&
                  ('none' == tNext.style.textDecoration
                    ? (tNext.style.textDecoration = 'underline')
                    : (tNext.style.textDecoration = 'none')),
                'object' == typeof tCount &&
                  ('none' == tCount.style.textDecoration
                    ? (tCount.style.textDecoration = 'underline')
                    : (tCount.style.textDecoration = 'none'));
            } catch (e) {}
        }
        var leftPerc, skinObj, self;
        NetFunnel.gLastData.time_left <= 0 && NetFunnel.gTimer
          ? NetFunnel.gPop
          : ((leftPerc = 0),
            (skinObj = NetFunnel.SkinUtil.get(NetFunnel.gSkinId, NetFunnel.Util.isSmartPhone())),
            (self =
              ('function' == typeof skinObj.updateCallback &&
                ((leftPerc =
                  parseInt(NetFunnel.gTotWait, 10) <= 0
                    ? 0
                    : (parseInt(NetFunnel.gTotWait, 10) < parseInt(NetFunnel.gLastData.nwait, 10) &&
                        (NetFunnel.gTotWait = parseInt(NetFunnel.gLastData.nwait, 10)),
                      parseInt((100 * (NetFunnel.gTotWait - NetFunnel.gLastData.nwait)) / NetFunnel.gTotWait, 10))),
                skinObj.updateCallback(
                  leftPerc,
                  NetFunnel.gLastData.nwait,
                  NetFunnel.gTotWait,
                  NetFunnel.gLastData.real_time_left,
                  !0
                )),
              NetFunnel.gLastData.time_left--,
              this)),
            (NetFunnel.gTimer = setTimeout(function () {
              self.countdown();
            }, 500)));
      }),
      (NetFunnel.SkinUtil = {
        prevID: '',
        add: function (e, t, n) {
          'use strict';
          try {
            return 'string' != typeof e || '' == e
              ? !1
              : 'object' == typeof t &&
                  (('string' == typeof n && '' != n) || (n = 'normal'),
                  'object' != typeof NetFunnel.Skin[e] && (NetFunnel.Skin[e] = {}),
                  (NetFunnel.Skin[e][n] = t),
                  (NetFunnel.gLastSkinID = e),
                  !0);
          } catch (e) {
            return !1;
          }
        },
        get: function (e, t) {
          'use strict';
          try {
            ('string' == typeof e && '' != e) || (e = NetFunnel.gLastSkinID);
            var n = 'normal';
            return (
              1 == NetFunnel.gUseMobileUI && 1 == t && (n = 'mobile'),
              'object' == typeof NetFunnel.Skin[e] && 'object' == typeof NetFunnel.Skin[e][n]
                ? NetFunnel.Skin[e][n]
                : ('' != NetFunnel.TS_SKIN_ID &&
                  NetFunnel.TS_SKIN_ID != e &&
                  'object' == typeof NetFunnel.Skin[NetFunnel.TS_SKIN_ID] &&
                  'object' == typeof NetFunnel.Skin[NetFunnel.TS_SKIN_ID][n]
                    ? NetFunnel.Skin[NetFunnel.TS_SKIN_ID]
                    : NetFunnel.Skin.default)[n]
            );
          } catch (e) {}
          return NetFunnel.Skin.default.normal;
        },
      }),
      (NetFunnel.mtstr =
        ' <div id="NetFunnel_Skin_Top" style="background-color:#ffffff; width:290px; height:280px; font-family:\'Noto Sans KR\', sans-serif !important;">      <div style="padding: 10px 10px 0px 20px;">          <div style="padding-top:5px; padding-right:5px; line-height:25px;">              <span style="text-align: left;"><a href="' +
        NetFunnel.gLogoURL +
        '" target="_blank" style="cursor:pointer;text-decoration:none;">'),
      ('Explorer' == NetFunnel.BrowserDetect.browser && '6' == NetFunnel.BrowserDetect.version) ||
      '' == NetFunnel.gLogoData
        ? (NetFunnel.mtstr += '<b style="font-size:12px !important;">' + NetFunnel.gLogoText + '</b></a>')
        : (NetFunnel.mtstr +=
            '<b style="font-size:12px !important;">' +
            NetFunnel.gLogoText +
            '</b><img style="width:50px; height:25px; color:black; font-size:11px !important;" border=0 src="data:image/gif;base64,' +
            NetFunnel.gLogoData +
            '" ></a>'),
      (NetFunnel.mtstr +=
        '</span>              <b style="text-align:right;"><span id="NetFunnel_Loding_Popup_Debug_Alerts" style="color:#ff0000;"></span></b>          </div>      </div>      <div style="padding-top:0px; padding-left:5px; padding-right:5px; line-height: initial;">          <div style="box-sizing:initial; text-align:center; ">              <b style="font-size:16px !important; color:#525252;font-family:\'Noto Sans KR\', sans-serif !important;">서비스 <span style="color:#4F7FF9;">접속대기 중</span>입니다.</b>          </div>          <div style="box-sizing:initial;text-align:center;font-size:15px !important;color:#525252;padding-top:4px;white-space:nowrap; text-overflow:ellipsis; overflow:hidden;font-family:\'Noto Sans KR\', sans-serif !important;">              <b>예상대기시간 :</b>                  <span id="NetFunnel_Loading_Popup_TimeLeft" class="%H시간 %M분 %02S초^ ^false^font-size:15px !important;color:#525252;" style="color: #4F7FF9; font-size: 21px !important;"></span>          </div>          <div style="margin:auto; box-sizing: initial; padding-top: 6px; padding-bottom: 6px; width:190px; height:8px; visibility: visible;" id="NetFunnel_Loading_Popup_Progressbar"></div>          <div style="box-sizing:initial; width:100%; padding-bottom:8px; overflow:hidden; color:#6C6C6C; text-align:center; font-size:12px !important;">              <div style="padding-left:5px">                  <div style="box-sizing:initial;text-align:center;padding:3px;padding-top:10px;white-space:nowrap; text-overflow:ellipsis; overflow:hidden;font-size:11px !important;font-weight:normal !important;font-family:\'Noto Sans KR\', sans-serif !important;">고객님 앞에                      <span style="color:#00BF08; font-size:11px !important; font-weight: bold !important;">                          <span id="NetFunnel_Loading_Popup_Count" class="' +
        NetFunnel.TS_LIMIT_TEXT +
        '"></span><span style="font-weight:normal !important;font-size:11px !important;">명</span>                     </span>                      의 대기자가 있습니다.                  </div>                  <div style="padding:1px;font-size:11px !important;">현재 접속 사용자가 많아 대기 중이며, </div>                  <div style="padding:1px;font-size:11px !important;">잠시만 기다리시면 </div>                  <div style="padding:1px;font-size:11px !important;">서비스로 자동 접속 됩니다.</div>                  <div style="padding-top:10px;">                      <div id="NetFunnel_Countdown_Stop" style="position:relative;box-sizing:initial; cursor:pointer; margin:auto; width:40px; height:25px; border:1px solid #e8e8e8; padding-left:15px; line-height:22px;font-size:11px !important;">                          <div class="NetFunnel_stop_x" style="position:absolute; width:25px; height:25px; top:0; left:0; color:#CCC;"></div>                     중지</div>                      </div>                  <div style="padding-top:5px;font-size:11px !important;">                      재 접속하시면 대기시간이 더 길어집니다. </div>              </div>          </div>          <div style="height:5px;"></div>      </div>      <style>.NetFunnel_stop_x:after{content:\'\\d7\'; font-size:14px !important;}</style>  </div> '),
      NetFunnel.SkinUtil.add(
        'default',
        {
          htmlStr: NetFunnel.mtstr,
        },
        'mobile'
      ),
      (NetFunnel.tstr =
        ' <div id="NetFunnel_Skin_Top" style="background-color:#ffffff; width:438px; height:376px; font-family:\'Noto Sans KR\', sans-serif;">      <div style="padding: 10px 10px 0px 20px;">          <div style="padding-top:5px; padding-right:5px; font-size:10px !important;">              <span style="text-align: left;"><a href="' +
        NetFunnel.gLogoURL +
        '" target="_blank" style="cursor:pointer;text-decoration:none;">'),
      ('Explorer' == NetFunnel.BrowserDetect.browser && '6' == NetFunnel.BrowserDetect.version) ||
      '' == NetFunnel.gLogoData
        ? (NetFunnel.tstr += '<b style="font-size:12px !important;">' + NetFunnel.gLogoText + '</b></a>')
        : (NetFunnel.tstr +=
            '<b style="font-size:12px !important;">' +
            NetFunnel.gLogoText +
            '</b><img style="width:65px; height:30px; color:black; font-size:11px !important;" border=0 src="data:image/gif;base64,' +
            NetFunnel.gLogoData +
            '" ></a>'),
      (NetFunnel.tstr +=
        '</span>              <b style="text-align:right;"><span id="NetFunnel_Loding_Popup_Debug_Alerts" style="color:#ff0000;"></span></b>          </div>      </div>      <div style="padding-top:0px; padding-left:5px; padding-right:5px; line-height: initial !important;">          <div style="box-sizing:initial; text-align:center; font-size:21px !important; color:#525252;">              <b>서비스 <span style="color:#4F7FF9;">접속대기 중</span>입니다.</b>          </div>          <div style="box-sizing:initial;text-align:center;font-size:18px !important;color:#525252;padding-top:4px; white-space:nowrap; text-overflow:ellipsis; overflow:hidden;">              <b>예상대기시간 :</b>                  <span id="NetFunnel_Loading_Popup_TimeLeft" class="%H시간 %M분 %02S초^ ^false^font-size:18px !important;color:#525252;" style="color: #4F7FF9; font-size: 32px !important;"></span>          </div>          <div style="margin:auto; box-sizing: initial; padding-top: 6px; padding-bottom: 6px; width:270px; height:8px; visibility: visible;" id="NetFunnel_Loading_Popup_Progressbar"></div>          <div style="box-sizing:initial; width:100%; padding-bottom:8px; overflow:hidden; color:#6C6C6C; text-align:center; ">              <div style="padding-left:5px">                  <div style="box-sizing:initial;font-size:14px !important;text-align:center;padding:3px;padding-top:10px;white-space:nowrap; text-overflow:ellipsis; overflow:hidden;">고객님 앞에                      <span style="color:#00BF08; font-size:24px !important; font-weight: bold;">                          <span id="NetFunnel_Loading_Popup_Count" class="' +
        NetFunnel.TS_LIMIT_TEXT +
        '"></span><span style="font-weight:normal;font-size:14px !important;">명</span>                     </span>                     , 뒤에                      <b>                          <span style="color:#00BF08;  font-weight: bold;">                              <span id="NetFunnel_Loading_Popup_NextCnt" class="' +
        NetFunnel.TS_LIMIT_TEXT +
        '"></span><span style="font-weight:normal;font-size:14px !important;">명</span>                         </span>                      </b>                      의 대기자가 있습니다.                  </div>                  <div style="box-sizing:initial;padding:3px;font-size:14px !important;">현재 접속 사용자가 많아 대기 중이며, 잠시만 기다리시면 </div>                  <div style="box-sizing:initial;padding:3px;font-size:14px !important;">서비스로 자동 접속 됩니다.</div>                  <div style="box-sizing:initial;padding-top:25px;font-size:14px !important;">                      <div id="NetFunnel_Countdown_Stop" style="box-sizing:initial; position:relative; cursor:pointer; margin:auto; width:50px; height:30px; border:1px solid #e8e8e8;padding-left:15px;line-height:27px;font-size:14px !important;">                          <div class="NetFunnel_stop_x" style="position:absolute; width:30px; height:30px; top:0; left:0; color:#CCC;"></div>                     중지</div>                      </div>                  <div style="box-sizing:initial;padding-top:10px;font-size:14px !important;">                      재 접속하시면 대기시간이 더 길어집니다. </div>              </div>          </div>          <div style="height:5px;"></div>      </div>      <style>.NetFunnel_stop_x:after{content:\'\\d7\'; font-size:17px !important; line-height:27px !important;}#NetFunnel_Countdown_Stop:hover{background-color:#f7f7f7;}</style>  </div> '),
      NetFunnel.SkinUtil.add(
        'default',
        {
          htmlStr: NetFunnel.tstr,
        },
        'normal'
      ),
      (NetFunnel.PopupSetup = function (e, t, n) {
        (null !== n && '' != n) || (n = NetFunnel.gSkinId);
        n = NetFunnel.SkinUtil.get(n, NetFunnel.Util.isSmartPhone());
        'vcontinue' === e && ((t.data.nwait = 1e6), (t.data.ttl = '2'), (t.data.tps = 30)),
          'alert' != e &&
            'object' == typeof t &&
            ((NetFunnel.gLastData = t.data),
            (NetFunnel.gLastData.time_left = parseInt(t.data.ttl, 10)),
            (NetFunnel.gLastData.tps = parseInt(t.data.tps, 10)),
            0 == NetFunnel.gLastData.tps && (NetFunnel.gLastData.tps = 1),
            (NetFunnel.gLastData.real_time_left = Math.round(parseInt(t.data.nwait, 10) / NetFunnel.gLastData.tps)),
            NetFunnel.gLastData.real_time_left < 1 && (NetFunnel.gLastData.real_time_left = 1),
            -1 < NetFunnel.gPrevWaitTime &&
              NetFunnel.gLastData.real_time_left > NetFunnel.gPrevWaitTime &&
              (NetFunnel.gLastData.real_time_left = NetFunnel.gPrevWaitTime),
            (NetFunnel.gPrevWaitTime = NetFunnel.gLastData.real_time_left),
            NetFunnel.gTotWait < 0) &&
            (NetFunnel.gTotWait = NetFunnel.gLastData.nwait),
          NetFunnel.gPop ||
            ((NetFunnel.gPop = new NetFunnel.Popup(
              n.htmlStr,
              NetFunnel.gPopupTop,
              NetFunnel.gPopupLeft,
              NetFunnel.gControl.getConfig('popup_target'),
              !1,
              !1,
              NetFunnel.gControl.getConfig('popup_zindex')
            )),
            'function' == typeof n.prepareCallback && n.prepareCallback(),
            (this._gNWaitView = 0)),
          NetFunnel.gPop.show();
        NetFunnel.gPop.getObj('NetFunnel_Loding_Popup_Debug_Alerts') &&
          (NetFunnel.gDebugflag
            ? (NetFunnel.gPop.getObj('NetFunnel_Loding_Popup_Debug_Alerts').innerHTML = ' Debug Mode ')
            : (NetFunnel.gPop.getObj('NetFunnel_Loding_Popup_Debug_Alerts').innerHTML = '')),
          1 == NetFunnel.gControl.getConfig('use_frame_block') &&
            NetFunnel.PopupUtil.showBlockList(NetFunnel.gControl.getConfig('frame_block_list')),
          'alert' != e && NetFunnel.countdown();
      }),
      (NetFunnel.DefaultCallback = {
        onSuccess: function (e, t, n) {
          NetFunnel.gTimer && clearTimeout(NetFunnel.gTimer),
            NetFunnel.gPop &&
              !n.getConfig('success_popup_visibility') &&
              (NetFunnel.gPop.hide(), NetFunnel.gPop.destroy(), delete NetFunnel.gPop, (NetFunnel.gPop = null)),
            1 == n.getConfig('use_frame_block') && NetFunnel.PopupUtil.hideBlockList(n.getConfig('frame_block_list')),
            'string' == typeof t.next && '' != t.next
              ? (document.location.href = t.next)
              : 'function' == typeof t.next && DefaultCallback_onSuccess(e, t, n);
        },
        onContinued: function (e, t) {
          'string' == typeof t.next
            ? (document.location.href = t.next)
            : ('function' == typeof t.next && 0 == t.next(e, t)) ||
              (t.rtype != NetFunnel.RTYPE_CHK_ENTER && t.rtype != NetFunnel.RTYPE_GET_TID_CHK_ENTER) ||
              (NetFunnel.gTimer && clearTimeout(NetFunnel.gTimer),
              NetFunnel.PopupSetup('continue', t, NetFunnel.gSkinId));
        },
        onError: function (e, t, n) {
          NetFunnel.gPop &&
            (NetFunnel.gPop.hide(), NetFunnel.gPop.destroy(), delete NetFunnel.gPop, (NetFunnel.gPop = null)),
            1 == n.getConfig('use_frame_block') && NetFunnel.PopupUtil.hideBlockList(n.getConfig('frame_block_list')),
            'string' == typeof t.next && '' != t.next
              ? (document.location.href = t.next)
              : 'function' == typeof t.next && t.next(e, t);
        },
        onStop: function (e, t) {
          'string' == typeof t.next && '' != t.next
            ? (document.location.href = t.next)
            : 'function' == typeof t.next && t.next(e, t);
        },
        onBypass: function (e, t, n) {
          NetFunnel.gTimer && clearTimeout(NetFunnel.gTimer),
            NetFunnel.gPop &&
              (NetFunnel.gPop.hide(), NetFunnel.gPop.destroy(), delete NetFunnel.gPop, (NetFunnel.gPop = null)),
            1 == n.getConfig('use_frame_block') && NetFunnel.PopupUtil.hideBlockList(n.getConfig('frame_block_list')),
            'string' == typeof t.next && '' != t.next
              ? (document.location.href = t.next)
              : 'function' == typeof t.next && t.next(e, t);
        },
        onExpressnumber: function (e, t, n) {
          NetFunnel.gTimer && clearTimeout(NetFunnel.gTimer),
            NetFunnel.gPop &&
              (NetFunnel.gPop.hide(), NetFunnel.gPop.destroy(), delete NetFunnel.gPop, (NetFunnel.gPop = null)),
            1 == n.getConfig('use_frame_block') && NetFunnel.PopupUtil.hideBlockList(n.getConfig('frame_block_list')),
            'string' == typeof t.next && '' != t.next
              ? (document.location.href = t.next)
              : 'function' == typeof t.next && t.next(e, t);
        },
        onBlock: function (e, t, n) {
          NetFunnel.gTimer && clearTimeout(NetFunnel.gTimer),
            NetFunnel.gPop &&
              (NetFunnel.gPop.hide(), NetFunnel.gPop.destroy(), delete NetFunnel.gPop, (NetFunnel.gPop = null)),
            'string' == typeof t.next && '' != t.next
              ? (document.location.href = t.next)
              : ('function' == typeof t.next && 0 == t.next(e, t)) ||
                ('string' != typeof n.getConfig('block_url') || '' == n.getConfig('block_url')
                  ? '' == n.getConfig('block_msg') || 'string' != typeof n.getConfig('block_msg')
                    ? alert('[NetFUNNEL]Service Block!')
                    : alert(n.getConfig('block_msg'))
                  : (document.location.href = n.getConfig('block_url')));
        },
        onIpBlock: function (e, t) {
          'string' == typeof t.next
            ? (document.location.href = t.next)
            : ('function' == typeof t.next && 0 == t.next(e, t)) ||
              (NetFunnel.gTimer && clearTimeout(NetFunnel.gTimer),
              NetFunnel.PopupSetup('vcontinue', t, NetFunnel.gSkinId));
        },
      }),
      (NetFunnel.Event = function () {
        (this.events = []), (this.builtinEvts = []);
      }),
      (NetFunnel.Event.prototype.getActionIdx = function (e, t, n, i) {
        if (e && t) {
          var o = this.events[e][t];
          if (!o) return -1;
          for (var r = o.length - 1; 0 <= r; r--) if (o[r].action == n && o[r].binding == i) return r;
        }
        return -1;
      }),
      (NetFunnel.Event.prototype.addListener = function (e, t, n, i) {
        var o;
        this.events[e]
          ? this.events[e][t]
            ? -1 == this.getActionIdx(e, t, n, i) &&
              ((o = this.events[e][t])[o.length] = {
                action: n,
                binding: i,
              })
            : ((this.events[e][t] = []),
              (this.events[e][t][0] = {
                action: n,
                binding: i,
              }))
          : ((this.events[e] = []),
            (this.events[e][t] = []),
            (this.events[e][t][0] = {
              action: n,
              binding: i,
            }));
      }),
      (NetFunnel.Event.prototype.removeListener = function (e, t, n, i) {
        this.events[e] &&
          this.events[e][t] &&
          0 <= (n = this.actionExists(e, t, n, i)) &&
          this.events[e][t].splice(n, 1);
      }),
      (NetFunnel.Event.prototype.fireEvent = function (e, t, n, i) {
        if (((e = e || window.event), t && this.events)) {
          var o = this.events[t];
          if (o) {
            var r = o[n];
            if (r)
              for (var s = 0; r.length > s; s++) {
                var a = r[s].action;
                (a = r[s].binding ? a.bind(r[s].binding) : a)(e, i, t);
              }
          }
        }
      }),
      (NetFunnel.gPopup = []),
      (NetFunnel.PopupUtil = {
        getViewportHeight: function (e, t) {
          return e.innerHeight != e.undefined
            ? e.innerHeight
            : 'CSS1Compat' == t.compatMode
            ? t.documentElement.clientHeight
            : t.body
            ? t.body.clientHeight
            : e.undefined;
        },
        getViewportWidth: function (e, t) {
          return e.innerWidth != e.undefined
            ? e.innerWidth
            : 'CSS1Compat' == t.compatMode
            ? t.documentElement.clientWidth
            : t.body
            ? t.body.clientWidth
            : 0;
        },
        getScrollTop: function (e) {
          return (
            e.pageYOffset ||
            (e.documentElement && 'number' == typeof e.documentElement.scrollTop
              ? e.documentElement.scrollTop
              : e.body
              ? e.body.scrollTop
              : 0)
          );
        },
        getScrollLeft: function (e) {
          return (
            e.pageXOffset ||
            (e.documentElement && 'number' == typeof e.documentElement.scrollLeft
              ? e.documentElement.scrollLeft
              : e.body
              ? e.body.scrollLeft
              : 0)
          );
        },
        resizePopup: function () {
          for (var e = 0; NetFunnel.gPopup.length > e; e++) NetFunnel.gPopup[e]._centerPopWin();
        },
        getObjWidth: function (e) {
          return e
            ? parseInt(e.style.width, 10) > parseInt(e.offsetWidth, 10)
              ? parseInt(e.style.width, 10)
              : e.offsetWidth
            : 0;
        },
        getObjHeight: function (e) {
          return e
            ? parseInt(e.style.height, 10) > parseInt(e.offsetHeight, 10)
              ? parseInt(e.style.height, 10)
              : e.offsetHeight
            : 0;
        },
        showBlockList: function (e) {
          for (var t = 0; t < e.length; t++)
            try {
              var n = e[t];
              (n.popup = new NetFunnel.Popup(
                '',
                NetFunnel.gPopupTop,
                NetFunnel.gPopupLeft,
                n.win,
                !1,
                !1,
                NetFunnel.gControl.getConfig('popup_zindex')
              )),
                n.popup.show();
            } catch (e) {}
        },
        hideBlockList: function (e) {
          for (var t = 0; t < e.length; t++)
            try {
              var n = e[t];
              n.popup && (n.popup.hide(), n.popup.destroy(), delete n.popup, (n.popup = null));
            } catch (e) {}
        },
        hideWaitPopup: function () {
          'object' == typeof NetFunnel &&
            NetFunnel.gWaitPop &&
            (NetFunnel.gWaitPop.hide(), NetFunnel.gWaitPop.destroy(), (NetFunnel.gWaitPop = null));
        },
        showWaitPopup: function () {
          var e;
          'object' == typeof NetFunnel &&
            ((e =
              '<div style="padding:2px;border:1px solid darkgray;">                  <table>                      <tr>'),
            'Explorer' == NetFunnel.BrowserDetect.browser && '6' == NetFunnel.BrowserDetect.version
              ? (e += '<td></td>')
              : (e += '<td><img style="" border=0 src="data:image/gif;base64,' + NetFunnel.gPreWaitData + '" ></td>'),
            (NetFunnel.gWaitPop = new NetFunnel.Popup(
              (e +=
                '\t<td style="valign:middle;font-size:9pt">wait...</td>                      </tr>                  </table>              </div>'),
              !1,
              !1,
              NetFunnel.gControl,
              !0,
              'NetFunnel_Waiting_Popup',
              NetFunnel.gControl.getConfig('popup_zindex')
            )),
            NetFunnel.gWaitPop.show());
        },
        getDocumentEntireHeight: function (e) {
          var t = e.body,
            e = e.documentElement;
          return Math.max(t.scrollHeight, t.offsetHeight, e.clientHeight, e.scrollHeight, e.offsetHeight);
        },
      }),
      (NetFunnel.Popup = function (e, t, n, i, o, r, s) {
        var a,
          l,
          u = NetFunnel.gControl.getConfig('target_element_id'),
          p = null,
          u =
            ('' !== u
              ? (p = document.getElementById(u)) &&
                ('' !== p.style.position && (this.oldStyle = p.style.position), (p.style.position = 'relative'))
              : 'object' == typeof i && 'object' == typeof (this._mWin = i).document
              ? (this._mDoc = i.document)
              : ((this._mWin = window), (this._mDoc = document)),
            'boolean' != typeof o && (o = !1),
            'string' != typeof r && (r = 'NetFunnel_Loading_Popup'),
            void 0 === s || isNaN(s) || (this._mZindex = s),
            this._mDoc.getElementsByTagName('BODY')[0]);
        u &&
          (((i = this._mDoc.getElementById(r)) && NetFunnel.SkinUtil.prevID == NetFunnel.gSkinId) ||
            (((i = this._mDoc.createElement('div')).id = r),
            (i.style.display = 'none'),
            (i.style.top = 0),
            (i.style.left = 0),
            (i.innerHTML = e),
            (p || u).appendChild(i),
            (s = this._mDoc.getElementById('NetFunnel_Loading_Popup_Progressbar')) &&
              ((r = {
                count: 50,
                interval: 50,
              }),
              (e = parseInt(s.style.width, 10)),
              (a = parseInt(s.style.height, 10)),
              isNaN(e) || (r.width = e),
              isNaN(a) || (r.height = a),
              (e = new NetFunnel.ProgressBar(s, r, this._mDoc)).show(),
              (this._mProgress = e)),
            (a = this._mDoc.getElementById('NetFunnel_Countdown_Stop')) && (a.onclick = NetFunnel.countdown_stop),
            (this.new_draw = !0)),
          (NetFunnel.SkinUtil.prevID = NetFunnel.gSkinId),
          (s = this._mDoc.getElementById('mpopup_bg')),
          (r = this._mDoc.getElementById('pop_iframe')),
          s ||
            (((s = this._mDoc.createElement('div')).id = 'mpopup_bg'),
            (s.innerHTML = "<div style='width:100%; height:100%'>&nbsp;</div>"),
            (s.style.zIndex = this._mZindex + 1),
            (s.style.top = '0px'),
            (s.style.left = '0px'),
            (s.style.width = '100%'),
            'Mozilla' == (l = NetFunnel.BrowserDetect.browser) || 'Explorer' == l
              ? ((s.style.backgroundColor = 'rgb(80,80,80)'),
                (s.style.filter = 'alpha(opacity=30)'),
                (s.style.opacity = '0.3'),
                (s.style.position = 'absolute'),
                (s.style.height = NetFunnel.PopupUtil.getDocumentEntireHeight(this._mDoc) + 'px'))
              : ((s.style.position = p ? 'absolute' : 'fixed'),
                (s.style.height = '100%'),
                (s.style.backgroundColor = 'rgba(80,80,80,0.3)')),
            (s.style.margin = '0'),
            (s.style.padding = '0'),
            (s.style.border = '0px solid black'),
            (s.fontSize = '0'),
            (p || u).appendChild(s)),
          r ||
            (((r = this._mDoc.createElement('div')).id = 'pop_iframe'),
            (r.frameborder = '0'),
            (r.border = '0'),
            (r.framespacing = '0'),
            (r.marginheight = '0'),
            (r.marginwidth = '0'),
            o
              ? ((r.style.opacity = '0'), (r.style.filter = 'alpha(opacity=0)'))
              : ((r.style.opacity = '0.5'), (r.style.filter = 'alpha(opacity=50)')),
            (r.style.zIndex = this._mZindex),
            (r.style.top = '0px'),
            (r.style.left = '0px'),
            (r.style.width = '100%'),
            (r.style.position = p ? 'absolute' : 'fixed'),
            (r.style.border = '0px solid #FFFFFF'),
            (r.style.backgroundColor = '#FFFFFF'),
            'Mozilla' == (l = NetFunnel.BrowserDetect.browser) || 'Explorer' == l
              ? ((r.style.backgroundColor = 'rgb(80,80,80)'),
                o
                  ? ((r.style.opacity = '0'), (r.style.filter = 'alpha(opacity=0)'))
                  : ((r.style.opacity = '0.5'), (r.style.filter = 'alpha(opacity=50)')),
                (r.style.height = NetFunnel.PopupUtil.getDocumentEntireHeight(this._mDoc) + 'px'))
              : ((r.style.backgroundColor = o ? 'rgba(80,80,80,0)' : 'rgba(80,80,80,0.3)'), (r.style.height = '100%')),
            (u = this._mDoc.getElementsByTagName('BODY')[0]),
            (p || u).appendChild(r)),
          (i.style.position = 'absolute'),
          (i.style.visibility = 'hidden'),
          this._mCount++,
          (this._mMask = s),
          (this._mPopIFrame = r),
          (this._mObj = i),
          (this._mTop = t),
          (this._mLeft = n),
          (this.mid = 'mpopup_' + this._mCount),
          this.addListener(this._mWin, 'resize', NetFunnel.PopupUtil.resizePopup),
          NetFunnel.gPopup.push(this));
      }),
      (NetFunnel.Popup.prototype = new NetFunnel.Event()),
      (NetFunnel.Popup.prototype._mCount = 0),
      (NetFunnel.Popup.prototype._mid = ''),
      (NetFunnel.Popup.prototype._mWin = window),
      (NetFunnel.Popup.prototype._mDoc = document),
      (NetFunnel.Popup.prototype._mObj = null),
      (NetFunnel.Popup.prototype._mMask = null),
      (NetFunnel.Popup.prototype._mPopIFrame = null),
      (NetFunnel.Popup.prototype._mIsShown = !1),
      (NetFunnel.Popup.prototype._mIframeResize = NetFunnel.TS_IFRAME_RESIZE),
      (NetFunnel.Popup.prototype._mProgress = null),
      (NetFunnel.Popup.prototype._mZindex = NetFunnel.TS_POPUP_ZINDEX),
      (NetFunnel.Popup.prototype.oldStyle = ''),
      (NetFunnel.Popup.prototype._centerPopWin = function () {
        var e, t, n, i, o;
        this._mIsShown &&
          (n = this._mDoc.getElementsByTagName('BODY')[0]) &&
          ((e = null),
          '' !== (t = NetFunnel.gControl.getConfig('target_element_id')) && (e = document.getElementById(t)),
          (t =
            1 == NetFunnel.Util.isSmartPhone()
              ? window
              : 'Explorer' == NetFunnel.BrowserDetect.browser
              ? this._mDoc
              : this._mWin),
          (t = parseInt(NetFunnel.PopupUtil.getScrollTop(t), 10)),
          (n = parseInt(n.scrollLeft, 10)),
          e && ((t = parseInt(NetFunnel.PopupUtil.getScrollTop(e), 10)), (n = parseInt(e.scrollLeft, 10))),
          (i = 0),
          (i = e
            ? e.offsetHeight
            : 1 == NetFunnel.Util.isSmartPhone()
            ? NetFunnel.PopupUtil.getViewportHeight(window, this._mDoc)
            : NetFunnel.PopupUtil.getViewportHeight(this._mWin, this._mDoc)),
          (o = NetFunnel.PopupUtil.getViewportWidth(this._mWin, this._mDoc)),
          e && (o = e.offsetWidth),
          'number' == typeof this._mTop
            ? (this._mObj.style.top = this._mTop + 'px')
            : (this._mObj.style.top = t + (i - NetFunnel.PopupUtil.getObjHeight(this._mObj)) / 2 + 'px'),
          'number' == typeof this._mLeft
            ? (this._mObj.style.left = this._mLeft + 'px')
            : (this._mObj.style.left = n + (o - NetFunnel.PopupUtil.getObjWidth(this._mObj)) / 2 + 'px'),
          this._mIframeResize) &&
          'object' == typeof this._mPopIFrame &&
          ((this._mPopIFrame.style.top = this._mObj.style.top),
          (this._mPopIFrame.style.left = this._mObj.style.left),
          (this._mPopIFrame.style.width = this._mObj.style.width),
          (this._mPopIFrame.style.height = parseInt(this._mObj.style.height, 10) + 6));
      }),
      (NetFunnel.Popup.prototype.getObj = function (e) {
        return this._mDoc.getElementById(e);
      }),
      (NetFunnel.Popup.prototype.show = function () {
        var e = this._mDoc.getElementsByTagName('BODY')[0];
        e &&
          ((e.style.overflow = 'auto'),
          (this._mObj.style.zIndex = this._mZindex + 2),
          (this._mObj.style.visibility = 'visible'),
          (this._mObj.style.display = 'block'),
          (this._mMask.style.visiblity = 'visible'),
          (this._mMask.style.display = 'block'),
          (this._mPopIFrame.style.visiblity = 'visible'),
          (this._mPopIFrame.style.display = 'block'),
          (this._mIsShown = !0),
          this._centerPopWin(),
          ((e = document.getElementById('NetFunnel_Loading_Popup')).tabIndex = 0),
          e.focus());
      }),
      (NetFunnel.Popup.prototype.hide = function () {
        var e,
          t = this._mDoc.getElementsByTagName('BODY')[0];
        t &&
          ((t.style.overflow = 'auto'),
          (this._mObj.style.visibility = 'hidden'),
          (this._mObj.style.display = 'none'),
          (this._mMask.style.visiblity = 'hidden'),
          (this._mMask.style.display = 'none'),
          (this._mPopIFrame.style.visiblity = 'hidden'),
          (this._mPopIFrame.style.display = 'none'),
          (this._mIsShown = !1),
          (t = null),
          '' !== (e = NetFunnel.gControl.getConfig('target_element_id'))) &&
          (t = document.getElementById(e)) &&
          ('' === this.oldStyle ? (t.style.position = '') : (t.style.position = this.oldStyle));
      }),
      (NetFunnel.Popup.prototype.destroy = function () {
        var e = this._mDoc.getElementsByTagName('BODY')[0];
        if (e) {
          var t = NetFunnel.gPopup.length;
          try {
            var n = this._mDoc.getElementById('mpopup_bg');
            e.removeChild(n);
          } catch (e) {}
          try {
            var i = this._mDoc.getElementById('pop_iframe');
            e.removeChild(i);
          } catch (e) {}
          for (var o = 0; o < t; o++) {
            var r = NetFunnel.gPopup.pop();
            if (r.mid == this.mid)
              try {
                e.removeChild(r._mObj);
              } catch (e) {}
            else NetFunnel.gPopup.push(r);
          }
          this._mProgress && this._mProgress.hide();
        }
      }),
      (NetFunnel.RetVal = function (e) {
        (this._mParam = {}),
          (this._mRtype = parseInt(e.substr(0, 4), 10)),
          (this._mCode = parseInt(e.substr(5, 3), 10)),
          (this._mRetStr = e.substr(9, e.length - 9)),
          this._parse();
      }),
      (NetFunnel.RetVal.prototype._ltrim = function (e) {
        for (var t = 0; t < e.length && this._isWhitespace(e.charAt(t)); t++);
        return e.substring(t, e.length);
      }),
      (NetFunnel.RetVal.prototype._rtrim = function (e) {
        for (var t = e.length - 1; 0 <= t && this._isWhitespace(e.charAt(t)); t--);
        return e.substring(0, t + 1);
      }),
      (NetFunnel.RetVal.prototype._trim = function (e) {
        return this._ltrim(this._rtrim(e));
      }),
      (NetFunnel.RetVal.prototype._isWhitespace = function (e) {
        return -1 != ' \t\n\r\f'.indexOf(e);
      }),
      (NetFunnel.RetVal.prototype._parse = function () {
        for (var e, t, n = this._mRetStr.split('&'), i = 0; n.length > i; i++)
          1 < (t = n[i].split('=')).length && ((e = this._trim(t[0])), (t = this._trim(t[1])), (this._mParam[e] = t));
      }),
      (NetFunnel.RetVal.prototype.getRetCode = function () {
        return this._mCode;
      }),
      (NetFunnel.RetVal.prototype.setRetCode = function (e) {
        return (this._mCode = e), this._mCode;
      }),
      (NetFunnel.RetVal.prototype.getReqType = function () {
        return this._mRtype;
      }),
      (NetFunnel.RetVal.prototype.setReqType = function (e) {
        return (this._mRtype = e), this._mRtype;
      }),
      (NetFunnel.RetVal.prototype.getRetStr = function () {
        return this._mRetStr;
      }),
      (NetFunnel.RetVal.prototype.getValue = function (e) {
        try {
          return this._mParam[e];
        } catch (e) {
          return null;
        }
      }),
      (NetFunnel.RetVal.prototype.setValue = function (e, t) {
        var n = null;
        try {
          return this.isKeyExist(e) && (n = this.getValue(e)), (this._mParam[e] = t), n;
        } catch (e) {
          return null;
        }
      }),
      (NetFunnel.RetVal.prototype.getNumber = function (e) {
        try {
          return parseInt(this._mParam[e], 10);
        } catch (e) {
          return 0;
        }
      }),
      (NetFunnel.RetVal.prototype.isKeyExist = function (e) {
        try {
          if (null !== this._mParam[e]) return !0;
        } catch (e) {}
        return !1;
      }),
      (NetFunnel.RetVal.prototype.getParam = function () {
        return this._mParam;
      }),
      (NetFunnel.TsClient = function (e, t) {
        if (
          ((this.mConfig = {}),
          (this.mConfig.host = NetFunnel.TS_HOST),
          (this.mConfig.port = NetFunnel.TS_PORT),
          (this.mConfig.proto = NetFunnel.TS_PROTO),
          (this.mConfig.query = NetFunnel.TS_QUERY),
          (this.mConfig.max_ttl = NetFunnel.TS_MAX_TTL),
          (this.mConfig.conn_timeout = NetFunnel.TS_CONN_TIMEOUT),
          (this.mConfig.conn_retry = NetFunnel.TS_CONN_RETRY),
          (this.mConfig.cookie_id = NetFunnel.TS_COOKIE_ID),
          (this.mConfig.cookie_time = NetFunnel.TS_COOKIE_TIME),
          (this.mConfig.cookie_domain = NetFunnel.TS_COOKIE_DOMAIN),
          (this.mConfig.showcnt_limit = NetFunnel.TS_SHOWCNT_LIMIT),
          (this.mConfig.showtime_limit = NetFunnel.TS_SHOWTIME_LIMIT),
          (this.mConfig.shownext_limit = NetFunnel.TS_SHOWNEXT_LIMIT),
          (this.mConfig.popup_top = NetFunnel.TS_POPUP_TOP),
          (this.mConfig.popup_left = NetFunnel.TS_POPUP_LEFT),
          (this.mConfig.skin_id = NetFunnel.TS_SKIN_ID),
          (this.mConfig.use_unfocus = NetFunnel.TS_USE_UNFOCUS),
          (this.mConfig.virt_wait = NetFunnel.TS_VIRT_WAIT),
          (this.mConfig.use_mobile_ui = NetFunnel.TS_USE_MOBILE_UI),
          (this.mConfig.mp_use = NetFunnel.MP_USE),
          (this.mConfig.use_frame_block = NetFunnel.TS_USE_FRAME_BLOCK),
          (this.mConfig.frame_block_list = NetFunnel.TS_FRAME_BLOCK_LIST),
          (this.mConfig.use_pre_wait = NetFunnel.TS_USE_PRE_WAIT),
          (this.mConfig.popup_target = NetFunnel.TS_POPUP_TARGET),
          (this.mConfig.user_data = !1),
          (this.mConfig.user_data_keys = NetFunnel.TS_USER_DATA_KEYS),
          (this.mConfig.block_msg = NetFunnel.TS_BLOCK_MSG),
          (this.mConfig.block_url = NetFunnel.TS_BLOCK_URL),
          (this.mConfig.ipblock_wait_count = NetFunnel.TS_IPBLOCK_WAIT_COUNT),
          (this.mConfig.ipblock_wait_time = NetFunnel.TS_IPBLOCK_WAIT_TIME),
          (this.mConfig.service_id = NetFunnel.TS_SERVICE_ID),
          (this.mConfig.action_id = NetFunnel.TS_ACTION_ID),
          (this.mConfig.show_wait_popup = NetFunnel.TS_SHOW_WAIT_POPUP),
          (this.mConfig.config_use = NetFunnel.TS_CONFIG_USE),
          (this.mConfig.popup_zindex = NetFunnel.TS_POPUP_ZINDEX),
          (this.mConfig.ip_error_retry = NetFunnel.TS_IP_ERROR_RETRY),
          (this.mConfig.success_popup_visibility = NetFunnel.TS_SUCCESS_POPUP_VISIBILITY),
          (this.mConfig.target_element_id = NetFunnel.TS_TARGET_ELEMENT_ID),
          (this.mConfig._host_changed = !1),
          (this.mConfig._port_changed = !1),
          (this.mConfig.is_popup = !1),
          'object' == typeof e)
        )
          for (var n in e)
            (this.mConfig[n] = e[n]),
              'host' == n && (this.mConfig._host_changed = !0),
              'port' == n && (this.mConfig._port_changed = !0);
        var i;
        (NetFunnel.gPopupLeft = this.mConfig.popup_left),
          (NetFunnel.gPopupTop = this.mConfig.popup_top),
          (NetFunnel.gBlockList = this.mConfig.block_list),
          '' == this.mConfig.skin_id
            ? (NetFunnel.gSkinId = NetFunnel.TS_SKIN_ID)
            : ((NetFunnel.gSkinId = this.mConfig.skin_id),
              2 < (i = this.mConfig.skin_id.split('|')).length &&
                NetFunnel.BrowserDetect.browser == i[1] &&
                parseInt(NetFunnel.BrowserDetect.version, 10) < parseInt(i[2], 10) &&
                (NetFunnel.gSkinId = 'default')),
          'boolean' != typeof this.mConfig.use_unfocus &&
            ('string' == typeof this.mConfig.use_unfocus && 'true' == this.mConfig.use_unfocus
              ? (this.mConfig.use_unfocus = !0)
              : (this.mConfig.use_unfocus = !1)),
          (NetFunnel.gUseUnfocus = this.mConfig.use_unfocus),
          'boolean' != typeof this.mConfig.use_mobile_ui &&
            ('string' == typeof this.mConfig.use_mobile_ui && 'true' == this.mConfig.use_mobile_ui
              ? (this.mConfig.use_mobile_ui = !0)
              : (this.mConfig.use_mobile_ui = !1)),
          (NetFunnel.gUseMobileUI = this.mConfig.use_mobile_ui),
          'boolean' != typeof this.mConfig.use_frame_block &&
            ('string' == typeof this.mConfig.use_frame_block && 'true' == this.mConfig.use_frame_block
              ? (this.mConfig.use_frame_block = !0)
              : (this.mConfig.use_frame_block = !1)),
          1 == this.mConfig.use_frame_block
            ? this.mConfig.frame_block_list.length < 1 &&
              (this.mConfig.frame_block_list = NetFunnel.Util.getFrameWindowList(this.mConfig.popup_target))
            : (this.mConfig.frame_block_list = []),
          (this.id = 0),
          (NetFunnel.TsClient._Objects[this.id] = this),
          (NetFunnel.TsClient._Count += 1),
          t.onSuccess && this.addListener(this, 'onSuccess', t.onSuccess),
          t.onContinued && this.addListener(this, 'onContinued', t.onContinued),
          t.onBypass && this.addListener(this, 'onBypass', t.onBypass),
          t.onBlock && this.addListener(this, 'onBlock', t.onBlock),
          t.onIpBlock && this.addListener(this, 'onIpBlock', t.onIpBlock),
          t.onError && this.addListener(this, 'onError', t.onError),
          t.onStop && this.addListener(this, 'onStop', t.onStop),
          t.onExpressnumber && this.addListener(this, 'onExpressnumber', t.onExpressnumber),
          (this.counter[NetFunnel.RTYPE_NONE] = 0),
          (this.counter[NetFunnel.RTYPE_GET_TID_CHK_ENTER] = 0),
          (this.counter[NetFunnel.RTYPE_GET_TID] = 0),
          (this.counter[NetFunnel.RTYPE_CHK_ENTER] = 0),
          (this.counter[NetFunnel.RTYPE_ALIVE_NOTICE] = 0),
          (this.counter[NetFunnel.RTYPE_SET_COMPLETE] = 0),
          (this.counter[NetFunnel.RTYPE_INIT] = 0),
          (this.counter[NetFunnel.RTYPE_STOP] = 0),
          (this.connTimeout = function e() {
            if (this != NetFunnel.gControl) return e.apply(NetFunnel.gControl, arguments);
            if (0 != NetFunnel.gAlreadyProc) return !1;
            if ((this._resetScript(), this.counter[this._mReqType] < this.mConfig.conn_retry))
              switch (((this._mStatus = NetFunnel.PS_TIMEOUT), (this.counter[this._mReqType] += 1), this._mReqType)) {
                case NetFunnel.RTYPE_GET_TID:
                  return this.getTicketID(this.user_id, this.user_tid, !1), !0;
                case NetFunnel.RTYPE_CHK_ENTER:
                  return this.chkEnter(this.key, !1), !0;
                case NetFunnel.RTYPE_GET_TID_CHK_ENTER:
                  return this.getTidChkEnter(this.user_id, this.user_tid, !1), !0;
                case NetFunnel.RTYPE_ALIVE_NOTICE:
                  return this.aliveNotice(this.key, '', '', !1), !0;
                case NetFunnel.RTYPE_SET_COMPLETE:
                  return this.setComplete(this.key, '', '', !1), !0;
              }
            return (
              NetFunnel.PopupUtil.hideWaitPopup(),
              (this._mReqType != NetFunnel.RTYPE_CHK_ENTER && this._mReqType != NetFunnel.RTYPE_GET_TID_CHK_ENTER) ||
                new NetFunnel.Storage(2).setItem(
                  this.mConfig.cookie_id,
                  '5002:200:key=' + NetFunnel.CONN_TIMEOUT_KEY,
                  1,
                  this.mConfig.cookie_domain,
                  this.mConfig.is_popup
                ),
              !(
                1 <= NetFunnel.gAlreadyProc ||
                (this.fireEvent(null, this, 'onError', {
                  rtype: this._mReqType,
                  code: NetFunnel.kErrorSockConnect,
                  data: {
                    msg: 'Connection Timeout',
                  },
                  next: this.next.error,
                }),
                (this._mStatus = NetFunnel.PS_ERROR),
                0)
              )
            );
          });
      }),
      (NetFunnel.TsClient._Count = 0),
      (NetFunnel.TsClient._Objects = {}),
      (NetFunnel.TsClient.prototype = new NetFunnel.Event()),
      (NetFunnel.TsClient.prototype._initDone = !1),
      (NetFunnel.TsClient.prototype.id = null),
      (NetFunnel.TsClient.prototype.mConfig = null),
      (NetFunnel.TsClient.prototype.key = null),
      (NetFunnel.TsClient.prototype.script = null),
      (NetFunnel.TsClient.prototype.alarm = null),
      (NetFunnel.TsClient.prototype._mReqType = NetFunnel.RTYPE_NONE),
      (NetFunnel.TsClient.prototype._mMousePos = 0),
      (NetFunnel.TsClient.prototype._mNoActTime = 0),
      (NetFunnel.TsClient.prototype._mStatus = NetFunnel.PS_N_RUNNING),
      (NetFunnel.TsClient.prototype.counter = {}),
      (NetFunnel.TsClient.prototype.next = {
        success: '',
        error: '',
      }),
      (NetFunnel.TsClient.prototype.init = function () {
        this._nCount++, (this._initDone = !0);
      }),
      (NetFunnel.TsClient.prototype.getConfig = function (e) {
        return this.mConfig[e];
      }),
      (NetFunnel.TsClient.prototype._isNoAction = function () {
        return this._mMousePos == NetFunnel.MouseX || ((this._mMousePos = NetFunnel.MouseX), !1);
      }),
      (NetFunnel.TsClient.prototype._resetAlarm = function () {
        null !== this.alarm && clearTimeout(this.alarm), (this.alarm = null);
      }),
      (NetFunnel.TsClient.prototype._resetReTimer = function () {
        null !== NetFunnel.gReTimer && clearTimeout(NetFunnel.gReTimer), (NetFunnel.gReTimer = null);
      }),
      (NetFunnel.TsClient.prototype._resetRetryTimer = function () {
        null !== this.retryTimer && clearTimeout(this.retryTimer), (this.retryTimer = null);
      }),
      (NetFunnel.TsClient.prototype._resetScript = function () {
        try {
          var e;
          this.script &&
            'object' == typeof this.script &&
            (e = this.script.parentNode) &&
            'object' == typeof e &&
            e.removeChild(this.script);
        } catch (e) {}
        this.script = null;
      }),
      (NetFunnel.TsClient.prototype.getUserdata = function () {
        try {
          var userdata = '',
            uKey = this.mConfig.user_data_keys;
          if ('string' == typeof this.mConfig.user_data) return this.mConfig.user_data;
          if ('Array' != Object.prototype.toString.call(uKey).slice(8, -1)) return !1;
          for (var i = 0; i < uKey.length; i++) {
            var keydata = uKey[i];
            if ('object' == typeof keydata) {
              if ('v' == keydata.type)
                try {
                  if (((userdata = eval(keydata.key)), '' != userdata)) break;
                } catch (e) {}
              if ('c' == keydata.type && ((userdata = NetFunnel.Cookie.get(keydata.key)), '' != userdata)) break;
            }
          }
          return userdata;
        } catch (e) {
          return !1;
        }
      }),
      (NetFunnel.TsClient.prototype._showResult = function () {
        if (NetFunnel.gIsPopupStarted && !NetFunnel.gPop) NetFunnel.gIsPopupStarted = !1;
        else if (
          ((NetFunnel.gIsPopupStarted = !0),
          this._resetAlarm(),
          1 != NetFunnel.gAlreadyProc || NetFunnel.gRtype != NetFunnel.RTYPE_GET_TID_CHK_ENTER)
        )
          switch (
            ((NetFunnel.gAlreadyProc = 1),
            NetFunnel.PopupUtil.hideWaitPopup(),
            (this.retval = new NetFunnel.RetVal(this.result)),
            this.retval.getReqType() == NetFunnel.RTYPE_GET_TID_CHK_ENTER &&
              this.retval.setReqType(NetFunnel.RTYPE_CHK_ENTER),
            NetFunnel.TS_DEBUG_MODE && NetFunnel.printDebugMsg('recv', this.result),
            (NetFunnel.ttl = 0),
            (this.counter[this._mReqType] = 0),
            this.retval.getRetCode() == NetFunnel.kContinueDebug
              ? (NetFunnel.gDebugflag = !0)
              : (NetFunnel.gDebugflag = !1),
            this.retval.getReqType())
          ) {
            case NetFunnel.RTYPE_GET_TID:
              this._showResultGetTicketID(this.retval);
              break;
            case NetFunnel.RTYPE_CHK_ENTER:
              this._showResultChkEnter(this.retval);
              break;
            case NetFunnel.RTYPE_ALIVE_NOTICE:
              this._showResultAliveNotice(this.retval);
              break;
            case NetFunnel.RTYPE_SET_COMPLETE:
              this._showResultSetComplete(this.retval);
              break;
            default:
              new NetFunnel.Storage(2).removeItem(this.mConfig.cookie_id),
                this.fireEvent(null, this, 'onError', {
                  rtype: NetFunnel.RTYPE_NONE,
                  code: this.retval.getRetCode(),
                  data: this.retval.getParam(),
                  next: this.next.error,
                }),
                (this._mStatus = NetFunnel.PS_ERROR);
          }
      }),
      (NetFunnel.TsClient.prototype._showResultGetTicketID = function (e) {
        var t = new NetFunnel.Storage(2);
        e.getRetCode() === NetFunnel.kSuccess
          ? (t.setItem(
              this.mConfig.cookie_id,
              this.result,
              this.mConfig.cookie_time,
              this.mConfig.cookie_domain,
              this.mConfig.is_popup
            ),
            (this._mStatus = NetFunnel.PS_N_RUNNING),
            this.fireEvent(null, this, 'onSuccess', {
              rtype: e.getReqType(),
              code: e.getRetCode(),
              data: e.getParam(),
              next: this.next.success,
            }))
          : (t.removeItem(this.mConfig.cookie_id),
            (this._mStatus = NetFunnel.PS_ERROR),
            this.fireEvent(null, this, 'onError', {
              rtype: e.getReqType(),
              code: e.getRetCode(),
              data: e.getParam(),
              next: this.next.error,
            }));
      }),
      (NetFunnel.TsClient.prototype._showResultChkEnter = function (e) {
        var t = this,
          n = new NetFunnel.Storage(2);
        switch (e.getRetCode()) {
          case NetFunnel.kSuccess:
            n.setItem(
              this.mConfig.cookie_id,
              this.result,
              this.mConfig.cookie_time,
              this.mConfig.cookie_domain,
              this.mConfig.is_popup
            ),
              (this._mStatus = NetFunnel.PS_N_RUNNING),
              (NetFunnel.gNWaitTemp = 0),
              (NetFunnel.gNWaitCount = 0),
              this.fireEvent(null, this, 'onSuccess', {
                rtype: e.getReqType(),
                code: e.getRetCode(),
                data: e.getParam(),
                next: this.next.success,
              });
            break;
          case NetFunnel.kContinueDebug:
          case NetFunnel.kContinue:
            this._mStatus = NetFunnel.PS_CONTINUE;
            var i = e.getNumber('ttl'),
              o =
                (i > this.mConfig.max_ttl && ((i = this.mConfig.max_ttl), e.setValue('ttl', i)), e.getNumber('nwait'));
            NetFunnel.TS_NWAIT_BYPASS &&
            (NetFunnel.gNWaitTemp == o
              ? (NetFunnel.gNWaitCount += 1)
              : ((NetFunnel.gNWaitTemp = o), (NetFunnel.gNWaitCount = 0)),
            NetFunnel.TS_MAX_NWAIT_COUNT <= NetFunnel.gNWaitCount)
              ? this.fireEvent(null, this, 'onSuccess', {
                  rtype: e.getReqType(),
                  code: e.getRetCode(),
                  data: e.getParam(),
                  next: this.next.success,
                })
              : (this.fireEvent(null, this, 'onContinued', {
                  rtype: e.getReqType(),
                  code: e.getRetCode(),
                  data: e.getParam(),
                  next: this.next.continued,
                }),
                (NetFunnel.gAlreadyProc = 0) < i &&
                  this._mStatus != NetFunnel.PS_N_RUNNING &&
                  (this.retryTimer && clearTimeout(this.retryTimer),
                  (NetFunnel.ttl = i),
                  (this.retryTimer = setTimeout(function () {
                    t.chkEnterCont(t.retval.getValue('key'));
                  }, 1e3 * i))));
            break;
          case NetFunnel.kTsBlock:
            (this._mStatus = NetFunnel.PS_N_RUNNING),
              n.setItem(
                this.mConfig.cookie_id,
                this.result,
                this.mConfig.cookie_time,
                this.mConfig.cookie_domain,
                this.mConfig.is_popup
              ),
              this.fireEvent(null, this, 'onBlock', {
                rtype: e.getReqType(),
                code: e.getRetCode(),
                data: e.getParam(),
                next: this.next.block,
              }),
              this.retryTimer && clearTimeout(this.retryTimer),
              (NetFunnel.ttl = i);
            break;
          case NetFunnel.kTsIpBlock:
            (this._mStatus = NetFunnel.PS_N_RUNNING),
              this.retryTimer && clearTimeout(this.retryTimer),
              (NetFunnel.gAlreadyProc = 0),
              this.mConfig.ipblock_wait_count >= NetFunnel.gIPBlockWaitCount + 1
                ? ((NetFunnel.gReTimer = setTimeout(function () {
                    t.getTidChkEnter(t.user_id, t.user_tid, !0);
                  }, this.mConfig.ipblock_wait_time)),
                  this.fireEvent(null, this, 'onIpBlock', {
                    rtype: e.getReqType(),
                    code: e.getRetCode(),
                    data: e.getParam(),
                    next: this.next.ipblock,
                  }),
                  0 != this.mConfig.ipblock_wait_count && (NetFunnel.gIPBlockWaitCount += 1))
                : (n.setItem(
                    this.mConfig.cookie_id,
                    this.result,
                    this.mConfig.cookie_time,
                    this.mConfig.cookie_domain,
                    this.mConfig.is_popup
                  ),
                  (this._mStatus = NetFunnel.PS_N_RUNNING),
                  this.fireEvent(null, this, 'onSuccess', {
                    rtype: e.getReqType(),
                    code: e.getRetCode(),
                    data: e.getParam(),
                    next: this.next.success,
                  }));
            break;
          case NetFunnel.kTsBypass:
            (this._mStatus = NetFunnel.PS_N_RUNNING),
              n.setItem(
                this.mConfig.cookie_id,
                this.result,
                this.mConfig.cookie_time,
                this.mConfig.cookie_domain,
                this.mConfig.is_popup
              ),
              this.fireEvent(null, this, 'onBypass', {
                rtype: e.getReqType(),
                code: e.getRetCode(),
                data: e.getParam(),
                next: this.next.bypass,
              });
            break;
          case NetFunnel.kTsExpressNumber:
            (this._mStatus = NetFunnel.PS_N_RUNNING),
              n.setItem(
                this.mConfig.cookie_id,
                this.result,
                this.mConfig.cookie_time,
                this.mConfig.cookie_domain,
                this.mConfig.is_popup
              ),
              this.fireEvent(null, this, 'onExpressnumber', {
                rtype: e.getReqType(),
                code: e.getRetCode(),
                data: e.getParam(),
                next: this.next.expressnumber,
              });
            break;
          default:
            n.removeItem(this.mConfig.cookie_id),
              (this._mStatus = NetFunnel.PS_ERROR),
              e.getRetCode() == NetFunnel.kTsErrorInvalidIp && 1 == this.mConfig.ip_error_retry
                ? ((NetFunnel.gAlreadyProc = 0),
                  (this._mStatus = NetFunnel.PS_N_RUNNING),
                  (NetFunnel.gReTimer = setTimeout(function () {
                    t.getTidChkEnter(t.user_id, t.user_tid, !0, NetFunnel.gTotWait);
                  }, 100)))
                : ((this._mStatus = NetFunnel.PS_ERROR),
                  this.fireEvent(null, this, 'onError', {
                    rtype: e.getReqType(),
                    code: e.getRetCode(),
                    data: e.getParam(),
                    next: this.next.error,
                  }));
        }
      }),
      (NetFunnel.TsClient.prototype._showResultAliveNotice = function (e) {
        var t,
          n,
          i = new NetFunnel.Storage(2);
        switch (e.getRetCode()) {
          case NetFunnel.kSuccess:
            (this._mStatus = NetFunnel.PS_N_RUNNING),
              this.fireEvent(null, this, 'onSuccess', {
                rtype: e.getReqType(),
                code: e.getRetCode(),
                data: e.getParam(),
                next: this.next.success,
              });
            break;
          case NetFunnel.kContinueDebug:
          case NetFunnel.kContinue:
            (this._mStatus = NetFunnel.PS_CONTINUE),
              this._mNoActTime > this.mConfig.no_action
                ? (this.fireEvent(null, this, 'onError', {
                    rtype: e.getReqType(),
                    code: NetFunnel.kTsErrorNoUserAction,
                    data: e.getParam(),
                    next: this.next.error,
                  }),
                  (this._mNoActTime = 0),
                  (this._mStatus = NetFunnel.PS_ERROR))
                : ((t = e.getNumber('ttl')) > this.mConfig.max_ttl &&
                    ((t = this.mConfig.max_ttl), e.setValue('ttl', t)),
                  this.fireEvent(null, this, 'onContinued', {
                    rtype: e.getReqType(),
                    code: e.getRetCode(),
                    data: e.getParam(),
                    next: this.next.continued,
                  }),
                  (NetFunnel.gAlreadyProc = 0) < t &&
                    this._mStatus != NetFunnel.PS_N_RUNNING &&
                    (this.retryTimer && clearTimeout(this.retryTimer),
                    this._isNoAction() ? (this._mNoActTime += t) : (this._mNoActTime = 0),
                    i.setItem(
                      this.mConfig.cookie_id,
                      this.result,
                      this.mConfig.cookie_time,
                      this.mConfig.cookie_domain,
                      this.mConfig.is_popup
                    ),
                    ((n = this).retryTimer = setTimeout(function () {
                      i.getItem(n.mConfig.cookie_id) &&
                        n.aliveNoticeCont(
                          n.retval.getValue('key'),
                          n.retval.getValue('ip'),
                          n.retval.getValue('port'),
                          n.retval.getValue('first')
                        );
                    }, 1e3 * t))));
            break;
          case NetFunnel.kTsBlock:
            (this._mStatus = NetFunnel.PS_N_RUNNING),
              this.fireEvent(null, this, 'onBlock', {
                rtype: e.getReqType(),
                code: e.getRetCode(),
                data: e.getParam(),
                next: this.next.block,
              });
            break;
          case NetFunnel.kTsExpressNumber:
            (this._mStatus = NetFunnel.PS_N_RUNNING),
              this.fireEvent(null, this, 'onExpressnumber', {
                rtype: e.getReqType(),
                code: e.getRetCode(),
                data: e.getParam(),
                next: this.next.expressnumber,
              });
            break;
          case NetFunnel.kTsBypass:
            (this._mStatus = NetFunnel.PS_N_RUNNING),
              this.fireEvent(null, this, 'onBypass', {
                rtype: e.getReqType(),
                code: e.getRetCode(),
                data: e.getParam(),
                next: this.next.bypass,
              });
            break;
          case NetFunnel.kTsIpBlock:
            (this._mStatus = NetFunnel.PS_N_RUNNING),
              this.fireEvent(null, this, 'onIpBlock', {
                rtype: e.getReqType(),
                code: e.getRetCode(),
                data: e.getParam(),
                next: this.next.ipblock,
              });
            break;
          default:
            e.getRetCode() == NetFunnel.kErrorExpiredTime && i.removeItem(this.mConfig.cookie_id),
              (this._mStatus = NetFunnel.PS_ERROR),
              this.fireEvent(null, this, 'onError', {
                rtype: e.getReqType(),
                code: e.getRetCode(),
                data: e.getParam(),
                next: this.next.error,
              });
        }
      }),
      (NetFunnel.TsClient.prototype._showResultSetComplete = function (e) {
        new NetFunnel.Storage(2).removeItem(this.mConfig.cookie_id),
          e.getRetCode() === NetFunnel.kSuccess
            ? ((this._mStatus = NetFunnel.PS_N_RUNNING),
              this.fireEvent(null, this, 'onSuccess', {
                rtype: e.getReqType(),
                code: e.getRetCode(),
                data: e.getParam(),
                next: this.next.success,
              }))
            : ((this._mStatus = NetFunnel.PS_ERROR),
              this.fireEvent(null, this, 'onError', {
                rtype: e.getReqType(),
                code: e.getRetCode(),
                data: e.getParam(),
                next: this.next.error,
              }));
      }),
      (NetFunnel.TsClient.prototype._connInit = function (e) {
        (this.result = null), (this._mReqType = e), this._resetAlarm(), this._resetScript(), this._resetRetryTimer();
        var t = this;
        return (
          (this.alarm = setTimeout(function () {
            t.connTimeout(0);
          }, 1e3 * parseInt(this.mConfig.conn_timeout, 10))),
          !(
            !this.mConfig.host ||
            '' == this.mConfig.host ||
            !this.mConfig.port ||
            '' == this.mConfig.port ||
            !this.mConfig.query ||
            '' == this.mConfig.query ||
            !this.mConfig.service_id ||
            '' == this.mConfig.service_id ||
            !this.mConfig.action_id ||
            '' == this.mConfig.action_id ||
            ((this._mStatus = NetFunnel.PS_RUNNING), 0)
          )
        );
      }),
      (NetFunnel.TsClient.prototype._sendRequest = function (e) {
        (this.script = document.createElement('script')), (this.script.src = e);
        var t = document.getElementsByTagName('head').item(0);
        return NetFunnel.TS_DEBUG_MODE && NetFunnel.printDebugMsg('send', e), t.appendChild(this.script), !0;
      }),
      (NetFunnel.TsClient.prototype._sendError = function (e, t) {
        var n = '';
        switch (t) {
          case NetFunnel.kErrorAlready:
            n = 'Already running';
            break;
          case NetFunnel.kErrorNoinit:
            n = 'Uninitialized object';
            break;
          default:
            NetFunnel.kErrorSystem;
            n = 'System error';
        }
        this.fireEvent(null, this, 'onError', {
          rtype: e,
          code: t,
          data: {
            msg: n,
          },
          next: this.next.error,
        });
      }),
      (NetFunnel.TsClient.prototype.setNext = function (e) {
        if ('object' == typeof e) this.next = e;
        else
          try {
            (this.next.success = void 0),
              (this.next.continued = void 0),
              (this.next.bypass = void 0),
              (this.next.expressnumber = void 0),
              (this.next.block = void 0),
              (this.next.ipblock = void 0),
              (this.next.error = void 0),
              (this.next.stop = void 0);
          } catch (e) {
            (this.next.success = window.undefined),
              (this.next.continued = window.undefined),
              (this.next.bypass = window.undefined),
              (this.next.expressnumber = window.undefined),
              (this.next.block = window.undefined),
              (this.next.ipblock = window.undefined),
              (this.next.error = window.undefined),
              (this.next.stop = window.undefined);
          }
      }),
      (NetFunnel.TsClient.prototype.sendStop = function (e) {
        return (
          1 == NetFunnel.TS_BYPASS
            ? this.fireEvent(null, this, 'onSuccess', {
                rtype: this._mReqType,
                code: NetFunnel.kSuccess,
                data: {},
                next: this.next.success,
              })
            : ((e = 'undefined' == e ? !0 : e) && (this.counter[NetFunnel.RTYPE_STOP] = 0),
              this._resetReTimer(),
              this._resetAlarm(),
              this._resetRetryTimer(),
              this._resetScript(),
              this.fireEvent(null, this, 'onSuccess', {
                rtype: this._mReqType,
                code: NetFunnel.kSuccess,
                data: {},
                next: this.next.success,
              }),
              (this._mStatus = NetFunnel.PS_N_RUNNING)),
          !0
        );
      }),
      (NetFunnel.TsClient.prototype.getTicketID = function (e, t, n) {
        if (((NetFunnel.gPrevWaitTime = -1), 1 == NetFunnel.TS_BYPASS))
          this.fireEvent(null, this, 'onSuccess', {
            rtype: this._mReqType,
            code: NetFunnel.kSuccess,
            data: {},
            next: this.next.success,
          });
        else {
          1 == this.mConfig.use_unfocus && NetFunnel.Util.delFocus(this.getConfig('popup_target')),
            (NetFunnel.gTotWait = -1),
            (NetFunnel.retryData = null);
          var i,
            o = 1 == this.mConfig.mp_use ? NetFunnel.MProtect() : 0;
          if (0 != o)
            return (
              this.fireEvent(null, this, 'onContinued', {
                rtype: NetFunnel.RTYPE_CHK_ENTER,
                code: NetFunnel.kContinue,
                data: {
                  tps: 1,
                  eps: 2,
                  nwait: 2 * NetFunnel.gControl.getConfig('showcnt_limit'),
                  mprotect: o,
                  ttl: 10,
                },
              }),
              this.retryTimer && clearTimeout(this.retryTimer),
              (NetFunnel.retryData = {
                user_id: e,
                user_tid: t,
                first: n,
              }),
              ((i = this).retryTimer = setTimeout(function () {
                i.retryFunction(NetFunnel.RTYPE_GET_TID);
              }, this.mConfig.virt_wait)),
              !1
            );
          if (
            ((n = 'undefined' == n ? !0 : n) && (this.counter[NetFunnel.RTYPE_GET_TID] = 0),
            this._mStatus == NetFunnel.PS_RUNNING)
          )
            return this._sendError(NetFunnel.RTYPE_GET_TID, NetFunnel.kErrorAlready), !1;
          (this.user_id = e), (this.user_tid = t);
          (o =
            this.mConfig.proto +
            '://' +
            this.mConfig.host +
            ':' +
            this.mConfig.port +
            '/' +
            this.mConfig.query +
            '?opcode=' +
            NetFunnel.RTYPE_GET_TID +
            '&nfid=' +
            this.id +
            '&prefix=NetFunnel.gRtype=' +
            NetFunnel.RTYPE_GET_TID +
            ';'),
            (n = ((o += '&sid=' + this.mConfig.service_id + '&aid=' + this.mConfig.action_id), this.getUserdata())),
            (e = ('' != n && (o += '&user_data=' + n), (o += '&js=yes'), new Date()));
          if (((o += '&' + e.getTime()), !this._connInit(NetFunnel.RTYPE_GET_TID)))
            return this._sendError(NetFunnel.RTYPE_GET_TID, NetFunnel.kErrorNoinit), !1;
          this._sendRequest(o);
        }
        return !0;
      }),
      (NetFunnel.TsClient.prototype.chkEnter = function (e, t) {
        return 1 == NetFunnel.TS_BYPASS
          ? (this.fireEvent(null, this, 'onSuccess', {
              rtype: this._mReqType,
              code: NetFunnel.kSuccess,
              data: {},
              next: this.next.success,
            }),
            !0)
          : this._mStatus == NetFunnel.PS_RUNNING || this._mStatus == NetFunnel.PS_CONTINUE
          ? (this._sendError(NetFunnel.RTYPE_CHK_ENTER, NetFunnel.kErrorAlready), !1)
          : this.chkEnterProc(e, t);
      }),
      (NetFunnel.TsClient.prototype.chkEnterCont = function (e, t) {
        return this._mStatus == NetFunnel.PS_RUNNING
          ? (this._sendError(NetFunnel.RTYPE_CHK_ENTER, NetFunnel.kErrorAlready), !1)
          : this.chkEnterProc(e, t);
      }),
      (NetFunnel.TsClient.prototype.chkEnterProc = function (e, t) {
        if (((t = 'undefined' == t ? !0 : t) && (this.counter[NetFunnel.RTYPE_CHK_ENTER] = 0), !e || '' == e)) {
          if (!this.key) return this._sendError(NetFunnel.RTYPE_CHK_ENTER, NetFunnel.kErrorParam), !1;
          e = this.key;
        }
        this.key = e;
        var t = this.retval.getValue('ip'),
          n =
            (1 < this.mConfig.conn_retry &&
              this.counter[this._mReqType] == this.mConfig.conn_retry &&
              (t = this.mConfig.config_use),
            this.retval.getValue('port')),
          i = '',
          t =
            ((i =
              (i =
                t && '' != t && n && '' != n && !this.mConfig.config_use
                  ? this.mConfig.proto + '://' + t + ':' + n + '/'
                  : this.mConfig.proto + '://' + this.mConfig.host + ':' + this.mConfig.port + '/') +
              this.mConfig.query +
              '?opcode=' +
              NetFunnel.RTYPE_CHK_ENTER +
              '&key=' +
              e +
              '&nfid=' +
              this.id +
              '&prefix=NetFunnel.gRtype=' +
              NetFunnel.RTYPE_CHK_ENTER +
              ';'),
            0 < NetFunnel.ttl && (i = i + '&ttl=' + NetFunnel.ttl),
            (i += '&sid=' + this.mConfig.service_id + '&aid=' + this.mConfig.action_id),
            this.getUserdata()),
          n = ('' != t && (i += '&user_data=' + t), (i += '&js=yes'), new Date());
        return (
          (i += '&' + n.getTime()),
          this._connInit(NetFunnel.RTYPE_CHK_ENTER)
            ? (this._sendRequest(i), !0)
            : (this._sendError(NetFunnel.RTYPE_CHK_ENTER, NetFunnel.kErrorNoinit), !1)
        );
      }),
      (NetFunnel.retryData = null),
      (NetFunnel.retryFunction = function (e) {
        var t;
        'object' == typeof NetFunnel.retryData &&
          ((t = NetFunnel.retryData),
          e == NetFunnel.RTYPE_GET_TID
            ? NetFunnel.gControl.getTicketID(t.user_id, t.user_tid, t.first)
            : e == NetFunnel.RTYPE_GET_TID_CHK_ENTER &&
              NetFunnel.gControl.getTidChkEnter(t.user_id, t.user_tid, t.first));
      }),
      (NetFunnel.TsClient.prototype.getTidChkEnter = function (e, t, n, i) {
        if (((NetFunnel.gPrevWaitTime = -1), 1 == NetFunnel.TS_BYPASS))
          return (
            this.fireEvent(null, this, 'onSuccess', {
              rtype: this._mReqType,
              code: NetFunnel.kSuccess,
              data: {},
              next: this.next.success,
            }),
            !0
          );
        if (this._mStatus == NetFunnel.PS_RUNNING || this._mStatus == NetFunnel.PS_CONTINUE)
          this._sendError(NetFunnel.RTYPE_CHK_ENTER, NetFunnel.kErrorAlready);
        else {
          1 == this.mConfig.use_unfocus && NetFunnel.Util.delFocus(this.getConfig('popup_target')),
            (NetFunnel.gTotWait = null == i || isNaN(i) ? -1 : i),
            (NetFunnel.retryData = null);
          i = 1 == this.mConfig.mp_use ? NetFunnel.MProtect() : 0;
          if (0 == i && 0 == this.mConfig.show_wait_popup)
            return (
              this.getConfig('use_pre_wait') && NetFunnel.PopupUtil.showWaitPopup(), this.getTidChkEnterProc(e, t, n)
            );
          this.fireEvent(null, this, 'onContinued', {
            rtype: NetFunnel.RTYPE_CHK_ENTER,
            code: NetFunnel.kContinue,
            data: {
              tps: 1,
              eps: 2,
              nwait: 2 * NetFunnel.gControl.getConfig('showcnt_limit'),
              mprotect: i,
              ttl: 10,
            },
          }),
            this.retryTimer && clearTimeout(this.retryTimer),
            (NetFunnel.retryData = {
              user_id: e,
              user_tid: t,
              first: n,
            }),
            (this.retryTimer = setTimeout(function () {
              NetFunnel.retryFunction(NetFunnel.RTYPE_GET_TID_CHK_ENTER);
            }, this.mConfig.virt_wait));
        }
        return !1;
      }),
      (NetFunnel.TsClient.prototype.getTidChkEnterProc = function (e, t, n) {
        (n = 'undefined' == n ? !0 : n) && (this.counter[NetFunnel.RTYPE_GET_TID_CHK_ENTER] = 0),
          (this.user_id = e),
          (this.user_tid = t);
        (n =
          this.mConfig.proto +
          '://' +
          this.mConfig.host +
          ':' +
          this.mConfig.port +
          '/' +
          this.mConfig.query +
          '?opcode=' +
          NetFunnel.RTYPE_GET_TID_CHK_ENTER +
          '&nfid=' +
          this.id +
          '&prefix=NetFunnel.gRtype=' +
          NetFunnel.RTYPE_GET_TID_CHK_ENTER +
          ';'),
          (n =
            (n = 0 < NetFunnel.ttl ? n + '&ttl=' + NetFunnel.ttl : n) +
            ('&sid=' + this.mConfig.service_id + '&aid=' + this.mConfig.action_id) +
            '&js=yes'),
          (e = this.getUserdata()),
          '' != e && (n += '&user_data=' + e),
          (t = new Date());
        return (
          (n += '&' + t.getTime()),
          this._connInit(NetFunnel.RTYPE_GET_TID_CHK_ENTER)
            ? (this._sendRequest(n), !0)
            : (this._sendError(NetFunnel.RTYPE_GET_TID_CHK_ENTER, NetFunnel.kErrorNoinit), !1)
        );
      }),
      (NetFunnel.TsClient.prototype.aliveNoticeProc = function (e, t, n, i) {
        if (((i = 'undefined' == i ? !0 : i) && (this.counter[NetFunnel.RTYPE_ALIVE_NOTICE] = 0), !e || '' == e)) {
          if (!this.key) return this._sendError(NetFunnel.RTYPE_ALIVE_NOTICE, NetFunnel.kErrorParam), !1;
          e = this.key;
        }
        (this.key = e), (this.ip = t), (this.port = n);
        (i = ''),
          (i =
            (i =
              (t =
                1 < this.mConfig.conn_retry && this.counter[this._mReqType] == this.mConfig.conn_retry
                  ? this.mConfig.config_use
                  : t) &&
              '' != t &&
              n &&
              '' != n &&
              !this.mConfig.config_use
                ? ((this.ip = 0 == this.mConfig._host_changed ? t : this.mConfig.host),
                  (this.port = 0 == this.mConfig._port_changed ? n : this.mConfig.port),
                  this.mConfig.proto + '://' + this.ip + ':' + this.port + '/')
                : this.mConfig.proto + '://' + this.mConfig.host + ':' + this.mConfig.port + '/') +
            this.mConfig.query +
            '?opcode=' +
            NetFunnel.RTYPE_ALIVE_NOTICE +
            '&key=' +
            e +
            '&nfid=' +
            this.id +
            '&prefix=NetFunnel.gRtype=' +
            NetFunnel.RTYPE_ALIVE_NOTICE +
            ';'),
          (i += '&sid=' + this.mConfig.service_id + '&aid=' + this.mConfig.action_id),
          (t = this.getUserdata()),
          '' != t && (i += '&user_data=' + t),
          (i += '&js=yes'),
          (n = new Date());
        return (
          (i += '&' + n.getTime()),
          this._connInit(NetFunnel.RTYPE_ALIVE_NOTICE)
            ? (this._sendRequest(i), !0)
            : (this._sendError(NetFunnel.RTYPE_ALIVE_NOTICE, NetFunnel.kErrorNoinit), !1)
        );
      }),
      (NetFunnel.TsClient.prototype.aliveNotice = function (e, t, n, i) {
        return 1 == NetFunnel.TS_BYPASS
          ? (this.fireEvent(null, this, 'onSuccess', {
              rtype: this._mReqType,
              code: NetFunnel.kSuccess,
              data: {},
              next: this.next.success,
            }),
            !0)
          : this._mStatus == NetFunnel.PS_RUNNING || this._mStatus == NetFunnel.PS_CONTINUE
          ? (this._sendError(NetFunnel.RTYPE_ALIVE_NOTICE, NetFunnel.kErrorAlready), !1)
          : this.aliveNoticeProc(e, t, n, i);
      }),
      (NetFunnel.TsClient.prototype.aliveNoticeCont = function (e, t, n, i) {
        return this._mStatus == NetFunnel.PS_RUNNING
          ? (this._sendError(NetFunnel.RTYPE_ALIVE_NOTICE, NetFunnel.kErrorAlready), !1)
          : this.aliveNoticeProc(e, t, n, i);
      }),
      (NetFunnel.TsClient.prototype.setComplete = function (e, t, n, i) {
        if ((new NetFunnel.Storage().setItemStorageOnly('NFMPT.reqCnt', '0'), 1 == NetFunnel.TS_BYPASS))
          this.fireEvent(null, this, 'onSuccess', {
            rtype: this._mReqType,
            code: NetFunnel.kSuccess,
            data: {},
            next: this.next.success,
          });
        else {
          if (
            ((i = 'undefined' == i ? !0 : i) && (this.counter[NetFunnel.RTYPE_SET_COMPLETE] = 0),
            this._mStatus == NetFunnel.PS_RUNNING)
          )
            return this._sendError(NetFunnel.RTYPE_SET_COMPLETE, NetFunnel.kErrorAlready), !1;
          if (!e || '' == e) {
            if (!this.key) return this._sendError(NetFunnel.RTYPE_SET_COMPLETE, NetFunnel.kErrorParam), !1;
            e = this.key;
          }
          if (
            ((this.key = e),
            (this.ip = t),
            1 < this.mConfig.conn_retry &&
              this.counter[this._mReqType] == this.mConfig.conn_retry - 1 &&
              (t = this.mConfig.config_use),
            (this.port = n),
            e == NetFunnel.CONN_TIMEOUT_KEY)
          )
            (i = new NetFunnel.RetVal(NetFunnel.RTYPE_SET_COMPLETE + ':' + NetFunnel.kSuccess + ':utime=1')),
              this._showResultSetComplete(i);
          else {
            (i = ''),
              (t =
                ((i =
                  (i =
                    t && '' != t && n && '' != n && !this.mConfig.config_use
                      ? ((this.ip = 0 == this.mConfig._host_changed ? t : this.mConfig.host),
                        (this.port = 0 == this.mConfig._port_changed ? n : this.mConfig.port),
                        this.mConfig.proto + '://' + this.ip + ':' + this.port + '/')
                      : this.mConfig.proto + '://' + this.mConfig.host + ':' + this.mConfig.port + '/') +
                  this.mConfig.query +
                  '?opcode=' +
                  NetFunnel.RTYPE_SET_COMPLETE +
                  '&key=' +
                  e +
                  '&nfid=' +
                  this.id +
                  '&prefix=NetFunnel.gRtype=' +
                  NetFunnel.RTYPE_SET_COMPLETE +
                  ';'),
                this.getUserdata())),
              (n = ('' != t && (i += '&user_data=' + t), (i += '&js=yes'), new Date()));
            if (((i += '&' + n.getTime()), !this._connInit(NetFunnel.RTYPE_SET_COMPLETE)))
              return this._sendError(NetFunnel.RTYPE_SET_COMPLETE, NetFunnel.kErrorNoinit), !1;
            this._sendRequest(i);
          }
        }
        return !0;
      }),
      (NetFunnel.TsClient.prototype.cookieExist = function () {
        var e = new NetFunnel.Storage(2),
          t = e.getItem(this.mConfig.cookie_id);
        return !(
          0 == t ||
          '' == t ||
          (!new NetFunnel.RetVal(t).getValue('key') && (e.removeItem(this.mConfig.cookie_id), 1))
        );
      }),
      (NetFunnel.TsClient.prototype.isRunning = function () {
        return this._mStatus == NetFunnel.PS_RUNNING || this._mStatus == NetFunnel.PS_CONTINUE;
      }),
      1 == NetFunnel.TS_AUTO_COMPLETE && NetFunnel_Complete(),
      'function' == typeof window.Function.bind
        ? ((top.NetFunnel = NetFunnel.NetFunnel = NetFunnel),
          (top.NetFunnel_init = NetFunnel.NetFunnel_init = NetFunnel_init.bind(this)),
          (top.NetFunnel_sendStop = NetFunnel.NetFunnel_sendStop = NetFunnel_sendStop.bind(this)),
          (top.NetFunnel_getTicketID = NetFunnel.NetFunnel_getTicketID = NetFunnel_getTicketID.bind(this)),
          (top.NetFunnel_chkEnter = NetFunnel.NetFunnel_chkEnter = NetFunnel_chkEnter.bind(this)),
          (top.NetFunnel_getTidChkEnter = NetFunnel.NetFunnel_getTidChkEnter = NetFunnel_getTidChkEnter.bind(this)),
          (top.NetFunnel_aliveNotice = NetFunnel.NetFunnel_aliveNotice = NetFunnel_aliveNotice.bind(this)),
          (top.NetFunnel_setComplete = NetFunnel.NetFunnel_setComplete = NetFunnel_setComplete.bind(this)),
          (top.NetFunnel_cookieExist = NetFunnel.NetFunnel_cookieExist = NetFunnel_cookieExist.bind(this)),
          (top.NetFunnel_isRunning = NetFunnel.NetFunnel_isRunning = NetFunnel_isRunning.bind(this)),
          (top.NetFunnel_goForm = NetFunnel.NetFunnel_goForm = NetFunnel_goForm.bind(this)),
          (top.NetFunnel_goUrl = NetFunnel.NetFunnel_goUrl = NetFunnel_goUrl.bind(this)),
          (top.NetFunnel_goFunc = NetFunnel.NetFunnel_goFunc = NetFunnel_goFunc.bind(this)),
          (top.NetFunnel_goComplete = NetFunnel.NetFunnel_goComplete = NetFunnel_goComplete.bind(this)),
          (top.NetFunnel_goAliveNotice = NetFunnel.NetFunnel_goAliveNotice = NetFunnel_goAliveNotice.bind(this)),
          (top.NetFunnel_Action = NetFunnel.NetFunnel_Action = NetFunnel_Action.bind(this)),
          (top.NetFunnel_Complete = NetFunnel.NetFunnel_Complete = NetFunnel_Complete.bind(this)),
          (top.NetFunnel_AliveNotice = NetFunnel.NetFunnel_AliveNotice = NetFunnel_AliveNotice.bind(this)),
          (top.DefaultCallback_onSuccess = NetFunnel.DefaultCallback_onSuccess = DefaultCallback_onSuccess.bind(this)))
        : ((top.NetFunnel = NetFunnel),
          (top.NetFunnel_init = NetFunnel_init),
          (top.NetFunnel_sendStop = NetFunnel_sendStop),
          (top.NetFunnel_getTicketID = NetFunnel_getTicketID),
          (top.NetFunnel_chkEnter = NetFunnel_chkEnter),
          (top.NetFunnel_getTidChkEnter = NetFunnel_getTidChkEnter),
          (top.NetFunnel_aliveNotice = NetFunnel_aliveNotice),
          (top.NetFunnel_setComplete = NetFunnel_setComplete),
          (top.NetFunnel_cookieExist = NetFunnel_cookieExist),
          (top.NetFunnel_isRunning = NetFunnel_isRunning),
          (top.NetFunnel_goForm = NetFunnel_goForm),
          (top.NetFunnel_goUrl = NetFunnel_goUrl),
          (top.NetFunnel_goFunc = NetFunnel_goFunc),
          (top.NetFunnel_goComplete = NetFunnel_goComplete),
          (top.NetFunnel_goAliveNotice = NetFunnel_goAliveNotice),
          (top.NetFunnel_Action = NetFunnel_Action),
          (top.NetFunnel_Complete = NetFunnel_Complete),
          (top.NetFunnel_AliveNotice = NetFunnel_AliveNotice),
          (top.DefaultCallback_onSuccess = DefaultCallback_onSuccess)),
      'object' == typeof module && 'object' == typeof module.exports && (module.exports = NetFunnel);
  })('undefined' != typeof window ? window : this),
  !(function (r, s) {
    function e(e, t, n) {
      var i = this;
      return (
        (this.opts = e || null),
        (this.conf = t || null),
        (this.nfProcess = n || null),
        (this.callback = null),
        (this.completeCallback = null),
        (this.nfKey = null),
        (this.nfPort = null),
        (this.requestTimer = null),
        (this.xhrRequest = null),
        (this.runStatus = null),
        (this.requests = []),
        (this.prng = new h(f())),
        (this.nfStorageId = 'nf_default'),
        (this.nfSectionId = 'nf_section:'),
        (this.blockMessage = 'Service Block!'),
        (this.nfWaitPopup = new l(this.opts, this.conf)),
        (this.nfWaitPopup.userStop = function () {
          i.userStop();
        }),
        (this.nfStorage = new W(this.nfStorageId)),
        (this.sectionTimerList = {}),
        this.init(),
        (r.Surffy_NF_SectionBegin = this.Action.bind(this)),
        (r.Surffy_NF_Action = this.Action.bind(this)),
        (r.Surffy_Action = this.Action.bind(this)),
        (r.Surffy_Complete = this.Complete.bind(this)),
        (r.NFStart = this.NFStart.bind(this)),
        (r.NFStop = this.NFStop.bind(this)),
        (r.NFStartSection = this.NFStartSection.bind(this)),
        (r.NFStopSection = this.NFStopSection.bind(this)),
        this
      );
    }
    var a = '4.1.21',
      o = 'prod',
      u = !1,
      A = {
        dev: 'https://eum-receiver.develop.stclab.com',
        staging: 'https://eum-receiver.staging.stclab.com',
        prod: 'https://eum-receiver.stclab.com',
      },
      B = {
        dev: 'https://nf-setting-bucket.develop.stclab.com',
        staging: 'https://nf-setting-bucket.staging.stclab.com',
        prod: 'https://nf-setting-bucket.stclab.com',
      };
    !function () {
      var e = {
          function: !0,
          object: !0,
        },
        P = (e[typeof window] && window) || this,
        n = e[typeof exports] && exports,
        e = e[typeof module] && module && !module.nodeType && module,
        t = n && e && 'object' == typeof global && global,
        a = (!t || (t.global !== t && t.window !== t && t.self !== t) || (P = t), Math.pow(2, 53) - 1),
        I = /\bOpera/,
        t = Object.prototype,
        i = t.hasOwnProperty,
        R = t.toString;
      function o(e) {
        return (e = String(e)).charAt(0).toUpperCase() + e.slice(1);
      }
      function D(e) {
        return (e = W(e)), /^(?:webOS|i(?:OS|P))/.test(e) ? e : o(e);
      }
      function O(e, t) {
        for (var n in e) i.call(e, n) && t(e[n], n, e);
      }
      function L(e) {
        return null == e ? o(e) : R.call(e).slice(8, -1);
      }
      function A(e) {
        return String(e).replace(/([ -])(?!$)/g, '$1?');
      }
      function B(n, i) {
        var o = null,
          e = n,
          t = function (e, t) {
            o = i(o, e, t, n);
          },
          r = -1,
          s = e ? e.length : 0;
        if ('number' == typeof s && -1 < s && s <= a) for (; ++r < s; ) t(e[r], r, e);
        else O(e, t);
        return o;
      }
      function W(e) {
        return String(e).replace(/^ +| +$/g, '');
      }
      function M(r) {
        var t,
          n,
          e,
          i,
          o = P,
          s = r && 'object' == typeof r && 'String' != L(r),
          a = (s && ((o = r), (r = null)), o.navigator || {}),
          l = a.userAgent || '',
          u = ((r = r || l), s ? !!a.likeChrome : /\bChrome\b/.test(r) && !/internal|\n/i.test(R.toString())),
          p = 'Object',
          c = s ? p : 'ScriptBridgingProxyObject',
          h = s ? p : 'Environment',
          g = s && o.java ? 'JavaPackage' : L(o.java),
          p = s ? p : 'RuntimeObject',
          g = /\bJava/.test(g) && o.java,
          h = g && L(o.environment) == h,
          d = g ? 'a' : 'α',
          f = g ? 'b' : 'β',
          m = o.document || {},
          N = o.operamini || o.opera,
          s = I.test((s = s && N ? N['[[Class]]'] : L(N))) ? s : (N = null),
          y = r,
          _ = [],
          F = null,
          l = r == l,
          b = l && N && 'function' == typeof N.version && N.version(),
          T = B(
            [
              {
                label: 'EdgeHTML',
                pattern: 'Edge',
              },
              'Trident',
              {
                label: 'WebKit',
                pattern: 'AppleWebKit',
              },
              'iCab',
              'Presto',
              'NetFront',
              'Tasman',
              'KHTML',
              'Gecko',
            ],
            function (e, t) {
              return e || (RegExp('\\b' + (t.pattern || A(t)) + '\\b', 'i').exec(r) && (t.label || t));
            }
          ),
          v = B(
            [
              'Adobe AIR',
              'Aurora',
              'Avant Browser',
              'Breach',
              'Camino',
              'Electron',
              'Epiphany',
              'Fennec',
              'Flock',
              'Galeon',
              'GreenBrowser',
              'iCab',
              'Iceweasel',
              'K-Meleon',
              'Konqueror',
              'Lunascape',
              'Maxthon',
              {
                label: 'Microsoft Edge',
                pattern: '(?:Edge|Edg|EdgA|EdgiOS)',
              },
              'Midori',
              'Nook Browser',
              'PaleMoon',
              'PhantomJS',
              'Raven',
              'Rekonq',
              'RockMelt',
              {
                label: 'Samsung Internet',
                pattern: 'SamsungBrowser',
              },
              'SeaMonkey',
              {
                label: 'Silk',
                pattern: '(?:Cloud9|Silk-Accelerated)',
              },
              'Sleipnir',
              'SlimBrowser',
              {
                label: 'SRWare Iron',
                pattern: 'Iron',
              },
              'Sunrise',
              'Swiftfox',
              'Vivaldi',
              'Waterfox',
              'WebPositive',
              {
                label: 'Yandex Browser',
                pattern: 'YaBrowser',
              },
              {
                label: 'UC Browser',
                pattern: 'UCBrowser',
              },
              'Opera Mini',
              {
                label: 'Opera Mini',
                pattern: 'OPiOS',
              },
              'Opera',
              {
                label: 'Opera',
                pattern: 'OPR',
              },
              'Chromium',
              'Chrome',
              {
                label: 'Chrome',
                pattern: '(?:HeadlessChrome)',
              },
              {
                label: 'Chrome Mobile',
                pattern: '(?:CriOS|CrMo)',
              },
              {
                label: 'Firefox',
                pattern: '(?:Firefox|Minefield)',
              },
              {
                label: 'Firefox for iOS',
                pattern: 'FxiOS',
              },
              {
                label: 'IE',
                pattern: 'IEMobile',
              },
              {
                label: 'IE',
                pattern: 'MSIE',
              },
              'Safari',
            ],
            function (e, t) {
              return e || (RegExp('\\b' + (t.pattern || A(t)) + '\\b', 'i').exec(r) && (t.label || t));
            }
          ),
          S = k([
            {
              label: 'BlackBerry',
              pattern: 'BB10',
            },
            'BlackBerry',
            {
              label: 'Galaxy S',
              pattern: 'GT-I9000',
            },
            {
              label: 'Galaxy S2',
              pattern: 'GT-I9100',
            },
            {
              label: 'Galaxy S3',
              pattern: 'GT-I9300',
            },
            {
              label: 'Galaxy S4',
              pattern: 'GT-I9500',
            },
            {
              label: 'Galaxy S5',
              pattern: 'SM-G900',
            },
            {
              label: 'Galaxy S6',
              pattern: 'SM-G920',
            },
            {
              label: 'Galaxy S6 Edge',
              pattern: 'SM-G925',
            },
            {
              label: 'Galaxy S7',
              pattern: 'SM-G930',
            },
            {
              label: 'Galaxy S7 Edge',
              pattern: 'SM-G935',
            },
            'Google TV',
            'Lumia',
            'iPad',
            'iPod',
            'iPhone',
            'Kindle',
            {
              label: 'Kindle Fire',
              pattern: '(?:Cloud9|Silk-Accelerated)',
            },
            'Nexus',
            'Nook',
            'PlayBook',
            'PlayStation Vita',
            'PlayStation',
            'TouchPad',
            'Transformer',
            {
              label: 'Wii U',
              pattern: 'WiiU',
            },
            'Wii',
            'Xbox One',
            {
              label: 'Xbox 360',
              pattern: 'Xbox',
            },
            'Xoom',
          ]),
          C = B(
            {
              Apple: {
                iPad: 1,
                iPhone: 1,
                iPod: 1,
              },
              Alcatel: {},
              Archos: {},
              Amazon: {
                Kindle: 1,
                'Kindle Fire': 1,
              },
              Asus: {
                Transformer: 1,
              },
              'Barnes & Noble': {
                Nook: 1,
              },
              BlackBerry: {
                PlayBook: 1,
              },
              Google: {
                'Google TV': 1,
                Nexus: 1,
              },
              HP: {
                TouchPad: 1,
              },
              HTC: {},
              Huawei: {},
              Lenovo: {},
              LG: {},
              Microsoft: {
                Xbox: 1,
                'Xbox One': 1,
              },
              Motorola: {
                Xoom: 1,
              },
              Nintendo: {
                'Wii U': 1,
                Wii: 1,
              },
              Nokia: {
                Lumia: 1,
              },
              Oppo: {},
              Samsung: {
                'Galaxy S': 1,
                'Galaxy S2': 1,
                'Galaxy S3': 1,
                'Galaxy S4': 1,
              },
              Sony: {
                PlayStation: 1,
                'PlayStation Vita': 1,
              },
              Xiaomi: {
                Mi: 1,
                Redmi: 1,
              },
            },
            function (e, t, n) {
              return (
                e ||
                ((t[S] ||
                  t[/^[a-z]+(?: +[a-z]+\b)*/i.exec(S)] ||
                  RegExp('\\b' + A(n) + '(?:\\b|\\w*\\d)', 'i').exec(r)) &&
                  n)
              );
            }
          ),
          E = B(
            [
              'Windows Phone',
              'KaiOS',
              'Android',
              'CentOS',
              {
                label: 'Chrome OS',
                pattern: 'CrOS',
              },
              'Debian',
              {
                label: 'DragonFly BSD',
                pattern: 'DragonFly',
              },
              'Fedora',
              'FreeBSD',
              'Gentoo',
              'Haiku',
              'Kubuntu',
              'Linux Mint',
              'OpenBSD',
              'Red Hat',
              'SuSE',
              'Ubuntu',
              'Xubuntu',
              'Cygwin',
              'Symbian OS',
              'hpwOS',
              'webOS ',
              'webOS',
              'Tablet OS',
              'Tizen',
              'Linux',
              'Mac OS X',
              'Macintosh',
              'Mac',
              'Windows 98;',
              'Windows ',
            ],
            function (e, t) {
              var n,
                i,
                o = t.pattern || A(t);
              return (
                !e &&
                  (e = RegExp('\\b' + o + '(?:/[\\d.]+|[ \\w.]*)', 'i').exec(r)) &&
                  ((n = e),
                  (o = o),
                  (t = t.label || t),
                  (i = {
                    '10.0': '10',
                    6.4: '10 Technical Preview',
                    6.3: '8.1',
                    6.2: '8',
                    6.1: 'Server 2008 R2 / 7',
                    '6.0': 'Server 2008 / Vista',
                    5.2: 'Server 2003 / XP 64-bit',
                    5.1: 'XP',
                    5.01: '2000 SP1',
                    '5.0': '2000',
                    '4.0': 'NT',
                    '4.90': 'ME',
                  }),
                  o &&
                    t &&
                    /^Win/i.test(n) &&
                    !/^Windows Phone /i.test(n) &&
                    (i = i[/[\d.]+$/.exec(n)]) &&
                    (n = 'Windows ' + i),
                  (n = String(n)),
                  (e = n =
                    D(
                      (n = o && t ? n.replace(RegExp(o, 'i'), t) : n)
                        .replace(/ ce$/i, ' CE')
                        .replace(/\bhpw/i, 'web')
                        .replace(/\bMacintosh\b/, 'Mac OS')
                        .replace(/_PowerPC\b/i, ' OS')
                        .replace(/\b(OS X) [^ \d]+/i, '$1')
                        .replace(/\bMac (OS X)\b/, '$1')
                        .replace(/\/(\d)/, ' $1')
                        .replace(/_/g, '.')
                        .replace(/(?: BePC|[ .]*fc[ \d.]+)$/i, '')
                        .replace(/\bx86\.64\b/gi, 'x86_64')
                        .replace(/\b(Windows Phone) OS\b/, '$1')
                        .replace(/\b(Chrome OS \w+) [\d.]+\b/, '$1')
                        .split(' on ')[0]
                    ))),
                e
              );
            }
          );
        function k(e) {
          return B(e, function (e, t) {
            var n = t.pattern || A(t);
            return (
              !e &&
                (e =
                  RegExp('\\b' + n + ' *\\d+[.\\w_]*', 'i').exec(r) ||
                  RegExp('\\b' + n + ' *\\w+-[\\w]*', 'i').exec(r) ||
                  RegExp('\\b' + n + '(?:; *(?:[a-z]+[_-])?[a-z]+\\d+|[^ ();-]*)', 'i').exec(r)) &&
                ((e = String(t.label && !RegExp(n, 'i').test(t.label) ? t.label : e).split('/'))[1] &&
                  !/[\d.]+/.test(e[0]) &&
                  (e[0] += ' ' + e[1]),
                (t = t.label || t),
                (e = D(
                  e[0]
                    .replace(RegExp(n, 'i'), t)
                    .replace(RegExp('; *(?:' + t + '[_-])?', 'i'), ' ')
                    .replace(RegExp('(' + t + ')[-_.]?(\\w)', 'i'), '$1 $2')
                ))),
              e
            );
          });
        }
        function x(e) {
          return B(e, function (e, t) {
            return (
              e || (RegExp(t + '(?:-[\\d.]+/|(?: for [\\w-]+)?[ /-])([\\d.]+[^ ();/_-]*)', 'i').exec(r) || 0)[1] || null
            );
          });
        }
        if (
          ((T = T && [T]),
          /\bAndroid\b/.test(E) &&
            !S &&
            (t = /\bAndroid[^;]*;(.*?)(?:Build|\) AppleWebKit)\b/i.exec(r)) &&
            (S = W(t[1]).replace(/^[a-z]{2}-[a-z]{2};\s*/i, '') || null),
          C && !S
            ? (S = k([C]))
            : C &&
              (S =
                S &&
                S.replace(RegExp('^(' + A(C) + ')[-_.\\s]', 'i'), C + ' ').replace(
                  RegExp('^(' + A(C) + ')[-_.]?(\\w)', 'i'),
                  C + ' $2'
                )),
          (t = /\bGoogle TV\b/.exec(S)) && (S = t[0]),
          /\bSimulator\b/i.test(r) && (S = (S ? S + ' ' : '') + 'Simulator'),
          'Opera Mini' == v && /\bOPiOS\b/.test(r) && _.push('running in Turbo/Uncompressed mode'),
          'IE' == v && /\blike iPhone OS\b/.test(r)
            ? ((C = (t = M(r.replace(/like iPhone OS/, ''))).manufacturer), (S = t.product))
            : /^iP/.test(S)
            ? ((v = v || 'Safari'), (E = 'iOS' + ((t = / OS ([\d_]+)/i.exec(r)) ? ' ' + t[1].replace(/_/g, '.') : '')))
            : 'Konqueror' == v && /^Linux\b/i.test(E)
            ? (E = 'Kubuntu')
            : (C && 'Google' != C && ((/Chrome/.test(v) && !/\bMobile Safari\b/i.test(r)) || /\bVita\b/.test(S))) ||
              (/\bAndroid\b/.test(E) && /^Chrome/.test(v) && /\bVersion\//i.test(r))
            ? ((v = 'Android Browser'), (E = /\bAndroid\b/.test(E) ? E : 'Android'))
            : 'Silk' == v
            ? (/\bMobi/i.test(r) || ((E = 'Android'), _.unshift('desktop mode')),
              /Accelerated *= *true/i.test(r) && _.unshift('accelerated'))
            : 'UC Browser' == v && /\bUCWEB\b/.test(r)
            ? _.push('speed mode')
            : 'PaleMoon' == v && (t = /\bFirefox\/([\d.]+)\b/.exec(r))
            ? _.push('identifying as Firefox ' + t[1])
            : 'Firefox' == v && (t = /\b(Mobile|Tablet|TV)\b/i.exec(r))
            ? ((E = E || 'Firefox OS'), (S = S || t[1]))
            : !v || (t = !/\bMinefield\b/i.test(r) && /\b(?:Firefox|Safari)\b/.exec(v))
            ? (v && !S && /[\/,]|^[^(]+?\)/.test(r.slice(r.indexOf(t + '/') + 8)) && (v = null),
              (t = S || C || E) &&
                (S || C || /\b(?:Android|Symbian OS|Tablet OS|webOS)\b/.test(E)) &&
                (v = /[a-z]+(?: Hat)?/i.exec(/\bAndroid\b/.test(E) ? E : t) + ' Browser'))
            : 'Electron' == v && (t = (/\bChrome\/([\d.]+)\b/.exec(r) || 0)[1]) && _.push('Chromium ' + t),
          (b =
            b ||
            x([
              '(?:Cloud9|CriOS|CrMo|Edge|Edg|EdgA|EdgiOS|FxiOS|HeadlessChrome|IEMobile|Iron|Opera ?Mini|OPiOS|OPR|Raven|SamsungBrowser|Silk(?!/[\\d.]+$)|UCBrowser|YaBrowser)',
              'Version',
              A(v),
              '(?:Firefox|Minefield|NetFront)',
            ])),
          (t =
            ('iCab' == T && 3 < parseFloat(b)
              ? 'WebKit'
              : /\bOpera\b/.test(v) && (/\bOPR\b/.test(r) ? 'Blink' : 'Presto')) ||
            (/\b(?:Midori|Nook|Safari)\b/i.test(r) && !/^(?:Trident|EdgeHTML)$/.test(T)
              ? 'WebKit'
              : !T && /\bMSIE\b/i.test(r) && ('Mac OS' == E ? 'Tasman' : 'Trident')) ||
            ('WebKit' == T && /\bPlayStation\b(?! Vita\b)/i.test(v) && 'NetFront')) && (T = [t]),
          'IE' == v && (t = (/; *(?:XBLWP|ZuneWP)(\d+)/i.exec(r) || 0)[1])
            ? ((v += ' Mobile'), (E = 'Windows Phone ' + (/\+$/.test(t) ? t : t + '.x')), _.unshift('desktop mode'))
            : /\bWPDesktop\b/i.test(r)
            ? ((v = 'IE Mobile'),
              (E = 'Windows Phone 8.x'),
              _.unshift('desktop mode'),
              (b = b || (/\brv:([\d.]+)/.exec(r) || 0)[1]))
            : 'IE' != v &&
              'Trident' == T &&
              (t = /\brv:([\d.]+)/.exec(r)) &&
              (v && _.push('identifying as ' + v + (b ? ' ' + b : '')), (v = 'IE'), (b = t[1])),
          l)
        ) {
          if (
            ((i = 'global'),
            (w = null != (e = o) ? typeof e[i] : 'number'),
            /^(?:boolean|number|string|undefined)$/.test(w) || ('object' == w && !e[i]))
          )
            L((t = o.runtime)) == c
              ? ((v = 'Adobe AIR'), (E = t.flash.system.Capabilities.os))
              : L((t = o.phantom)) == p
              ? ((v = 'PhantomJS'), (b = (t = t.version || null) && t.major + '.' + t.minor + '.' + t.patch))
              : 'number' == typeof m.documentMode && (t = /\bTrident\/(\d+)/i.exec(r))
              ? ((b = [b, m.documentMode]),
                (t = +t[1] + 4) != b[1] && (_.push('IE ' + b[1] + ' mode'), T && (T[1] = ''), (b[1] = t)),
                (b = 'IE' == v ? String(b[1].toFixed(1)) : b[0]))
              : 'number' == typeof m.documentMode &&
                /^(?:Chrome|Firefox)\b/.test(v) &&
                (_.push('masking as ' + v + ' ' + b), (v = 'IE'), (b = '11.0'), (T = ['Trident']), (E = 'Windows'));
          else if (
            (g &&
              ((y = (t = g.lang.System).getProperty('os.arch')),
              (E = E || t.getProperty('os.name') + ' ' + t.getProperty('os.version'))),
            h)
          ) {
            try {
              (b = o.require('ringo/engine').version.join('.')), (v = 'RingoJS');
            } catch (e) {
              (t = o.system) && t.global.system == o.system && ((v = 'Narwhal'), (E = E || t[0].os || null));
            }
            v = v || 'Rhino';
          } else
            'object' == typeof o.process &&
              !o.process.browser &&
              (t = o.process) &&
              ('object' == typeof t.versions &&
                ('string' == typeof t.versions.electron
                  ? (_.push('Node ' + t.versions.node), (v = 'Electron'), (b = t.versions.electron))
                  : 'string' == typeof t.versions.nw &&
                    (_.push('Chromium ' + b, 'Node ' + t.versions.node), (v = 'NW.js'), (b = t.versions.nw))),
              v ||
                ((v = 'Node.js'), (y = t.arch), (E = t.platform), (b = (b = /[\d.]+/.exec(t.version)) ? b[0] : null)));
          E = E && D(E);
        }
        if (
          (b &&
            (t =
              /(?:[ab]|dp|pre|[ab]\d+pre)(?:\d+\+?)?$/i.exec(b) ||
              /(?:alpha|beta)(?: ?\d)?/i.exec(r + ';' + (l && a.appMinorVersion)) ||
              (/\bMinefield\b/i.test(r) && 'a')) &&
            ((F = /b/i.test(t) ? 'beta' : 'alpha'),
            (b = b.replace(RegExp(t + '\\+?$'), '') + ('beta' == F ? f : d) + (/\d+\+?/.exec(t) || ''))),
          'Fennec' == v || ('Firefox' == v && /\b(?:Android|Firefox OS|KaiOS)\b/.test(E)))
        )
          v = 'Firefox Mobile';
        else if ('Maxthon' == v && b) b = b.replace(/\.[\d.]+/, '.x');
        else if (/\bXbox\b/i.test(S))
          'Xbox 360' == S && (E = null), 'Xbox 360' == S && /\bIEMobile\b/.test(r) && _.unshift('mobile mode');
        else if (
          (!/^(?:Chrome|IE|Opera)$/.test(v) && (!v || S || /Browser|Mobi/.test(v))) ||
          ('Windows CE' != E && !/Mobi/i.test(r))
        )
          if ('IE' == v && l)
            try {
              null === o.external && _.unshift('platform preview');
            } catch (e) {
              _.unshift('embedded');
            }
          else
            (/\bBlackBerry\b/.test(S) || /\bBB10\b/.test(r)) &&
            (t = (RegExp(S.replace(/ +/g, ' *') + '/([.\\d]+)', 'i').exec(r) || 0)[1] || b)
              ? ((E =
                  ((t = [t, /BB10/.test(r)])[1] ? ((S = null), (C = 'BlackBerry')) : 'Device Software') + ' ' + t[0]),
                (b = null))
              : this != O &&
                'Wii' != S &&
                ((l && N) ||
                  (/Opera/.test(v) && /\b(?:MSIE|Firefox)\b/i.test(r)) ||
                  ('Firefox' == v && /\bOS X (?:\d+\.){2,}/.test(E)) ||
                  ('IE' == v &&
                    ((E && !/^Win/.test(E) && 5.5 < b) ||
                      (/\bWindows XP\b/.test(E) && 8 < b) ||
                      (8 == b && !/\bTrident\b/.test(r))))) &&
                !I.test((t = M.call(O, r.replace(I, '') + ';'))) &&
                t.name &&
                ((t = 'ing as ' + t.name + ((t = t.version) ? ' ' + t : '')),
                I.test(v)
                  ? (/\bIE\b/.test(t) && 'Mac OS' == E && (E = null), (t = 'identify' + t))
                  : ((t = 'mask' + t),
                    (v = s ? D(s.replace(/([a-z])([A-Z])/g, '$1 $2')) : 'Opera'),
                    /\bIE\b/.test(t) && (E = null),
                    l || (b = null)),
                (T = ['Presto']),
                _.push(t));
        else v += ' Mobile';
        (t = (/\bAppleWebKit\/([\d.]+\+?)/i.exec(r) || 0)[1]) &&
          ((t = [parseFloat(t.replace(/\.(\d)$/, '.0$1')), t]),
          'Safari' == v && '+' == t[1].slice(-1)
            ? ((v = 'WebKit Nightly'), (F = 'alpha'), (b = t[1].slice(0, -1)))
            : (b != t[1] && b != (t[2] = (/\bSafari\/([\d.]+\+?)/i.exec(r) || 0)[1])) || (b = null),
          (t[1] = (/\b(?:Headless)?Chrome\/([\d.]+)/i.exec(r) || 0)[1]),
          537.36 == t[0] && 537.36 == t[2] && 28 <= parseFloat(t[1]) && 'WebKit' == T && (T = ['Blink']),
          (t =
            l && (u || t[1])
              ? (T && (T[1] = 'like Chrome'),
                t[1] ||
                  ((t = t[0]) < 530
                    ? 1
                    : t < 532
                    ? 2
                    : t < 532.05
                    ? 3
                    : t < 533
                    ? 4
                    : t < 534.03
                    ? 5
                    : t < 534.07
                    ? 6
                    : t < 534.1
                    ? 7
                    : t < 534.13
                    ? 8
                    : t < 534.16
                    ? 9
                    : t < 534.24
                    ? 10
                    : t < 534.3
                    ? 11
                    : t < 535.01
                    ? 12
                    : t < 535.02
                    ? '13+'
                    : t < 535.07
                    ? 15
                    : t < 535.11
                    ? 16
                    : t < 535.19
                    ? 17
                    : t < 536.05
                    ? 18
                    : t < 536.1
                    ? 19
                    : t < 537.01
                    ? 20
                    : t < 537.11
                    ? '21+'
                    : t < 537.13
                    ? 23
                    : t < 537.18
                    ? 24
                    : t < 537.24
                    ? 25
                    : t < 537.36
                    ? 26
                    : 'Blink' != T
                    ? '27'
                    : '28'))
              : (T && (T[1] = 'like Safari'),
                (t = t[0]) < 400
                  ? 1
                  : t < 500
                  ? 2
                  : t < 526
                  ? 3
                  : t < 533
                  ? 4
                  : t < 534
                  ? '4+'
                  : t < 535
                  ? 5
                  : t < 537
                  ? 6
                  : t < 538
                  ? 7
                  : t < 601
                  ? 8
                  : t < 602
                  ? 9
                  : t < 604
                  ? 10
                  : t < 606
                  ? 11
                  : t < 608
                  ? 12
                  : '12')),
          T && (T[1] += ' ' + (t += 'number' == typeof t ? '.x' : /[.+]/.test(t) ? '' : '+')),
          'Safari' == v && (!b || 45 < parseInt(b))
            ? (b = t)
            : 'Chrome' == v && /\bHeadlessChrome/i.test(r) && _.unshift('headless')),
          'Opera' == v && (t = /\bzbov|zvav$/.exec(E))
            ? ((v += ' '),
              _.unshift('desktop mode'),
              'zvav' == t ? ((v += 'Mini'), (b = null)) : (v += 'Mobile'),
              (E = E.replace(RegExp(' *' + t + '$'), '')))
            : 'Safari' == v && /\bChrome\b/.exec(T && T[1])
            ? (_.unshift('desktop mode'),
              (v = 'Chrome Mobile'),
              (b = null),
              (E = /\bOS X\b/.test(E) ? ((C = 'Apple'), 'iOS 4.3+') : null))
            : /\bSRWare Iron\b/.test(v) && !b && (b = x('Chrome')),
          (E =
            b && 0 == b.indexOf((t = /[\d.]+$/.exec(E))) && -1 < r.indexOf('/' + t + '-') ? W(E.replace(t, '')) : E) &&
            -1 != E.indexOf(v) &&
            !RegExp(v + ' OS').test(E) &&
            (E = E.replace(RegExp(' *' + A(v) + ' *'), '')),
          T &&
            !/\b(?:Avant|Nook)\b/.test(v) &&
            (/Browser|Lunascape|Maxthon/.test(v) ||
              ('Safari' != v && /^iOS/.test(E) && /\bSafari\b/.test(T[1])) ||
              (/^(?:Adobe|Arora|Breach|Midori|Opera|Phantom|Rekonq|Rock|Samsung Internet|Sleipnir|SRWare Iron|Vivaldi|Web)/.test(
                v
              ) &&
                T[1])) &&
            (t = T[T.length - 1]) &&
            _.push(t),
          _.length && (_ = ['(' + _.join('; ') + ')']),
          C && S && S.indexOf(C) < 0 && _.push('on ' + C),
          S && _.push((/^on /.test(_[_.length - 1]) ? '' : 'on ') + S),
          E &&
            ((t = / ([\d.+]+)$/.exec(E)),
            (n = t && '/' == E.charAt(E.length - t[0].length - 1)),
            (E = {
              architecture: 32,
              family: t && !n ? E.replace(t[0], '') : E,
              version: t ? t[1] : null,
              toString: function () {
                var e = this.version;
                return this.family + (e && !n ? ' ' + e : '') + (64 == this.architecture ? ' 64-bit' : '');
              },
            })),
          (t = /\b(?:AMD|IA|Win|WOW|x86_|x)64\b/i.exec(y)) && !/\bi686\b/i.test(y)
            ? (E && ((E.architecture = 64), (E.family = E.family.replace(RegExp(' *' + t), ''))),
              v &&
                (/\bWOW64\b/i.test(r) ||
                  (l && /\w(?:86|32)$/.test(a.cpuClass || a.platform) && !/\bWin64; x64\b/i.test(r))) &&
                _.unshift('32-bit'))
            : E && /^OS X/.test(E.family) && 'Chrome' == v && 39 <= parseFloat(b) && (E.architecture = 64),
          (r = r || null);
        var w = {};
        return (
          (w.description = r),
          (w.layout = T && T[0]),
          (w.manufacturer = C),
          (w.name = v),
          (w.prerelease = F),
          (w.product = S),
          (w.ua = r),
          (w.version = v && b),
          (w.os = E || {
            architecture: null,
            family: null,
            version: null,
            toString: function () {
              return 'null';
            },
          }),
          (w.parse = M),
          (w.toString = function () {
            return this.description || '';
          }),
          w.version && _.unshift(b),
          w.name && _.unshift(v),
          E &&
            v &&
            (E != String(E).split(' ')[0] || (E != v.split(' ')[0] && !S)) &&
            _.push(S ? '(' + E + ')' : 'on ' + E),
          _.length && (w.description = _.join(' ')),
          w
        );
      }
      var r = M();
      'function' == typeof define && 'object' == typeof define.amd && define.amd
        ? ((P.platform = r),
          define(function () {
            return r;
          }))
        : n && e
        ? O(r, function (e, t) {
            n[t] = e;
          })
        : (P.platform = r);
    }.call(this),
      Function.prototype.bind ||
        (Function.prototype.bind = function (e) {
          if ('function' != typeof this)
            throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');
          function t() {
            return i.apply(this instanceof o && e ? this : e, n.concat(Array.prototype.slice.call(arguments)));
          }
          var n = Array.prototype.slice.call(arguments, 1),
            i = this,
            o = function () {};
          return (o.prototype = this.prototype), (t.prototype = new o()), t;
        }),
      Array.prototype.indexOf ||
        (Array.prototype.indexOf = (function (r, s, a) {
          'use strict';
          return function (e, t) {
            if (null == this) throw TypeError('Array.prototype.indexOf called on null or undefined');
            var n = r(this),
              i = n.length >>> 0,
              o = a(0 | t, i);
            if (o < 0) o = s(0, i + o);
            else if (i <= o) return -1;
            if (void 0 === e) {
              for (; o !== i; ++o) if (void 0 === n[o] && o in n) return o;
            } else {
              if (e != e) return -1;
              for (; o !== i; ++o) if (n[o] === e) return o;
            }
            return -1;
          };
        })(Object, Math.max, Math.min)),
      document.getElementById('NetFunnel_Wait_Popup');
    function n(e, t) {
      e = e.replace(/[/&?]+$/, '');
      return t && (e += ':' + t), e + '/ts.wseq';
    }
    (e.prototype.NFStart = function (t, n) {
      var i, e;
      (t || n) &&
        (((i = this).callback = n),
        null == (e = this.nfProcess.getStorageProjectList())
          ? this.nfProcess.getProjectList(function (e) {
              e = _(e, t);
              e
                ? ((e.eumType = 'api'), (e.path = i.runCommand(5101, t.segmentKey, null, e, null, t.projectKey)))
                : n && n();
            })
          : (e = _(e, t))
          ? ((e.eumType = 'api'), this.runCommand(5101, t.segmentKey, null, e, null, t.projectKey))
          : n && n());
    }),
      (e.prototype.NFStop = function (e, t) {
        this.completeCallback = t;
        var t = this.nfStorage.getData();
        t && ((t = this.responseParser(t, !0)), this.runCommand(5004, !1, t.port, !1, t.key));
      }),
      (e.prototype.NFStartSection = function (t, n) {
        var e;
        (t || n) &&
          ((this.callback = n),
          null == (e = this.nfProcess.getStorageProjectList())
            ? this.nfProcess.getProjectList(function (e) {
                e = F(e, t);
                e
                  ? ((e.eumType = 'api'),
                    (e.type = 'startUri'),
                    self.runCommand(5101, t.segmentKey, null, e, null, t.projectKey))
                  : n && n();
              })
            : (e = F(e, t))
            ? ((e.eumType = 'api'),
              (e.type = 'startUri'),
              this.runCommand(5101, t.segmentKey, null, e, null, t.projectKey))
            : n && n());
      }),
      (e.prototype.NFStopSection = function (e, t) {
        this.completeCallback = t;
        var e = {
            mode: 'section',
            type: 'endUri',
            projectKey: e.projectKey,
            key: e.segmentKey,
          },
          n = this.getSectionKey(this.nfSectionId, e.projectKey, e.key);
        n ? ((n = this.responseParser(n, !0)), this.runCommand(5004, !1, n.port, e, n.key)) : t && t();
      }),
      (e.prototype.userStop = function () {
        return (
          (this.isUserStop = !0),
          clearTimeout(this.requestTimer),
          this.xhrRequest && this.xhrRequest.abort(),
          'webview' === this.opts.type
            ? console.log(499)
            : ((this.runStatus = 'COMPLETE'),
              this.nfWaitPopup.hide(),
              this.nfWaitPopup.blockHide(),
              this.stopCallback && this.stopCallback()),
          (this.isUserStop = !1),
          this
        );
      }),
      (e.prototype.init = function () {
        return (
          (this.isUserStop = !1),
          (this.nfKey = null),
          this.nfWaitPopup && this.nfWaitPopup.init(),
          window.NetFunnel
            ? (window.NetFunnel.userStop = Function.prototype.bind && this.userStop.bind(this))
            : (window.NetFunnel = {
                userStop: Function.prototype.bind && this.userStop.bind(this),
              }),
          this
        );
      }),
      (e.prototype.runCallback = function (e, t) {
        var n;
        return (
          'object' == typeof t.path &&
            (t.path =
              t.path.protocol +
              '//' +
              t.path.hostname +
              (t.path.port ? ':' + t.path.port : '') +
              t.path.pathname +
              t.path.search),
          null != this.callback &&
            r.navigator.onLine &&
            ((n = null),
            t &&
              'api' === t.eumType &&
              (n = new g(
                this.conf,
                this.nfProcess.uid,
                this.prng.next(new Date().getTime()),
                t,
                t.key,
                t.projectKey
              )).setStartTime(),
            this.callback(e),
            t) &&
            'api' === t.eumType &&
            n.send(),
          this
        );
      }),
      (e.prototype.runCompleteCallback = function (e) {
        return null != this.completeCallback && this.completeCallback(e), this;
      }),
      (e.prototype.makeTenantNFUrl = function (e) {
        var t = '';
        if (this.opts.type && 'webview' === this.opts.type) {
          if (!this.conf.webviewData.tenantNFUrl) return !1;
          t = n(this.conf.webviewData.tenantNFUrl, e);
        } else {
          if (!this.opts.tenantNFUrl) return !1;
          t = n(this.opts.tenantNFUrl, e);
        }
        return t;
      }),
      (e.prototype.makeOpcodeParam = function (e, t, n, i) {
        var o = {};
        switch (e) {
          case 5101:
            (o.opcode = 5101), (o.sid = t), (o.aid = n);
            break;
          case 5002:
            (o.opcode = 5002), (o.key = i);
            break;
          case 5003:
            (o.opcode = 5003), (o.key = i);
            break;
          case 5004:
            (o.opcode = 5004), (o.key = i);
        }
        return o;
      }),
      (e.prototype.aliveCommand = function (e, t) {
        var n = JSON.parse(JSON.stringify(e)),
          i = this,
          e = parseInt(new Date().getTime() / 1e3, 10),
          o = this.getSectionKey(this.nfSectionId, n.projectKey, n.key);
        if (o) {
          var r = this.responseParser(o, !0);
          if (this.sectionTimerList[n.projectKey + ':' + n.key]) {
            if (0 == r.ttl || e - this.sectionTimerList[n.projectKey + ':' + n.key].time <= parseInt(r.ttl, 10) - 1)
              return;
            this.sectionTimerList[n.projectKey + ':' + n.key].time = e;
          } else
            this.sectionTimerList[n.projectKey + ':' + n.key] = {
              timer: null,
              time: parseInt(new Date().getTime() / 1e3, 10),
            };
          'load' === t && this.runCommand(5003, n.key, r.port, n, r.key);
          o = setTimeout(function () {
            i.runCommand(5003, n.key, r.port, n, r.key);
          }, 1e3 * (0 == r.ttl ? 10 : r.ttl));
          this.sectionTimerList[n.projectKey + ':' + n.key].timer = o;
        }
      }),
      (e.prototype.removeTimer = function (e, t) {
        return (
          !(!t || !e) &&
          (this.sectionTimerList[e + ':' + t] &&
            (clearTimeout(this.sectionTimerList[e + ':' + t].timer), delete this.sectionTimerList[e + ':' + t]),
          this)
        );
      }),
      (e.prototype.received = function (e, t, n) {
        var i = this,
          o = this.responseParser(t),
          r = (u && console.log('response', o), '');
        switch (
          (o &&
            (5003 !== e && ((this.nfKey = o.key || ''), (this.nfPort = o.port || '')),
            (r = o.status ? this.getCode(o.status) : null)),
          this.isUserStop && (r = 'user_stop'),
          u && console.log('code', r),
          (n.eumType = 'api'),
          r)
        ) {
          case 'network_failure':
            this.removeTimer(n.projectKey, n.key),
              this.nfStorage.removeData(this.nfSectionId + n.projectKey + ':' + n.key),
              this.nfWaitPopup.isBlockShow() && this.nfWaitPopup.blockHide(),
              this.nfWaitPopup.isShow() && this.nfWaitPopup.hide();
            break;
          case 'normal':
          case 'bypass':
          case 'express':
            this.nfWaitPopup.isShow() && this.nfWaitPopup.hide(),
              this.setNfResponse(e, t, n),
              5003 !== e &&
                ((this.runStatus = 'COMPLETE'),
                5004 === e
                  ? (n && 'section' == n.mode && 'endUri' === n.type
                      ? (this.removeTimer(n.projectKey, n.key),
                        this.nfStorage.removeData(this.nfSectionId + n.projectKey + ':' + n.key))
                      : this.nfStorage.removeData(),
                    this.runCompleteCallback(o))
                  : this.runCallback(o, n)),
              (5101 !== e && 5002 !== e && 5003 !== e) ||
                !n ||
                'section' !== n.mode ||
                'startUri' !== n.type ||
                this.aliveCommand(n);
            break;
          case 'invalid_key':
            this.nfWaitPopup.isShow() && this.nfWaitPopup.hide(),
              5003 === e
                ? (this.removeTimer(n.projectKey, n.key),
                  this.nfStorage.removeData(this.nfSectionId + n.projectKey + ':' + n.key))
                : ((this.runStatus = 'COMPLETE'), this.runCallback(o, n));
            break;
          case 'continue':
          case 'continue_debug':
            5003 === e
              ? (this.setNfResponse(e, t, n), this.aliveCommand(n))
              : ((this.nfWaitPopup.isShow() ? this.nfWaitPopup : this.nfWaitPopup.show(n)).setWaitValue(o, n),
                n &&
                  'section' === n.mode &&
                  (this.removeTimer(n.projectKey, n.key),
                  this.nfStorage.removeData(this.nfSectionId + n.projectKey + ':' + n.key)),
                (this.requestTimer = setTimeout(function () {
                  i.runCommand(5002, o.key, o.port, n);
                }, 1e3 * o.ttl)));
            break;
          case 'user_stop':
            5004 === e &&
              (n && 'section' == n.mode && 'endUri' === n.type
                ? (this.removeTimer(n.projectKey, n.key),
                  this.nfStorage.removeData(this.nfSectionId + n.projectKey + ':' + n.key))
                : this.nfStorage.removeData(),
              this.runCompleteCallback(o)),
              this.nfWaitPopup.isBlockShow() && this.nfWaitPopup.blockHide(),
              this.nfWaitPopup.isShow() && this.nfWaitPopup.hide();
          case 'block':
          case 'ipblock':
            this.nfWaitPopup.isShow() && this.nfWaitPopup.hide(),
              (this.runStatus = 'COMPLETE'),
              5003 === e || 5004 === e || this.nfWaitPopup.isBlockShow() || this.nfWaitPopup.blockShow(n);
            break;
          default:
            this.conf.nf.error_bypass &&
              (this.nfWaitPopup.isShow() && this.nfWaitPopup.hide(),
              5003 === e
                ? (this.nfStorage.removeData(this.nfSectionId + n.projectKey + ':' + n.key),
                  this.removeTimer(n.projectKey, n.key))
                : 5004 === e &&
                  (n && 'section' == n.mode && 'endUri' === n.type
                    ? (this.nfStorage.removeData(this.nfSectionId + n.projectKey + ':' + n.key),
                      this.removeTimer(n.projectKey, n.projectKey, n.key))
                    : ((this.runStatus = 'COMPLETE'), this.nfStorage.removeData())),
              this.runCallback(null, n),
              (this.runStatus = ''));
        }
      }),
      (e.prototype.webviewReceived = function (e, t, n) {
        var i = this,
          o = this.responseParser(t);
        switch (((this.nfKey = o.key), this.getCode(o.status))) {
          case 'network_failure':
            console.log(1001);
            break;
          case 'normal':
          case 'bypass':
          case 'express':
            r.navigator.onLine && console.log(o.status + ' ' + o.key);
            break;
          case 'invalid_key':
            console.log(o.status);
            break;
          case 'continue':
          case 'continue_debug':
            this.nfWaitPopup.isShow() || this.nfWaitPopup.show(n),
              this.nfWaitPopup.setWaitValue(o, n),
              this.nfWaitPopup.setWaitValue(o),
              (this.requestTimer = setTimeout(function () {
                i.runCommand(5002, null, o.port, n);
              }, 1e3 * o.ttl));
            break;
          case 'block':
          case 'ipblock':
            this.nfWaitPopup.hide(),
              5003 === e || 5004 === e || this.nfWaitPopup.isBlockShow() || this.nfWaitPopup.blockShow(n),
              console.log(o.status);
            break;
          default:
            console.log(500);
        }
      }),
      (e.prototype.runCommand = function (t, e, n, i, o, r) {
        var s = this,
          a = null,
          l = '';
        if (5002 === t) {
          if (((this.runStatus = 'RUNNING'), !(a = this.nfKey))) return !1;
        } else if (5003 === t) {
          if (!(a = o)) return !1;
        } else if (5004 === t) {
          if (!(a = o || this.nfKey || this.nfStorage.getData(this.nfStorageId))) return !1;
        } else (this.runStatus = 'RUNNING'), (l = (i && i.projectKey) || r);
        return (
          i && 'section' === i.mode
            ? C(
                this.makeTenantNFUrl(n),
                this.makeOpcodeParam(t, l, e, a),
                this.conf.nf.requestTimeout,
                null,
                function (e) {
                  'webview' === s.opts.type ? s.webviewReceived(t, e, i) : s.received(t, e, i);
                }
              )
            : (this.xhrRequest = C(
                this.makeTenantNFUrl(n),
                this.makeOpcodeParam(t, l, e, a),
                this.conf.nf.requestTimeout,
                null,
                function (e) {
                  'webview' === s.opts.type ? s.webviewReceived(t, e, i) : s.received(t, e, i);
                }
              )),
          this
        );
      }),
      (e.prototype.getCode = function (e) {
        return {
          0: 'none',
          200: 'normal',
          201: 'continue',
          202: 'continue_debug',
          300: 'bypass',
          301: 'block',
          302: 'ipblock',
          303: 'express',
          502: 'error_system',
          505: 'key_not_exist',
          507: 'invalid_key',
          1001: 'network_failure',
        }[e];
      }),
      (e.prototype.responseParser = function (e, t) {
        var n = {};
        try {
          var i = e && 'object' == typeof e && e.status ? e.status.toString() : '';
          if (!e || '502' === i || '1001' === i) return (n.status = i), n;
          var o = e.split('&'),
            r = o[0].split(':'),
            i = r[0],
            s = r[1],
            a = s.split('=')[1],
            l = '',
            u = (t && ((l = r[0]), (i = r[1]), (a = (s = r[2]).split('=')[1])), o[6]);
          (n.opcode = l), (n.status = i), (n.key = a), (n.port = u), o.shift();
          for (var p = 0; p < o.length; p++) {
            var c = o[p].split('=');
            n[c[0]] = c[1].replace('"', '');
          }
        } catch (e) {
          console.log('responseParser error: ', e);
        }
        return n;
      }),
      (e.prototype.setNfResponse = function (e, t, n) {
        e = t ? e + ':' + t : '';
        return (
          n && 'section' === n.mode
            ? this.nfStorage.setData(this.nfSectionId + n.projectKey + ':' + n.key, e)
            : this.nfStorage.setData(this.nfStorageId, e),
          this
        );
      }),
      (e.prototype.Action = function (t, e) {
        var n = this;
        if (!this.runStatus || 'RUNNING' !== this.runStatus)
          return (
            this.init(),
            e && 'function' == typeof e
              ? (this.callback = e)
              : e &&
                'object' == typeof e &&
                (e.stop && 'function' == typeof e.stop && (this.stopCallback = e.stop), e.success) &&
                'function' == typeof e.success &&
                (this.callback = e.success),
            null == (e = this.nfProcess.getStorageProjectList())
              ? this.nfProcess.getProjectList(function (e) {
                  n.actionProcess(t, e) || (n.callback && n.callback());
                })
              : this.actionProcess(t, e) || (this.callback && this.callback()),
            this
          );
      }),
      (e.prototype.actionProcess = function (e, t) {
        return 'string' == typeof e ? this.actionString(e, t) : 'object' == typeof e && this.actionObject(e, t);
      }),
      (e.prototype.actionString = function (e, t) {
        e = N(e);
        if (
          e.hostname === v(this.opts.tenantApiUrl) ||
          e.hostname === v(this.opts.tenantNFUrl) ||
          e.hostname === v(this.conf.eumHost.host)
        )
          return !1;
        var n,
          i = y(t, e),
          o = b(t, e, 'action'),
          r = b(t, e, 'complete');
        if (r && 0 < r.length)
          for (var s in r)
            r.hasOwnProperty(s) &&
              ((s = r[s]), (n = this.getSectionKey(this.nfSectionId, s.projectKey, s.key))) &&
              (this.removeTimer(s.projectKey, s.key),
              this.nfStorage.removeData(this.nfSectionId + s.projectKey + ':' + s.key),
              (n = this.responseParser(n, !0)),
              this.runCommand(5004, !1, n.port, s, n.key));
        return (
          !!(i = i || o) &&
          (this.actionObject({
            segInfo: i,
          }),
          this)
        );
      }),
      (e.prototype.actionObject = function (e) {
        var t, n;
        return (
          e.segInfo
            ? 'normal' === (t = e.segInfo).mode
              ? this.runCommand(5101, t.key, null, t)
              : 'section' === t.mode &&
                ('startUri' === t.type
                  ? this.runCommand(5101, t.key, !1, t)
                  : 'endUri' === t.type &&
                    (n = this.getSectionKey(this.nfSectionId, t.projectKey, t.key)) &&
                    ((n = this.responseParser(n, !0)), this.runCommand(5004, !1, n.port, t, n.key)))
            : e.projectKey && e.segmentKey && this.runCommand(5101, e.segmentKey, null, t, null, e.projectKey),
          this
        );
      }),
      (e.prototype.Complete = function (t, e) {
        var n = this;
        return (
          e && (this.completeCallback = e),
          t
            ? null == (e = this.nfProcess.getStorageProjectList())
              ? this.nfProcess.getProjectList(function (e) {
                  n.completeProcess(t, e) || (n.completeCallback && n.completeCallback());
                })
              : this.completeProcess(t, e) || (this.completeCallback && this.completeCallback())
            : (e = this.nfStorage.getData()) &&
              ((e = this.responseParser(e, !0)), this.runCommand(5004, !1, e.port, !1, e.key)),
          this
        );
      }),
      (e.prototype.completeProcess = function (e, t) {
        if ('string' == typeof e) {
          var n,
            i = b(t, N(e), 'complete');
          if (i && 0 < i.length)
            for (var o in i)
              i.hasOwnProperty(o) &&
                ((o = i[o]), (n = this.getSectionKey(this.nfSectionId, o.projectKey, o.key))) &&
                ((n = this.responseParser(n, !0)), this.runCommand(5004, !1, n.port, o, n.key));
        } else 'object' != typeof e && 'function' != typeof e && this.runCompleteCallback();
      }),
      (e.prototype.sectionLoadContinue = function () {
        var t = this,
          e = this.nfProcess.getStorageProjectList();
        null == e
          ? this.nfProcess.getProjectList(function (e) {
              e && t.sectionLoadContinueProcess(e);
            })
          : this.sectionLoadContinueProcess(e);
      }),
      (e.prototype.sectionLoadContinueProcess = function (e) {
        var t = this.getAllSessionKey();
        if (t)
          for (var n = 0, i = t.length; n < i; n++) {
            var o,
              r = t[n];
            -1 < r.indexOf(this.nfSectionId) &&
              ((o = {
                projectKey: (o = H(r)).projectKey,
                key: o.segmentKey,
                mode: 'section',
                type: 'startUri',
              }),
              (r = this.nfStorage.getData(r))) &&
              ((r = this.responseParser(r, !0)), this.runCommand(5003, !1, r.port, o, r.key));
          }
      }),
      (e.prototype.actionUriValidate = function (e, t) {
        return !!e && this;
      }),
      (e.prototype.getSectionKey = function (e, t, n) {
        if (!e || !n || !t) return !1;
        try {
          var i,
            o = sessionStorage;
          for (i in o) if (o.hasOwnProperty(i) && e + t + ':' + n == i) return this.nfStorage.getData(i);
        } catch (e) {
          return !1;
        }
      }),
      (e.prototype.getAllSessionKey = function () {
        try {
          var e,
            t = sessionStorage,
            n = [];
          for (e in t) t.hasOwnProperty(e) && n.push(e);
          return n;
        } catch (e) {
          return !1;
        }
      });
    var W = function (e) {
        return (
          (this.cookieMinute = 10),
          (this.cookieDomain = ''),
          (this.storageId = e),
          (this.setCookie = function (e, t, n) {
            (e = e + '=' + escape(t)), (t = new Date());
            t.setMinutes(t.getMinutes() + n),
              (e = (e += ';expires=' + t.toGMTString()) + ';domain=' + this.cookieDomain),
              this.cookieDomain && -1 < location.protocol.indexOf('https')
                ? (e += ';path=/; samesite=none; secure;')
                : (e += ';path=/;'),
              (document.cookie = e);
          }),
          (this.setStorage = function (e, t) {
            return (
              (this.html5Support = 'localStorage' in window && null !== window.localStorage),
              this.html5Support && window.sessionStorage.setItem(e, JSON.stringify(t)),
              this
            );
          }),
          (this.removeStorage = function (e) {
            return (
              (this.html5Support = 'localStorage' in window && null !== window.localStorage),
              this.html5Support && window.sessionStorage.removeItem(e),
              this
            );
          }),
          (this.setData = function (e, t) {
            return this.setCookie(e, t, this.cookieMinute), this.setStorage(e, t), this;
          }),
          (this.removeData = function (e) {
            return (e = e || this.storageId), this.setCookie(e, '', -1), this.removeStorage(e), this;
          }),
          (this.getCookie = function (e) {
            if (0 < document.cookie.length) {
              var t = document.cookie.indexOf(e + '=');
              if (-1 != t)
                return (
                  (t = t + e.length + 1),
                  -1 == (e = document.cookie.indexOf(';', t)) && (e = document.cookie.length),
                  document.cookie.substring(t, e).replace(/(?:\r\n|\r|\n)/g, '')
                );
            }
            return '';
          }),
          (this.getData = function (e) {
            e = e || this.storageId;
            var t,
              n = !1;
            try {
              return (n =
                'localStorage' in window && null !== window.localStorage
                  ? (n = (t = sessionStorage.getItem(e)) ? t.replace(/(?:\r\n|\r|\n)/g, '') : n) || this.getCookie(e)
                  : NetFunnel.Cookie.get(e));
            } catch (e) {
              return !1;
            }
          }),
          this
        );
      },
      l = function (e, t) {
        (this.opts = e || null),
          (this.conf = t || null),
          (this.displayed = !1),
          (this.blockDisplayed = !1),
          (this.waitCountUnit = '명'),
          (this.waitHourUnit = '시간'),
          (this.waitMinuteUnit = '분'),
          (this.waitSecUnit = '초'),
          (this.waitEstimateTimeLimit = 3600);
        e = p();
        return (
          (this.waitUnit = {
            ko: {
              waitCountUnit: '명',
              waitHourUnit: '시간',
              waitMinuteUnit: '분',
              waitSecUnit: '초',
            },
            en: {
              waitCountUnit: '',
              waitHourUnit: '',
              waitMinuteUnit: '',
              waitSecUnit: '',
            },
            ja: {
              waitCountUnit: '名',
              waitHourUnit: '時',
              waitMinuteUnit: '分',
              waitSecUnit: '秒',
            },
          }[e]),
          (this.blockBackground = null),
          (this.blockPopup = null),
          (this.skinBlockHtml = null),
          (this.popupElement = null),
          (this.prevEstimateTime = -1),
          (this.gToWait = -1),
          (r.Surffy_Skin_Block = this.SkinBlock.bind(this)),
          this
        );
      };
    function p() {
      switch (window.navigator.language.slice(0, 2)) {
        case 'ko':
          return 'ko';
        case 'ja':
          return 'ja';
        default:
          return 'en';
      }
    }
    (l.prototype.init = function () {
      return (this.waitCount = ''), (this.gToWait = -1), this;
    }),
      (l.prototype.isShow = function () {
        return this.displayed;
      }),
      (l.prototype.show = function (e) {
        document.getElementsByTagName('BODY')[0];
        var t = document.getElementById('NetFunnel_Wait_Popup');
        return t ? ((this.popupElement = t), this.popupUpdate(e)) : ((this.displayed = !0), this.popupSetup(e)), this;
      }),
      (l.prototype.hide = function () {
        this.displayed = !1;
        var e = document.getElementsByTagName('BODY')[0];
        if (e) {
          try {
            var t = document.getElementById('NetFunnel_Wait_Background');
            e.removeChild(t);
          } catch (e) {}
          return this;
        }
      }),
      (l.prototype.isBlockShow = function () {
        return this.blockDisplayed;
      }),
      (l.prototype.blockShow = function (e) {
        if (((this.blockDisplayed = !0), document.getElementsByTagName('BODY')[0]))
          return this.blockPopupSetup(e), this;
      }),
      (l.prototype.blockHide = function () {
        this.blockDisplayed = !1;
        var e = document.getElementsByTagName('BODY')[0];
        if (e) {
          try {
            var t = document.getElementById('NetFunnel_Block_Background');
            e.removeChild(t);
          } catch (e) {}
          return this;
        }
      }),
      (l.prototype.userStop = function () {
        return this;
      }),
      (l.prototype.addCommonComponents = function (e) {
        var t = this,
          n = {
            ko: {
              title: '대기 취소',
            },
            en: {
              title: 'Exit the queue',
            },
            ja: {
              title: '待機キャンセル',
            },
          },
          n = n[p()] || n.en,
          i = document.createElement('div'),
          o = ((i.id = 'NetFunnel_Wait_Stop'), document.createElement('span')),
          n =
            ((o.textContent = n.title),
            i.appendChild(o),
            i.addEventListener('click', function () {
              t.userStop();
            }),
            document.getElementById('NetFunnel_Main'));
        n && e.vwrPage && e.vwrPage.waitCancelYn && n.appendChild(i);
      }),
      (l.prototype.popupUpdate = function (e) {
        var t = document.getElementById('NetFunnel_Wait_Popup');
        if (t)
          return (
            (t.innerHTML = this.defaultHTML(e || null)),
            (this.popupElement = t.parentElement),
            this.addCommonComponents(e),
            this
          );
      }),
      (l.prototype.popupSetup = function (e) {
        var t, n;
        if (!document.getElementById('NetFunnel_Wait_Popup'))
          return (
            ((t = document.createElement('div')).id = 'NetFunnel_Wait_Background'),
            ((n = document.createElement('div')).id = 'NetFunnel_Wait_Popup'),
            (n.innerHTML = this.defaultHTML(e || null)),
            t.appendChild(n),
            (this.popupElement = t),
            document.getElementsByTagName('BODY')[0].appendChild(this.popupElement),
            (n = document.getElementById('NetFunnel_Wait_Guide_Text')),
            e.vwrPage.guideText.trim() || (n.style.display = 'none'),
            this.addCommonComponents(e),
            this
          );
      }),
      (l.prototype.defaultHTML = function (e) {
        var t =
            'iVBORw0KGgoAAAANSUhEUgAAAH0AAAAQCAYAAAA76nChAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAATRSURBVHgBzVlvTiJLEK8awJis8DiBtid47g3GE6gneJggbvI+CCfQPYH44SW7sInsCdY9gewJ1hvY7gWefyDxgUy9KmTYnmaAGQaQX9LRqWmqu6u6q37Vg9mtEoEBQqi2dK0CIdhQpVMkOPOfPcRGW38+hAXBntsY6Ke72rb8k9sq3fIPFAznB4W2rn01O+fVB9Uj79aUEZLb0vUf9u8ZV6z7IGxQ2xYE1Gzd1XfD5jFJT1YdFXgClxH1hIJ1Y0j/oV1sOLaAF1LOqtI+LAHiAFm0396pox1YLeznVLEMyTEvPXOBEyolulxnh8CC8SK7Unb5oCHgHqwYiPB0HrYgcs5XZVOnw8WYz1Dv8hlgF1YJRA1yUAdEQPewUIgtvOt1VXh/rxuJxnIIv+WT6bni9HsDCZEe/wpdzlvn4/L7OGyoDy67Yg/JG+5qzq1XPUh9f9afNCQAOdDg+fyA5UO9wNop/41li3nrETvaHGUWjOZ0+L2TJL9vqKILEZFTR1V29jUSlWXT+I13eFVOi8kVhKRJ38DYTIxEvr799xasANgWevg/2+KdKv0FM8DW89b5fcTp7IkL8xnJiZTfxeGc/06GeiQUEVSNBSvhConyGuvLbh1dm21WR0RBD6lqPjtE1Vnyu0dew3yelSfIYbLXn9ssnkFMjDod4BYQm4ZISX6fpERCuulwjyfX4hKl9atWcbDDvMDPu5h3CM774/AYBMH8JBtE5OvUfggbh4nejhlBpGGEkmZW9KMe8whDkl8j7xvEBDmOlgNg6+H8no+hJnT9PScVOyqGsvcU/HcIAYKE7qSQhECB0+Y48OCXYT3IuIDOjalLFtvSn3dZHshtnLMaIk9KmOaJlNOtmOGZN+rOxmbxlNd8BzGQdjofbT0vXvoE3gChTmej84lLBS4TJCTBeKjAk1GGvTZyzdddyCiYARIZ+hHCaJONT5FOEut9GPdONqCHTuACChHLHsAfEAOih9PFQRI9fiQ0Gx+V2Gx+LHtv6U/Njc1SFREGJxzzTEIKoZMhyltXZxomAGMazBioHIe9o4fKlsndAFqyHq79CxMgtsipUoUGqamfpgD3+9slBtq6fjOqB9yov+8hnPENaGL2np70UnIyX+25EooGIhXWj3ec5tM86EP3T3f1bXgD8DwkByv/GZEKTJguzFLRTkWC59t/pobqR12rZtXx3jBqWdErKkb1wFJuP02kp3VgInbQo8xP2ZXje3nfob/zBZiXMq+lvzT9t8IHCFJ/dgE/Jq3VJ8EDr+kM5/E6FykVM6rEIRCFJyjbWXLXDREhXMeDteso9+FT9Bywnp9x9XD1wDzp2LXlT6HfPygv7D5Mz1SnS35nQlZh64xl8E+63uCIcOJHBC7zuCY/brBBNTNOZvZiaIIMUGFNFSuP+ksVFoAMdL+yMcuWMdnR8jwmFOPvjybTILbgSuXQvl+IC8nvs+lhxk6h6whxev+QumGdw+/eLYhTgyVHiCKOCCY75ckV+l+hgidLd+DlChYEnyzhFE7ho19a8tc1iAHJ79NssUw9syCS0wV2yWFDTsGjfMpDOnxllX7JR/cSQom8sxR23j9zP1gghCz17waG8zDnLHPhCoCN3cXOdvtX/QJmgHAdhOR34KLHuhNZCv4HmtGFoOBadjoAAAAASUVORK5CYII=',
          t = {
            ko: {
              logoImagePath: 'data:image/png;base64,' + t,
              imagePath: '',
              title: '온라인 접속 대기 안내',
              checkedTitle: '예상 대기 정보를 불러오는 중입니다.',
              waitTimeDisplayYn: !0,
              estTimeTitle: '예상 대기 시간: ',
              waitCount: '내 앞의 대기자 수: ',
              pWaitCount: '내 뒤의 대기자 수: ',
              followingWaitYn: !0,
              guideText: '',
              warningText: '새로고침 또는 뒤로가기를 누르거나 팝업창을 닫고 재접속할 경우 대기 시간이 초기화 됩니다.',
              stopTitle: '대기 취소',
            },
            en: {
              logoImagePath: 'data:image/png;base64,' + t,
              imagePath: '',
              title: 'Waiting Needed for Online Access',
              checkedTitle: 'Loading expected wait information.',
              waitTimeDisplayYn: !0,
              estTimeTitle: 'Estimated Wait Time: ',
              waitCount: 'Queue ahead: ',
              pWaitCount: 'Queue behind: ',
              followingWaitYn: !0,
              guideText: '',
              warningText: 'Clicking Refresh, Backspace, or closing the tab will direct you to the end of the queue.',
              stopTitle: 'Exit the queue',
            },
            ja: {
              logoImagePath: 'data:image/png;base64,' + t,
              imagePath: '',
              title: 'オンライン接続の待機について',
              checkedTitle: '予想される待ち時間情報をロードしています。',
              waitTimeDisplayYn: !0,
              estTimeTitle: '予想待機時間: ',
              waitCount: '先順位の待機者数: ',
              pWaitCount: '後順位の待機者数: ',
              followingWaitYn: !0,
              guideText: '',
              warningText:
                '更新または戻るをクリックする場合、ポップアップウィンドウを閉じて再接続する場合は待機時間が初期化されます。',
              stopTitle: '閉じる',
            },
          }[p()],
          e =
            (e.vwrPage && E(t, e.vwrPage),
            (t.title = t.title.replace(/\r\n/gi, '<br>')),
            (t.guideText = t.guideText.replace(/\r\n/gi, '<br>')),
            '' !== e.guideText),
          n = 'none',
          i = '#7F8083';
        return (
          '<style>#NetFunnel_Wait_Background { z-index: 30000; position: fixed; top: 0; left: 0; display: flex; justify-content: center; align-items: center; overflow: overlay; box-shadow: 0px 10px 16px 0px rgba(75, 76, 79, 0.20); width: 100%; height: 100%; background-color: rgba(80, 80, 80, 0.3); font-family: Pretendard, "Apple SD Gothic Neo", "Malgun Gothic", Roboto, "Segoe UI", 돋음, Dotum, sans-serif; }#NetFunnel_Wait_Popup { display: flex; flex-direction: column; gap: 16px; box-shadow: 0px 10px 16px 0px rgba(75, 76, 79, 0.20); border-radius: 16px; border: 1px solid #e3e3de; box-sizing: border-box; width: calc(100% - 32px); max-width: 400px; height: auto; padding: 16px 24px 24px; background-color: #fafafa; text-align: center; color: #292929; }#NetFunnel_Main { display: flex; flex-direction: column; gap: 24px; padding-bottom: 12px; }.NetFunnel_Skin { display: flex; flex-direction: column; gap: 16px; width: 100%; }.NetFunnel_Skin_Logo { overflow: hidden; margin: 0 auto; width: fit-content; max-width: 100%; height: auto; max-height: 66px; } .NetFunnel_Skin_Logo svg { display: block; width: 100%; height: auto; }.NetFunnel_Skin_Image { overflow: hidden; margin: 0 auto; width: fit-content; max-width: 100%; height: auto; max-height: 198px; } .NetFunnel_Skin_Image svg { display: block; width: 100%; height: auto; }.NetFunnel_Skin_Title { text-align: center; font-size: 18px; font-weight: 500; line-height: 160%; word-wrap: break-word; word-break: break-all; }.NetFunnel_Wait_Contents { display: flex; flex-direction: column; gap: 16px; width: 100%; }#NetFunnel_Wait_Progress { overflow: hidden; margin: auto; border-radius: 7px; width: 100%; height: 11px; background-color: #EDEEF1; background-size: 400% 400%; }.NetFunnel_Wait_Progress_Bar { border-radius: 7px; box-shadow: 0px 4px 8px 0px rgba(75, 76, 79, 0.13); width: 0%; height: 100%; background: linear-gradient(180deg, rgba(255, 255, 255, 0.00) 0%, rgba(255, 255, 255, 0.00) 33.33%, rgba(255, 255, 255, 0.00) 66.67%, rgba(255, 255, 255, 0.20) 100%), #3354FF; }.NetFunnel_Wait_Data { display: flex; flex-direction: column; gap: 12px; width: 100%; }.NetFunnel_Wait_Info { text-align: center; font-size: 16px; font-weight: 500; }.NetFunnel_Wait_Value { font-size: 16px; font-weight: 600; color: #3354FF; }#NetFunnel_Section_Guide_Text { display: none; text-align:center; font-weight: 400; font-size: 16px; line-height: 160% !important; color:#666; word-wrap: break-word; word-break: break-all; }#NetFunnel_Dot_Loading_Bar { margin: auto; width: 60px; height: 20px; text-align: center; }#NetFunnel_Dot_Loading_Bar > div { display: inline-block; border-radius: 100%; animation: loading 1.2s infinite ease-in-out both; margin-left: 5px; width: 12px; height: 12px; background-color: #D1DBFF; }@keyframes loading { 0% { transform: scale(0.6); } 50% { background-color:#4A70FF; transform: scale(1.0); } 100% { transform: scale(0.6); } }#NetFunnel_Dot_Loading_Bar .dot2 { animation-delay: 0.4s; }#NetFunnel_Dot_Loading_Bar .dot3 { animation-delay: 0.8s; }.NetFunnel_Text_Contents { display: flex; flex-direction: column; gap: 16px; width: 100%; }#NetFunnel_Wait_Guide_Text { display: block; overflow-y: auto; max-height: 64px; border-radius: 8px; padding: 10px; background-color: #EDEEF1; color: #4B4C4F; font-size: 14px; font-weight: 400; font-size: 14px; line-height: 160%; text-align: left; word-wrap: break-word; word-break: break-all; }#NetFunnel_Wait_Warning_Text { display: block; color: #7F8083; font-size: 12px; font-weight: 400; font-size: 12px; text-align: left; line-height: 160%; }#NetFunnel_Wait_Stop { display: table; border: 1px solid' +
          i +
          '; border-radius: 8px; box-sizing: initial; width: 100%; height: 40px; cursor: pointer; text-align: center; }#NetFunnel_Wait_Stop span { display: table-cell; color: ' +
          i +
          '; font-size: 14px; font-weight: 500; line-height: 100%; vertical-align: middle; }.NetFunnel_Wait_Copyright { color: #7d7d78; font-size: 10px; line-height: 100%; font-weight: 400; text-align: center; }.NetFunnel_Wait_Copyright a { text-decoration-line: none; color: #7d7d78; }</style><div id="NetFunnel_Main"><div class="NetFunnel_Skin"><img class="NetFunnel_Skin_Logo" src="' +
          t.logoImagePath +
          '"><img class="NetFunnel_Skin_Image" src="' +
          t.imagePath +
          '"></div><div class="NetFunnel_Skin_Title"><span>' +
          t.title +
          '</span></div><div class="NetFunnel_Wait_Contents"><div id="NetFunnel_Wait_Progress"><div class="NetFunnel_Wait_Progress_Bar"></div></div></div><div id="NetFunnel_Section_Guide_Text"><span>' +
          t.checkedTitle +
          '</span></div><div id="NetFunnel_Dot_Loading_Bar" style="display: none;"><div class="dot1"></div><div class="dot2"></div><div class="dot3"></div></div><div class="NetFunnel_Wait_Data"><div class="NetFunnel_Wait_Info" style="display: ' +
          (t.waitTimeDisplayYn ? 'block;' : 'none;') +
          '"><span>' +
          t.estTimeTitle +
          '</span><span id="NetFunnel_Wait_Time" class="NetFunnel_Wait_Value"></span></div><div class="NetFunnel_Wait_Info"><span>' +
          t.waitCount +
          '</span><span id="NetFunnel_Wait_nCount" class="NetFunnel_Wait_Value"></span></div><div class="NetFunnel_Wait_Info" style="display: ' +
          (t.followingWaitYn ? 'block' : 'none') +
          ';"><span>' +
          t.pWaitCount +
          '</span><span id="NetFunnel_Wait_pCount" class="NetFunnel_Wait_Value"></span></div></div><div class="NetFunnel_Text_Contents"><div id="NetFunnel_Wait_Guide_Text" style="display: ' +
          (n = e ? 'flex' : n) +
          '"><span>' +
          t.guideText +
          '</span></div><div id="NetFunnel_Wait_Warning_Text"><span>' +
          t.warningText +
          '</span></div></div></div><div class="NetFunnel_Wait_Copyright"><span>Powered by <strong>NetFUNNEL</strong> | © STCLab Inc.</span></div>'
        );
      }),
      (l.prototype.SkinBlock = function (e) {
        return (this.skinBlockHtml = e), this;
      }),
      (l.prototype.blockPopupSetup = function (e) {
        var t = this,
          n =
            '<style>#NetFunnel_Block_Background { z-index: 30000 !important; position: fixed; top: 0; left: 0; width: 100% !important; display: flex; justify-content: center; align-items: center; height: 100% !important; overflow: auto !important; font-family: Pretendard, "Apple SD Gothic Neo", "Malgun Gothic", Roboto, "Segoe UI", 돋음, Dotum, sans-serif; }#NetFunnel_Wait_Popup { display: flex !important; flex-direction: column !important; gap: 16px !important; box-shadow: 0px 10px 16px 0px rgba(75, 76, 79, 0.20) !important; border-radius: 16px !important; border: 1px solid #e3e3de !important; box-sizing: border-box !important; width: calc(100% - 32px) !important; max-width: 400px !important; min-width: 280px !important; height: auto !important; padding: 24px 32px !important; background-color: #fff !important; text-align: center !important; color: #292929 !important; @media screen and (min-height: 801px) { position: absolute !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; } @media screen and (max-height: 800px) { position: relative !important; transform: transition(0, 0) !important; margin: 80px auto !important; padding: 8px 16px 16px !important; } } #NetFunnel_Block_Background { z-index: 30000 !important; position: fixed; top: 0; left: 0; width: 100% !important; height: 100% !important; background-color: rgba(80, 80, 80, 0.3); overflow: auto !important; font-family: Pretendard, "Apple SD Gothic Neo", "Malgun Gothic", Roboto, "Segoe UI", 돋음, Dotum, sans-serif; }#NetFunnel_Main { display: flex; flex-direction: column; gap: 24px; padding-bottom: 24px; }.NetFunnel_Skin { display: flex !important; flex-direction: column !important; align-items: center !important; gap: 16px !important; width: 100% !important; }.NetFunnel_Skin_Logo { overflow: hidden !important; max-width: 100% !important; max-height: 66px !important; } .NetFunnel_Skin_Logo svg { display: block !important; width: 100% !important; height: auto !important; }.NetFunnel_Skin_Image { overflow: hidden !important; max-width: 100% !important; max-height: 198px !important; } .NetFunnel_Skin_Image svg { display: block !important; width: 100% !important; height: auto !important; }.NetFunnel_Skin_Title { text-align: center !important; font-size: 18px !important; font-weight: 500 !important; line-height: 160% !important; }#NetFunnel_Wait_Stop { text-align: center !important; box-sizing: border-box !important; margin-top: 25px !important; width: 100% !important; height: 46px !important; border: 1px solid #7F8083 !important; border-radius: 8px !important; cursor: pointer; display: table !important; }#NetFunnel_Wait_Stop span { font-size: 14px !important; color: #7F8083 !important; font-weight: 500 !important; line-height: 100% !important; display: table-cell !important; vertical-align: middle !important; }.NetFunnel_Wait_Copyright { color:#7D7D78 !important; font-size: 10px !important; line-height: 100% !important; font-weight: 400 !important; text-align: center !important; }.NetFunnel_Wait_Copyright a { text-decoration-line: none !important; color:#7D7D78 !important; }</style>';
        (this.blockBackground = document.createElement('div')),
          (this.blockBackground.id = 'NetFunnel_Block_Background'),
          (this.blockPopup = document.createElement('div')),
          (this.blockPopup.id = 'NetFunnel_Wait_Popup'),
          this.skinBlockHtml
            ? (this.blockPopup.innerHTML = n + this.skinBlockHtml)
            : (this.blockPopup.innerHTML = n + this.blockHTML(e || null)),
          this.blockBackground.appendChild(this.blockPopup),
          (this.popupElement = this.blockBackground),
          document.getElementsByTagName('BODY')[0].appendChild(this.popupElement);
        var n =
            '<div id="NetFunnel_Wait_Stop" style="text-align: center; margin-top: 25px;"><span>' +
            {
              ko: {
                title: '닫기',
              },
              en: {
                title: 'Close',
              },
              ja: {
                title: '閉じる',
              },
            }[p()].title +
            '</span></div>',
          e = this.blockPopup.innerHTML,
          i = e.indexOf('</div>', e.indexOf('id="NetFunnel_Wait_Guide_Text"')),
          n = e.slice(0, i + 6) + n + e.slice(i + 6),
          e = ((this.blockPopup.innerHTML = n), this.blockPopup.querySelector('#NetFunnel_Wait_Stop'));
        return (
          e &&
            e.addEventListener('click', function () {
              t.userStop();
            }),
          this
        );
      }),
      (l.prototype.blockHTML = function (e) {
        var t =
            'iVBORw0KGgoAAAANSUhEUgAAAH0AAAAQCAYAAAA76nChAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAATRSURBVHgBzVlvTiJLEK8awJis8DiBtid47g3GE6gneJggbvI+CCfQPYH44SW7sInsCdY9gewJ1hvY7gWefyDxgUy9KmTYnmaAGQaQX9LRqWmqu6u6q37Vg9mtEoEBQqi2dK0CIdhQpVMkOPOfPcRGW38+hAXBntsY6Ke72rb8k9sq3fIPFAznB4W2rn01O+fVB9Uj79aUEZLb0vUf9u8ZV6z7IGxQ2xYE1Gzd1XfD5jFJT1YdFXgClxH1hIJ1Y0j/oV1sOLaAF1LOqtI+LAHiAFm0396pox1YLeznVLEMyTEvPXOBEyolulxnh8CC8SK7Unb5oCHgHqwYiPB0HrYgcs5XZVOnw8WYz1Dv8hlgF1YJRA1yUAdEQPewUIgtvOt1VXh/rxuJxnIIv+WT6bni9HsDCZEe/wpdzlvn4/L7OGyoDy67Yg/JG+5qzq1XPUh9f9afNCQAOdDg+fyA5UO9wNop/41li3nrETvaHGUWjOZ0+L2TJL9vqKILEZFTR1V29jUSlWXT+I13eFVOi8kVhKRJ38DYTIxEvr799xasANgWevg/2+KdKv0FM8DW89b5fcTp7IkL8xnJiZTfxeGc/06GeiQUEVSNBSvhConyGuvLbh1dm21WR0RBD6lqPjtE1Vnyu0dew3yelSfIYbLXn9ssnkFMjDod4BYQm4ZISX6fpERCuulwjyfX4hKl9atWcbDDvMDPu5h3CM774/AYBMH8JBtE5OvUfggbh4nejhlBpGGEkmZW9KMe8whDkl8j7xvEBDmOlgNg6+H8no+hJnT9PScVOyqGsvcU/HcIAYKE7qSQhECB0+Y48OCXYT3IuIDOjalLFtvSn3dZHshtnLMaIk9KmOaJlNOtmOGZN+rOxmbxlNd8BzGQdjofbT0vXvoE3gChTmej84lLBS4TJCTBeKjAk1GGvTZyzdddyCiYARIZ+hHCaJONT5FOEut9GPdONqCHTuACChHLHsAfEAOih9PFQRI9fiQ0Gx+V2Gx+LHtv6U/Njc1SFREGJxzzTEIKoZMhyltXZxomAGMazBioHIe9o4fKlsndAFqyHq79CxMgtsipUoUGqamfpgD3+9slBtq6fjOqB9yov+8hnPENaGL2np70UnIyX+25EooGIhXWj3ec5tM86EP3T3f1bXgD8DwkByv/GZEKTJguzFLRTkWC59t/pobqR12rZtXx3jBqWdErKkb1wFJuP02kp3VgInbQo8xP2ZXje3nfob/zBZiXMq+lvzT9t8IHCFJ/dgE/Jq3VJ8EDr+kM5/E6FykVM6rEIRCFJyjbWXLXDREhXMeDteso9+FT9Bywnp9x9XD1wDzp2LXlT6HfPygv7D5Mz1SnS35nQlZh64xl8E+63uCIcOJHBC7zuCY/brBBNTNOZvZiaIIMUGFNFSuP+ksVFoAMdL+yMcuWMdnR8jwmFOPvjybTILbgSuXQvl+IC8nvs+lhxk6h6whxev+QumGdw+/eLYhTgyVHiCKOCCY75ckV+l+hgidLd+DlChYEnyzhFE7ho19a8tc1iAHJ79NssUw9syCS0wV2yWFDTsGjfMpDOnxllX7JR/cSQom8sxR23j9zP1gghCz17waG8zDnLHPhCoCN3cXOdvtX/QJmgHAdhOR34KLHuhNZCv4HmtGFoOBadjoAAAAASUVORK5CYII=',
          n = p(),
          t = {
            ko: {
              logoImagePath: 'data:image/png;base64,' + t,
              imagePath: '',
              title: '온라인 접속 불가 안내',
              guideText: '서비스 진입이 차단되었습니다.',
              stopTitle: '닫기',
            },
            en: {
              logoImagePath: 'data:image/png;base64,' + t,
              imagePath: '',
              title: 'Inability to Online Access',
              guideText: 'Service entry blocked.',
              stopTitle: 'Close',
            },
            ja: {
              logoImagePath: 'data:image/png;base64,' + t,
              imagePath: '',
              title: 'オンラインアクセス不可',
              guideText: 'サービスへの入場がブロックされました。',
              stopTitle: '閉じる',
            },
          },
          i = JSON.parse(JSON.stringify(t[n]));
        return (
          e && e.vwrPage && E(i, e.vwrPage),
          (i.title = t[n].title),
          (i.guideText = t[n].guideText),
          '<div id="NetFunnel_Main"><div class="NetFunnel_Skin"><img class="NetFunnel_Skin_Logo" src="' +
            i.logoImagePath +
            '"><img class="NetFunnel_Skin_Image" src="' +
            i.imagePath +
            '"></div><div class="NetFunnel_Skin_Title"><span>' +
            i.title +
            '</span></div><div id="NetFunnel_Wait_Guide_Text"><span>' +
            i.guideText +
            '</span></div></div><div class="NetFunnel_Wait_Copyright"><span>Powered by <strong>NetFUNNEL</strong> | © STCLab Inc.</span></div>'
        );
      }),
      (l.prototype.getWaitCount = function (e) {
        return e.nwait;
      }),
      (l.prototype.getWaitPCount = function (e) {
        return e.nnext;
      }),
      (l.prototype.getWaitProgressSize = function (e) {
        var t = 0,
          e = parseInt(e.nwait);
        return (
          this.gToWait <= 0 && (this.gToWait = e),
          this.gToWait < e && (this.gToWait = e),
          (t = 100 < (t = (t = 100 - (e / this.gToWait) * 100) < 0 ? 0 : t) ? 100 : t)
        );
      }),
      (l.prototype.getWaitEstimateTime = function (e) {
        var t = 1,
          n = (0 < e.tps && (t = e.tps), '00'),
          i = '00',
          o = '00';
        return (
          (n = 3600 < (e = Math.round(e.nwait / t)) ? ((t = Math.floor(e / 3600)) < 10 ? '0' + t : t) : n) +
          ':' +
          (i = 60 < e ? ((t = Math.floor((e % 3600) / 60)) < 10 ? '0' + t : t) : i) +
          ':' +
          (o = 0 <= e ? ((n = Math.floor(e % 60)) < 10 ? '0' + n : n) : o)
        );
      }),
      (l.prototype.setWaitEstimateTime = function (e) {
        var t = document.getElementById('NetFunnel_Wait_Time');
        return t && (t.innerHTML = e), this;
      }),
      (l.prototype.setWaitCount = function (e) {
        var t = document.getElementById('NetFunnel_Wait_nCount');
        return (
          t &&
            (t.innerHTML = e
              .toString()
              .replace(/\B(?=(\d{3})+(?!\d))/g, ',')
              .toString()),
          this
        );
      }),
      (l.prototype.setWaitPCount = function (e) {
        var t = document.getElementById('NetFunnel_Wait_pCount');
        return (
          t &&
            (t.innerHTML = e
              .toString()
              .replace(/\B(?=(\d{3})+(?!\d))/g, ',')
              .toString()),
          this
        );
      }),
      (l.prototype.setWaitProgressSize = function (e) {
        var t = document.getElementById('NetFunnel_Wait_Progress').children[0];
        return (e = e || 0), t && (t.style.width = e + '%'), this;
      }),
      (l.prototype.showDotLoadingBar = function () {
        var e,
          t = document.getElementsByClassName('NetFunnel_Wait_Info');
        for (e in t) t.hasOwnProperty(e) && 0 == e && (t[e].style.display = 'none');
        return (
          (document.getElementById('NetFunnel_Wait_Progress').style.display = 'none'),
          (document.getElementById('NetFunnel_Dot_Loading_Bar').style.display = 'block'),
          this
        );
      }),
      (l.prototype.setWaitValue = function (e, t) {
        return (
          t && 'section' === t.mode && 'startUri' === t.type
            ? this.showDotLoadingBar()
            : this.setWaitProgressSize(this.getWaitProgressSize(e)),
          this.setWaitEstimateTime(this.getWaitEstimateTime(e)),
          this.setWaitCount(this.getWaitCount(e)),
          this.setWaitPCount(this.getWaitPCount(e)),
          this
        );
      });
    function M(e, t, n, i, o, r, s, a, l) {
      (this.txid = t || ''),
        (this.uuid = n || ''),
        (this.method = o || ''),
        (this.request = i || ''),
        (this.async = r || ''),
        (this.segKey = a || ''),
        (this.projectKey = l || ''),
        (this.conf = e || ''),
        (this.initiatorType = s || ''),
        (this.ajaxStart = new Date().getTime()),
        (this.ajaxLoad = null),
        (this.ajaxEnd = null),
        (this.callCount = 0),
        (this.statusCode = 0),
        (this.perf = {
          pr: 0,
          pa: 0,
          pl: 0,
          pc: 0,
          ps: 0,
          pv: 0,
          pd: 0,
          po: 0,
          pt: 0,
        }),
        (this.setStartTime = function () {
          this.ajaxStart = new Date().getTime();
        });
    }
    function t(e, t, n, i, o) {
      return (
        (this.opts = e || null),
        (this.conf = t || null),
        (this.nfRequest = n || null),
        (this.ua = i || null),
        (this.uid = o || null),
        (this.prng = new h(f())),
        (this.requests = []),
        (this.ajaxErrorList = []),
        (this.eumStr = 'n$eum'),
        (this.apmStr = 'n$apm'),
        (this.origin = {
          uri: null,
          xhr: null,
        }),
        this
      );
    }
    ((h = function (e) {
      (this._seed = e % 2147483647), this._seed <= 0 && (this._seed += 2147483646);
    }).prototype.next = function (e, t) {
      this._seed = (16807 * this._seed) % 2147483647;
      var n = new Date().getTime() + '-';
      return 0 === arguments.length
        ? n + d(this._seed / 2147483647)
        : 1 === arguments.length
        ? n + d((this._seed / 2147483647) * e)
        : n + d((this._seed / 2147483647) * (t - e) + e);
    }),
      (t.prototype.customAjaxMonitoringSetup = function () {
        var t = XMLHttpRequest.prototype.send,
          n = this;
        return (
          (XMLHttpRequest.prototype.send = function () {
            var e = this;
            e.addEventListener('load', function () {
              4 === e.readyState && n.sendEumData(e);
            }),
              t.apply(e, arguments);
          }),
          this
        );
      }),
      (t.prototype.sendEumData = function (e) {
        var t = new Date().getTime() - e.requestStartTime,
          n = e.responseURL,
          i = e.status,
          o = P(this.conf),
          r = this.opts.tenantNFUrl;
        n.includes(o) ||
          n.includes(r) ||
          ((r = new URL(n)),
          (n = {
            av: a,
            ct: 'ajax',
            ts: new Date().getTime(),
            cd: location.hostname,
            csd: '',
            uid: this.prng.next(new Date().getTime()),
            rf: r.hostname,
            uri: r.pathname,
            tid: new h(f()).next(new Date().getTime()),
            hsc: e.status,
            dd: this.ua.agentData.dd,
            ddg: this.ua.agentData.ddg,
            os: this.ua.agentData.os,
            osg: this.ua.agentData.osg,
            osv: this.ua.agentData.osv,
            wb: this.ua.agentData.wb,
            wbg: this.ua.agentData.wbg,
            pr: 0,
            pa: 0,
            pl: 0,
            pc: 0,
            ps: 0,
            pv: 0,
            pd: 0,
            po: 0,
            pt: t,
          }),
          x(i) || (o = P(this.conf, !0)),
          -1 == n.uri.indexOf('/ts.wseq') && m(o, n));
      }),
      (t.prototype.customAjaxMonitoringActivate = function () {
        return this.customAjaxMonitoringSetup(), this;
      }),
      (t.prototype.setAIAjax = function () {
        var e, t;
        return (
          (e = window),
          (t = this.conf),
          (e.AIAjax = function (r) {
            return (
              !!window.XMLHttpRequest &&
              !(!t.xhr || (t.xhr && !t.xhr.use)) &&
              ((window._realxhr = window._realxhr || XMLHttpRequest),
              (XMLHttpRequest = function () {
                var e,
                  t = new window._realxhr();
                for (e in t) {
                  var n = '';
                  try {
                    n = typeof t[e];
                  } catch (e) {}
                  if ('function' === n)
                    this[e] = (function (t) {
                      return function () {
                        var e = [].slice.call(arguments);
                        if (!r[t] || !r[t].call(this, e, this.xhr)) return this.xhr[t].apply(this.xhr, e);
                      };
                    })(e);
                  else
                    try {
                      Object.defineProperty(this, e, {
                        get: (function (n) {
                          return function () {
                            var e = this.hasOwnProperty(n + '_') ? this[n + '_'] : this.xhr[n],
                              t = (r[n] || {}).getter;
                            return (t && t(e, this)) || e;
                          };
                        })(e),
                        set: (function (o) {
                          return function (t) {
                            var e = this.xhr,
                              n = this,
                              i = r[o];
                            if ('function' == typeof i)
                              e[o] = function () {
                                r[o](n) || (t && t.apply(e, arguments));
                              };
                            else {
                              i = (i || {}).setter;
                              t = (i && i(t, n)) || t;
                              try {
                                e[o] = t;
                              } catch (e) {
                                this[o + '_'] = t;
                              }
                            }
                          };
                        })(e),
                      });
                    } catch (e) {
                      return window._realxhr;
                    }
                }
                this.xhr = t;
              }),
              window._realxhr)
            );
          }),
          (e.unAIAjax = function () {
            window._realxhr && (XMLHttpRequest = window._realxhr), (window._realxhr = void 0);
          }),
          this
        );
      }),
      (t.prototype.xhrEnd = function (e) {
        e.readyState == e.DONE &&
          e.xhr.NFC &&
          (e.xhr.segInfo && 'normal' == e.xhr.segInfo.mode
            ? this.nfRequest.Complete()
            : e.xhr.segInfo &&
              'section' === e.xhr.segInfo.mode &&
              'startUri' === e.xhr.segInfo.type &&
              this.nfRequest.aliveCommand(e.xhr.segInfo)),
          this.ajaxLoadProc(e);
      }),
      (t.prototype.ajaxLoadProc = function (e) {
        var t = (function (e, t) {
          if (e) for (var n in t) if (t.hasOwnProperty(n) && t[n] && t[n].uuid && t[n].uuid === e.xhr.guid) return t[n];
        })(e, this.requests);
        if (void 0 === t) return !0;
        var n = new Date().getTime();
        null === t.ajaxLoad && ((t.perf.ps = n - t.ajaxStart), (t.ajaxLoad = n)),
          4 == e.xhr.readyState &&
            ((t.statusCode = e.xhr.status),
            (t.perf.pv = n - t.ajaxLoad),
            (t.ajaxEnd = n),
            (t.perf.pt = t.ajaxEnd - t.ajaxStart),
            this.sendXhr(t));
      }),
      (t.prototype.sendXhr = function (e) {
        var t = {},
          n =
            (D(e.perf),
            I(t, [
              this.ua.svcData,
              this.ua.agentData,
              this.uid,
              e.perf,
              {
                av: a,
                ct: 'ajax',
                ts: new Date().getTime(),
                sk: e.segKey,
                cd: e.request.hostname,
                csd: e.projectKey,
                uid: e.uuid,
                sc: e.request.search,
                hsc: e.statusCode,
                mt: e.method,
                uri: e.request.pathname,
              },
            ]),
            P(this.conf));
        m((n = x(e.statusCode) ? n : P(this.conf, !0)), t), this.initAjaxParam(e);
      }),
      (t.prototype.initAjaxParam = function (e) {
        if (e)
          for (var t in this.requests)
            this.requests.hasOwnProperty(t) &&
              this.requests[t] &&
              this.requests[t].uuid === e.uuid &&
              this.requests.splice(t, 1);
      }),
      (t.prototype.runAIAjax = function () {
        var l = this;
        return (
          (l.type = 'AIAjax'),
          AIAjax({
            onreadystatechange: function (e) {
              l.xhrEnd(e);
            },
            onload: function (e) {
              l.xhrEnd(e);
            },
            onerror: function (e) {
              l.xhrEnd(e);
            },
            onloadend: function (e) {
              l.xhrEnd(e);
            },
            open: function (e, t) {
              if (null === l.conf.tenantProjectList) return !1;
              var n,
                i = N(e[1]),
                o = y(l.conf.tenantProjectList, i),
                r = b(l.conf.tenantProjectList, i, 'action'),
                s = b(l.conf.tenantProjectList, i, 'complete');
              if (s && 0 < s.length)
                for (var a in s)
                  s.hasOwnProperty(a) &&
                    ((a = s[a]), (n = l.nfRequest.getSectionKey(l.nfRequest.nfSectionId, a.projectKey, a.key))) &&
                    ((n = l.nfRequest.responseParser(n, !0)), l.nfRequest.runCommand(5004, !1, n.port, a, n.key));
              if (
                ((o = o || r),
                u && console.log('seg id : ', o, i.pathname),
                i.hostname === v(l.opts.tenantApiUrl) ||
                  i.hostname === v(l.opts.tenantNFUrl) ||
                  i.hostname === v(l.conf.eumHost.host))
              )
                return !1;
              i.hostname = S(T(e[1]));
              (r = l.prng.next(new Date().getTime())),
                (r = new M(
                  l.conf,
                  l.uid.tid,
                  r,
                  i,
                  e[0],
                  e[2],
                  'xmlhttprequest',
                  o && o.key ? o.key : '',
                  o && o.projectKey ? o.projectKey : ''
                ));
              (t.appRequest = r),
                (t.guid = r.uuid),
                o &&
                  ((l.conf.tenantProjectList.segInfo = o),
                  (l.origin.uri = e[1]),
                  ((l.origin.xhr = t).NFC = !0),
                  (t.segInfo = o));
            },
            send: function (e, t) {
              if (
                t.NFC &&
                t.segInfo &&
                ('normal' == t.segInfo.mode || ('section' === t.segInfo.mode && 'startUri' === t.segInfo.type))
              )
                return (
                  l.nfRequest.Action(
                    {
                      segInfo: l.conf.tenantProjectList.segInfo,
                    },
                    function () {
                      l.origin.xhr.send(e), t.appRequest.setStartTime(), l.requests.push(t.appRequest);
                    }
                  ),
                  !0
                );
              void 0 !== t.appRequest && (t.appRequest.setStartTime(), l.requests.push(t.appRequest));
            },
          }),
          this
        );
      });
    function i(e, t, n, i, o) {
      (this.opts = e || null),
        (this.conf = t || null),
        (this.nfRequest = n || null),
        (this.ua = i || null),
        (this.uid = o || null),
        (this.retryTime = 50),
        (this.lastErrorParams = null),
        (this.errorList = []),
        (this.onloadTimer = null),
        (this.browserPerf = null),
        (this.prng = new h(f())),
        this.onError();
    }
    function c(e) {
      return (
        (this.ajaxRequest = null),
        (this.fetchRequest = null),
        (this.browserRequest = null),
        (this.nfRequest = null),
        (this.opts = e),
        (this.conf = {
          productType: null,
          visitor: {
            key: 'surffy_eum_vk',
            value: null,
          },
          eumHost: {
            host: e.tenantNFUrl,
            port: e.tenantLoaderPort || 9090,
            logPath: '/loader/eum_data',
            crashPath: '/loader/eum_crash',
          },
          browser: {
            session: 'JSESSION',
            onReady: !1,
            eum: !0,
          },
          eumXhrOnly: !0,
          dynamicAndEumXhr: !1,
          dynamicATag: !1,
          fetch: {
            use: !0,
          },
          storageId: 'surffy_nf_data',
          nf: {
            requestTimeout: 3,
            requestRetry: 1,
            error_bypass: !0,
          },
          tenant: {
            xhrTimeout: 10,
            getProjectTimer: null,
            getProjectListIntervalSec: 300,
          },
          tenantProjectList: null,
          webviewData: null,
        }),
        (this.ua = {
          svcData: q.get(this.conf.browser),
          agentData: k.get(),
        }),
        (this.uid = {
          oid: '',
          tid: new h(f()).next(new Date().getTime()),
          uid: '',
          vk: '',
        }),
        (this.uid.uid = this.uid.tid),
        e.tenantLoaderPort &&
          3 === (e = this.conf.eumHost.host.split(':')).length &&
          (this.conf.eumHost.host = e[0] + ':' + e[1]),
        (this.userEndTime = 0),
        this
      );
    }
    var h,
      g = function (e, t, n, i, o, r) {
        (this.conf = e || ''),
          (this.txid = t || ''),
          (this.uuid = n || ''),
          (this.segmentKey = o || ''),
          (this.projectKey = r || ''),
          (this.prng = new h(f())),
          (this.perfStart = new Date().getTime()),
          (this.perfEnd = null),
          (this.callCount = 0),
          (this.segInfo = i);
        (e = N(this.segInfo.path)), (t = e.hostname.split(':')[0]);
        (this.svcData = {
          av: a,
          ct: 'ajax',
          cd: t,
          uri: e.pathname,
          sc: e.search,
          rf: document.referrer || '',
          csd: this.projectKey,
          sk: this.segmentKey,
          lang: navigator.language || 'unknown',
          hsc: '',
          mt: '',
          ss: '',
        }),
          (this.perf = {
            pr: 0,
            pa: 0,
            pl: 0,
            pc: 0,
            ps: 0,
            pv: 0,
            pd: 0,
            po: 0,
            pt: 0,
          }),
          (this.setStartTime = function () {
            this.ajaxStart = new Date().getTime();
          });
      };
    (g.prototype.send = function () {
      var e = {};
      (this.perf.pt = new Date().getTime() - this.perfStart),
        I(e, [
          {
            ts: new Date().getTime(),
          },
          this.uid,
          this.perf,
          this.svcData,
          k.get(),
        ]),
        m(P(this.conf), e);
    }),
      (i.prototype.run = function () {
        var e = this;
        if (((this.browserPerf = K.get()), this.browserPerf))
          return (
            clearTimeout(this.onloadTimer),
            (this.conf.browser.onReady = !0),
            this.sendData(),
            this.sendAfterRequest(),
            this
          );
        e.onloadTimer = setTimeout(function () {
          e.run();
        }, this.retryTime);
      }),
      (i.prototype.sendData = function () {
        var e = {};
        I(e, [
          {
            av: a,
            ct: 'browser',
            ts: new Date().getTime(),
            sk: '',
            hsc: '',
            mt: '',
          },
          this.uid,
          this.browserPerf,
          this.ua.svcData,
          this.ua.agentData,
        ]),
          m(P(this.conf), e);
      }),
      (i.prototype.onError = function () {
        var s = this;
        r.onerror = function (e, t, n, i, o) {
          var r = '',
            o =
              (o && o.stack && (r = w(o.stack)),
              {
                emg: (e = e && w(e)),
                eurl: t,
                eln: n,
                ecn: i,
                en: (r = '' === r ? e : r),
                et: s.getErrorType(e),
                uid: s.prng.next(new Date().getTime()),
              });
          return s.conf.browser.onReady ? s.sendError(o) : s.errorList.push(o), !1;
        };
      }),
      (i.prototype.sendAfterRequest = function () {
        if (this.errorList && 0 < this.errorList.length) {
          for (var e = 0, t = this.errorList.length; e < t; e++) {
            var n = this.errorList[e];
            this.sendError(n);
          }
          this.errorList = [];
        }
        return this;
      }),
      (i.prototype.sendError = function (e) {
        if (!e) return !1;
        var t;
        (this.lastErrorParams && this.lastErrorParams.emg === e.emg) ||
          (I((t = {}), [
            this.uid,
            this.ua.svcData,
            this.ua.agentData,
            e,
            {
              av: a,
              ct: 'browser',
              ts: new Date().getTime(),
              sk: '',
              hsc: '',
              mt: '',
            },
          ]),
          m(P(this.conf, !0), t),
          (this.lastErrorParams = t));
      }),
      (i.prototype.getErrorType = function (e) {
        var t = ['EvalError', 'InternalError', 'RangeError', 'ReferenceError', 'SyntaxError', 'TypeError', 'URIError'];
        if (e && '' !== e) {
          for (var n in t) if (-1 !== e.indexOf(t[n])) return t[n];
          return 'other';
        }
      });
    function d(e) {
      return parseInt(e.toString().replace('.', 1), 10);
    }
    function f() {
      var e = (function (e) {
          var t,
            n,
            i = '';
          for (n = 0; n < e.length; n++) (t = e.charCodeAt(n).toString(16)), (i += ('000' + t).slice(-4));
          return i;
        })(r.navigator.userAgent),
        t = e.length;
      return parseInt(e.substring(t - 10, t), 10) + new Date().getTime();
    }
    function m(e, t) {
      try {
        window.navigator.sendBeacon(e, JSON.stringify(t));
      } catch (e) {
        console.error(e);
      }
    }
    function N(e) {
      var t, n, i;
      return e
        ? ((t = {}),
          (n = T(e)),
          (t.protocol = j(n)),
          (t.hostname = v(e)),
          (t.port = ((e = n), ((i = document.createElement('a')).href = e), i.port)),
          (t.pathname = ((e = n), ((i = document.createElement('a')).href = e), i.pathname)),
          (t.search = ((e = n), ((i = document.createElement('a')).href = e), i.search)),
          t)
        : {
            hostname: '',
            pathname: '',
            search: '',
          };
    }
    function y(e, t) {
      if (!e) return !1;
      for (var n in e)
        if (e.hasOwnProperty(n)) {
          var i,
            o = e[n];
          for (i in o.segments)
            if (o.segments.hasOwnProperty(i)) {
              var r,
                s = o.segments[i];
              for (r in s.uris) {
                var a = s.uris[r];
                if ('' != a.path && a.path) {
                  var l = N(a.path).hostname,
                    u = N(a.path).pathname,
                    a = N(a.path).search;
                  if (t.hostname === l && t.pathname === u && t.search == a)
                    return {
                      vwrPage: s.vwrPage,
                      projectKey: o.projectKey,
                      key: s.segmentKey,
                      mode: 'normal',
                      path: t,
                    };
                }
              }
            }
        }
    }
    function _(e, t) {
      if (!e) return !1;
      var n = e[t.projectKey];
      if (n)
        for (var i = 0, o = n.segments.length; i < o; i++) {
          var r = n.segments[i];
          if (r.segmentKey === t.segmentKey)
            return {
              vwrPage: r.vwrPage,
              projectKey: t.projectKey,
              key: r.segmentKey,
              mode: 'normal',
              path: r.uris[0].path,
            };
        }
      return null;
    }
    function F(e, t) {
      if (!e) return !1;
      var n = e[t.projectKey];
      if (n)
        for (var i = 0, o = n.sectionSegments.length; i < o; i++) {
          var r = n.sectionSegments[i];
          if (r.segmentKey === t.segmentKey)
            return {
              vwrPage: r.vwrPage,
              projectKey: t.projectKey,
              key: r.segmentKey,
              mode: 'section',
              type: 'startUri',
              path: r.startUri,
            };
        }
      return null;
    }
    function b(e, t, n) {
      if (!e) return !1;
      var i,
        o = null,
        r = [];
      for (i in e)
        if (e.hasOwnProperty(i)) {
          var s,
            a,
            l,
            u,
            p,
            c,
            h = e[i];
          for (s in h.sectionSegments)
            h.sectionSegments.hasOwnProperty(s) &&
              ((l = N((a = h.sectionSegments[s]).startUri).hostname),
              (u = N(a.endUri).hostname),
              (p = N(a.startUri)),
              (c = N(a.endUri)),
              l &&
                'action' === n &&
                t &&
                t.hostname == l &&
                t.pathname == p.pathname &&
                t.search == p.search &&
                ((o = {
                  vwrPage: a.vwrPage,
                  projectKey: h.projectKey,
                  key: a.segmentKey,
                  mode: 'section',
                  type: 'startUri',
                  path: t,
                }),
                r.push(o)),
              u &&
                'complete' === n &&
                t &&
                t.hostname == u &&
                t.pathname == c.pathname &&
                t.search == c.search &&
                ((o = {
                  vwrPage: a.vwrPage,
                  projectKey: h.projectKey,
                  key: a.segmentKey,
                  mode: 'section',
                  type: 'endUri',
                  path: t,
                }),
                r.push(o)),
              !n) &&
              a.startUri &&
              ((o = {
                vwrPage: a.vwrPage,
                projectKey: h.projectKey,
                key: a.segmentKey,
                mode: 'section',
                type: 'startUri',
                path: p,
              }),
              r.push(o));
        }
      return 0 < r.length ? ('action' === n ? r.shift() : r) : null;
    }
    function T(e) {
      var t, n, i;
      if (e)
        return (
          (n = t = !0),
          /^https?:\/\//i.test((i = e)) ? (t = !1) : (i = 'https://' + e),
          (n = /^https?:\/\/[^\s\/]+/i.test(i) ? !1 : n) && t
            ? window.location.protocol + '//' + window.location.host + e
            : !n && t
            ? 'https://' + e
            : e
        );
    }
    function v(e) {
      if (e) return -1 === e.indexOf('http') ? window.location.host : S(e);
    }
    function j(e) {
      var t = document.createElement('a');
      return (t.href = e), t.protocol;
    }
    function S(e) {
      var t = document.createElement('a');
      return (t.href = e), t.hostname;
    }
    function C(e, t, n, i, o) {
      var r = 'https://nf-agent-health.stclab.com',
        s = new XMLHttpRequest(),
        a =
          ((s.onreadystatechange = function (e) {
            var t, n;
            s.readyState == s.DONE &&
              (200 === s.status
                ? o && o(e.target.response)
                : (u && console.log('navigator.onLine', navigator.onLine),
                  u && console.log('healthCheckUrl', r),
                  (e = r),
                  (t = function (e) {
                    e
                      ? o &&
                        o({
                          status: 502,
                        })
                      : o &&
                        o({
                          status: 1001,
                        });
                  }),
                  ((n = new XMLHttpRequest()).timeout = 1e4),
                  (n.onreadystatechange = function () {
                    4 === n.readyState && (200 <= n.status && n.status < 300 ? t(!0) : t(!1));
                  }),
                  (n.ontimeout = function () {
                    t(!1);
                  }),
                  n.open('GET', e, !0),
                  n.send()));
          }),
          ''),
        a = t ? e + '?' + U(t) : e;
      return (
        s.open('GET', a, !0),
        i && (s.responseType = i),
        s.send(),
        setTimeout(function () {
          s && s.abort();
        }, 1e3 * n || 5e3),
        s
      );
    }
    function U(e) {
      var t,
        n = [];
      for (t in e)
        'string' == typeof e[t] || ('wfc' !== t && 'segmentation' !== t)
          ? n.push(t + '=' + e[t])
          : n.push(encodeURIComponent(t) + '=' + encodeURIComponent(JSON ? JSON.stringify(e[t]) : O(e[t])));
      return n.join('&');
    }
    function E(e, t) {
      for (var n in t)
        t.hasOwnProperty(n) &&
          ('vwrPage' === n && void 0 !== t[n]
            ? E(e[n], t[n])
            : ((void 0 !== e[n] && null !== t[n] && '' !== t[n]) || ('' === t[n] && 'guideText' === n)) &&
              (e[n] = t[n]));
    }
    (c.prototype.initAtagEventListenerWithEvent = function () {
      function e() {
        var e = document.querySelectorAll('a');
        Array.prototype.forEach.call(e, function (t) {
          var e, n;
          (e = t).onclick ||
            ((e = e.getAttribute('href')) && e.startsWith('javascript:')) ||
            ((n = new RegExp(/^[^#]*$/gi)), e && !n.test(e)) ||
            t.addEventListener('click', function (e) {
              e.isProgrammatic ||
                (e.preventDefault(),
                window.Surffy_Action(t.href, function () {
                  var e = document.createEvent('MouseEvents');
                  e.initMouseEvent('click', !0, !0, window, 0, 0, 0, 0, 0, !1, !1, !1, !1, 0, null),
                    (e.isProgrammatic = !0),
                    t.dispatchEvent(e);
                }));
            });
        });
      }
      'complete' === document.readyState ? e() : window.addEventListener('load', e);
    }),
      (c.prototype.initAtagEventListener = function () {
        var e;
        (e = document.querySelectorAll('a')),
          Array.prototype.forEach.call(e, function (t) {
            !(function (e) {
              var t,
                n = e.getAttributeNames();
              for (t = 0; t < n.length; t++) {
                var i = n[t];
                if (e.onclick) return;
                if ('href' == i) if (!new RegExp(/^[^#]*$/gi).test(e.href)) return;
              }
              return 1;
            })(t) ||
              t.addEventListener('click', function (e) {
                e.isProgrammatic ||
                  (e.preventDefault(),
                  window.Surffy_Action(t.href, function () {
                    var e = document.createEvent('MouseEvents');
                    e.initMouseEvent('click', !0, !0, window, 0, 0, 0, 0, 0, !1, !1, !1, !1, 0, null),
                      (e.isProgrammatic = !0),
                      t.dispatchEvent(e);
                  }));
              });
          });
      }),
      (c.prototype.checkVisitorKey = function () {
        var e,
          t,
          n,
          i = R(this.conf.visitor.key);
        return (
          i
            ? ((this.conf.visitor.value = i), (this.uid.vk = this.conf.visitor.value))
            : ((this.conf.visitor.value = new h(f()).next(new Date().getTime())),
              (this.uid.vk = this.conf.visitor.value),
              (i = this.conf.visitor.key),
              (e = this.conf.visitor.value),
              (t = 365),
              (n = new Date()).setTime(n.getTime() + 24 * t * 60 * 60 * 1e3),
              (t = 'expires=' + n.toUTCString()),
              (document.cookie = i + '=' + e + ';' + t + ';path=/')),
          this
        );
      }),
      (c.prototype.onloadComplete = function () {
        var e = this,
          t = document.location.pathname,
          n = this.nfRequest.nfStorage.getData();
        n && ((n = this.nfRequest.responseParser(n, !0)), this.nfRequest.runCommand(5004, !1, n.port, !1, n.key)),
          this.nfRequest.Complete(t, function () {
            setTimeout(function () {
              e.nfRequest.sectionLoadContinue();
            }, 1e3);
          });
      }),
      (c.prototype.run = function () {
        return (
          (this.nfRequest = new e(this.opts, this.conf, this)),
          'webview' === this.opts.type
            ? this.getWebviewData()
            : (this.checkVisitorKey(),
              this.conf.dynamicATag && this.initAtagEventListenerWithEvent(),
              this.getProjectList(),
              this.getStorageProjectList(),
              this.onloadComplete(),
              window.XMLHttpRequest &&
                ((this.ajaxRequests = new t(this.opts, this.conf, this.nfRequest, this.ua, this.uid)),
                this.conf.eumXhrOnly
                  ? this.ajaxRequests.customAjaxMonitoringActivate()
                  : this.conf.dynamicAndEumXhr && this.ajaxRequests.setAIAjax().runAIAjax()),
              this.conf.fetch.use && window.fetch,
              this.conf.browser.eum &&
                ((this.browserRequest = new i(this.opts, this.conf, this.nfRequest, this.ua, this.uid)),
                this.browserRequest.run())),
          this
        );
      }),
      (c.prototype.setOnloadWorker = function () {}),
      (c.prototype.setHistoryChangeEvent = function () {
        var i;
        window.history &&
          ((i = history.pushState),
          (history.pushState = function (e) {
            var t,
              n = document.getElementsByTagName('a');
            for (t in n) n.hasOwnProperty(t) && n[t].attributes;
            return i.apply(history, arguments);
          })),
          window.addEventListener('DOMContentLoaded', function () {});
      }),
      (c.prototype.getWebviewData = function () {
        var e = null;
        try {
          e = JSON.parse(this.nfRequest.nfStorage.getCookie(this.opts.webviewStorageKey));
        } catch (e) {
          // console.log('[error] getWebviewData : ', this.nfRequest.nfStorage.getCookie(this.opts.webviewStorageKey), e);
        }
        if (e) {
          (this.conf.webviewData = e),
            !(function (e) {
              if (!e) return;
              (e.vwrPage = {
                imagePath: e.imagePath,
                logoImagePath: e.logoImagePath,
                guideText: e.guideText,
                followingWaitYn: e.followingWaitYn,
                waitCancelYn: e.waitCancelYn,
                waitTimeDisplayYn: e.waitTimeDisplayYn,
                title: e.title,
              }),
                (e.mode = e.segmentType),
                'normal' === e.segmentType ? (e.type = '') : (e.type = 'startUri');
            })(this.conf.webviewData),
            (this.nfRequest.nfKey = this.conf.webviewData.key);
          var t = this.conf.webviewData.retcode;
          switch (this.nfRequest.getCode(t)) {
            case 'network_failure':
              console.log(1001);
              break;
            case 'normal':
            case 'bypass':
            case 'express':
              r.navigator.onLine && t && key && console.log(t + ' ' + key);
              break;
            case 'invalid_key':
              console.log(t);
              break;
            case 'continue':
            case 'continue_debug':
              this.nfRequest.runCommand(5002, null, this.conf.webviewData.port, this.conf.webviewData);
              break;
            case 'block':
            case 'ipblock':
              this.nfRequest.nfWaitPopup.hide(),
                this.nfRequest.nfWaitPopup.isBlockShow() || this.nfRequest.nfWaitPopup.blockShow(e),
                console.log(t);
              break;
            default:
              console.log(500);
          }
        }
        return this;
      }),
      (c.prototype.makeTenantApiUrl = function () {
        var e = '';
        return (e += this.opts.tenantApiUrl);
      }),
      (c.prototype.getProjectList = function (t) {
        var e,
          n = this,
          i = n.makeTenantApiUrl(n.opts, n.conf);
        return (
          C(
            this.opts.webviewStorageKey && 'onprem' !== o
              ? ((e = JSON.parse(this.nfRequest.nfStorage.getCookie(this.opts.webviewStorageKey))
                  .tenantNFUrl.split('//')[1]
                  .split('.')[0]),
                B[o] + '/' + e + '.netfunnel/nf-setting.json?timestamp' + new Date().getTime())
              : i + '?timestamp=' + new Date().getTime(),
            '',
            n.conf.tenant.xhrTimeout,
            'json',
            function (e) {
              u && console.log('getXhrRequest response : ', e), n.setProjectList(e, t);
            }
          ),
          t ||
            (this.conf.tenant.getProjectTimer = setTimeout(function () {
              n.getProjectList();
            }, 1e3 * this.conf.tenant.getProjectListIntervalSec)),
          this
        );
      }),
      (c.prototype.setProjectList = function (e, t) {
        var n = {};
        if (!e || 502 === e.status || !e.data || 0 < !e.data.length) return t && t(), !1;
        for (var i = e.data, o = 0, r = i.length; o < r; o++) {
          var s = i[o];
          n[s.projectKey] = s;
        }
        return (
          e.productType && ((this.conf.productType = e.productType), (n.productType = e.productType)),
          u && console.log('setProjectList : ', n),
          'webview' === this.opts.type
            ? this.nfRequest.nfStorage.setData(this.conf.storageId, n, !0)
            : localStorage.setItem(this.conf.storageId, JSON.stringify(n)),
          (this.conf.tenantProjectList = n),
          t && t(n),
          this
        );
      }),
      (c.prototype.getStorageProjectList = function () {
        try {
          var e = localStorage.getItem(this.conf.storageId);
          return (
            e && (this.conf.tenantProjectList = JSON.parse(e)),
            this.conf.tenantProjectList &&
              this.conf.tenantProjectList.productType &&
              (this.conf.productType = this.conf.tenantProjectList.productType),
            this.conf.tenantProjectList
          );
        } catch (e) {}
      });
    var K = {
        get: function (e) {
          var t,
            n = {};
          if (e) {
            if (0 === (t = e).duration) return !1;
            (n.pr = 0 === t.redirectStart ? 0 : t.redirectEnd - t.redirectStart),
              (n.pa = t.domainLookupStart - t.fetchStart),
              (n.pl = t.domainLookupEnd - t.domainLookupStart),
              (n.pc = t.connectEnd - t.connectStart),
              (n.ps = t.responseStart - t.requestStart),
              (n.pv = t.responseEnd - t.responseStart),
              (n.pd = t.domComplete ? t.domComplete - t.responseEnd : 0),
              (n.po = t.loadEventEnd ? t.loadEventEnd - t.loadEventStart : 0),
              (n.pt = n.pr + n.pa + n.pl + n.pc + n.ps + n.pv + n.pd + n.po);
          } else if (r.performance && r.performance.timing) {
            if (0 === (t = r.performance.timing).loadEventEnd) return !1;
            (n.pr = 0 === t.redirectStart ? 0 : t.redirectEnd - t.redirectStart),
              (n.pa = t.domainLookupStart - t.fetchStart),
              (n.pl = t.domainLookupEnd - t.domainLookupStart),
              (n.pc = t.connectEnd - t.connectStart),
              (n.ps = t.responseStart - t.requestStart),
              (n.pv = t.responseEnd - t.responseStart),
              (n.pd = t.domComplete - t.responseEnd),
              (n.po = t.loadEventEnd - t.loadEventStart),
              (n.pt = n.pr + n.pa + n.pl + n.pc + n.ps + n.pv + n.pd + n.po);
          }
          return D(n), n;
        },
      },
      q = {
        category: function (e) {
          if (e && 0 < e.length)
            for (var t = s.getElementsByTagName('meta'), n = 0; n < t.length; n++)
              if (t[n].getAttribute('name') && t[n].getAttribute('name') === e) return t[n].getAttribute('content');
          return '';
        },
        session: function (e) {
          if (!e) return !1;
          var t = e.type || 'cookie',
            n = e.value;
          if (!n) return !1;
          switch (t) {
            case 'cookie':
              n = R(n);
              break;
            case 'sessionStorage':
            case 'localStorage':
              n = (function (e, t) {
                if (
                  (function () {
                    try {
                      return 'localStorage' in r && null !== r.localStorage;
                    } catch (e) {}
                  })()
                )
                  try {
                    if (t) {
                      if (r[t] && r[t].getItem(e)) return r[t].getItem(e).replace(/(?:\r\n|\r|\n)/g, '');
                    } else {
                      if (r.sessionStorage.getItem(e))
                        return r.sessionStorage.getItem(e).replace(/(?:\r\n|\r|\n)/g, '');
                      if (r.localStorage.getItem(e)) return r.localStorage.getItem(e).replace(/(?:\r\n|\r|\n)/g, '');
                    }
                  } catch (e) {
                    r.console && r.console.log && r.console.log('getStorage failed : ', e);
                  }
                return '';
              })(n, t);
          }
          return n;
        },
        get: function (e) {
          var t = {},
            n = N(r.location.href),
            i = n.hostname;
          return (
            (t.cd = i),
            (t.csd = ''),
            (t.uri = n.pathname),
            (t.sc = n.search),
            (t.rf = s.referrer),
            (t.lang = navigator.language || 'unknown'),
            (t.ss = this.session(e.session) || ''),
            t
          );
        },
      },
      k = {
        get: function () {
          var e = {},
            t = r.platform;
          return (
            (e.os = null === t.os.family ? 'unknown' : t.os.family.toLowerCase()),
            (e.osg = null === t.os.family ? 'other' : this.getOsGroup(t.os.family)),
            (e.osv = null === t.os.version ? '' : t.os.version),
            (e.wb = null === t.name ? 'unknown' : t.name.toLowerCase()),
            (e.wbv = null === t.version ? 'unknown' : t.version.toLowerCase()),
            (e.wbg = null === t.name ? 'other' : this.getBrowserGroup(t.name)),
            (e.ddg = this.getDeviceGroup(t)),
            (e.dd = null === t.product && 'pc' === e.ddg ? 'pc' : t.product),
            e
          );
        },
        getDeviceGroup: function (e) {
          var t = [
            'iPhone',
            'iPod',
            'iPad',
            'BlackBerry',
            'Android',
            'WindowsCE',
            'LG',
            'MOT',
            'SAMSUNG',
            'SonyEricsson',
            'Nokia',
            'Webos',
            'Opera mini',
            'Opera mobi',
            'Iemobile',
          ];
          try {
            for (var n = 0; n < t.length; n++) {
              var i = navigator.userAgent.match(t[n]),
                o = navigator.userAgent.match('MALGJS');
              if (null !== i && null === o) return 'mobile';
            }
          } catch (e) {}
          return 'pc';
        },
        getLayoutEngineGroup: function (e) {
          return /(\bWebKit\b|\bGecko\b|\bTrident\b|\bBlink\b|\bPresto\b)/i.exec(e) ? e.toLowerCase() : 'other';
        },
        getBrowserGroup: function (e) {
          return /IE/i.exec(e)
            ? 'msie'
            : /Chrome/i.exec(e)
            ? 'chrome'
            : /(Firefox|Mozilla)/i.exec(e)
            ? 'firefox'
            : /(Opera)/i.exec(e)
            ? 'opera'
            : /(Safari)/i.exec(e)
            ? 'safari'
            : /(Edge)/i.exec(e)
            ? 'edge'
            : 'other';
        },
        getOsGroup: function (e) {
          return /Windows/i.exec(e)
            ? 'windows'
            : /(Android)/i.exec(e)
            ? 'android'
            : /(iOS)/i.exec(e)
            ? 'ios'
            : /(Mac|OS X|PowerPC)/i.exec(e)
            ? 'macos'
            : /(ubuntu|Linux|Cent|Suse|Red.*hat|Debian|Gentoo|Cygwin)/i.exec(e)
            ? 'linux'
            : /(Unix|BSD|AIX|HP-UX|Solaris)/i.exec(e)
            ? 'macos'
            : 'other';
        },
      },
      x = function (e) {
        return e ? !!((100 <= e) & (e < 400)) : 0;
      },
      H = function (e) {
        return (
          !!e && {
            projectKey: (e = e.split(':'))[1],
            segmentKey: e[2],
          }
        );
      },
      S = function (e) {
        var t = document.createElement('a');
        return (t.href = e), t.hostname;
      },
      w = function (e) {
        if (e) return e.replace(/\n/g, ' %5Cn').replace(/\r/g, ' %5Cn').replace(/"/g, "'");
      };
    function P(e, t) {
      return e.productType && 'ON_PREM' !== e.productType
        ? A[o] + (t ? e.eumHost.crashPath : e.eumHost.logPath)
        : !!e && e.eumHost.host + ':' + e.eumHost.port + (t ? e.eumHost.crashPath : e.eumHost.logPath);
    }
    function I(e, t) {
      for (var n = 0; n < t.length; n++)
        !(function e(t, n) {
          for (var i in n)
            'object' == typeof n[i]
              ? (void 0 === t[i] && (t[i] = {}), e(t[i], n[i]))
              : {}.hasOwnProperty.call(n, i) && (t[i] = n[i]);
        })(e, t[n]);
    }
    function R(e) {
      for (var t = e + '=', n = s.cookie.split(';'), i = 0; i < n.length; i++) {
        for (var o = n[i]; ' ' === o.charAt(0); ) o = o.substring(1);
        if (0 === o.indexOf(t)) return o.substring(t.length, o.length);
      }
      return '';
    }
    function U(e) {
      var t,
        n = [];
      for (t in e)
        'string' == typeof e[t] || ('wfc' !== t && 'segmentation' !== t)
          ? n.push(encodeURIComponent(t) + '=' + encodeURIComponent(e[t]))
          : n.push(encodeURIComponent(t) + '=' + encodeURIComponent(JSON ? JSON.stringify(e[t]) : O(e[t])));
      return n.join('&');
    }
    function D(e) {
      for (var t in e)
        e.hasOwnProperty(t) &&
          ((864e5 < e[t] || e[t] < 0) && (e[t] = 0), 0 < e[t]) &&
          (e[t] = ((t = e[t]), Math.floor(t)));
    }
    function d(e) {
      return parseInt(e.toString().replace('.', 1), 10);
    }
    function h(e) {
      (this._seed = e % 2147483647), this._seed <= 0 && (this._seed += 2147483646);
    }
    h.prototype.next = function (e, t) {
      this._seed = (16807 * this._seed) % 2147483647;
      var n = new Date().getTime() + '-';
      return 0 === arguments.length
        ? n + d(this._seed / 2147483647)
        : 1 === arguments.length
        ? n + d((this._seed / 2147483647) * e)
        : n + d((this._seed / 2147483647) * (t - e) + e);
    };
    function O(e) {
      if (e) {
        var t,
          n = '{',
          i = Object.keys(e).length - 1,
          o = 0;
        for (t in e) {
          if ('segmentation' === t && 'object' == typeof e[t]) {
            n += '"' + t + '":{';
            var r,
              s = Object.keys(e[t]).length - 1,
              a = 0;
            for (r in e[t])
              (n += '"' + r + '":"' + (void 0 === e[t][r] ? '' : e[t][r]) + '"'), s !== a && (n += ','), a++;
            n += '}';
          } else n += '"' + t + '":"' + (void 0 === e[t] ? '' : e[t]) + '"';
          i !== o && (n += ','), o++;
        }
        return n + '}';
      }
    }
    if (r.nfTag && r.nfTag.l && r.nfTag.l instanceof Array)
      for (; 0 < r.nfTag.l.length; ) {
        var G,
          Y,
          L = r.nfTag.l.pop();
        4 == Object.keys(L).length &&
          L &&
          L.tenantApiUrl &&
          ((Y = (G = N(L.tenantNFUrl)).hostname.split('.')[0]),
          (L.tenantApiUrl = G.protocol + '//nf-setting.surffy.io/' + Y + '/nf-setting.json')),
          void 0 === window.Surffy_Action && (z = new c(L)).run();
      }
    else {
      var z = new c({
        type: 'webview',
        webviewStorageKey: 'netfunnel_webview_data',
      });
      void 0 === window.Surffy_Action &&
        window.addEventListener('load', function () {
          z.run();
        });
    }
  })(window, document);
